docs: add full homelab documentation structure

This commit is contained in:
Paccoco
2026-05-05 14:43:09 -05:00
parent ee8a412a69
commit 370998b8d5
20 changed files with 1405 additions and 24 deletions

73
docs/servers/NOMAD.md Normal file
View File

@@ -0,0 +1,73 @@
# N.O.M.A.D. Server
Offline survival/knowledge server and game server host.
## Specs
- **OS:** Ubuntu 25.10 (bare metal)
- **IP:** 10.5.1.16
- **CPU:** Intel Core i7-4770K @ 3.50GHz (4c/8t)
- **RAM:** 32GB DDR3 1600MHz
- **GPU:** NVIDIA GeForce GTX 1080 (8GB VRAM)
- **NIC:** Intel I218-V (1GbE) + Aquantia AQC113 (10GbE)
- **Motherboard:** ASRock H97M Pro4
- **UPS:** None
## Storage
| Device | Size | Mount | Purpose |
|--------|------|-------|---------|
| Samsung SSD 840 (sdb) | 232.9GB | `/` (LVM 100GB) | OS boot |
| WD Red HDD (sda) | 3.6TB | `/mnt/hdd-1` | Primary data |
| WD Red HDD (sdc) | 3.6TB | `/mnt/hdd-2` | Docker data-root |
| Seagate SSD (sdd) | 223.6GB | `/mnt/ssd-1` | Fast scratch |
## Project N.O.M.A.D.
- 10 containers running via `start_nomad.sh` / `stop_nomad.sh`
- `/opt/project-nomad` → symlinked from `/mnt/hdd-1/project-nomad`
- Docker data-root: `/mnt/hdd-2/docker`
- Based on Crosstalk Solutions offline survival/knowledge server
## Pelican Panel (Game Server Management)
- **URL:** `https://panel.paccoco.com`
- **Stack:** PHP 8.4 + nginx + MariaDB (native, not Docker)
- **Panel files:** `/var/www/pelican`
- **DB:** MariaDB, database `pelican`, user `pelican`@`127.0.0.1`
- **APP_URL:** `https://panel.paccoco.com`
- **TRUSTED_PROXIES:** `*`
- **Cron:** `* * * * * php /var/www/pelican/artisan schedule:run` (www-data)
- **Admin user:** `fizzlepoof`
- **Reverse proxy:** Pangolin via Newt container at `/opt/newt`
## Wings (Game Server Daemon)
- **Binary:** `/usr/local/bin/wings`
- **Config:** `/etc/pelican/config.yml`
- **Systemd:** `wings.service`
- **ExecStart:** `/usr/local/bin/wings --ignore-certificate-errors`
- **API port:** 8443
- **SFTP port:** 2022
- **Node domain:** `node1.paccoco.com` (Pangolin, no auth, connection port 443)
- **Game server volumes:** `/var/lib/pelican/volumes`
- **Docker network:** `pelican_nw` (172.20.0.0/16)
## Active Game Servers
- **Minecraft:** Purpur, Java 21, port 25565 TCP/UDP (direct host port forward)
## Networking Notes
- `panel.paccoco.com``127.0.0.1` in `/etc/hosts` for NAT loopback
- nginx on 80 and 443 (self-signed cert) for local Wings → Panel
- Wings uses `--ignore-certificate-errors` for self-signed cert
- Pangolin resource `node1.paccoco.com` has auth disabled
## Known Quirks
- NVIDIA container toolkit repo has invalid GPG key — remove `/etc/apt/sources.list.d/*nvidia*` if apt errors
- Port 8080 occupied by `nomad_admin` container — Wings uses 8443
- Interactive artisan commands break over SSH — always use inline flags
- Wings CORS derived from `remote:` URL — keep remote as `https://` and use `--ignore-certificate-errors`
## Newt Tunnel
- Container: `newt` at `/opt/newt/docker-compose.yaml`
- `network_mode: host`
- Connects to Pangolin VPS at `https://paccoco.com`
## Pending
- Regenerate Wings token (was exposed in chat)
- Regenerate Newt secret (was exposed in chat)

View File

@@ -0,0 +1,60 @@
# PlausibleDeniability
Primary Docker host running all production workloads.
## Specs
- **OS:** TrueNAS Scale 25.10.2.1
- **CPU:** Ryzen 9 3950X
- **RAM:** 32GB
- **GPU:** Nvidia RTX 2080 Ti (11GB VRAM)
- **UPS:** None
## Storage Tiers
| Tier | Mount | Use for |
|------|-------|---------|
| Local SSD (Crucial MX500 500GB) | `/mnt/docker-ssd` | Docker root, databases, write-heavy appdata, GPU/model caches |
| TrueNAS pool (tank, 2-drive ZFS mirror ~3.5TB) | `/mnt/tank` | General appdata, configs, backups, downloads |
| Unraid NFS | `/mnt/unraid` | Media libraries, Immich media |
## Docker Root
`/mnt/docker-ssd/docker/docker-data`
## Compose Repo
`/mnt/docker-ssd/docker/compose`
## Key Docker Networks
- `ix-databases_shared-databases` — shared DB access network (created by databases stack)
- `pangolin` — reverse proxy exposure network (created by newt)
## GPU Usage
RTX 2080 Ti used by:
- Plex (hardware transcoding)
- immich-ml (CUDA face recognition)
- ollama (LLM inference)
Recommended models for 11GB VRAM:
| Model | VRAM | Best for |
|-------|------|---------|
| `qwen2.5:14b` | ~8GB | General use, coding, reasoning |
| `qwen2.5-coder:7b` | ~5GB | Code tasks |
| `deepseek-r1:8b` | ~5GB | Math, logic |
| `phi4` | ~8GB | Analytical tasks |
## Remote Access
- Pangolin VPS + Newt for external services
- SSH from Windows 11
## NFS Exports to Other Servers
- `data` share → PD at `/mnt/unraid/data`
- `immich` share → PD at `/mnt/unraid/immich`
## Known Issues
- immich-ml intermittently unhealthy — investigate GPU/CUDA health
- docker-ssd has no redundancy — single point of failure for all appdata
- No off-site backup
## Pending
- Deploy: dispatcharr, gotify, bytestash, kima-hub, n8n, qdrant, paperless-ngx
- Add Pangolin resource + DNS for `ai.paccoco.com`
- Install fresh editor

55
docs/servers/SERENITY.md Normal file
View File

@@ -0,0 +1,55 @@
# Serenity
Unraid NAS and media ingestion server.
## Specs
- **OS:** Unraid 7.2.4
- **IP:** 10.5.1.5 | Tailscale: 100.94.87.79
- **CPU:** Xeon X5690
- **RAM:** 102GB
- **GPU:** None (Matrox IPMI only)
- **UPS:** None
## Storage
- `malcolm` pool: RAIDZ1 of 6×10TB HDDs (~40TB usable) — heavily utilized
- Cache pool: single Kingston SNV2S 1TB NVMe (ZFS)
## Docker Networks
`arrs`, `hotio`, `br0` (macvlan), `bridge`
## Active Containers
- **Media:** sonarr, sonarr-anime, radarr, lidarr, readarr, readarr-epub, prowlarr, bazarr, unpackerr
- **Download:** qBittorrent, GluetunVPN, autobrr, qbit_manage
- **Notifications:** Notifiarr
- **Access:** Wizarr, Newt, dockersocket, Hawser
- **Databases:** postgresql15, MariaDB-Official
- **Other:** romm, GameVault, shelfmark (port 8084), netdata
- **Dead/remove:** Unraid-Cloudflared-Tunnel
## Backup Strategy
- Sanoid snapshots cache/appdata: 7 daily, 4 weekly, 6 monthly
- Syncoid replicates cache/appdata → malcolm/zfs_backups_array (strict-mirror)
- No off-site backup currently
## Custom Scripts
- **qBit Mover script:** pauses torrents 04 days old, then runs Unraid mover
- **MAM-init script:** updates MyAnonamouse IP inside qbit container
- **Mover Status script:** sends Discord webhook notifications
## Key Shares
| Share | Size | Purpose |
|-------|------|---------|
| data | 35TB | Media library (NFS-mounted by PD at `/mnt/unraid/data`) |
| immich | 62GB | Immich photo storage (NFS-mounted by PD at `/mnt/unraid/immich`) |
| nextcloud | 7.4GB | Nextcloud data |
| Tesla/dashcam | 1.6TB | Dashcam footage |
| fizzlebang | 17GB | Personal files |
| isos | 22GB | ISO images |
| Syncthing | 4.6GB | Syncthing data |
| manndra | — | Partner's storage |
| Long and Low Crafts | — | Crafts business files |
| zfs_backups_array | — | ZFS backup target for cache/appdata |
## Pending
- Remove dead Unraid-Cloudflared-Tunnel container
- malcolm pool capacity planning (heavily utilized)