From e43bb72ac5a450afbb845d0b4645c6127632179e Mon Sep 17 00:00:00 2001 From: Jozsef Gtta Date: Thu, 7 May 2026 04:27:04 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20comprehensive=20update=20=E2=80=94=20Po?= =?UTF-8?q?rtainer=20migration,=20all=20hosts,=20API=20token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 107 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d599f0d..0f1a946 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,113 @@ # Homelab Configs Docker Compose files and configuration for homelab infrastructure. +All stacks are managed via **Portainer** at http://192.168.88.27:9000 (or https://portainer.jgitta.com). -## Structure -- `siklos/` — Docker services on VM112 (192.168.88.27) +## Portainer Access + +| Item | Value | +|---|---| +| URL | http://192.168.88.27:9000 | +| External URL | https://portainer.jgitta.com | +| API Token | `ptr_1cThi+cjOKeICslJbSzCtUhORF06xUOykbAWPUoTyMU=` | + +> **Note:** The API token above is for automation/scripting. Keep it private. +> To call the Portainer API: `curl -H "X-API-Key: " http://192.168.88.27:9000/api/stacks` ## Hosts -| Host | IP | Role | -|---|---|---| -| siklos | 192.168.88.27 | Main Docker server | -| jellyfin | 192.168.88.10 | Media server | -| thinkstation | 192.168.88.41 | Workstation / Ollama | + +| Host | IP | Role | Portainer Endpoint ID | Docker Version | +|---|---|---|---|---| +| siklos | 192.168.88.27 | Main Docker server (VM 112 on Proxmox) | 3 (local) | 26.1.5 | +| jellyfin | 192.168.88.10 | Media server | 4 (agent) | 26.1.5 | +| thinkstation-p710 | 192.168.88.41 | Workstation / Ollama / AI | 5 (agent) | 29.4.2 | + +## Stack Inventory + +### siklos (192.168.88.27) — 21 stacks + +| Stack | Port(s) | Data Path | Notes | +|---|---|---|---| +| actual-budget | 5006 | /srv/docker/actual-budget | Budget tracking | +| dashboard | 3010 | /srv/docker/dashboard | Custom homepage (built locally) | +| dashy | 4080 | /srv/docker/dashy | Dashboard | +| gitea | 3002, 2222 | /srv/docker/gitea/data | Git server — this repo | +| glances | 61208 | — | System monitoring | +| goldengames | 3011 | /srv/docker/goldengames | (built locally) | +| grav | 8080 | /srv/docker/grav | CMS | +| guacamole | 8085 | /srv/docker/guacamole | Remote desktop gateway | +| homarr | 7575 | /srv/docker/homarr | Dashboard | +| karakeep | 3000 | /srv/docker/karakeep | Bookmarks / read-later | +| kopia | 51515 | /srv/docker/kopia | Backup tool (backs up to TrueNAS) | +| linkwarden | 3010 | /srv/docker/linkwarden | Link manager | +| litellm | 4000 | /srv/docker/litellm | LLM API gateway | +| meshcentral | 4430, 4080 | /srv/docker/meshcentral | Remote management | +| monitoring | 9090, 3020, 8090, 9108-9109 | /srv/docker/monitoring | Prometheus + Grafana + cAdvisor | +| onlyoffice | 8086 | /srv/docker/onlyoffice | Office document server | +| pihole | 53, 80, 443 | /srv/docker/pihole | DNS ad blocker | +| portainer | 9000, 9443 | /srv/docker/portainer | Container management UI | +| uptime-kuma | 3001 | /srv/docker/uptime-kuma | Uptime monitoring | +| watchtower | — | — | Auto-updates containers | +| wordpress | 8081 | /srv/docker/wordpress | WordPress site | + +### jellyfin (192.168.88.10) — 3 stacks + +| Stack | Port(s) | Data Path | Notes | +|---|---|---|---| +| arr-stack | various | /srv/docker | Radarr, Sonarr, Prowlarr, Flaresolverr, Watchtower | +| node-exporter | 9100 (host) | — | Prometheus metrics exporter (host network) | +| portainer-agent | 9001 | — | Portainer agent (fully managed) | + +### thinkstation-p710 (192.168.88.41) — 4 stacks + +| Stack | Port(s) | Data Path | Notes | +|---|---|---|---| +| frigate | 5000, 8554, 8555 | /srv/docker/frigate | NVR / camera AI | +| open-webui | 3000 | /srv/docker/open-webui | Ollama web UI | +| portainer-agent | 9001 | — | Portainer agent (shows "limited" — expected, see notes) | +| stirling-pdf | 8090 | /srv/docker/stirling-pdf | PDF tools | + +## Data Directory Convention + +All stack data and config is stored under `/srv/docker//` on each host. +Old compose files were renamed to `.bak` after migration to Portainer. + +### siklos +- Config/data: `/srv/docker//` +- Old compose files renamed to `.bak` in same directory + +### thinkstation-p710 +- Config/data: `/srv/docker//` +- Portainer agent data volume: `portainer_agent_data` (Docker named volume — persists TLS certs) + +### jellyfin +- Media data: `/srv/docker/` (bind-mounted into arr containers) + +## Portainer Agent Notes + +Portainer agents run on jellyfin and thinkstation, allowing the central Portainer instance on +siklos to manage all three Docker hosts from one UI. + +- **jellyfin agent**: Fully managed by Portainer (Stack ID 36) +- **thinkstation agent**: Shows as "limited" in Portainer UI — this is expected and harmless. + The portainer-agent cannot redeploy itself through its own proxy (catch-22). The agent + is stable and the endpoint is fully functional. Agent data is persisted in the + `portainer_agent_data` Docker named volume so TLS certs survive restarts. + Compose file: `/srv/docker/portainer-agent/docker-compose.yml` + +## Kopia Backup Notes (2026-05-06) + +Kopia backs up Nextcloud data (VM 103) and other sources to TrueNAS NFS. +- Cache limit set to 4 GB content + 512 MB metadata (`kopia cache set`) +- `/tmp` and `/app/logs` are now bind-mounted out of the container (prevents overlay2 growth) +- If disk fills up again, check `/srv/docker/kopia/tmp/` for leftover verify/restore artifacts +- Ignore policy added for `/data/.claude` in the Nextcloud data source + +## Proxmox / Infrastructure Notes + +| Item | Details | +|---|---| +| Proxmox host | 192.168.88.1 | +| TrueNAS | 192.168.88.5 | +| Nextcloud VM | VM 103 (192.168.88.x) | +| Docker server VM | VM 112 = siklos |