Artifact ee86a1290195803262d7175ee4453f8e2771da3cb81cf713a2498fd8912c02df:
- File www/selfhost.wiki — part of check-in [54977e1413] at 2024-02-04 04:29:29 on branch inskinerator-modern-backport — Replaced nearly all explicit uses of the "blockquote" tag in the embedded docs: * Constructs like "<blockquote><pre>" are now simply "<pre>" * Ditto "<blockquote><b>" for command examples, which then allowed me to get rid of explicit "br" elements; pre does that for us. * Where it was used merely to get an indent for a code block, we're now using pre or verbatim instead, depending on whether we need embedded HTML and/or pre-wrap handling. (Not the same thing as the prior item.) In some places, this let us replace use of HTML-escaped code blocks in pre with verbatim equivalents, not needing the escaping, allownig the doc source to read more like the rendered HTML. * Use of blockquotes to get hierarchical indenting is no longer necessary; the skin does that. A good example is indenting ol and ul lists under the parent paragraph; additional manual indenting is no longer necessary. The only remaining instances of "blockquote" under www/ are necessary: # The copyright release doc is plain HTML, without the fossil-doc wrapper, giving it no access to the new skin improvements. # One MD doc wants a blockquote in the middle of a list, and the current parsing rules don't let us use ">" there. # The skinning docs talk about styling blockquote elements at one point; it isn't a use of the tag, it is a prose reference to it. (user: wyoung size: 3253) [more...]
Fossil Self-Hosting Repositories
Fossil has self-hosted since 2007-07-21. As of 2017-07-25 there are three publicly accessible repositories for the Fossil source code:
The canonical repository is (1). Repositories (2) and (3) automatically stay in synchronization with (1) via a cron job that invokes "fossil sync" at regular intervals. Repository (2) also publishes a GitHub mirror of Fossil as a demonstration of how that can be done.
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 8192 located in Dallas, TX - on the same virtual machine that hosts SQLite and over a dozen other smaller projects. This demonstrates that Fossil can run on a low-power host processor. Multiple fossil-based projects can 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 (3) ran for 10 years as a CGI script on a shared hosting account at Hurricane Electric in Fremont, CA. This server demonstrated 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 computer with administrator privileges 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 ran on the Hurricane Electric server was the same as the CGI script shown above, except that the pathnames are modified to suit the environment:
#!/home/hwaci/bin/fossil repository: /home/hwaci/fossil/fossil.fossil
In recent years, virtual private servers have become a more flexible and less expensive hosting option compared to shared hosting accounts. So on 2017-07-25, server (3) was moved onto a $5/month "droplet" VPS from Digital Ocean located in San Francisco.
Server (3) is synchronized with the canonical server (1) by running a command similar to the following via cron:
/usr/local/bin/fossil all sync -u
Server (2) is a Linode 4096 located in Newark, NJ and set up just like the canonical server (1) with the addition of a cron job for synchronization. The same cron job also runs the fossil git export command after each sync in order to mirror all changes to GitHub.