Artifact Content
Not logged in

Artifact 1b51c5e697808bcd319af553d1d278929fae7bb7

File www/selfhost.wiki part of check-in [67b5f41963] - Added the "selfhost.wiki" page that talks about the three self-hosting fossil repositories and how they are automatically synchronized. by drh on 2009-08-24 16:00:05.

<title>Fossil Self-Hosting Repositories</title>

Fossil Self-Hosting Repositories

Fossil has self-hosted since 2007-07-21. As of this writing (2009-08-24) there are three publicly accessible repositories for he Fossil source code:

  1. http://www.fossil-scm.org/
  2. http://www.hwaci.com/cgi-bin/fossil
  3. http://www2.fossil-scm.org/

The canonical repository is (1). Repositories (2) and (3) automatically stay in synchronization with (1) via a cron job that invokes "fossil sync" on a daily basis.

Note that the two secondary repositories are more than just read-only mirrors. All three servers support full read/write capabilities. Changes (such as new tickets or wiki or check-ins) can be implemented on any of the three servers and those changes automatically propagate to the other two servers.

Server (1) runs as a CGI script on a Linode 720 located in Dallas, TX - on the same virtual machine hosts SQLite and over a dozen other smaller projects. This demonstrates that Fossil does not require much server power. Multiple fossil-based projects an easily be hosted on the same machine, even if that machine is itself one of several dozen virtual machines on single physical box. The CGI script that runs the canonical Fossil self-hosting repository is as follows:

#!/usr/bin/fossil
repository: /fossil/fossil.fossil

Server (2) run as a CGI script on a shared hosting account at Hurricane Electric in San Jose and Fremont, CA. This server demonstrates the ability of Fossil to run on an economical shared-host web account with no privileges beyond port 80 HTTP access and CGI. It is not necessary to have a dedicated server to run Fossil. As far as we are aware, Fossil is the only full-featured configuration management system that can run in such a restricted environment. The CGI script that runs on the Hurricane Electric server is the same as the CGI script shown above, except that the pathnames are modified to suite the environment:

#!/home/hwaci/bin/fossil
repository: /home/hwaci/fossil/fossil.fossil

Server (2) is synchronized with the canonical server (1) by running the following command via cron:

/home/hwaci/bin/fossil sync -R /home/hwaci/fossil/fossil.fossil

Server (3) is a Linode 360 located in Atlanta, GA and set up just like the canonical server (1) with the addition of a cron job for synchronization as in server (2).