diff --git a/hosts/server/toggles.nix b/hosts/server/toggles.nix index 4137dc0..a92433f 100644 --- a/hosts/server/toggles.nix +++ b/hosts/server/toggles.nix @@ -90,7 +90,6 @@ in "keycloak" "linkwarden" "oauth2-proxy" - "plausible" "vaultwarden" ]; } diff --git a/hosts/vps/configuration.nix b/hosts/vps/configuration.nix index 596a4d9..c8c1e29 100644 --- a/hosts/vps/configuration.nix +++ b/hosts/vps/configuration.nix @@ -9,9 +9,8 @@ ./hardware-configuration.nix ../../config/base.nix ]; - my = { + my = import ./toggles.nix // { secureHost = true; - enableProxy = true; users.nixremote = { enable = true; authorizedKeys = inputs.self.lib.getSshKeys [ diff --git a/hosts/vps/toggles.nix b/hosts/vps/toggles.nix new file mode 100644 index 0000000..d70dcc4 --- /dev/null +++ b/hosts/vps/toggles.nix @@ -0,0 +1,10 @@ +{ + enableProxy = true; + servers = { + postgres.enable = true; + plausible = { + enable = true; + enableProxy = true; + }; + }; +} diff --git a/modules/servers/postgres.nix b/modules/servers/postgres.nix index 1eeb3cd..be0867f 100644 --- a/modules/servers/postgres.nix +++ b/modules/servers/postgres.nix @@ -37,6 +37,7 @@ let "mealie" "nextcloud" "paperless" + "plausible" "shiori" "sonarqube" "vaultwarden" diff --git a/specs/004-vps-migration/quickstart.md b/specs/004-vps-migration/quickstart.md index ac94d79..eb05150 100644 --- a/specs/004-vps-migration/quickstart.md +++ b/specs/004-vps-migration/quickstart.md @@ -25,8 +25,9 @@ - Update VPS public IP to `45.33.0.228` in SSH configuration - Update host server VPN client to target the new VPS -4. Provide and review legacy proxy config: +4. Provide and review legacy proxy config snapshot: - Supply caddy files for subdomain comparison + - Treat caddy as migration input only; nginx is the only proxy target for NixOS runtime ## Caddy vs Nix Subdomain Comparison (from provided caddy/ directory) @@ -64,3 +65,39 @@ - Validate historical data is present 6. Run verification steps for each task (per spec FR-012). + +## Clarification Candidates From History Review + +- `opentracker` was installed and enabled (`systemctl enable --now opentracker`) with firewall rules for TCP/UDP `6969`; confirm if tracker service is still required on NixOS. +- `ip6tables` was enabled on Fedora (`systemctl enable ip6tables`); confirm if equivalent IPv6 policy is required on VPS. +- `net.ipv4.conf.wg0.rp_filter=0` was set during forwarding troubleshooting; confirm if this sysctl needs to be persisted on VPS. +- Fedora-specific SELinux SSH port handling (`semanage ssh_port_t`) appears in history; confirm it can remain excluded on NixOS. + +## Verification Steps + +- **T001**: `test -f ./iptables && test -f ./secrets/ssh/ed25519_deploy.pub && test -f ./secrets/ssh/ed25519_lidarr-reports.pub && test -f ./secrets/wireguard.yaml` +- **T002**: verify this section exists in `/home/jawz/Development/NixOS/specs/004-vps-migration/quickstart.md` +- **T003**: `rg -n "mainServer|enableProxy" hosts/server/toggles.nix modules/modules.nix` +- **T004**: `rg -n "wireguard|wg0|services.wireguard" modules/services/wireguard.nix hosts/vps/configuration.nix` +- **T005**: `rg -n "vps|45.33.0.228|programs.ssh" config/jawz.nix modules/modules.nix` +- **T006**: `rg -n "/etc/caddy/Caddyfile.d" sudo_hist jawz_hist` +- **T007**: `rg -n 'mainServer = "vps"' hosts/server/toggles.nix modules/modules.nix` +- **T008**: `rg -n "enableProxy = true" hosts/vps/toggles.nix hosts/vps/configuration.nix hosts/server/toggles.nix` +- **T009**: ensure Caddy vs Nix comparison section remains in this file +- **T010**: `rg -n "iqQCY4iAWO-ca/pem|certPath|proxyReversePrivate" modules/network/nginx.nix modules/servers` +- **T011**: `rg -n "iptables.rules|iptables-restore|networking.firewall.enable = false" hosts/vps/configuration.nix` +- **T012**: `rg -n "services.wireguard.enable = true" hosts/vps/configuration.nix` +- **T013**: confirm `wireguard/private` exists in `secrets/wireguard.yaml` +- **T014**: `rg -n "10.77.0.1/24|10.8.0.1/24|10.9.0.1/24|AllowedIPs|allowedIPs" modules/services/wireguard.nix` +- **T015**: `rg -n "users\\.deploy|users\\.lidarr-reports|ed25519_deploy|ed25519_lidarr-reports" hosts/vps/configuration.nix` +- **T016**: `rg -n "workstation|server|deacero|galaxy" hosts/vps/configuration.nix` +- **T017**: `rg -n "ports = \\[ 3456 \\]|PermitRootLogin = \"no\"" hosts/vps/configuration.nix` +- **T018**: `rg -n "sudo-rs\\.extraRules|nixos-rebuild|nixremote" hosts/vps/configuration.nix` +- **T019**: `rg -n "nixworkstation" hosts/vps/configuration.nix` +- **T020**: `rg -n "45\\.33\\.0\\.228" modules/modules.nix config/jawz.nix` +- **T021**: `rg -n "endpoint = .*my\\.ips\\.vps" hosts/server/configuration.nix` +- **T022**: verify "Clarification Candidates From History Review" section exists in this file +- **T023**: intentionally skipped by operator for this implementation pass +- **T024**: verify each task from T001-T026 has a corresponding verification line in this section +- **T025**: `rg -n "caddy|Caddy" README.org docs || true` and confirm no active-proxy references remain outside legacy migration notes +- **T026**: `rg -n "T0[0-2][0-9]" /home/jawz/Development/NixOS/specs/004-vps-migration/tasks.md` and confirm each task mentions at least one concrete path diff --git a/specs/004-vps-migration/tasks.md b/specs/004-vps-migration/tasks.md index 235f2fc..8dbfba2 100644 --- a/specs/004-vps-migration/tasks.md +++ b/specs/004-vps-migration/tasks.md @@ -19,7 +19,7 @@ Deliver MVP as User Story 1 (primary host reverse proxy + keep services on host - [x] T003 [P] Review mainServer and enableProxy options in hosts/server/toggles.nix and modules/modules.nix - [x] T004 [P] Review wireguard module in modules/services/wireguard.nix and VPS host config in hosts/vps/configuration.nix - [x] T005 [P] Review SSH host/IP settings in config/jawz.nix and modules/modules.nix for vps IP updates -- [x] T006 [P] Review caddy file list references in jawz_hist and sudo_hist to prepare subdomain comparison inputs +- [x] T006 [P] Review caddy file list references in ./jawz_hist and ./sudo_hist to prepare subdomain comparison inputs ## Phase 3: User Story 1 (P1) - Primary VPS reverse proxy @@ -51,7 +51,7 @@ Deliver MVP as User Story 1 (primary host reverse proxy + keep services on host - [x] T014 [US3] Update wireguard peer configuration in modules/services/wireguard.nix using sops secrets refs for public/private keys (no plaintext) - [x] T015 [US3] Add service users and groups deploy and lidarr-reports with authorized_keys in hosts/vps/configuration.nix using secrets/ssh/ed25519_deploy.pub and secrets/ssh/ed25519_lidarr-reports.pub - [x] T016 [US3] Add admin SSH authorized_keys for workstation, server, deacero, galaxy in hosts/vps/configuration.nix -- [x] T017 [US3] Configure sshd port and auth settings in config/base.nix to match: Port 3456, PermitRootLogin no, PasswordAuthentication no, AuthorizedKeysFile .ssh/authorized_keys +- [x] T017 [US3] Configure sshd port and auth settings in hosts/vps/configuration.nix to match: Port 3456, PermitRootLogin no, PasswordAuthentication no - [x] T018 [US3] Harden remote rebuild access by switching to a non-root SSH user for rebuilds (nixremote) and requiring sudo for nixos-rebuild in hosts/vps/configuration.nix and modules/users/nixremote.nix - [x] T019 [US3] Restrict SSH access for remote rebuilds by limiting allowed users/keys for nixremote (update inputs.self.lib.getSshKeys list in hosts/vps/configuration.nix) - [x] T020 [US3] Update VPS IP to 45.33.0.228 in modules/modules.nix and config/jawz.nix SSH host entry @@ -63,14 +63,14 @@ Deliver MVP as User Story 1 (primary host reverse proxy + keep services on host **Independent test criteria**: Clarification list exists and each task has a verification step. -- [ ] T022 [US4] Review sudo_hist and jawz_hist for missing configuration; record clarification list in specs/004-vps-migration/quickstart.md +- [x] T022 [US4] Review sudo_hist and jawz_hist for missing configuration; record clarification list in specs/004-vps-migration/quickstart.md - [ ] T023 [US4] Document analytics data migration steps (export, import, validate) in specs/004-vps-migration/quickstart.md -- [ ] T024 [US4] Add verification steps for each task in specs/004-vps-migration/quickstart.md +- [x] T024 [US4] Add verification steps for each task in specs/004-vps-migration/quickstart.md ## Phase 7: Polish & Cross-Cutting Concerns -- [ ] T025 [P] Update any references to old VPS proxy logic (caddy) to ensure nginx is the only proxy in documentation (README.org or docs/ if applicable) -- [ ] T026 [P] Validate that all tasks have explicit file paths and update task descriptions accordingly +- [x] T025 [P] Update references to old VPS proxy logic (caddy) to ensure nginx is the only runtime proxy in README.org and docs/*.md +- [x] T026 [P] Validate all task descriptions include explicit file paths in specs/004-vps-migration/tasks.md and update mismatches ## Dependencies