Skip to content

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