Instant Gitweb Daemon
Standalone wrapper for self-hosting a GitWeb frontend as simple and unified replacement for git-instaweb.
The builtin Gitweb repository frontend can be fiddly to setup and configure.
As a more stable and featured self-hosted alternative to the git-instaweb
generated Python code, the Instant Gitweb Daemon centrally configures and runs the corresponding CGI script in a Python HTTP server.
No local files will be created, a temporary directory containing configuration files that are generated with sensible defaults is used as environment instead.
The GITWEB_CONFIG
environment variable can be used to override this.
Note that GITWEB_CONFIG_SYSTEM
and GITWEB_CONFIG_COMMON
can be set, too – see the Gitweb documentation for details.
Basic HTTP authentication is supported – via commandline argument or environment variable. Given a certificate and key, the web frontend can also be served via HTTPS.
There are no additional python3 dependencies needed and gitweb
is usually already installed per default with git
.
For actually running the Perl CGI script, libcgi-pm-perl
or similar might be needed, though.
In general, this self-hosted git web interface still should not be considered safe enough to be exposed to the internet – even when using authentication and HTTPS.
usage: gitweb.py [-h] [--local] [--port PORT] [--auth USER:PASS] [--ssl-cert CERT_PEM] [--ssl-key KEY_PEM] [--gitweb DIR] --project-root DIR [REPOSITORY [REPOSITORY ...]]
positional arguments:
REPOSITORY repository git directory to expose, scan root if none given (default: None)
optional arguments:
-h, --help show this help message and exit
--local only bind to 127.0.0.1 (default: False)
--port PORT port number to bind to (default: 8000)
--auth USER:PASS require HTTP basic authentication (default: None)
--auth-env ENVAR require HTTP basic authentication, credentials from environment variable (default: None)
--ssl-cert CERT_PEM certificate PEM file for HTTPS (default: None)
--ssl-key KEY_PEM certificate key PEM file for HTTPS (default: None)
--gitweb DIR gitweb installation directory (default: /usr/share/gitweb)
--project-root DIR common root directory for repositories or where to scan for (default: None)