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/

Searching for wiki users (wiki admins only)

The wiki-user-search tool allows administrators to search for MediaWiki users by username, email, or real name. Since it connects to PostgreSQL, it must be run as the postgres user:

# Search by username
$ sudo -u postgres wiki-user-search "admin"

# Search by email domain
$ sudo -u postgres wiki-user-search "@example.com"

# Search by real name
$ sudo -u postgres wiki-user-search "John Smith"

# Limit results (default is 10)
$ sudo -u postgres wiki-user-search "test" -l 20

The tool displays results in a table format showing Username, Email, and Real Name. It uses fuzzy matching with case-insensitive search and prioritizes exact matches over partial matches.

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:

About

This project contains the setup of https://wiki.nixos.org

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 12