Goals¶
When I set about making this lab I had a number of goals - I wonder how well I will do ?
A master list of ideas/goals/etc can be found at Issue #1
- Stability
NixOS stable channel for core services unstable for desktop apps/non-mission critical where desired. Containers with SHA256 pinning for server apps KISS
Keep it Simple, use boring, reliable, trusted tools - not todays flashy new software repoEasy Updates
Weekly update schedule, utilizing Renovate for updating lockfile and container images. Autoupdates enabled off main branch for mission critical. Aim for 'magic rollback' on upgrade failure- Backups
Nightly restic backups to both cloud and NAS. All databases to have nightly backups. Test backups regulary Reproducability
Flakes & Git for version pinning, SHA256 tags for containers.Monitoring
Automated monitoring on failure & critical summaries, using basic tools. Use Gatus for both internal and external monitoringContinuous Integration
CI against main branch to ensure all code compiles OK. Use PR's to add to main and dont skip CI due to impatience- Security
Dont use containers with S6 overlay/root (i.e. LSIO). Expose minimal ports at router, Reduce attack surface by keeping it simple, review hardening containers/podman/NixOS
- Ease of administration
Lean into the devil that is SystemD - and have one standard interface to see logs, manipulate services, etc. Run containers as podman services, and webui's for watching/debugging - Secrets ssshh..
Sops-nix for secrets, living in my gitrepo. Avoid cloud services like I used in k8s (i.e. Doppler.io)