ad0fdd2beb
- Move PORTMAP, storage, volumes, docker-networks from stacks/ → infra/ - Remove stacks/todo.md (content migrated to CHANGELOG + ideas) - portmap: add new MCP servers (18005/07/09/10/11), fix s3.nuclide.systems entry, update Daytona OIDC row to DECOMMISSIONED, add Vaultwarden OIDC placeholder, add DevOps table row for MCP server Gitea repos - storage: add Garage S3 buckets subsection (lobe-files + chat-artifacts) - docker-networks: remove daytona-minimal_daytona-network row + daytona from "Stacks Keeping Own Networks" list - ct-inventory: add CT 112 (secrets/Infisical, planned) - CHANGELOG: prepend 2026-05-21 entry (docs, S3, MCP, dev env, Gitea repos, planned) - ideas/stack-ideas: add §11 Renovate Bot, §12 egress firewall, §13 local LLM - mkdocs.yml: replace nav — dissolve Stacks chapter, add infra/ entries
346 lines
11 KiB
Markdown
346 lines
11 KiB
Markdown
# Volume Mounts — NUC 14 Docker Stacks
|
|
|
|
> Every bind mount and named volume across all running containers.
|
|
> Last updated: May 16, 2026
|
|
|
|
## Legend
|
|
|
|
| Column | Meaning |
|
|
|---|---|
|
|
| **Type** | `bind` = host directory, `volume` = docker named volume, `tmpfs` = memory |
|
|
| **Source** | Host path (bind) or volume name (volume) |
|
|
| **Container** | Mount point inside container |
|
|
| **UNAS** | `/mnt/pve/unas/services/` target (migrated or planned) |
|
|
|
|
---
|
|
|
|
## Infrastructure
|
|
|
|
### Arcane — `arcane`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/var/run/docker.sock` | `/var/run/docker.sock` | — |
|
|
| bind | `/opt/stacks` | `/app/data/projects` | — |
|
|
| **bind** | **`/mnt/pve/unas/services/arcane`** | **`/app/data`** | ✅ **Migrated** |
|
|
| ~~volume~~ | ~~`arcane_arcane-data`~~ | ~~`/app/data`~~ | 🗑️ removed |
|
|
|
|
### Dozzle — `dozzle`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/dozzle/dozzle_data` | `/data` | (optional, ephemeral) |
|
|
| bind | `/var/run/docker.sock` | `/var/run/docker.sock` | — |
|
|
|
|
### Homepage — `homepage`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/homepage/config` | `/app/config` | (keep in stack dir) |
|
|
| bind | `/opt/stacks/homepage/icons` | `/app/public/icons` | (keep in stack dir) |
|
|
| bind | `/var/run/docker.sock` | `/var/run/docker.sock` | — |
|
|
|
|
---
|
|
|
|
## Security
|
|
|
|
### Pocket ID — `pocketid`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/pocketid`** | **`/app/data`** | ✅ **Already on UNAS** |
|
|
|
|
### Vaultwarden — `vaultwarden`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/vaultwarden`** | **`/data`** | ✅ **Already on UNAS** |
|
|
| bind | `/etc/localtime` | `/etc/localtime` | — |
|
|
| bind | `/etc/timezone` | `/etc/timezone` | — |
|
|
|
|
---
|
|
|
|
## Media — Immich
|
|
|
|
### Immich Server — `immich_server`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/immich/encoded-video`** | `/usr/src/app/upload/encoded-video` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/services/immich/profile`** | `/usr/src/app/upload/profile` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/services/immich/thumbs`** | `/usr/src/app/upload/thumbs` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/media/images`** | `/usr/src/app/upload` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/backup/immich`** | `/usr/src/app/upload/backups` | ✅ **Already on UNAS** |
|
|
| volume | `7d25f4ac...` (anonymous) | `/data` | (unknown, check) |
|
|
|
|
### Immich ML — `immich_machine_learning`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `immich_model-cache` | `/cache` | (cache, regenerable) |
|
|
| bind | `/dev/bus/usb` | `/dev/bus/usb` | — |
|
|
|
|
### Immich Postgres — `immich_postgres`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/opt/stacks/immich/postgres`** | **`/var/lib/postgresql/data`** | ⏳ Plan: `immich/db` |
|
|
|
|
---
|
|
|
|
## Media — Downloads / Arr Stack
|
|
|
|
All behind gluetun VPN.
|
|
|
|
### RDTClient — `rdtclient`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/arr-stack/rdtclient/config` | `/data/db` | ⏳ Plan: `arr-stack/rdtclient` |
|
|
| bind | `/opt/stacks/arr-stack/media/Torrents` | `/data/downloads` | ⏳ Plan: `arr-stack/torrents` |
|
|
|
|
### Prowlarr — `prowlarr`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/arr-stack/prowlarr` | `/config` | ⏳ Plan: `arr-stack/prowlarr` |
|
|
|
|
### Audiobookshelf — `audiobookshelf`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/arr-stack/audiobookshelf` | `/config` | ⏳ Plan: `arr-stack/audiobookshelf` |
|
|
| bind | `/opt/stacks/arr-stack/media/audiobooks` | `/audiobooks` | ⏳ Plan: `arr-stack/audiobooks` |
|
|
| bind | `/opt/stacks/arr-stack/media/ebooks` | `/ebooks` | ⏳ Plan: `arr-stack/ebooks` |
|
|
| bind | `/opt/stacks/arr-stack/media/podcasts` | `/podcasts` | ⏳ Plan: `arr-stack/podcasts` |
|
|
|
|
### ShelfArr — `shelfarr`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/arr-stack/shelfarr/storage` | `/rails/storage` | ⏳ Plan: `arr-stack/shelfarr` |
|
|
| bind | `/opt/stacks/arr-stack/media/audiobooks` | `/audiobooks` | (shared) |
|
|
| bind | `/opt/stacks/arr-stack/media/ebooks` | `/ebooks` | (shared) |
|
|
| bind | `/opt/stacks/arr-stack/media/Torrents` | `/downloads` | (shared) |
|
|
|
|
### Flaresolverr — `flaresolverr`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/var/lib/flaresolver` | `/config` | (cache, regenerable) |
|
|
|
|
---
|
|
|
|
## AI Stack
|
|
|
|
### LiteLLM — `litellm`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/ai/litellm-config` | `/app/config` | (keep in stack dir) |
|
|
|
|
### LiteLLM DB — `nuc-ai-core-litellm-db-1`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/opt/stacks/ai/postgres_data`** | **`/var/lib/postgresql/data`** | ⏳ Plan: `ai/litellm-db` |
|
|
|
|
### LobeHub — `lobehub`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/ai/lobehub/data` | `/var/lib/postgresql/data` | ⏳ Plan: `ai/lobehub-db` |
|
|
|
|
### LobeHub Redis — `lobe-redis`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `nuc-ai-core_redis_data` | `/data` | (ephemeral, stay) |
|
|
|
|
### LobeHub RustFS — `lobe-rustfs`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `nuc-ai-core_rustfs-data` | `/data` | ⏳ Plan: `ai/rustfs` |
|
|
|
|
### SearXNG — `searxng`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/ai/searxng` | `/etc/searxng` | (keep in stack dir) |
|
|
| volume | `bb5bb182...` (anonymous) | `/var/cache/searxng` | (cache, regenerable) |
|
|
|
|
### SearXNG Redis — `redis-searxng`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `f9c3c386...` (anonymous) | `/data` | (ephemeral, stay) |
|
|
|
|
### SAIA Image Proxy — `nuc-ai-core-saia-image-proxy-1`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/ai/saia-image-proxy` | `/app` | (keep in stack dir) |
|
|
|
|
### Crawl4AI — `crawl4ai-mcp`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| tmpfs | `/dev/shm` | `/dev/shm` | — |
|
|
|
|
---
|
|
|
|
## Documents
|
|
|
|
### Paperless-ngx Webserver — `paperless-ngx-webserver-1`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/media/documents/public/paperless-ngx/consume`** | `/usr/src/paperless/consume` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/media/documents/public/paperless-ngx/export`** | `/usr/src/paperless/export` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/media/documents/public/paperless-ngx/library`** | `/usr/src/paperless/media` | ✅ **Already on UNAS** |
|
|
| volume | `paperless-ngx_data` | `/usr/src/paperless/data` | ⏳ Plan: `paperless-ngx/data` |
|
|
|
|
### Paperless-ngx DB — `paperless-ngx-db-1`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `paperless-ngx_pgdata` | `/var/lib/postgresql/data` | ⏳ Plan: `paperless-ngx/pgdata` |
|
|
|
|
### Paperless-ngx Broker — `paperless-ngx-broker-1`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `paperless-ngx_redisdata` | `/data` | (ephemeral, stay) |
|
|
|
|
### Paperless AI — `paperless-ai`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/paperless-ai`** | **`/app/data`** | ✅ **Already on UNAS** |
|
|
|
|
---
|
|
|
|
## Productivity & Bookmarks
|
|
|
|
### Memos — `memos`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/memos`** | **`/var/opt/memos`** | ✅ **Migrated** |
|
|
| ~~bind~~ | ~~`/opt/stacks/memos/data`~~ | ~~`/var/opt/memos`~~ | 🗑️ replaced |
|
|
|
|
### Karakeep — `karakeep`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/karakeep/data`** | **`/data`** | ✅ **Already on UNAS** |
|
|
|
|
### Karakeep Meilisearch — `karakeep_meilisearch`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/karakeep/meilisearch`** | **`/meili_data`** | ✅ **Already on UNAS** |
|
|
|
|
---
|
|
|
|
## Automation
|
|
|
|
### n8n — `n8n`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/n8n`** | **`/home/node/.n8n`** | ✅ **Migrated** |
|
|
| bind | `/opt/stacks/n8n/hooks.js` | `/home/node/hooks.js` | (keep in stack dir) |
|
|
| ~~volume~~ | ~~`n8n_n8n_storage`~~ | ~~`/home/node/.n8n`~~ | 🗑️ removed |
|
|
|
|
---
|
|
|
|
## DevOps
|
|
|
|
### Daytona API — `daytona-minimal-api-1`
|
|
|
|
No DB-specific mounts needed (connects via env vars).
|
|
|
|
### Daytona DB — `daytona-minimal-db-1`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `daytona-minimal_db_data` | `/var/lib/postgresql/data` | ⏳ Plan: `daytona/db` |
|
|
|
|
### Daytona Runner — `daytona-minimal-runner-1`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| volume | `9416da14...` (anonymous) | `/var/lib/docker` | (runner state, stay) |
|
|
| bind | `/var/run/docker.sock` | `/var/run/docker.sock` | — |
|
|
|
|
---
|
|
|
|
## Tracking
|
|
|
|
### Traccar — `traccar`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/traccar/data`** | `/opt/traccar/data` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/services/traccar/logs`** | `/opt/traccar/logs` | ✅ **Already on UNAS** |
|
|
| **bind** | **`/mnt/pve/unas/services/traccar/traccar.xml`** | `/opt/traccar/conf/traccar.xml` | ✅ **Already on UNAS** |
|
|
|
|
---
|
|
|
|
## VPN
|
|
|
|
### Gluetun — `vpn_gluetun`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/gluetun/data`** | **`/gluetun`** | ✅ **Already on UNAS** |
|
|
|
|
---
|
|
|
|
## Shared Infrastructure
|
|
|
|
### Shared PostgreSQL — `shared-postgres`
|
|
|
|
| Type | Source | Container | Notes |
|
|
|---|---|---|---|
|
|
| volume | `shared-db_shared-pgdata` | `/var/lib/postgresql/data` | 🗄️ Local NVMe (not NFS) |
|
|
|
|
### Garage S3 — `garage`
|
|
|
|
| Type | Source | Container | Notes |
|
|
|---|---|---|---|
|
|
| bind | `/mnt/pve/unas/services/shared-db/garage/data` | `/var/lib/garage/data` | S3 object data |
|
|
| bind | `/mnt/pve/unas/services/shared-db/garage/meta` | `/var/lib/garage/meta` | S3 metadata (LMDB) |
|
|
|
|
---
|
|
|
|
## Stacks Not Running (Compose Config Only)
|
|
|
|
### Streamio — `streamio`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| **bind** | **`/mnt/pve/unas/services/stremio`** | **`/root/.stremio-server`** | ✅ **Already on UNAS** |
|
|
|
|
### Qdrant — `qdrant_scientific`
|
|
|
|
| Type | Source | Container | UNAS |
|
|
|---|---|---|---|
|
|
| bind | `/opt/stacks/qdrant/qdrant_storage` | `/qdrant/storage` | ⏳ Plan: `qdrant/` |
|
|
|
|
---
|
|
|
|
## Summary: Migration Status
|
|
|
|
| Status | Count | Services |
|
|
|---|---|---|
|
|
| ✅ Already on UNAS | 11 | gluetun, immich*(4), karakeep*(2), ntfy*(2), paperless-ai, pocketid, stremio, traccar*(3), vaultwarden, paperless-docs*(3), garage*(2) |
|
|
| ✅ Migrated (Phase 1) | 3 | memos, arcane, n8n |
|
|
| 🔷 Shared infrastructure | 2 | shared-postgres (local volume), garage (on UNAS) |
|
|
| ⏳ Phase 2 planned (PG consolidation) | 5 | immich → shared-postgres, paperless → shared-postgres, daytona → shared-postgres, litellm → shared-postgres, lobehub → shared-postgres |
|
|
| ⏳ Phase 3 planned | 1 | arr-stack*(8 mounts) |
|
|
| 📋 Keep local | ~5 | homepage, dozzle, litellm-config, searxng-config, saia-image-proxy |
|
|
| 🧠 Cache (stay) | ~5 | immich_model-cache, paperless-ngx redis, lobe-redis, searxng-redis, flaresolverr, daytona-runner |
|