aboutsummaryrefslogtreecommitdiff

GitPad

A lightweight git web interface with:

  • editing support (create, edit, move and remove files)
  • Markdown rendering (for files named *.md, requires the md feature)
  • a multi-user mode (each user gets their own private branch)

You can install GitPad with:

$ cargo install gitpad

GitPad needs to be started from inside of a bare Git repository. For example:

$ git init --bare example.git
$ cd example.git/
$ gitpad
Listening on http://127.0.0.1:8000

By default GitPad is in single-user mode, serving the branch pointed to by HEAD.

Multi-user mode

Multi-user mode requires you to set up a reverse-proxy that authenticates users and sets the Username header. Every user gets their own private Git branch, named exactly like their username and served under /~{username}.

The simplest authentication mechanism is HTTP Basic Auth. With NGINX a reverse-proxy could be configured as follows:

server {
    listen 80;
    listen [::]:80;

    server_name notes.localhost;
    client_max_body_size 5M;

    location / {
        auth_basic 'Restricted';
        auth_basic_user_file /etc/nginx/gitpad_passwd;
        proxy_set_header Username $remote_user;

        proxy_pass http://localhost:8000;

        # Or if you start GitPad with --socket /srv/sockets/gitpad.sock
        # proxy_pass http://unix:/srv/sockets/gitpad.sock;
    }
}

For instructions on how to create the auth_basic_user_file, refer to the NGINX documentation.

Once you have set this up start GitPad in multi-user mode by running it with the -m flag.

Configuring committer identities

In single-user mode GitPad just uses the committer identity from your git config.

In multi-user mode GitPad defaults to {username} <{username}@localhost.invalid>. Committer identities can be configured by creating a users.toml file in the gitpad branch, with sections like the following:

[johndoe]
name = "John Doe"
email = "john@example.com"

Contributing

Feedback, bug reports and suggestions are welcome!