Skip to content

NixOS/nixos-wiki-infra

Repository files navigation

nixos-wiki-infra

This project contains the setup of the official NixOS Wiki (wiki.nixos.org).

Additionally, this project's GitHub Issues host a space for coordination and discussion of wiki activities, in tandem with the Matrix channel #wiki:nixos.org.

Examples

Checkout ./targets/nixos-wiki.nixos.org for an example terraform deployment on hetzner cloud.

Downloading a dump of the wiki

This is useful if you want to run your own instance. Every day an XML dump is updated here:

https://wiki.nixos.org/wikidump.xml.zst

Restoring from a backup (wiki admins only)

$ systemctl stop phpfpm-mediawiki.service
$ borg-job-wiki list
$ borg-job-wiki mount u391032-sub1@u391032.your-storagebox.de:wiki.nixos.org/repo::wiki-wiki-2024-04-01T12:40:37 /tmp/restore
$ ls -la /tmp/restore/var/lib/mediawiki/backup/
$ sudo dropdb db
$ sudo -u postgres dropdb mediawiki
$ systemctl restart postgresql.service
$ sudo -u postgres pg_restore -d mediawiki < /tmp/restore/var/lib/mediawiki/backup/db
$ systemctl start phpfpm-mediawiki.service
$ ls -la /tmp/restore/var/lib/mediawiki-uploads/
$ umount /tmp/restore/

Applying terraform

Updating hetzner ssh keys:

$ ./targets/admins/tf.sh apply

Deploying hetzner machine:

$ ./targets/nixos-wiki.nixos.org/tf.sh apply

Updating NixOS server

$ ./targets/nixos-wiki.nixos.org/deploy.sh

Testing

Run NixOS VM integration tests to verify configuration:

$ nix build .#checks.x86_64-linux.test --log-format bar-with-logs

Format code:

$ nix fmt

Run link health checks:

$ nix develop .#linkcheck
$ ./checks/linkcheck/lychee.sh

interactive VM

You can also run the wiki in an interactive vm by running

nix run .#interactive-vm

you can then access the wiki at localhost:4360 follow the output of the script for more details (like passwords)

FAQ:

When logging in with "GitHub auth", the app shows "Act on your behalf" as a permission.

We created the Oauth app with read-only access and minimal permissions:

Unfortunately, GitHub misrepresents this information. Read more about this issue here: https://github.com/orgs/community/discussions/37117

Roles

Various roles are present on the wiki: