<- Back

# OpenBSD httpd, slowcgi and cgit

Last modification on 2021-04-11
This is a guide to get »cgit« working with
»OpenBSD httpd(8)« and
»slowcgi(8)« in base.  OpenBSD httpd is very simple to setup, but nevertheless
this guide might help someone out there.


## Installation

Install the cgit package:

        # pkg_add cgit

or build it from ports:

        # cd /usr/ports/www/cgit && make && make install


## Configuration

### httpd
An example of »httpd.conf(5)«:
httpd.conf.

### slowcgi

By default the slowcgi UNIX domain socket is located at:
/var/www/run/slowcgi.sock.  For this example we use the defaults.


### cgit

The cgit binary should be located at: /var/www/cgi-bin/cgit.cgi (default).

cgit uses the $CGIT_CONFIG environment variable to locate its config.  By
default on OpenBSD this is set to /conf/cgitrc (chroot), which is
/var/www/conf/cgitrc.  An example of the cgitrc file is here: »cgitrc«.
In this example the cgit cache directory is set to /cgit/cache (chroot), which
is /var/www/cgit/cache.  Make sure to give this path read and write permissions
for cgit (www:daemon).

In the example the repository path (scan-path) is set to /htdocs/src (chroot),
which is /var/www/htdocs/src.

The footer file is set to /conf/cgit.footer. Make sure this file exists or you
will get warnings:

        # >/var/www/conf/cgit.footer

Make sure cgit.css (stylesheet) and cgit.png (logo) are accessible, by default:
/var/www/cgit/cgit.{css,png} (location can be changed in httpd.conf).

To support .tar.gz snapshots a static gzip binary is required in the chroot
/bin directory:

        cd /usr/src/usr.bin/compress
        make clean && make LDFLAGS="-static -pie"
        cp obj/compress /var/www/bin/gzip


## Running the services

Enable the httpd and slowcgi services to automatically start them at boot:

        # rcctl enable httpd slowcgi

Start the services:

        # rcctl start httpd slowcgi