Files
truenas-stacks/docs/servers/SERENITY.md
Fizzlepoof ce7ed4d76c
Some checks failed
secret-guardrails / artifact-secret-scan (push) Has been cancelled
secret-guardrails / gitleaks (push) Has been cancelled
docs: note NFS remount restart requirement for media apps
2026-05-25 21:26:55 +00:00

81 lines
3.5 KiB
Markdown

# Serenity
Current NAS, media-ingestion, and CPU-based AI helper host. Planned to retire after the upgraded PD build absorbs its storage role.
## Hardware
| Component | Details |
|-----------|---------|
| **IP (LAN)** | 10.5.30.5 |
| **IP (Tailscale)** | 100.94.87.79 |
| **OS** | Unraid 7.2.4 |
| **CPU** | Dual Intel Xeon X5690 (6c/12t each — 24 threads total) |
| **RAM** | 102 GB |
| **GPU** | None (Matrox G200 IPMI only) |
## Roles
- **NAS** — primary storage for Docker volumes, media, and backups via NFS
- **Media ingestion** — full ARR stack (Sonarr, Radarr, Prowlarr, qBittorrent, etc.)
- **Reranker host** — CPU-based TEI reranker for the AI RAG pipeline
- **Pangolin site host** — Serenity's local Newt is intentionally kept because Pangolin tunnels Serenity resources through that Newt instead of targeting Serenity resources from PD or NOMAD over Serenity LAN IPs
## Services
### NFS Exports
| Export | Mount on PD | Purpose |
|--------|-------------|---------|
| `/mnt/user/data` | `/mnt/unraid/data` | General Docker volumes |
| `/mnt/user/immich` | `/mnt/unraid/immich` | Immich photo library |
> **Note:** NFS mounts on PD are **not** automatic at boot. Run after every TrueNAS restart:
> ```bash
> sudo bash /mnt/tank/docker/scripts/mount-unraid-nfs.sh
> ```
>
> **Important:** if PD remounts `/mnt/unraid/data` or `/mnt/unraid/immich` after media containers are already running, restart the bind-mounted consumers so they repoint at the live NFS mount instead of the pre-remount underlay. Current restart set: Plex, Audiobookshelf, Calibre-Web, and Immich Server.
### Reranker (TEI)
Text Embeddings Inference reranker for OpenWebUI RAG pipeline.
| Setting | Value |
|---------|-------|
| **Model** | `BAAI/bge-reranker-v2-m3` |
| **Image** | `ghcr.io/huggingface/text-embeddings-inference:cpu-latest` |
| **Port** | `9787` |
| **Volume** | `/mnt/user/appdata/reranker` |
| **LiteLLM model name** | `reranker` |
| **API base** | `http://10.5.30.5:9787` |
> Moved from PlausibleDeniability (port 8787) to Serenity (port 9787) on 2026-05-09.
> CPU-only inference is acceptable for RAG reranking workloads.
### ARR Stack
Managed via Unraid Community Apps. See Unraid dashboard for individual service ports and status.
### Technitium Backup Resolver
Serenity hosts the secondary backup Technitium node on `10.5.30.10`.
- Live stack path: `/mnt/user/appdata/technitium-serenity`
- Live secrets file: `/mnt/user/appdata/technitium-serenity/.env`
- Resolver bind IP: `10.5.30.10`
- Config is refreshed from PD's live Technitium directory by the PD-side sync runner every 15 minutes
- The live `.env` is also backed up into the encrypted PD secrets repo as `env/technitium-serenity.env`
- Same-host checks from Serenity to `10.5.30.10` are unreliable because the resolver sits behind macvlan networking; verify from another LAN peer instead
## Notes
- No GPU; reranker uses CPU-only TEI image
- Tailscale active — reachable at `100.94.87.79` from any Tailscale node
## Planned future role
- Transitional only; do not design new long-term dependencies around Serenity.
- Near-term it continues to host storage locality, reranker, the backup Technitium node, and the Serenity-local Newt needed for Pangolin access to Serenity resources.
- Once PD directly owns the storage, qBittorrent/ARR locality should move to PD and Serenity should be drained and retired.
- Before any Pangolin cleanup, re-home Serenity resources away from stale literal-IP targets; live Newt logs show repeated health checks to old `10.5.1.5` addresses.