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 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)

Christian Weisgerber <naddy@openbsd.org>
Jerome Kasper <neon.king.fr@gmail.com>
Josh Rickmar <jrick@zettaport.com>
Omar Polo <op@openbsd.org>
Stefan Sperling <stsp@openbsd.org>
Tracey Emery <tracey@traceyemery.net>

November 8, 2022 OpenBSD 7.2