diff --git a/dev/docker-compose.yaml b/dev/docker-compose.yaml index d688bac..21e5b85 100644 --- a/dev/docker-compose.yaml +++ b/dev/docker-compose.yaml @@ -72,7 +72,7 @@ services: TZ: ${TZ} RPK_YAML_DIR: /app/config volumes: - - /mnt/tank/docker/appdata/app/rackpeek/config:/app/config + - /mnt/docker-ssd/docker/compose/dev/rackpeek:/app/config - /mnt/tank/docker/appdata/app/rackpeek/dpkeys:/home/app/.aspnet/DataProtection-Keys healthcheck: test: ["CMD-SHELL", "cat /proc/net/tcp6 | grep -q 1F90 || exit 1"] diff --git a/dev/rackpeek/README.md b/dev/rackpeek/README.md new file mode 100644 index 0000000..9b35356 --- /dev/null +++ b/dev/rackpeek/README.md @@ -0,0 +1,42 @@ +# RackPeek source of truth + +This directory is the git-tracked RackPeek inventory for the homelab. + +## Files +- `config.yaml` — current RackPeek v3 inventory assembled from the homelab docs + +## Data sources +Update this inventory from the canonical repo docs first: +- `docs/architecture/ARCHITECTURE_OVERVIEW.md` +- `docs/architecture/SERVICES_DIRECTORY.md` +- `docs/servers/PLAUSIBLEDENABILITY.md` +- `docs/servers/SERENITY.md` +- `docs/servers/NOMAD.md` +- `docs/servers/ROCINANTE.md` + +## Runtime wiring +The `dev/docker-compose.yaml` RackPeek service mounts this repo directory directly at `/app/config` on PD: +- host path: `/mnt/docker-ssd/docker/compose/dev/rackpeek` +- container path: `/app/config` + +Data protection keys remain outside git at: +- `/mnt/tank/docker/appdata/app/rackpeek/dpkeys` + +## Validation +From a repo checkout with Docker available: + +```bash +docker run --rm \ + -p 18283:8080 \ + -e RPK_YAML_DIR=/app/config \ + -v "$PWD/dev/rackpeek:/app/config" \ + aptacode/rackpeek:latest +``` + +Then verify: + +```bash +curl http://127.0.0.1:18283/health +``` + +Expected response: `rackpeek` diff --git a/dev/rackpeek/config.yaml b/dev/rackpeek/config.yaml new file mode 100644 index 0000000..516d4cf --- /dev/null +++ b/dev/rackpeek/config.yaml @@ -0,0 +1,571 @@ +version: 3 +resources: + - kind: Server + name: plausibledeniability + cpus: + - model: AMD Ryzen 9 3950X + cores: 16 + threads: 32 + ram: + size: 32 + drives: + - type: ssd + size: 500 + - type: hdd + size: 4000 + - type: hdd + size: 4000 + gpus: + - model: NVIDIA RTX 2080 Ti + vram: 11 + ports: + - type: rj45 + speed: 1 + count: 1 + tags: + - prod + - docker-host + - ai-light-tier + labels: + lan-ip: 10.5.1.6 + os: TrueNAS Scale 25.10.2.1 + docker-root: /mnt/docker-ssd/docker/docker-data + compose-root: /mnt/docker-ssd/docker/compose + notes: |- + Primary Docker host. + Storage tiers: + - /mnt/docker-ssd = Docker root, databases, write-heavy appdata, model caches + - /mnt/tank = general appdata, configs, backups, downloads + - /mnt/unraid = Serenity NFS mounts for data and Immich + + - kind: Server + name: serenity + cpus: + - model: Intel Xeon X5690 + cores: 6 + threads: 12 + - model: Intel Xeon X5690 + cores: 6 + threads: 12 + ram: + size: 102 + ports: + - type: rj45 + speed: 1 + count: 1 + tags: + - prod + - storage + - reranker + labels: + lan-ip: 10.5.1.5 + tailscale-ip: 100.94.87.79 + os: Unraid 7.2.4 + notes: |- + NAS, media ingestion, and CPU-based AI inference. + NFS exports to PD: + - /mnt/user/data -> /mnt/unraid/data + - /mnt/user/immich -> /mnt/unraid/immich + + - kind: Server + name: nomad + cpus: + - model: Intel Core i7-4770K + cores: 4 + threads: 8 + ram: + size: 32 + drives: + - type: ssd + size: 233 + - type: hdd + size: 3600 + - type: hdd + size: 3600 + - type: ssd + size: 224 + gpus: + - model: NVIDIA GeForce GTX 1080 + vram: 8 + ports: + - type: rj45 + speed: 1 + count: 1 + - type: rj45 + speed: 10 + count: 1 + tags: + - prod + - offline-knowledge + - game-server + labels: + lan-ip: 10.5.1.16 + os: Ubuntu 25.10 + notes: |- + Offline knowledge, game server, and local services host. + Docker data-root: /mnt/hdd-2/docker + Project N.O.M.A.D. runtime: /opt/project-nomad + + - kind: Server + name: rocinante + gpus: + - model: NVIDIA RTX 4090 + vram: 24 + ports: + - type: rj45 + speed: 1 + count: 1 + tags: + - prod + - ai-heavy-tier + - degraded + labels: + lan-ip: 10.5.1.112 + notes: |- + Heavy AI inference server. + Current operational note from 2026-05-21: + - Unreachable from N.O.M.A.D. on ports 11434 and 8787 during Doris validation. + + - kind: System + type: Baremetal + name: pd-truenas + os: truenas-scale-25.10.2.1 + cores: 16 + ram: 32 + ip: 10.5.1.6 + runsOn: + - plausibledeniability + + - kind: System + type: Baremetal + name: serenity-unraid + os: unraid-7.2.4 + cores: 12 + ram: 102 + ip: 10.5.1.5 + runsOn: + - serenity + + - kind: System + type: Baremetal + name: nomad-ubuntu + os: ubuntu-25.10 + cores: 4 + ram: 32 + ip: 10.5.1.16 + runsOn: + - nomad + + - kind: System + type: Baremetal + name: rocinante-inference + os: baremetal + ip: 10.5.1.112 + runsOn: + - rocinante + + - kind: Service + name: homepage + network: + ip: 10.5.1.6 + port: 3300 + protocol: TCP + url: http://10.5.1.6:3300 + runsOn: + - pd-truenas + + - kind: Service + name: dockhand + network: + ip: 10.5.1.6 + port: 3230 + protocol: TCP + url: http://10.5.1.6:3230 + runsOn: + - pd-truenas + + - kind: Service + name: uptime-kuma + network: + ip: 10.5.1.6 + port: 3001 + protocol: TCP + url: http://10.5.1.6:3001 + runsOn: + - pd-truenas + + - kind: Service + name: gotify + network: + ip: 10.5.1.6 + port: 8443 + protocol: TCP + url: https://gotify.paccoco.com + runsOn: + - pd-truenas + + - kind: Service + name: gitea + network: + ip: 10.5.1.6 + port: 3002 + protocol: TCP + url: http://10.5.1.6:3002 + runsOn: + - pd-truenas + + - kind: Service + name: gitea-ssh + network: + ip: 10.5.1.6 + port: 2222 + protocol: TCP + url: ssh://git@10.5.1.6:2222/ + runsOn: + - pd-truenas + + - kind: Service + name: shlink + network: + ip: 10.5.1.6 + port: 8087 + protocol: TCP + url: http://10.5.1.6:8087 + runsOn: + - pd-truenas + + - kind: Service + name: shlink-web-client + network: + ip: 10.5.1.6 + port: 8088 + protocol: TCP + url: http://10.5.1.6:8088 + runsOn: + - pd-truenas + + - kind: Service + name: rackpeek + network: + ip: 10.5.1.6 + port: 8283 + protocol: TCP + url: http://10.5.1.6:8283 + tags: + - source-of-truth-target + runsOn: + - pd-truenas + + - kind: Service + name: authelia + network: + ip: 10.5.1.6 + port: 9091 + protocol: TCP + url: https://auth.paccoco.com + runsOn: + - pd-truenas + + - kind: Service + name: litellm + network: + ip: 10.5.1.6 + port: 4000 + protocol: TCP + url: http://10.5.1.6:4000 + runsOn: + - pd-truenas + + - kind: Service + name: openwebui + network: + ip: 10.5.1.6 + port: 8282 + protocol: TCP + url: http://10.5.1.6:8282 + runsOn: + - pd-truenas + + - kind: Service + name: qdrant + network: + ip: 10.5.1.6 + port: 6333 + protocol: TCP + url: http://10.5.1.6:6333 + runsOn: + - pd-truenas + + - kind: Service + name: searxng + network: + ip: 10.5.1.6 + port: 8888 + protocol: TCP + url: http://10.5.1.6:8888 + runsOn: + - pd-truenas + + - kind: Service + name: ollama-light-tier + network: + ip: 10.5.1.6 + port: 11434 + protocol: TCP + url: http://10.5.1.6:11434 + runsOn: + - pd-truenas + + - kind: Service + name: whisper-cpu + network: + ip: 10.5.1.16 + port: 8786 + protocol: TCP + url: http://10.5.1.16:8786 + runsOn: + - nomad-ubuntu + + - kind: Service + name: ollama-heavy-tier + network: + ip: 10.5.1.112 + port: 11434 + protocol: TCP + url: http://10.5.1.112:11434 + tags: + - degraded + runsOn: + - rocinante-inference + + - kind: Service + name: whisper-cuda + network: + ip: 10.5.1.112 + port: 8787 + protocol: TCP + url: http://10.5.1.112:8787 + tags: + - degraded + runsOn: + - rocinante-inference + + - kind: Service + name: reranker + network: + ip: 10.5.1.5 + port: 9787 + protocol: TCP + url: http://10.5.1.5:9787 + runsOn: + - serenity-unraid + + - kind: Service + name: plex + network: + ip: 10.5.1.6 + port: 32400 + protocol: TCP + url: http://10.5.1.6:32400 + runsOn: + - pd-truenas + + - kind: Service + name: tautulli + network: + ip: 10.5.1.6 + port: 8181 + protocol: TCP + url: http://10.5.1.6:8181 + runsOn: + - pd-truenas + + - kind: Service + name: audiobookshelf + network: + ip: 10.5.1.6 + port: 13358 + protocol: TCP + url: http://10.5.1.6:13358 + runsOn: + - pd-truenas + + - kind: Service + name: calibre-web + network: + ip: 10.5.1.6 + port: 8183 + protocol: TCP + url: http://10.5.1.6:8183 + runsOn: + - pd-truenas + + - kind: Service + name: seerr + network: + ip: 10.5.1.6 + port: 5055 + protocol: TCP + url: http://10.5.1.6:5055 + runsOn: + - pd-truenas + + - kind: Service + name: immich + network: + ip: 10.5.1.6 + port: 2283 + protocol: TCP + url: http://10.5.1.6:2283 + runsOn: + - pd-truenas + + - kind: Service + name: paperless-ngx + network: + ip: 10.5.1.6 + port: 8083 + protocol: TCP + url: http://10.5.1.6:8083 + runsOn: + - pd-truenas + + - kind: Service + name: karakeep + network: + ip: 10.5.1.6 + port: 3100 + protocol: TCP + url: http://10.5.1.6:3100 + runsOn: + - pd-truenas + + - kind: Service + name: n8n + network: + ip: 10.5.1.6 + port: 5678 + protocol: TCP + url: http://10.5.1.6:5678 + runsOn: + - pd-truenas + + - kind: Service + name: kitchenowl + network: + ip: 10.5.1.6 + port: 8086 + protocol: TCP + url: http://10.5.1.6:8086 + runsOn: + - pd-truenas + + - kind: Service + name: donetick + network: + ip: 10.5.1.6 + port: 2021 + protocol: TCP + url: http://10.5.1.6:2021 + runsOn: + - pd-truenas + + - kind: Service + name: dakboard-bridge + network: + ip: 10.5.1.6 + port: 5087 + protocol: TCP + url: http://10.5.1.6:5087 + runsOn: + - pd-truenas + + - kind: Service + name: qui + network: + ip: 10.5.1.6 + port: 7476 + protocol: TCP + url: http://10.5.1.6:7476 + runsOn: + - pd-truenas + + - kind: Service + name: home-assistant + network: + ip: 10.5.1.6 + port: 8123 + protocol: TCP + url: http://10.5.1.6:8123 + runsOn: + - pd-truenas + + - kind: Service + name: kima-hub + network: + ip: 10.5.1.6 + port: 3333 + protocol: TCP + url: http://10.5.1.6:3333 + runsOn: + - pd-truenas + + - kind: Service + name: grafana + network: + ip: 10.5.1.6 + port: 3000 + protocol: TCP + url: http://10.5.1.6:3000 + runsOn: + - pd-truenas + + - kind: Service + name: prometheus + network: + ip: 10.5.1.6 + port: 9090 + protocol: TCP + url: http://10.5.1.6:9090 + runsOn: + - pd-truenas + + - kind: Service + name: meshmonitor + network: + ip: 10.5.1.6 + port: 8081 + protocol: TCP + url: http://10.5.1.6:8081 + runsOn: + - pd-truenas + + - kind: Service + name: tileserver-gl + network: + ip: 10.5.1.6 + port: 8082 + protocol: TCP + url: http://10.5.1.6:8082 + runsOn: + - pd-truenas + + - kind: Service + name: pelican-panel + network: + ip: 10.5.1.16 + port: 80 + protocol: TCP + url: https://panel.paccoco.com + runsOn: + - nomad-ubuntu + + - kind: Service + name: wings-node-api + network: + ip: 10.5.1.16 + port: 8443 + protocol: TCP + url: https://node1.paccoco.com + runsOn: + - nomad-ubuntu diff --git a/docs/operations/DOCKERSTACK_STORAGE_NOTES.md b/docs/operations/DOCKERSTACK_STORAGE_NOTES.md index 3113eb8..f7784bd 100644 --- a/docs/operations/DOCKERSTACK_STORAGE_NOTES.md +++ b/docs/operations/DOCKERSTACK_STORAGE_NOTES.md @@ -20,6 +20,7 @@ Examples: - `/mnt/docker-ssd/docker/appdata/seerr` - `/mnt/docker-ssd/docker/appdata/dockhand` - `/mnt/docker-ssd/docker/appdata/rackpeek` +- `/mnt/docker-ssd/docker/compose/dev/rackpeek` (git-tracked RackPeek inventory source) - `/mnt/docker-ssd/docker/appdata/shlink` - `/mnt/docker-ssd/docker/appdata/gitea` - `/mnt/docker-ssd/docker/appdata/netdata`