Fossil

Fossil is a simple, high-reliability, distributed SCM system with a built-in web interface, including a wiki, a ticket system, a forum and more.


Note

For this guide you should be familiar with the basic concepts of

Prerequisites

Your Fossil web URL needs to be setup:

[isabell@stardust ~]$ uberspace web domain list
isabell.uber.space
[isabell@stardust ~]$

Installation

Fossil is distributed as a single binary, which in this case is the server and the client component. Download Fossil’s latest release and extract it.

[isabell@stardust ~]$ mkdir ~/fossil
[isabell@stardust ~]$ wget https://fossil-scm.org/home/uv/fossil-linux-x64-2.24.tar.gz
[...]
[isabell@stardust ~]$ tar -xzf fossil-linux-x64-2.24.tar.gz -C ~/fossil/
[isabell@stardust ~]$ rm fossil-linux-x64-2.24.tar.gz
[isabell@stardust ~]$

Configuration

Create a repository root

Each Fossil repository is a self-contained SQLite database. The Fossil server needs to know where your repositories are. In this example, we use ~/repos:

[isabell@stardust ~]$ mkdir ~/repos
[isabell@stardust ~]$

Configure web server

To make the application accessible from the outside, configure a web backend:

[isabell@stardust ~]$ uberspace web backend set / --http --port <port>
Set backend for / to port <port>; please make sure something is listening!
You can always check the status of your backend using "uberspace web backend list".
[isabell@stardust ~]$

Note

Fossil will be running on port 8008. You can choose any other valid port in the next step.

Setup daemon

To start the Fossil server automatically and run it in the background, create ~/etc/services.d/fossil.ini with the following content:

[program:fossil]
command=%(ENV_HOME)s/fossil/fossil server %(ENV_HOME)s/repos --repolist --port 0.0.0.0:8008 --remove-prefix

After creating the configuration, tell supervisord to refresh its configuration and start the service:

[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE                            RUNNING   pid 26020, uptime 0:03:14
[isabell@stardust ~]$

Setup a test repository (optional)

To see if everything is working, you can create a test repository here:

[isabell@stardust ~]$ cd ~/repos
[isabell@stardust ~]$ ../fossil/fossil init test.fossil
[isabell@stardust ~]$

Finishing installation

Point your browser to the URL you set up, e. g. https://isabell.uber.space. If you created the test repository in the previous step, you should already see it.

Updates

Note

Fossil must be updated manually.


Tested with Fossil 2.24 on Uberspace 7.16.0

Written by: tux0r <https://tuxproject.de>