diff options
Diffstat (limited to 'posts/cgit-nginx-ubuntu')
-rw-r--r-- | posts/cgit-nginx-ubuntu/main.md | 96 | ||||
-rw-r--r-- | posts/cgit-nginx-ubuntu/meta.json | 3 |
2 files changed, 99 insertions, 0 deletions
diff --git a/posts/cgit-nginx-ubuntu/main.md b/posts/cgit-nginx-ubuntu/main.md new file mode 100644 index 0000000..c225bd4 --- /dev/null +++ b/posts/cgit-nginx-ubuntu/main.md @@ -0,0 +1,96 @@ +Installing cGit behind NGINX on Ubuntu +====================================== + +[cGit](https://git.zx2c4.com/cgit/about/) is a fast web interface based on the CGI specification. It is lightweight and doesn't require a database or web authentication system. + +It's easy to configure. For some reason, all the online guides for Ubuntu decided they needed to compile it from scratch and write their own start scripts in a mix of perl and bash. You don't need superhero sysadmin skills from the late 90s. All components are packaged with systemd units... there is a better way... + +### 1. Install `cgit` and `fcgiwrap`. + +`fcgiwrap` will create a socket NGINX can use to pass the CGI variables to cGit: +``` +sudo apt install fcgiwrap +sudo apt install cgit +``` + +### 2. Modify the `cgitrc` file under `/etc/cgitrc` to your liking: +``` +# See cgitrc(5) +# prepend this string to every url +virtual-root=/ +enable-index-links=1 +enable-commit-graph=1 + +root-title=My Git Repos +root-desc=I exclusivly write code in Smalltalk-71 +logo=/assets/my_custom_logo.png + +# Add site-specific configuration +# ... + +``` + +### 3. Optionally create an assets directory and add your custom logo / css: +``` +mkdir /var/www/html/assets +cp my_custom_logo.png /var/www/html/assets +``` + +### 4. Configure NGINX + +Add the site to NGINX. This launches the `cgit.cgi` executable passing it to the `fcgiwrap` socket: +```conf +echo >/etc/nginx/sites-available/cgit.conf <<EOF +server { + listen 80; + + server_name git.domain.com; + server_name www.git.domain.com; + + root /usr/share/cgit; + + # Maintainer overridden assets will live in /assets + # This allows you to change add a custom logo or modified CSS + # See cgitrc(5) + location ~* /assets { + root /var/www/html; + expires 30d; + } + + # Fallback to static assets included by cGit + location ~* ^.+\.(css|png|ico)$ { + root /usr/share/cgit; + expires 30d; + } + + try_files $uri @cgit; + + location @cgit { + fastcgi_param SCRIPT_FILENAME /usr/lib/cgit/cgit.cgi; + fastcgi_param PATH_INFO $uri; + fastcgi_param QUERY_STRING $args; + fastcgi_param HTTP_HOST $server_name; + fastcgi_pass unix:/run/fcgiwrap.socket; + } + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log warn; +} +EOF +``` + +### 4. Enable the site: +```bash +ln -s /etc/nginx/sites-available/git.conf /etc/nginx/sites-enabled/cgit.conf +``` + +Note: all files in sites-enabled should be included in `nginx.conf`'s http section: +```conf +include /etc/nginx/sites-enabled/*; +``` + +### 5. Restart NGINX + +``` +sudo systemctl restart nginx +``` diff --git a/posts/cgit-nginx-ubuntu/meta.json b/posts/cgit-nginx-ubuntu/meta.json new file mode 100644 index 0000000..81968b4 --- /dev/null +++ b/posts/cgit-nginx-ubuntu/meta.json @@ -0,0 +1,3 @@ +{ + "name": "Installing cGit behind NGINX on Ubuntu" +}
\ No newline at end of file |