userdata layout: repoint customer-content mounts to ${USERDATA_PATH}
Move every shared-media + ingest mount off ${HDD_PATH}/media onto the new
${USERDATA_PATH}/... convention (controller injects USERDATA_PATH = <namespace>/userdata):
- jellyfin/emby/plex: media:/media:ro ; navidrome: media/music:ro
- audiobookshelf (user 1000:1000): media/{audiobooks,podcasts}
- komga (user 1000:1000): media/comics
- calibre-web (UMASK=002): library->media/books, ingest->import/calibre
- radarr/sonarr (UMASK=002): media/{movies,tv} + downloads (sibling, same FS)
- romm: ROM library -> userdata/roms (browsable); resources stay in appdata
- immich: + external library media/photos:/external/photos:ro (registration is a
post-deploy admin step — flagged in compose + .felhom.yml)
- paperless: consume -> import/paperless (USERMAP 1000)
- nextcloud: unchanged (fully app-managed)
.felhom.yml first_steps updated for the new browsable drop-zones.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,20 +5,28 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - Hangoskönyv tár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Hangoskönyvek → ${USERDATA_PATH}/media/audiobooks (írható)
|
||||
# Podcastok → ${USERDATA_PATH}/media/podcasts (írható)
|
||||
# Run-identity: user 1000:1000 so files land group-writable for the shared content group
|
||||
# (GID 1000); the userdata dirs are setgid 2775. If the image fails to start healthy as
|
||||
# 1000, the controller/operator reverts to root and relies on setgid (see REPORT).
|
||||
|
||||
services:
|
||||
audiobookshelf:
|
||||
image: ghcr.io/advplyr/audiobookshelf:2.19.5
|
||||
container_name: audiobookshelf
|
||||
restart: unless-stopped
|
||||
user: "1000:1000"
|
||||
environment:
|
||||
- TZ=Europe/Budapest
|
||||
volumes:
|
||||
- audiobookshelf_config:/config
|
||||
- audiobookshelf_metadata:/metadata
|
||||
- ${HDD_PATH}/media/audiobooks:/audiobooks
|
||||
- ${HDD_PATH}/media/podcasts:/podcasts
|
||||
- ${USERDATA_PATH}/media/audiobooks:/audiobooks
|
||||
- ${USERDATA_PATH}/media/podcasts:/podcasts
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -57,7 +57,7 @@ app_info:
|
||||
- 'Nyisd meg a books.DOMAIN címet a böngészőben'
|
||||
- 'Jelentkezz be: admin / admin123'
|
||||
- 'Változtasd meg azonnal a jelszót'
|
||||
- 'Dobj egy könyvet az ingest mappába - automatikusan feldolgozza'
|
||||
- 'Dobj egy könyvet a Fájlkezelőben (FileBrowser) az import/calibre mappába — automatikusan feldolgozza és a media/books könyvtárba helyezi'
|
||||
|
||||
prerequisites:
|
||||
- 'Külső HDD szükséges az e-könyvek tárolásához'
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - E-könyvtár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout:
|
||||
# Storage layout (felhom userdata convention):
|
||||
# App config/DB → calibre_web_config (named volume, NVMe)
|
||||
# Book ingest → ${HDD_PATH}/media/books/ingest (HDD, drop files here — processed and removed)
|
||||
# Calibre library → ${HDD_PATH}/media/books/library (HDD, Calibre library storage)
|
||||
# Calibre library → ${USERDATA_PATH}/media/books (browsable, írható)
|
||||
# Book ingest → ${USERDATA_PATH}/import/calibre (drop-zone — processed and removed)
|
||||
# Run-identity: PUID/PGID 1000 (shared content group); UMASK=002 so output is group-writable.
|
||||
#
|
||||
# First-time setup:
|
||||
# Default login: admin / admin123 — change immediately!
|
||||
@@ -24,10 +25,11 @@ services:
|
||||
- TZ=Europe/Budapest
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- calibre_web_config:/config
|
||||
- ${HDD_PATH}/media/books/ingest:/cwa-book-ingest
|
||||
- ${HDD_PATH}/media/books/library:/calibre-library
|
||||
- ${USERDATA_PATH}/import/calibre:/cwa-book-ingest
|
||||
- ${USERDATA_PATH}/media/books:/calibre-library
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -5,7 +5,10 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - Médiatár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Médiatár → ${USERDATA_PATH}/media (csak olvasható)
|
||||
|
||||
services:
|
||||
emby:
|
||||
@@ -18,7 +21,7 @@ services:
|
||||
- GID=1000
|
||||
volumes:
|
||||
- emby_config:/config
|
||||
- ${HDD_PATH}/media:/media:ro
|
||||
- ${USERDATA_PATH}/media:/media:ro
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -69,6 +69,11 @@ app_info:
|
||||
- 'Telepítsd az Immich alkalmazást a telefonodra (Android/iOS)'
|
||||
- 'Állítsd be az automatikus feltöltést az alkalmazásban'
|
||||
- 'Hívd meg a családtagokat külön fiókokkal'
|
||||
# MOUNT-READY, REGISTRATION PENDING: a megosztott média/photos mappa be van csatolva
|
||||
# /external/photos néven (csak olvasható), de az Immich CSAK akkor látja, ha az
|
||||
# adminfelületen (Administration → External Libraries) regisztrálod a /external/photos
|
||||
# útvonalat. Compose ezt NEM teszi meg automatikusan — ez egy telepítés utáni lépés.
|
||||
- 'Külső könyvtár (opcionális): Administration → External Libraries → add /external/photos'
|
||||
|
||||
prerequisites:
|
||||
- 'Külső HDD szükséges a fotók és videók tárolásához'
|
||||
|
||||
@@ -5,17 +5,25 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
|
||||
# HDD_PATH - Drive namespace root (managed upload lives under appdata)
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
# DB_PASSWORD - PostgreSQL password (auto-generated)
|
||||
#
|
||||
# Storage layout:
|
||||
# User photos/videos → ${HDD_PATH}/appdata/immich (HDD, host path)
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Managed upload (Immich-owned) → ${HDD_PATH}/appdata/immich (HDD, host path — app-managed)
|
||||
# External photo library (RO) → ${USERDATA_PATH}/media/photos → /external/photos
|
||||
# PostgreSQL data → immich_postgres_data (named volume, NVMe)
|
||||
# ML model cache → immich_ml_cache (named volume, NVMe)
|
||||
# Redis data → immich_redis_data (named volume, NVMe)
|
||||
#
|
||||
# ⚠ EXTERNAL LIBRARY IS NOT WIRED BY COMPOSE: mounting /external/photos only makes the files
|
||||
# visible to the container. To actually surface them in Immich you MUST register an External
|
||||
# Library pointing at /external/photos in the Immich admin UI (Administration → External
|
||||
# Libraries) or via the API — a POST-DEPLOY step. Until then photos sharing is "mount ready,
|
||||
# registration pending". See .felhom.yml first_steps + REPORT.
|
||||
#
|
||||
# First-time setup:
|
||||
# Create admin account on first visit.
|
||||
# Create admin account on first visit, then register the External Library (see above).
|
||||
|
||||
services:
|
||||
immich-server:
|
||||
@@ -37,6 +45,7 @@ services:
|
||||
- TZ=Europe/Budapest
|
||||
volumes:
|
||||
- ${HDD_PATH}/appdata/immich:/usr/src/app/upload
|
||||
- ${USERDATA_PATH}/media/photos:/external/photos:ro
|
||||
networks:
|
||||
- traefik-public
|
||||
- immich-internal
|
||||
|
||||
@@ -5,7 +5,10 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - Médiatár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata) — a média a media/ alatt
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Médiatár → ${USERDATA_PATH}/media (csak olvasható; a könyvtárakat az appban választod ki)
|
||||
|
||||
services:
|
||||
jellyfin:
|
||||
@@ -17,7 +20,7 @@ services:
|
||||
volumes:
|
||||
- jellyfin_config:/config
|
||||
- jellyfin_cache:/cache
|
||||
- ${HDD_PATH}/media:/media:ro
|
||||
- ${USERDATA_PATH}/media:/media:ro
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -5,18 +5,24 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - Képregénytár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Képregénytár → ${USERDATA_PATH}/media/comics (írható)
|
||||
# Run-identity: user 1000:1000 for the shared content group (GID 1000); userdata dirs are
|
||||
# setgid 2775. Try-then-fallback to root if it won't start healthy as 1000 (see REPORT).
|
||||
|
||||
services:
|
||||
komga:
|
||||
image: gotson/komga:1.20.0
|
||||
container_name: komga
|
||||
restart: unless-stopped
|
||||
user: "1000:1000"
|
||||
environment:
|
||||
- TZ=Europe/Budapest
|
||||
volumes:
|
||||
- komga_config:/config
|
||||
- ${HDD_PATH}/media/comics:/data
|
||||
- ${USERDATA_PATH}/media/comics:/data
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -5,7 +5,10 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - Zenegyűjtemény útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Zenegyűjtemény → ${USERDATA_PATH}/media/music (csak olvasható)
|
||||
|
||||
services:
|
||||
navidrome:
|
||||
@@ -19,7 +22,7 @@ services:
|
||||
- ND_BASEURL=
|
||||
volumes:
|
||||
- navidrome_data:/data
|
||||
- ${HDD_PATH}/media/music:/music:ro
|
||||
- ${USERDATA_PATH}/media/music:/music:ro
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -131,7 +131,7 @@ app_info:
|
||||
- 'Nyisd meg a paperless.DOMAIN címet a böngészőben'
|
||||
- 'Jelentkezz be: admin / admin'
|
||||
- 'Változtasd meg azonnal a jelszót'
|
||||
- 'Tölts fel egy dokumentumot (PDF, kép) és várd meg az OCR feldolgozást'
|
||||
- 'Tölts fel egy dokumentumot a webfelületen, VAGY dobd a Fájlkezelőben (FileBrowser) az import/paperless mappába — onnan automatikusan beolvassa és OCR-rel feldolgozza'
|
||||
- 'Hozz létre címkéket és levelezőket az automatikus rendszerezéshez'
|
||||
|
||||
prerequisites:
|
||||
|
||||
@@ -5,17 +5,20 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
|
||||
# HDD_PATH - Drive namespace root (managed media/export under appdata)
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
# PAPERLESS_SECRET_KEY - Random secret (auto-generated)
|
||||
# DB_PASSWORD - PostgreSQL password (auto-generated)
|
||||
# PAPERLESS_ADMIN_USER - Initial admin username (default: admin)
|
||||
# PAPERLESS_ADMIN_PASSWORD - Initial admin password
|
||||
#
|
||||
# Storage layout:
|
||||
# Consume folder → ${HDD_PATH}/appdata/paperless/consume (HDD, drop files here)
|
||||
# Document media → ${HDD_PATH}/appdata/paperless/media (HDD, originals + archive)
|
||||
# Export folder → ${HDD_PATH}/appdata/paperless/export (HDD, for backups)
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Consume drop-zone → ${USERDATA_PATH}/import/paperless (browsable — drop files here via FileBrowser)
|
||||
# Document media → ${HDD_PATH}/appdata/paperless/media (app-managed originals + archive)
|
||||
# Export folder → ${HDD_PATH}/appdata/paperless/export (app-managed backups)
|
||||
# App data/index → paperless_data (named volume, NVMe)
|
||||
# Run-identity: USERMAP_UID/GID 1000 → paperless consumes + DELETES from the import drop-zone
|
||||
# (group 1000, setgid 2775) without permission errors.
|
||||
# PostgreSQL data → paperless_postgres_data (named volume, NVMe)
|
||||
# Redis data → paperless_redis_data (named volume, NVMe)
|
||||
#
|
||||
@@ -55,7 +58,7 @@ services:
|
||||
volumes:
|
||||
- paperless_data:/usr/src/paperless/data
|
||||
- ${HDD_PATH}/appdata/paperless/media:/usr/src/paperless/media
|
||||
- ${HDD_PATH}/appdata/paperless/consume:/usr/src/paperless/consume
|
||||
- ${USERDATA_PATH}/import/paperless:/usr/src/paperless/consume
|
||||
- ${HDD_PATH}/appdata/paperless/export:/usr/src/paperless/export
|
||||
networks:
|
||||
- traefik-public
|
||||
|
||||
@@ -6,7 +6,10 @@
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# PLEX_CLAIM - Plex Claim Token
|
||||
# HDD_PATH - Médiatár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Médiatár → ${USERDATA_PATH}/media (csak olvasható)
|
||||
|
||||
services:
|
||||
plex:
|
||||
@@ -19,7 +22,7 @@ services:
|
||||
volumes:
|
||||
- plex_config:/config
|
||||
- plex_transcode:/transcode
|
||||
- ${HDD_PATH}/media:/media:ro
|
||||
- ${USERDATA_PATH}/media:/media:ro
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -5,7 +5,13 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - Médiatár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Filmtár → ${USERDATA_PATH}/media/movies (írható)
|
||||
# Letöltések → ${USERDATA_PATH}/downloads (SIBLING of media — same FS → hardlink/atomic move)
|
||||
# Run-identity: PUID/PGID 1000 (shared content group); UMASK=002 → group-writable output so
|
||||
# the media server + FileBrowser can manage the files radarr produces.
|
||||
|
||||
services:
|
||||
radarr:
|
||||
@@ -16,10 +22,11 @@ services:
|
||||
- TZ=Europe/Budapest
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- radarr_config:/config
|
||||
- ${HDD_PATH}/media:/media
|
||||
- ${HDD_PATH}/downloads:/downloads
|
||||
- ${USERDATA_PATH}/media/movies:/media/movies
|
||||
- ${USERDATA_PATH}/downloads:/downloads
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
@@ -75,14 +75,14 @@ app_info:
|
||||
- "Nyisd meg az arcade.DOMAIN címet a böngészőben"
|
||||
- "Jelentkezz be az alapértelmezett admin / admin fiókkal"
|
||||
- "Változtasd meg azonnal a jelszót a Settings menüben"
|
||||
- "Töltsd fel a ROM fájlokat a library mappába (platform/játéknév struktúrával)"
|
||||
- "Töltsd fel a ROM fájlokat a Fájlkezelőben (FileBrowser) a roms/ mappába, platform mappákba rendezve (pl. roms/gba/, roms/snes/)"
|
||||
- "Indíts egy Scan-t a bal oldali menüben a ROM-ok beolvasásához"
|
||||
- "Opcionális: állíts be metaadat-szolgáltatókat a borítóképek és leírások automatikus letöltéséhez (lásd lent)"
|
||||
|
||||
prerequisites:
|
||||
- "Külső HDD szükséges a ROM fájlok és borítóképek tárolásához"
|
||||
- "Legalább 1 GB szabad RAM ajánlott (MariaDB + Redis + RomM)"
|
||||
- "ROM fájlok platform mappákba rendezve (pl. library/gba/, library/snes/)"
|
||||
- "ROM fájlok platform mappákba rendezve (pl. roms/gba/, roms/snes/)"
|
||||
|
||||
# --- Optional config (configurable before or after deployment) ---
|
||||
optional_config:
|
||||
|
||||
@@ -5,14 +5,15 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
|
||||
# HDD_PATH - Drive namespace root (appdata lives here)
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
# DB_PASSWORD - MariaDB user password (auto-generated)
|
||||
# MYSQL_ROOT_PASSWORD - MariaDB root password (auto-generated)
|
||||
# ROMM_AUTH_SECRET_KEY - Auth secret (auto-generated)
|
||||
#
|
||||
# Storage layout:
|
||||
# ROM library → ${HDD_PATH}/appdata/romm/library (HDD, host path)
|
||||
# Cover art etc → ${HDD_PATH}/appdata/romm/resources (HDD, host path)
|
||||
# Storage layout (felhom userdata convention):
|
||||
# ROM library → ${USERDATA_PATH}/roms (browsable — drop ROMs here via FileBrowser)
|
||||
# Cover art etc → ${HDD_PATH}/appdata/romm/resources (app-internal, NOT browsable)
|
||||
# App config → romm_config (named volume, NVMe)
|
||||
# MariaDB data → romm_db_data (named volume, NVMe)
|
||||
# Redis data → romm_redis_data (named volume, NVMe)
|
||||
@@ -62,7 +63,7 @@ services:
|
||||
- MOBYGAMES_API_KEY=${MOBYGAMES_API_KEY:-}
|
||||
- TZ=Europe/Budapest
|
||||
volumes:
|
||||
- ${HDD_PATH}/appdata/romm/library:/romm/library
|
||||
- ${USERDATA_PATH}/roms:/romm/library
|
||||
- ${HDD_PATH}/appdata/romm/resources:/romm/resources
|
||||
- romm_config:/romm/config
|
||||
networks:
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
#
|
||||
# Environment variables:
|
||||
# DOMAIN - Your domain (e.g., demo-felhom.eu)
|
||||
# HDD_PATH - Médiatár útvonal
|
||||
# USERDATA_PATH - Ügyfél-tartalom gyökér (<namespace>/userdata)
|
||||
#
|
||||
# Storage layout (felhom userdata convention):
|
||||
# Sorozattár → ${USERDATA_PATH}/media/tv (írható)
|
||||
# Letöltések → ${USERDATA_PATH}/downloads (SIBLING of media — same FS → hardlink/atomic move)
|
||||
# Run-identity: PUID/PGID 1000 (shared content group); UMASK=002 → group-writable output.
|
||||
|
||||
services:
|
||||
sonarr:
|
||||
@@ -16,10 +21,11 @@ services:
|
||||
- TZ=Europe/Budapest
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- sonarr_config:/config
|
||||
- ${HDD_PATH}/media:/media
|
||||
- ${HDD_PATH}/downloads:/downloads
|
||||
- ${USERDATA_PATH}/media/tv:/media/tv
|
||||
- ${USERDATA_PATH}/downloads:/downloads
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
|
||||
Reference in New Issue
Block a user