updated templates for Portainer

This commit is contained in:
2026-02-12 17:44:57 +01:00
parent 5b0c6aa9c0
commit 68100aa37c
7 changed files with 363 additions and 46 deletions
+3 -3
View File
@@ -1,10 +1,10 @@
# ActualBudget - Personal Finance / Budgeting
# Domain: budget.{{DOMAIN}}
# Domain: budget.${DOMAIN}
# Database: None (file-based)
# RAM: ~50MB | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# (none required — app is self-contained)
# DOMAIN - Your domain (e.g., demo-felhom.eu)
#
# First-time setup:
# Create a password on first visit, no default credentials.
@@ -28,7 +28,7 @@ services:
start_period: 10s
labels:
- "traefik.enable=true"
- "traefik.http.routers.actualbudget.rule=Host(`budget.{{DOMAIN}}`)"
- "traefik.http.routers.actualbudget.rule=Host(`budget.${DOMAIN}`)"
- "traefik.http.routers.actualbudget.entrypoints=websecure"
- "traefik.http.routers.actualbudget.tls=true"
- "traefik.http.routers.actualbudget.tls.certresolver=letsencrypt"
+6 -5
View File
@@ -1,11 +1,12 @@
# Docmost - Modern Wiki / Documentation (Notion-like)
# Domain: docs.{{DOMAIN}}
# Domain: docs.${DOMAIN}
# Database: PostgreSQL + Redis
# RAM: ~200MB | Pi-compatible: Heavy but possible
#
# Environment variables (set in Portainer):
# APP_SECRET - Random secret for session signing (required, generate with: openssl rand -hex 32)
# DB_PASSWORD - PostgreSQL password (required)
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# APP_SECRET - Random secret for session signing (generate with: openssl rand -hex 32)
# DB_PASSWORD - PostgreSQL password
#
# First-time setup:
# First registered user becomes admin.
@@ -24,7 +25,7 @@ services:
- APP_SECRET=${APP_SECRET}
- DATABASE_URL=postgresql://docmost:${DB_PASSWORD}@docmost-postgres:5432/docmost
- REDIS_URL=redis://docmost-redis:6379
- APP_URL=https://docs.{{DOMAIN}}
- APP_URL=https://docs.${DOMAIN}
- STORAGE_DRIVER=local
- FILE_UPLOAD_SIZE_LIMIT=50mb
volumes:
@@ -40,7 +41,7 @@ services:
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.docmost.rule=Host(`docs.{{DOMAIN}}`)"
- "traefik.http.routers.docmost.rule=Host(`docs.${DOMAIN}`)"
- "traefik.http.routers.docmost.entrypoints=websecure"
- "traefik.http.routers.docmost.tls=true"
- "traefik.http.routers.docmost.tls.certresolver=letsencrypt"
+7 -6
View File
@@ -1,14 +1,15 @@
# FileBrowser - Simple Web File Manager
# Domain: files.{{DOMAIN}}
# Domain: files.${DOMAIN}
# Database: None (file-based)
# RAM: ~30MB | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# (none required)
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
#
# Storage layout:
# Browsable files → {{HDD_PATH}}/storage/filebrowser (HDD, host path — user files only)
# App config/DB → filebrowser_config (named volume, NVMe)
# Browsable files → ${HDD_PATH}/storage/filebrowser (HDD, host path — user files only)
# App config/DB → filebrowser_config (named volume, NVMe)
#
# First-time setup:
# Default login: admin / admin — change immediately!
@@ -23,7 +24,7 @@ services:
- PUID=1000
- PGID=1000
volumes:
- {{HDD_PATH}}/storage/filebrowser:/srv
- ${HDD_PATH}/storage/filebrowser:/srv
- filebrowser_config:/database
networks:
- traefik-public
@@ -35,7 +36,7 @@ services:
start_period: 10s
labels:
- "traefik.enable=true"
- "traefik.http.routers.filebrowser.rule=Host(`files.{{DOMAIN}}`)"
- "traefik.http.routers.filebrowser.rule=Host(`files.${DOMAIN}`)"
- "traefik.http.routers.filebrowser.entrypoints=websecure"
- "traefik.http.routers.filebrowser.tls=true"
- "traefik.http.routers.filebrowser.tls.certresolver=letsencrypt"
+10 -8
View File
@@ -1,16 +1,18 @@
# Immich - Self-hosted Photo & Video Management
# Domain: photos.{{DOMAIN}}
# Domain: photos.${DOMAIN}
# Database: PostgreSQL (with VectorChord) + Redis
# RAM: ~4GB minimum | Pi-compatible: No (ML too heavy)
#
# Environment variables (set in Portainer):
# DB_PASSWORD - PostgreSQL password (required)
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
# DB_PASSWORD - PostgreSQL password
#
# 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)
# 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.
@@ -34,7 +36,7 @@ services:
- IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
- TZ=Europe/Budapest
volumes:
- {{HDD_PATH}}/storage/immich:/usr/src/app/upload
- ${HDD_PATH}/storage/immich:/usr/src/app/upload
networks:
- traefik-public
- immich-internal
@@ -46,7 +48,7 @@ services:
start_period: 60s
labels:
- "traefik.enable=true"
- "traefik.http.routers.immich.rule=Host(`photos.{{DOMAIN}}`)"
- "traefik.http.routers.immich.rule=Host(`photos.${DOMAIN}`)"
- "traefik.http.routers.immich.entrypoints=websecure"
- "traefik.http.routers.immich.tls=true"
- "traefik.http.routers.immich.tls.certresolver=letsencrypt"
+18 -16
View File
@@ -1,21 +1,23 @@
# Paperless-ngx - Document Management System (DMS)
# Domain: docs.{{DOMAIN}}
# Domain: paperless.${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)
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
# PAPERLESS_SECRET_KEY - Random secret (generate with: openssl rand -hex 32)
# DB_PASSWORD - PostgreSQL password
# PAPERLESS_ADMIN_USER - Initial admin username (default: admin)
# PAPERLESS_ADMIN_PASSWORD - Initial admin password
#
# 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)
# 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.
@@ -38,7 +40,7 @@ services:
- PAPERLESS_DBPASS=${DB_PASSWORD}
- PAPERLESS_DBNAME=paperless
- PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY}
- PAPERLESS_URL=https://paperless.{{DOMAIN}}
- PAPERLESS_URL=https://paperless.${DOMAIN}
- PAPERLESS_TIME_ZONE=Europe/Budapest
- PAPERLESS_OCR_LANGUAGE=hun+eng
- PAPERLESS_ADMIN_USER=${PAPERLESS_ADMIN_USER:-}
@@ -50,9 +52,9 @@ services:
- 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
- ${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
@@ -64,7 +66,7 @@ services:
start_period: 60s
labels:
- "traefik.enable=true"
- "traefik.http.routers.paperless.rule=Host(`paperless.{{DOMAIN}}`)"
- "traefik.http.routers.paperless.rule=Host(`paperless.${DOMAIN}`)"
- "traefik.http.routers.paperless.entrypoints=websecure"
- "traefik.http.routers.paperless.tls=true"
- "traefik.http.routers.paperless.tls.certresolver=letsencrypt"
+9 -8
View File
@@ -1,21 +1,22 @@
# Vaultwarden - Password Manager (Bitwarden-compatible)
# Domain: vault.{{DOMAIN}}
# Domain: vault.${DOMAIN}
# Database: None (SQLite, built-in)
# RAM: ~50MB | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# ADMIN_TOKEN - Admin panel token (optional but recommended, generate with: openssl rand -hex 32)
# SIGNUPS_ALLOWED - Set to "false" after creating your account(s)
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# ADMIN_TOKEN - Admin panel token (optional, generate with: openssl rand -hex 32)
# SIGNUPS_ALLOWED - Set to "false" after creating your account(s)
#
# First-time setup:
# 1. Visit https://vault.{{DOMAIN}} and create an account
# 1. Visit https://vault.${DOMAIN} and create an account
# 2. Set SIGNUPS_ALLOWED=false in Portainer env vars
# 3. Redeploy stack
# 4. Admin panel at https://vault.{{DOMAIN}}/admin (if ADMIN_TOKEN set)
# 4. Admin panel at https://vault.${DOMAIN}/admin (if ADMIN_TOKEN set)
#
# Clients:
# Use any Bitwarden client (desktop, mobile, browser extension)
# Set server URL to: https://vault.{{DOMAIN}}
# Set server URL to: https://vault.${DOMAIN}
services:
vaultwarden:
@@ -23,7 +24,7 @@ services:
container_name: vaultwarden
restart: unless-stopped
environment:
- DOMAIN=https://vault.{{DOMAIN}}
- DOMAIN=https://vault.${DOMAIN}
- SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED:-true}
- ADMIN_TOKEN=${ADMIN_TOKEN:-}
- WEBSOCKET_ENABLED=true
@@ -40,7 +41,7 @@ services:
start_period: 10s
labels:
- "traefik.enable=true"
- "traefik.http.routers.vaultwarden.rule=Host(`vault.{{DOMAIN}}`)"
- "traefik.http.routers.vaultwarden.rule=Host(`vault.${DOMAIN}`)"
- "traefik.http.routers.vaultwarden.entrypoints=websecure"
- "traefik.http.routers.vaultwarden.tls=true"
- "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"