No description
Find a file
2026-07-17 23:14:45 +02:00
.forgejo/workflows refactor(security): move staging age key from forgejo secrets to proxmox snippet 2026-07-17 23:01:44 +02:00
modules refactor: abstract docker network creation via custom options 2026-07-17 23:14:45 +02:00
scripts feat(security): add truenas rbac automation script 2026-07-17 23:08:19 +02:00
terraform refactor(security): move staging age key from forgejo secrets to proxmox snippet 2026-07-17 23:01:44 +02:00
users feat: migrate remaining applications, services, and user configurations 2026-07-17 22:18:19 +02:00
.sops.yaml chore: initialize v2 SOPS configuration and README 2026-07-17 22:02:42 +02:00
BOOTSTRAP.md feat(security): add truenas rbac automation script 2026-07-17 23:08:19 +02:00
DISASTER_RECOVERY.md ci: add golden image build action and document disaster recovery 2026-07-17 22:07:49 +02:00
flake.nix feat: add pre-commit-hooks devShell and checks 2026-07-17 22:34:06 +02:00
README.md docs: add comprehensive BOOTSTRAP.md guide for manual initialization 2026-07-17 22:11:41 +02:00

NixOS GitOps Migration (v2)

This branch contains the automated, pull-based GitOps architecture using comin, Terraform, and Forgejo.

Important

Getting Started: If you are setting up this repository from scratch, you must follow the steps in BOOTSTRAP.md before the automated pipelines can function.

Secret Management (SOPS-Nix)

This repository uses sops-nix for secret management, adhering to a strict separation between Production and Staging environments to prevent credential leakage during CI runs.

Production Keys

  • prod-master: This is the ultimate master key for production secrets.
    • Best Practice: The private key is NEVER stored on any server (including the Control Center VM). It is kept locally on a securely backed-up USB key and a paper backup.
    • You only import the private key to your local machine temporarily when you need to encrypt a new secret or during a disaster recovery scenario.
  • Host Keys: Production VMs use their individual SSH host keys (generated during provisioning) to decrypt their specific secrets at boot time.

Staging Keys

  • staging-master: This key is used exclusively for encrypting secrets inside the secrets/staging/ directory.
    • The public key is in .sops.yaml.
    • The private key is stored securely in Forgejo Secrets.
    • During CI runs, the Forgejo Runner injects this private key into the ephemeral Staging VMs via Cloud-Init.
    • Even if this key is compromised, it cannot decrypt production data.

Generating the Master Keys

To generate your master keys (run this on your secure local workstation):

# Generate the prod-master key (save the private key to your USB drive)
age-keygen -o prod-master.txt

# Generate the staging-master key (upload the private key to Forgejo Secrets)
age-keygen -o staging-master.txt

Update .sops.yaml with the public keys outputted by these commands.