ref: 6f314dc24c9981550934442311c0910445711771
dir: /this.md/
About this ========== Other than the git content repository—at the moment hosted on sourcehut—the docs system runs and is hosted by 9front software on a 9front machine. This page intends to document how this is done. The software ------------ Ori's [git9](https://github.com/oridb/git9) is used for pulling content updates from the repository. kvik's [ugh!](http://src.a-b.xyz/ugh) site generator renders the content, mainly the HTML pages. ugh! depends on [discount](https://github.com/Orc/discount) markdown processor by default. cinap's [tcp80](http://felloff.net/tcp80.tgz) which has been slightly [modified](http://src.a-b.xyz/tcp80) serves the web clients. kvik's [unionfs](http://src.a-b.xyz/unionfs) serves the 9p clients. The setup --------- The rest is a glue provided through standard 9front mechanisms. ### Starting off ; git/clone git://src.a-b.xyz/ugh /usr/doc ; git/clone https://git.sr.ht/~kvik/docs.9front.org /usr/doc/data ; mkdir /usr/web ### Updates Checking for updates and triggering page regeneration is done by a custom script running once per minute through cron. 0-59 * * * * local /usr/doc/bin/update ### Serving 9p 9p clients are served by unionfs, spawned by system network listener. `/cfg/$sysname/service/tcp909` #!/bin/rc # Runs as 'none'. exec /bin/unionfs -i /usr/doc/public ### Serving HTTP Web clients are served by tcp80, spawned by system network listener. `/cfg/$sysname/service/tcp80` #!/bin/rc exec /bin/tcp80 -n /usr/doc/cfg/webns The namespace file `/usr/doc/cfg/` simply binds the `public/` directory to the web root: bind /usr/doc/public /usr/web Page Categories --------------- For now, we decided to use directories as categories in a purely hierarchical manner. The listing is done with a standard file listing. Later on there are multiple ideas how to handle categories: - Using one category file with information about what files belong into what category. There's already a script for that. - Using a separate tag/category file for each page (with a separate file ending). These files contain category ids per line. Another category file maps ids to full category names. TODO ---- - Quick-linking pages