Ethica Company Portal
BuildingWebsite, Service-desk, project-pipeline,
A self-hosted IT service management suite — service desk with per-customer SLAs, a mobile field PWA with web push, public status pages, a built-in docs portal, and container monitoring. Live at ethica.no.
Readpage
LiveAuthenticated docs portal
A lightweight Python + Hugo reader that serves a private Git documentation repo behind authentication. ~22 MB image, minimal dependencies.
cv.skui.io
LiveSelf-hosted CV site
A small bilingual Hugo CV deployed with Gitea Actions and Docker, embedded into this site. No CV trapped inside a PDF.
Nextcloud Stack
LiveSelf-hosted files & collaboration
Dockerized Nextcloud behind an nginx reverse proxy with TLS, tracked as infrastructure-as-config for clean redeploys.
skui.io
LiveThis site
Hugo blog built on Blowfish, wrangled by Gitea, and deployed to the homelab nginx network through CI/CD runners.
Bashrc Dotfiles
MaintainedPortable Bash prompt
An elegant, portable Bash prompt with seasonal palettes, time-aware emoji and clean powerline structure.
snapshoot
LiveZFS backups that prove they can be restored
Guards the whole snapshot lifecycle — taken, replicated, verified, restore-tested. Push-only agents on every host, weekly restore drills with receipts, SMART disk health, pool topology, and alerts to Discord and my phone. Built in one night, caught its first real issue the same night.
backhaul
LiveDatabase backups that prove they can be restored
The database sibling of snapshoot. A sidecar agent dumps each database over an outbound-only connection, stores it encrypted, and every night restores it into a throwaway database and counts the rows — restore proof, not just a green checkmark. Fifteen Postgres, MySQL, MariaDB and SQLite databases across three hosts, with browsable history and tiered retention.