GOTWEB(8) System Manager's Manual GOTWEB(8)

gotwebGame of Trees Git repository server for web browsers

gotweb

gotweb provides a web interface allowing Git repository contents to be viewed with a web browser.

gotweb is a CGI program based on got(1) and kcgi(3) which is intended to run in a chroot(2) environment in /var/www. The program has been designed to work out of the box with the httpd(8) web server in conjunction with slowcgi(8).

Enabling gotweb requires the following steps:

  1. The httpd.conf(5) configuration file must be adjusted to run gotweb as a CGI program with slowcgi(8). The EXAMPLES section below contains an appropriate configuration file sample.
  2. httpd(8) and slowcgi(8) must be enabled and started:
      # rcctl enable httpd slowcgi
      # rcctl start httpd slowcgi
        
  3. Optionally, the run-time behaviour of gotweb can be configured via the gotweb.conf(5) configuration file.
  4. Git repositories must be created at a suitable location inside the web server's chroot(2) environment. These repositories should not be writable by the user ID of the httpd(8) server. The default location for repositories published by gotweb is /var/www/got/public.
  5. Git repositories served by gotweb should be kept up-to-date with a mechanism such as got fetch, git-fetch(1), or rsync(1), scheduled by cron(8).

/var/www/got/public/
Default location for Git repositories served by gotweb. This location can be adjusted in the gotweb.conf(5) configuration file.
/var/www/cgi-bin/gotweb/gotweb
The gotweb CGI program, statically linked for use in a chroot(2) environment.
/var/www/cgi-bin/gotweb/gw_tmpl/
Directory for template files used by gotweb.
/var/www/cgi-bin/gotweb/libexec/
Directory containing statically linked got(1) helper programs which are run by gotweb to read Git repositories.
/var/www/htdocs/gotweb/
Directory containing HTML, CSS, and image files used by gotweb.
/var/www/got/tmp/
Directory for temporary files created by gotweb.

Example configuration for httpd.conf:


  types { include "/usr/share/misc/mime.types" }
  server "gotweb.example.com" {
  	listen on * port 80
  	root "/htdocs/gotweb"
  	location "/cgi-bin/*" {
  		root "/"
  		fastcgi
  	}
  	location "/*" {
  		directory index "index.html"
  	}
  }

got(1), kcgi(3), git-repository(5), gotweb.conf(5), httpd(8), slowcgi(8)

Tracey Emery <tracey@traceyemery.net>
Stefan Sperling <stsp@openbsd.org>

May 5, 2020 OpenBSD 6.6