updated app catalog with storage path option

This commit is contained in:
2026-02-12 07:35:56 +01:00
parent 82a8c8b6cf
commit 872949c3d7
9 changed files with 235 additions and 43 deletions
+5 -7
View File
@@ -6,13 +6,12 @@
# Environment variables (set in Portainer):
# (none required)
#
# Storage layout:
# Browsable files → {{HDD_PATH}} (HDD, host path — entire disk)
# App config/DB → filebrowser_config (named volume, NVMe)
#
# First-time setup:
# Default login: admin / admin — change immediately!
#
# Volume notes:
# filebrowser_data is the browsable file area.
# For HDD access, override this volume in Portainer:
# /mnt/hdd_1:/srv (or a specific subdirectory)
services:
filebrowser:
@@ -24,7 +23,7 @@ services:
- PUID=1000
- PGID=1000
volumes:
- filebrowser_data:/srv
- {{HDD_PATH}}:/srv
- filebrowser_config:/database
networks:
- traefik-public
@@ -42,7 +41,6 @@ services:
- "traefik.http.services.filebrowser.loadbalancer.server.port=80"
volumes:
filebrowser_data:
filebrowser_config:
networks:
+6 -6
View File
@@ -6,10 +6,11 @@
# Environment variables (set in Portainer):
# DB_PASSWORD - PostgreSQL password (required)
#
# Volume notes:
# immich_upload is the photo/video storage location.
# For HDD storage, override in Portainer stack:
# /mnt/hdd_1/storage/immich:/usr/src/app/upload
# Storage layout:
# User photos/videos → {{HDD_PATH}}/storage/immich (HDD, host path)
# 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)
#
# First-time setup:
# Create admin account on first visit.
@@ -33,7 +34,7 @@ services:
- IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
- TZ=Europe/Budapest
volumes:
- immich_upload:/usr/src/app/upload
- {{HDD_PATH}}/storage/immich:/usr/src/app/upload
networks:
- traefik-public
- immich-internal
@@ -104,7 +105,6 @@ services:
retries: 3
volumes:
immich_upload:
immich_ml_cache:
immich_postgres_data:
immich_redis_data:
+3
View File
@@ -7,6 +7,9 @@
# (none required for basic usage)
# SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD - for email features (optional)
#
# Storage layout:
# Recipe data/images → mealie_data (named volume, NVMe — moderate size)
#
# First-time setup:
# Default login: changeme@example.com / MyPassword
# Change immediately after first login!
+114
View File
@@ -0,0 +1,114 @@
# Paperless-ngx - Document Management System (DMS)
# Domain: docs.{{DOMAIN}}
# Database: PostgreSQL + Redis
# RAM: ~500MB (more with OCR/Tika) | Pi-compatible: Yes (arm64, 4GB+ RAM recommended)
#
# Environment variables (set in Portainer):
# PAPERLESS_SECRET_KEY - Random secret (required, generate with: openssl rand -hex 32)
# DB_PASSWORD - PostgreSQL password (required)
# PAPERLESS_ADMIN_USER - Initial admin username (optional, default: admin)
# PAPERLESS_ADMIN_PASSWORD - Initial admin password (optional)
#
# Storage layout:
# Consume folder → {{HDD_PATH}}/storage/paperless/consume (HDD, drop files here)
# Document media → {{HDD_PATH}}/storage/paperless/media (HDD, originals + archive)
# Export folder → {{HDD_PATH}}/storage/paperless/export (HDD, for backups)
# App data/index → paperless_data (named volume, NVMe)
# PostgreSQL data → paperless_postgres_data (named volume, NVMe)
# Redis data → paperless_redis_data (named volume, NVMe)
#
# First-time setup:
# If PAPERLESS_ADMIN_USER/PASSWORD env vars are set, admin is auto-created.
# Otherwise: docker exec -it paperless-webserver createsuperuser
services:
paperless-webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:2.15.3
container_name: paperless-webserver
restart: unless-stopped
depends_on:
paperless-postgres:
condition: service_healthy
paperless-redis:
condition: service_healthy
environment:
- PAPERLESS_REDIS=redis://paperless-redis:6379
- PAPERLESS_DBHOST=paperless-postgres
- PAPERLESS_DBUSER=paperless
- PAPERLESS_DBPASS=${DB_PASSWORD}
- PAPERLESS_DBNAME=paperless
- PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY}
- PAPERLESS_URL=https://paperless.{{DOMAIN}}
- PAPERLESS_TIME_ZONE=Europe/Budapest
- PAPERLESS_OCR_LANGUAGE=hun+eng
- PAPERLESS_ADMIN_USER=${PAPERLESS_ADMIN_USER:-}
- PAPERLESS_ADMIN_PASSWORD=${PAPERLESS_ADMIN_PASSWORD:-}
- PAPERLESS_CONSUMER_POLLING=30
- PAPERLESS_TASK_WORKERS=2
- PAPERLESS_THREADS_PER_WORKER=1
- USERMAP_UID=1000
- USERMAP_GID=1000
volumes:
- paperless_data:/usr/src/paperless/data
- {{HDD_PATH}}/storage/paperless/media:/usr/src/paperless/media
- {{HDD_PATH}}/storage/paperless/consume:/usr/src/paperless/consume
- {{HDD_PATH}}/storage/paperless/export:/usr/src/paperless/export
networks:
- traefik-public
- paperless-internal
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
labels:
- "traefik.enable=true"
- "traefik.http.routers.paperless.rule=Host(`paperless.{{DOMAIN}}`)"
- "traefik.http.routers.paperless.entrypoints=websecure"
- "traefik.http.routers.paperless.tls=true"
- "traefik.http.services.paperless.loadbalancer.server.port=8000"
paperless-postgres:
image: postgres:16-alpine
container_name: paperless-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=paperless
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=paperless
volumes:
- paperless_postgres_data:/var/lib/postgresql/data
networks:
- paperless-internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U paperless -d paperless"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
paperless-redis:
image: redis:7-alpine
container_name: paperless-redis
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- paperless_redis_data:/data
networks:
- paperless-internal
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
volumes:
paperless_data:
paperless_postgres_data:
paperless_redis_data:
networks:
traefik-public:
external: true
paperless-internal:
+9 -4
View File
@@ -11,6 +11,13 @@
# IGDB_CLIENT_SECRET - IGDB API client secret (optional)
# STEAMGRIDDB_API_KEY - SteamGridDB API key (optional, for cover art)
#
# Storage layout:
# ROM library → {{HDD_PATH}}/storage/romm/library (HDD, host path)
# Cover art etc → {{HDD_PATH}}/storage/romm/resources (HDD, host path)
# App config → romm_config (named volume, NVMe)
# MariaDB data → romm_db_data (named volume, NVMe)
# Redis data → romm_redis_data (named volume, NVMe)
#
# First-time setup:
# Default login: admin / admin — change immediately!
@@ -53,8 +60,8 @@ services:
- STEAMGRIDDB_API_KEY=${STEAMGRIDDB_API_KEY:-}
- TZ=Europe/Budapest
volumes:
- romm_library:/romm/library
- romm_resources:/romm/resources
- {{HDD_PATH}}/storage/romm/library:/romm/library
- {{HDD_PATH}}/storage/romm/resources:/romm/resources
- romm_config:/romm/config
networks:
- traefik-public
@@ -103,8 +110,6 @@ services:
retries: 3
volumes:
romm_library:
romm_resources:
romm_config:
romm_db_data:
romm_redis_data: