aboutsummaryrefslogtreecommitdiff
path: root/content/docs/adyxax.org/git/cgit.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/docs/adyxax.org/git/cgit.md')
-rw-r--r--content/docs/adyxax.org/git/cgit.md94
1 files changed, 94 insertions, 0 deletions
diff --git a/content/docs/adyxax.org/git/cgit.md b/content/docs/adyxax.org/git/cgit.md
new file mode 100644
index 0000000..75ffa5d
--- /dev/null
+++ b/content/docs/adyxax.org/git/cgit.md
@@ -0,0 +1,94 @@
+---
+title: "cgit and nginx"
+description: Installation notes of cgit
+---
+
+## Introduction
+
+This article details how I installed and configured cgit on FreeBSD to serve as the web frontend of my gitolite repositories.
+
+## Installation
+
+cgit can be bootstrapped with the following :
+```yaml
+pkg install cgit fcgiwrap
+```
+
+## Configuration
+
+Here is my `/usr/local/etc/cgitrc-adyxax` file:
+```cfg
+about-filter=/usr/local/lib/cgit/filters/about-formatting.sh
+clone-url=https://$HTTP_HOST/$CGIT_REPO_URL
+enable-commit-graph=1
+enable-follow-links=1
+enable-git-config=1
+enable-log-filecount=1
+enable-log-linecount=1
+enable-subject-links=1
+mimetype.gif=image/gif
+mimetype.html=text/html
+mimetype.jpg=image/jpeg
+mimetype.jpeg=image/jpeg
+mimetype.pdf=application/pdf
+mimetype.png=image/png
+mimetype.svg=image/svg+xml
+noplainemail=1
+readme=:README.md
+remove-suffix=1
+snapshots=tar.gz tar.bz2 zip
+root-desc=All public git repositories by Adyxax
+#root-readme=/var/www/htdocs/about.html
+root-title=Adyxax's git repositories
+virtual-root=/
+scan-path=/home/git/repositories
+```
+
+## fcgiwrap
+
+fcgiwrap is a necessary interface for nginx to call cgit. It is entirely configured from `/etc/rc.conf`, you just need to add:
+```cfg
+fcgiwrap_enable="YES"
+fcgiwrap_profiles="git"
+fcgiwrap_git_socket="unix:/var/run/fcgiwrap/git.socket"
+fcgiwrap_git_user="git"
+fcgiwrap_git_group="git"
+fcgiwrap_git_socket_owner="www"
+fcgiwrap_git_socket_group="www"
+```
+
+This ensures the cgit processes run as the `git` user, while nginx running as the `www` user can connect to it.
+
+## nginx
+
+I presume nginx is already setup, here is the snippet of configuration needed to serve cgit with fcgiwrap:
+```cfg
+server {
+ listen 80;
+ listen [::]:80;
+ server_name git.adyxax.org;
+ location / {
+ return 308 https://$server_name$request_uri;
+ }
+}
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ server_name git.adyxax.org;
+ location /adyxax {
+ try_files $uri @cgit-adyxax;
+ }
+ location @cgit-adyxax {
+ include fastcgi_params;
+ fastcgi_param CGIT_CONFIG /usr/local/etc/cgitrc-adyxax;
+ fastcgi_param SCRIPT_FILENAME /usr/local/www/cgit/cgit.cgi;
+ fastcgi_param PATH_INFO $uri;
+ fastcgi_param QUERY_STRING $args;
+ fastcgi_param HTTP_HOST $server_name;
+ fastcgi_pass unix:/var/run/fcgiwrap/git.socket;
+ }
+
+ ssl_certificate /usr/local/etc/adyxax.org.fullchain;
+ ssl_certificate_key /usr/local/etc/adyxax.org.key;
+}
+```