110 containers across 3 environments
Every running, stopped and errored container on golden-eye, the NAS and the VPS, grouped by
what it does and ranked by the uptime it needs. Snapshot taken with docker inspect on all three
hosts; the classifier and the raw JSON ship with this page.
Where everything runs
golden-eye (laptop, residential)
29 runningDemoted to experiments. 49 containers and 256 MB free this morning; now 33 running and 4.4 GB free.
NAS (DS220+, same house)
44 runningNow the T0 host. Headroom in both directions: 1.1 TB disk, 9.2 GB RAM.
VPS srv1388017 (datacenter)
17 runningAlways-on, in a datacenter, but 84% full on a single vCPU — prune before adding.
What changed today
| Change | Detail |
|---|---|
| Purged 16 dead containers | ano, ano-val, autonomous, academy, temporal — code verified clean and pushed first, volumes tarred |
| Retired both moody-ranch stacks | production verified by the client; DB dumps, wp-content tars and volume snapshots kept |
| Moved vidalstudios.com to the NAS | datadir cloned, traefik routing, DNS switched; golden-eye copy stopped as rollback until 2026-11-19 |
| Five static sites to Cloudflare Pages | armored-frontier, nas-audit, scrapgame (+header-combo), scrap-overview, overkill — 6 ingress entries and 5 containers gone |
| Rebuilt monitoring | Gatus had two checks pointed at a dead VPS IP; now 22 endpoints, all healthy, Gotify alerts |
| Backups made real | nightly dump + 14 days, weekly content snapshot, offsite copy on the VPS, monthly restore rehearsal — rehearsal passed 19/19 tables |
Service groups
| Group | Tiers | Running | Homes | Members | Where it belongs |
|---|---|---|---|---|---|
| Products urPost, seed, Dustline, Aetherforge, tps-workbench, Foundry |
T2·21 | 21 | VPS 13 · golden-eye 8 | aetherforge-api, aetherforge-db, aetherforge-web, dustline, last-flight-out-db-1, last-flight-out-web-1 +15 | VPS for always-on; Pages/Workers for static builds |
| Media Plex, Jellyfin, the *arr stack, downloads, indexing |
T2·20 | 20 | NAS 20 | bazarr, bazarr-anime, cleanuparr, deemix, flaresolverr, gluetun +14 | NAS — already correct, storage-bound |
| Games & experiments Playable builds and one-off concepts |
T3·18 | 18 | golden-eye 12 · NAS 6 | crimson-haven, fpswg-map, games-shatterfront, games-tiny-swords-game, games-tinytrack-server, ghostline-command +12 | golden-eye, best-effort — or Pages when static |
| Business operations Invoicing, contracts, secrets, alerts, remote desktop |
T1·17 | 17 | NAS 15 · VPS 2 | cf-ddns-nsystems, docuseal, docuseal-db, hbbr, hbbs, invoiceninja +11 | NAS — already correct, add offsite backup |
| Infrastructure Tunnels, ingress, remote access, image build |
T0·8 | 8 | golden-eye 5 · VPS 2 · NAS 1 | cloudflared, cloudflared-shared-public, filebrowser, portainer, searxng, shot-service +2 | One connector per host it fronts |
| Client WordPress WordPress installs serving client work |
T0·2 T3·3 | 5 | golden-eye 3 · NAS 2 | rore-prod-restore-db, rore-prod-restore-proxy, rore-prod-restore-wp, vidalstudios-db-1, vidalstudios-wordpress-1 | NAS for the live site; parked copies off the laptop |
| Client edge Redirectors that front the client domains |
T0·1 | 1 | golden-eye 1 | vidal-redirect | Edge rule (Redirect Rule) rather than a container |
Uptime tiers
| Tier | What it means |
|---|---|
| T0 | Revenue — a client or prospect sees the failure |
| T1 | Business operations — expensive, not client-visible |
| T2 | Should be reliable — tolerable for an hour |
| T3 | Experiment — best-effort by design |
| T4 | Not running — dead weight until proven otherwise |
The rule that drives every placement decision: a service can only inherit the uptime of the host it runs on. The VPS is the only datacenter host; the NAS has the RAM and disk headroom but shares this house's power and ISP; golden-eye is a laptop and holds nothing a client depends on.
Full inventory
golden-eye (laptop, residential) — 46 containers (29 running)
| Name | Image | State | Group | Tier |
|---|---|---|---|---|
| pedantic_kepler | invoiceninja/invoiceninja:5.13.53 | created | business | T4 |
| vidal-redirect | nginx:alpine | running | client-static | T0 |
| moody-ranch-vsk-cli | wordpress:cli-php8.3 | exited | client-wp | T4 |
| rore-prod-restore-db | sha256:efb4959ef2c835cd735dbc388eb9ad6aab0c78d | running | client-wp | T3 |
| rore-prod-restore-proxy | sha256:65645c7bb6a0661892a8b03b89d0743208a18dd | running | client-wp | T3 |
| rore-prod-restore-wp | sha256:5d2c212561c4b5442ebc4d98933a9cbadcf3dee | running | client-wp | T3 |
| vidal-staging-cli | wordpress:cli-php8.3 | exited | client-wp | T4 |
| vidal-staging-db | mariadb:11 | exited | client-wp | T4 |
| vidal-staging-wp | wordpress:6-php8.3-apache | exited | client-wp | T4 |
| vidalstudios-db | mariadb:11 | exited | client-wp | T4 |
| vidalstudios-wp | wordpress:6-php8.3-apache | exited | client-wp | T4 |
| wp-plugin-dev-cli | wordpress:cli-php8.3 | exited | client-wp | T4 |
| wp-plugin-dev-db | mariadb:11 | exited | client-wp | T4 |
| wp-plugin-dev-wp | wordpress:6-php8.3-apache | exited | client-wp | T4 |
| blender-mcp | golden-eye/blender-mcp:5.2.0 | exited | games | T4 |
| faster-whisper | faster-whisper-bench:local | exited | games | T4 |
| fpswg-map | fpswg-map:latest | running | games | T3 |
| games-shatterfront | shatterfront:latest | running | games | T3 |
| games-tiny-swords-game | tiny-swords-game:latest | running | games | T3 |
| games-tinytrack-server | tinytrack-server-tinytrack | running | games | T3 |
| homarr | ghcr.io/homarr-labs/homarr:v1.72.0 | exited | games | T4 |
| mapforge | mapforge:1.0.0 | running | games | T3 |
| mazeforge-game | mazeforge:2.2.1 | running | games | T3 |
| mazeforge-server | mazeforge-server:2.2.1 | running | games | T3 |
| scrap | scrap:latest | running | games | T3 |
| scrap-api | scrap-api:latest | running | games | T3 |
| secrets-of-crimson-haven | secrets-of-crimson-haven:latest | running | games | T3 |
| space-formations | kenney-mobile-demo-space-formations | running | games | T3 |
| ten-banners | ten-banners:2.0.1 | running | games | T3 |
| cloudflared-shared-public | cloudflare/cloudflared:latest | running | infra | T0 |
| portainer | portainer/portainer-ce:lts | running | infra | T0 |
| searxng | searxng/searxng:latest | running | infra | T0 |
| shot-service | shot-service:1.0.0 | running | infra | T0 |
| tailnet-dns | coredns/coredns:latest | running | infra | T0 |
| academy-report | nginx:1.27-alpine | exited | product | T4 |
| aetherforge-api | ghcr.io/stephenvidal/aetherforge/api:1.0.0 | running | product | T2 |
| aetherforge-db | postgres:16-alpine | running | product | T2 |
| aetherforge-web | ghcr.io/stephenvidal/aetherforge/web:1.0.0 | running | product | T2 |
| ano-dev-pg | postgres:16-alpine | exited | product | T4 |
| last-flight-out-db-1 | postgres:16.15-alpine | running | product | T2 |
| last-flight-out-migrate-1 | last-flight-out:2026.11.07-4 | exited | product | T4 |
| last-flight-out-web-1 | last-flight-out:2026.11.07-4 | running | product | T2 |
| lfo-pg-test | postgres:16-alpine | exited | product | T4 |
| tps-workbench | tps-workbench:0.1.0 | running | product | T2 |
| tps-workbench-api | tps-workbench-api:0.1.0 | running | product | T2 |
| tps-workbench-game | node:22-alpine | running | product | T2 |
NAS (DS220+, same house) — 44 containers (44 running)
| Name | Image | State | Group | Tier |
|---|---|---|---|---|
| cf-ddns-nsystems | favonia/cloudflare-ddns:latest | running | business | T1 |
| docuseal | docuseal/docuseal:latest | running | business | T1 |
| docuseal-db | postgres:18-alpine | running | business | T1 |
| hbbr | rustdesk/rustdesk-server:latest | running | business | T1 |
| hbbs | rustdesk/rustdesk-server:latest | running | business | T1 |
| invoiceninja | invoiceninja/invoiceninja-debian:latest | running | business | T1 |
| invoiceninja-db | mysql:8 | running | business | T1 |
| invoiceninja-redis | redis:alpine | running | business | T1 |
| invoiceninja-web | nginx:alpine | running | business | T1 |
| nsystems-gatus | twinproduction/gatus | running | business | T1 |
| nsystems-gotify | gotify/server | running | business | T1 |
| tak-elasticsearch | docker.elastic.co/elasticsearch/elasticsearch: | running | business | T1 |
| tak-redis | redis:7-alpine | running | business | T1 |
| traefik | traefik:v3 | running | business | T1 |
| vaultwarden | vaultwarden/server:latest | running | business | T1 |
| vidalstudios-db-1 | mariadb:11 | running | client-wp | T0 |
| vidalstudios-wordpress-1 | wordpress:6-php8.3-apache | running | client-wp | T0 |
| crimson-haven | f787d2269bb5 | running | games | T3 |
| ghostline-command | f787d2269bb5 | running | games | T3 |
| scrapline-compare | 024fb2fa7c75 | running | games | T3 |
| scrapline2 | scrapline2:production | running | games | T3 |
| skybreaker-transform | f787d2269bb5 | running | games | T3 |
| vault-tls | f787d2269bb5 | running | games | T3 |
| cloudflared | cloudflare/cloudflared:latest | running | infra | T0 |
| bazarr | lscr.io/linuxserver/bazarr:latest | running | media | T2 |
| bazarr-anime | lscr.io/linuxserver/bazarr:latest | running | media | T2 |
| cleanuparr | ghcr.io/cleanuparr/cleanuparr:latest | running | media | T2 |
| deemix | registry.gitlab.com/bockiii/deemix-docker:late | running | media | T2 |
| flaresolverr | flaresolverr/flaresolverr:latest | running | media | T2 |
| gluetun | qmcgaw/gluetun:latest | running | media | T2 |
| jellyfin | lscr.io/linuxserver/jellyfin:latest | running | media | T2 |
| overseerr | lscr.io/linuxserver/overseerr:latest | running | media | T2 |
| plex | lscr.io/linuxserver/plex:latest | running | media | T2 |
| prowlarr | lscr.io/linuxserver/prowlarr:latest | running | media | T2 |
| qbittorrent | lscr.io/linuxserver/qbittorrent:latest | running | media | T2 |
| radarr | lscr.io/linuxserver/radarr:latest | running | media | T2 |
| radarr-anime | lscr.io/linuxserver/radarr:latest | running | media | T2 |
| rdt-client | ghcr.io/stephenvidal/debrid-fetch:latest | running | media | T2 |
| recyclarr | ghcr.io/recyclarr/recyclarr:latest | running | media | T2 |
| rutorrent | ghcr.io/crazy-max/rtorrent-rutorrent:latest | running | media | T2 |
| sonarr | lscr.io/linuxserver/sonarr:latest | running | media | T2 |
| sonarr-anime | lscr.io/linuxserver/sonarr:latest | running | media | T2 |
| tubearchivist-kids | bbilly1/tubearchivist:latest | running | media | T2 |
| unpackerr | golift/unpackerr:latest | running | media | T2 |
VPS srv1388017 (datacenter) — 20 containers (17 running)
| Name | Image | State | Group | Tier |
|---|---|---|---|---|
| rustdesk-hbbr-1 | rustdesk/rustdesk-server@sha256:10818ec05b1790 | running | business | T1 |
| rustdesk-hbbs-1 | rustdesk/rustdesk-server@sha256:10818ec05b1790 | running | business | T1 |
| filebrowser | filebrowser/filebrowser:latest | running | infra | T0 |
| urpost-hub-staging-tunnel-1 | cloudflare/cloudflared:2026.9.3@sha256:072c067 | running | infra | T0 |
| dustline | ghcr.io/stephenvidal/dustline:sha-7aa2df7 | running | product | T2 |
| seed-api-1 | ghcr.io/stephenvidal/seed-api:sha-4b18541 | running | product | T2 |
| seed-db-1 | postgres:17-alpine | running | product | T2 |
| seed-discord-1 | ghcr.io/stephenvidal/seed-api:sha-4b18541 | exited | product | T4 |
| seed-gateway-1 | ghcr.io/stephenvidal/seed-api:sha-4b18541 | exited | product | T4 |
| seed-sandbox-1 | ghcr.io/stephenvidal/seed-api:sha-4b18541 | running | product | T2 |
| seed-web-1 | ghcr.io/stephenvidal/seed-web:sha-4b18541 | running | product | T2 |
| seed-worker-1 | ghcr.io/stephenvidal/seed-api:sha-4b18541 | exited | product | T4 |
| urpost-core-clips-1 | ghcr.io/stephenvidal/urpost-core:3d941e3d74a03 | running | product | T2 |
| urpost-core-core-1 | ghcr.io/stephenvidal/urpost-core:3d941e3d74a03 | running | product | T2 |
| urpost-core-drafts-1 | ghcr.io/stephenvidal/urpost-core:3d941e3d74a03 | running | product | T2 |
| urpost-core-front-1 | caddy:2.8.4-alpine | running | product | T2 |
| urpost-core-nas | ghcr.io/stephenvidal/urpost-core:main-nas | running | product | T2 |
| urpost-core-transcripts-1 | ghcr.io/stephenvidal/urpost-core:3d941e3d74a03 | running | product | T2 |
| urpost-hub-staging-hub-1 | urpost:1500912b21f2526c78ec139d8ab426b6008f532 | running | product | T2 |
| urpost-hub-staging-worker-1 | urpost:1500912b21f2526c78ec139d8ab426b6008f532 | running | product | T2 |
How to read this
Tier is assigned by consequence, not by how interesting the software is. T4 rows are the stopped and errored containers — they stay until someone either revives or deletes them, and they cost nothing but disk. Anything T0 or T1 that is still on golden-eye is a defect, not a placement.