diff --git a/configs/restic/README.md b/configs/restic/README.md index 9b5273a..f902b0d 100644 --- a/configs/restic/README.md +++ b/configs/restic/README.md @@ -2,6 +2,8 @@ Per-host restic backup configs, deployed into `/etc/restic/` on each server and driven by `resticprofile` + `systemd` timers. +Writes flow to two rest-servers: the Anaheim one on ana-docker stores data to an NFS mount backed by the Debian file server at `10.250.50.50`; the NH3 one on the Synology at `10.100.50.50` stores to local Btrfs. Cross-site rsync keeps each side holding a mirror of the other. + ## Layout ``` diff --git a/docs/pfi/proxmox-vms.md b/docs/pfi/proxmox-vms.md index 24b4475..25c24fc 100644 --- a/docs/pfi/proxmox-vms.md +++ b/docs/pfi/proxmox-vms.md @@ -16,13 +16,15 @@ | **CPU** | 2 sockets × 2 cores = 4 vCPU (host passthrough) | | **Memory** | 8,196 MB | | **Disk** | `scsi0`: 80G on ospool | -| **CDROM** | `ide2`: TrueNAS-SCALE-22.12.1.iso | +| **CDROM** | `ide2`: TrueNAS-SCALE-22.12.1.iso _(original install media; current OS is Debian 12)_ | | **Network** | `net0`: virtio, MAC `9A:90:79:7A:86:87`, vmbr0, VLAN 50 | | **Boot** | scsi0 → ide2 → net0 | | **Startup** | Order 2, delay 120s | | **Onboot** | No | -**Purpose**: TrueNAS SCALE storage appliance. Provides NAS/NFS/iSCSI to the colo environment. +**Purpose**: NAS/NFS/SMB storage for the colo environment. + +**Current OS**: Debian 12 (bookworm), reprovisioned from the original TrueNAS SCALE install — SSH banner `OpenSSH_9.2p1 Debian-2+deb12u9`, no web UI on 80/443, no TrueNAS middleware. Shares are hand-managed via `/etc/exports` and `/etc/samba/smb.conf`. Mount paths kept the `/mnt//…` shape of the original ZFS layout for host compatibility. --- @@ -239,7 +241,7 @@ VMs without a startup order (103, 106, 107) will start based on their `onboot` s | VMID | Name | vCPU | RAM (MB) | Disk | OS | |---|---|---|---|---|---| -| 100 | PFI-ANA-TRUENAS | 4 | 8,196 | 80G | TrueNAS SCALE | +| 100 | PFI-ANA-TRUENAS | 4 | 8,196 | 80G | Debian 12 (reprovisioned from TrueNAS SCALE) | | 101 | PFI-ANA-DC | 12 | 24,576 | 240G | Windows 11 | | 102 | PFI-ANA-Docker | 8 | 16,384 | 250G | Linux | | 103 | PFI-SlaveBot | 8 | 8,192 | 256G | Windows 10 | diff --git a/servers/ana-docker/README.md b/servers/ana-docker/README.md index 090075b..e7e1ecd 100644 --- a/servers/ana-docker/README.md +++ b/servers/ana-docker/README.md @@ -14,7 +14,7 @@ General-purpose Docker host for the Anaheim colo. Runs everything at `10.250.0.0 - **CPU:** 8 vCPU (QEMU virtual — this is a VM) - **RAM:** 15.6 GB - **GPUs:** none -- **Storage:** 245 GB root (ext4) + NFS mounts from `10.250.50.50` (TrueNAS) +- **Storage:** 245 GB root (ext4) + NFS mounts from `10.250.50.50` (Debian 12 NFS/SMB file server; historically TrueNAS SCALE, since reprovisioned) - **OS:** Debian 12 (bookworm), kernel 6.1.x - **Docker:** 20.10.24 @@ -47,7 +47,7 @@ General-purpose Docker host for the Anaheim colo. Runs everything at `10.250.0.0 | dockge | 5001 | Docker stack management UI | | beszel | 8090 | Fleet metrics hub (+ local agent); agents on the other hosts report here | | dozzle (hub as `dozzle-hub`) | 8088 | Fleet log viewer; agents on the other hosts report here | -| restic rest-server | 8000 | Anaheim-side restic endpoint (writes to TrueNAS NFS at `/mnt/backup/restic/repo/ana/`); paired with `rest-server-nh3` on the Synology for the NH3 side | +| restic rest-server | 8000 | Anaheim-side restic endpoint (writes to the NFS mount at `/mnt/backup/restic/repo/ana/`, backed by the Debian file server at `10.250.50.50`); paired with `rest-server-nh3` on the Synology for the NH3 side | | backrest | 9898 | Fleet-wide restic snapshot viewer / restore UI — points at both rest-servers | | it-tools | 8780 | Dev utilities | | mattermost | — | Stopped; kept around for reference | diff --git a/stacks/backrest/README.md b/stacks/backrest/README.md index 9e48385..ecd81c7 100644 --- a/stacks/backrest/README.md +++ b/stacks/backrest/README.md @@ -7,7 +7,7 @@ Web UI over restic repositories. Runs **once, on ana-docker**, and points at eve ## Role in the fleet -- Actual backups are run by per-host `systemd` timers calling `restic` (see the backup design; not yet deployed). Each host writes to its site-local S3 bucket (TrueNAS on ana, Synology on nh3). +- Actual backups are run by per-host `systemd` timers calling `restic`. Each host writes to its site-local rest-server (ana-docker for Anaheim hosts, Synology for NH3). - **This container does not run backups by default** — it's a viewer/manager pointed at existing repos. (Backrest *can* be the scheduler instead of systemd timers; we're keeping the scheduler on the host for simplicity.) - Because it only needs to talk to S3 endpoints (not host filesystems), no bind mounts of host paths are required. @@ -44,9 +44,9 @@ For each per-host repo (to be added once the restic pipeline is running): ## Backup scope, when wired up -- ana-docker, ana-ml2 → TrueNAS S3 at `10.250.50.50:4521` -- nh3-docker, esh-docker-vm → Synology S3 at `10.100.50.50:4521` -- Cross-site rclone sync makes each bucket also hold the other site's data, so you can restore *either* host from *either* side if one NAS is down. +- ana-docker, ana-ml2, esh-docker-vm → Anaheim rest-server on ana-docker (`:8000`), data on NFS mount backed by the Debian file server at `10.250.50.50` +- nh3-docker → NH3 rest-server on the Synology (`10.100.50.50:8000`), data on local Btrfs +- Cross-site rsync will make each NAS hold the other site's data, so you can restore *either* host from *either* side if one NAS is down. ## Scaling knobs diff --git a/stacks/backrest/compose.yaml b/stacks/backrest/compose.yaml index 518a694..4e5213c 100644 --- a/stacks/backrest/compose.yaml +++ b/stacks/backrest/compose.yaml @@ -1,7 +1,9 @@ # Backrest — web UI over restic repositories. # # Role here: single central viewer for every host's restic repo on both -# site-local S3 endpoints (TrueNAS at ana, Synology at nh3). Per-host +# site-local rest-servers (ana-docker writing to the Debian NFS server +# at 10.250.50.50, Synology at 10.100.50.50 writing to its local Btrfs). +# Per-host # `restic` runs will still be driven by systemd timers on each host; this # stack is how we see what ran, browse snapshots, and restore. # diff --git a/stacks/rest-server-ana/README.md b/stacks/rest-server-ana/README.md index 42d76b3..d5ffe52 100644 --- a/stacks/rest-server-ana/README.md +++ b/stacks/rest-server-ana/README.md @@ -4,7 +4,7 @@ Anaheim-site restic backup endpoint. Replaces the older `restic` stack on ana-do **Server:** ana-docker (`10.250.50.70`) **Port:** `http://10.250.50.70:8000` -**Data:** `/mnt/backup/restic/repo/ana/` (TrueNAS NFS mount on the host) +**Data:** `/mnt/backup/restic/repo/ana/` (NFS mount on the host, served by the Debian file server at `10.250.50.50`) Paired with: - **`rest-server-nh3`** on the Synology (`10.100.50.50:8000`, data on Btrfs). @@ -23,7 +23,7 @@ Paired with: | image version | floating `latest` | `${REST_SERVER_VERSION}` | | stack dir on server | `/opt/docker/compose/restic/` | `/opt/docker/compose/rest-server-ana/` | -Data path is unchanged (`/mnt/backup/restic/repo/ana/`) so nothing new needs to be allocated on TrueNAS. +Data path is unchanged (`/mnt/backup/restic/repo/ana/`) so nothing new needs to be allocated on the NAS. ## Pre-deploy: clean the data dir and create htpasswd diff --git a/stacks/rest-server-ana/compose.yaml b/stacks/rest-server-ana/compose.yaml index cdfac3e..d31d70a 100644 --- a/stacks/rest-server-ana/compose.yaml +++ b/stacks/rest-server-ana/compose.yaml @@ -1,8 +1,9 @@ # rest-server (Anaheim) — restic backup target for the fleet. # -# Deploys to ana-docker. Data dir is on the TrueNAS NFS mount -# (/mnt/backup/restic/repo/ana) so snapshots on the NAS side protect the -# backup blobs themselves. +# Deploys to ana-docker. Data dir is the NFS mount at +# /mnt/backup/restic/repo/ana, backed by the Debian 12 NFS/SMB file +# server at 10.250.50.50. (Historically a TrueNAS SCALE appliance; since +# reprovisioned as vanilla Debian.) # # Mirrors stacks/rest-server-nh3/ in every meaningful way — same auth # model, same on-disk layout, same operational semantics — so each client @@ -50,7 +51,7 @@ services: - homepage.group=PFI-ANA - homepage.name=Restic (rest-server) - homepage.icon=mdi-cloud-upload - - homepage.description=Anaheim restic endpoint (data on TrueNAS NFS) + - homepage.description=Anaheim restic endpoint (data on NFS) - homepage.href=http://10.250.50.70:${REST_PORT} networks: diff --git a/stacks/rest-server-nh3/README.md b/stacks/rest-server-nh3/README.md index bd8440c..d919f1c 100644 --- a/stacks/rest-server-nh3/README.md +++ b/stacks/rest-server-nh3/README.md @@ -6,7 +6,7 @@ NH3-site restic backup endpoint. Runs in Synology Container Manager on `10.100.5 **Port:** `http://10.100.50.50:8000` (configurable via `.env`) **Data:** `/volume1/Backup/restic/` (configurable) -Paired with the existing `restic rest-server` on **ana-docker** (`http://10.250.50.70:8000`, data on TrueNAS NFS) as the Anaheim-side endpoint. Each fleet host backs up to the rest-server closest to it; an rsync job on ana-docker mirrors the two trees against each other for off-site redundancy. +Paired with `rest-server-ana` on **ana-docker** (`http://10.250.50.70:8000`, data on an NFS mount backed by the Debian file server at `10.250.50.50`) as the Anaheim-side endpoint. Each fleet host backs up to the rest-server closest to it; an rsync job on ana-docker mirrors the two trees against each other for off-site redundancy. ## Auth model