#git #markdown #wiki #web-interface #git-branch

app gitpad

a git web interface with editing and Markdown support

2 releases

0.1.1 Jun 23, 2021
0.1.0 Jun 22, 2021

#23 in #web-interface

MIT license

76KB
2K SLoC

GitPad

A lightweight git web interface with:

  • editing support (create, edit, move and remove files)
  • Markdown rendering (for files named *.md)
  • a multi-user mode with file sharing & collaborative editing

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

Files are served under /~{branch}/{path}, so for example /~hello/world.md refers to the world.md file in the hello branch. By default GitPad is in single-user mode, letting the user view and edit all branches (as well as create new branches).

Multi-user mode

Multi-user mode requires you to set up a reverse-proxy that authenticates users and sets the Username header. 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.

In multi-user mode every user has their own Git branch, named exactly like their username. Your own branch is private by default, other users cannot access your files. Users can however share files/directories with other users by creating a .shares.txt file.

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!

Dependencies

~20–34MB
~603K SLoC