Primary NAS — Lotus¶
Last Updated: 2026-07-22 Status: ✅ Active Purpose: Primary storage server and main Docker services host. Also hosts the primary Home Assistant VM (failover from Pacific — see current-state).
Hardware specs: inventory.md → Lotus
Access¶
| Method | Detail |
|---|---|
| Web UI | http://192.168.1.80 |
| SSH | ssh root@192.168.1.80 |
Boot Device & Licensing¶
| Boot device | USB flash — Lexar 28.9 GB, in an external USB-A port (fitted 2026-07-22) |
| Licensing | Unleashed, bound to the TPM (not the USB GUID) — Unraid 7.3 TPM licensing |
| OS version | 7.3.1 |
History: the original boot stick (Verbatim "STORE N GO", internal USB port) failed on 2026-07-22 during an in-place 7.3.1 → 7.3.2 upgrade (error -110 USB resets, bad sha256, Unraid reported "USB Flash is likely failing"). Recovered by restoring the Appdata Backup plugin's daily flash backup zip onto the new Lexar stick via the Unraid USB Flash Creator ("Use custom"), then re-licensing against the TPM. Full write-up: Lessons Learned — 2026-07-22.
Phase 2 (planned): move boot off USB entirely. TPM 2.0 + UEFI + the 2× NVMe ZFS mirror make Lotus a candidate for Unraid 7.3 internal boot (fully USB-free — licensing already on TPM). Blocker: the cache mirror consumes the whole of both NVMe drives, so it needs a pool rebuild (back up ~116 GB cache → recreate as boot+data pool → restore). See the Lessons Learned entry.
Array Configuration¶
| Parity | 1× 12.7TB |
| Disk 1 | 3.6TB |
| Disk 2 | 7.3TB |
| Disk 3 | 7.3TB |
| Cache pool | 2× 931.5GB NVMe SSD |
| Usable storage | ~18.2TB |
All Docker application data (appdata) is stored on the NVMe cache pool for performance.
Docker Containers¶
See Services Overview for the complete service list with status.
Immich Storage Layout¶
Immich's data is split across several paths on the Lotus array:
| Path | Purpose | Backed up |
|---|---|---|
/mnt/user/immich/photos/ |
Phone uploads via Immich Android app — organised as library/admin/YYYY/MM/DD/ |
✅ LuckyBackup → Cooper |
/mnt/user/data/media/photos/ |
Historical photo archive (pre-Immich) — manually organised by year/event | ✅ LuckyBackup → Cooper |
/mnt/user/data/media/photos/_Family_Archive |
Scanned family photo archive | ✅ LuckyBackup → Cooper (within above) |
/mnt/cache/appdata/immich/ |
Immich config, thumbnails, encoded video | ✅ Appdata Backup → Cooper |
Note:
/mnt/user/data/media/immich/is a legacy path from a previous Immich storage configuration. It contains an old snapshot of photos up to July 2025 (including intentionally deleted photos) and is pending deletion. Do not use this path for anything.
The Immich PostgreSQL database (metadata, albums, faces, ML data) is replicated to Cooper — see Immich PostgreSQL — Replication Setup below.
Backup¶
| What | Method | Destination |
|---|---|---|
| Docker appdata | Appdata Backup plugin | Cooper |
| USB boot flash | Appdata Backup plugin (flashBackup: yes, daily 05:00, verified) |
/mnt/user/backups/lotus/ab_*/lotus-*-boot-backup-*.zip |
| Immich uploads | LuckyBackup (/mnt/user/immich/) |
Cooper |
| Historical photo archive | LuckyBackup (/mnt/user/data/media/photos/) |
Cooper |
| Pacific VMs/LXC | Proxmox Backup Server (running on Lotus) | Lotus array |
The daily flash backup is the recovery source if the boot USB fails — restore the latest zip onto a new stick with the Unraid USB Flash Creator ("Use custom"). This is what recovered the 2026-07-22 flash failure. Keep this option enabled.
External Access¶
Lotus runs SWAG (reverse proxy), which is the entry point for all *.djchome.uk services. Cloudflare DNS resolves *.djchome.uk to Lotus's Tailscale IP. Only devices on the Tailnet can reach it.
Immich PostgreSQL — Replication Setup¶
Immich's PostgreSQL database streams WAL to a replica on Cooper for data protection.
Why a socat relay?¶
The Immich PostgreSQL container (installed via Community Applications) has a hardcoded port mapping in its Unraid template: host:5432 → container:5433. PostgreSQL actually runs on container port 5432, making the host port mapping broken for external connections. The template cannot be safely edited without breaking the CA-managed container bundle.
Instead, a lightweight socat relay container (immich-pg-relay) sits on the same Docker network (arrproxy) and forwards an additional host port through to the database:
| Container | Network | Purpose |
|---|---|---|
immich_postgreSQL |
arrproxy | Primary database — internal Docker access only |
immich-pg-relay |
arrproxy | Forwards host:5452 → immich_postgreSQL:5432 |
pg_hba.conf¶
/mnt/user/appdata/immich_postgresql/pg_hba.conf includes:
host replication replicator 192.168.1.60/32 scram-sha-256
host replication replicator 172.18.0.0/16 scram-sha-256
The 172.18.0.0/16 entry is needed because the socat relay forwards connections from within the arrproxy Docker network, not from Cooper's LAN IP directly.
Replication user¶
A replicator role exists in the database with REPLICATION privilege.
Recovery¶
See Primary NAS Recovery for restore procedures.
Notes¶
- UPS backed (APC Back-UPS ES 850G2, "office-desk"), monitored via the NUT plugin (
nut-dw). The UPS connects to an external USB-C port via an A-to-C adapter (2026-07-22, freed up the native USB-A port for the boot stick). - Always on — if Lotus is down, most services and the primary Home Assistant VM will be unavailable
- Proxmox Backup Server runs as a Docker container on Lotus and stores Pacific backups on the Lotus array