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
+310
View File
@@ -0,0 +1,310 @@
{
"version": "2",
"templates": [
{
"type": 3,
"title": "ActualBudget",
"description": "Personal finance and budgeting tool. Track spending, create budgets, and manage your finances locally.",
"categories": ["finance"],
"platform": "linux",
"logo": "https://avatars.githubusercontent.com/u/119264388",
"note": "<b>First-time setup:</b> Create a password on first visit. No default credentials.<br><b>Access:</b> https://budget.&lt;DOMAIN&gt;",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/actualbudget/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
}
]
},
{
"type": 3,
"title": "Docmost",
"description": "Modern wiki and documentation platform (Notion-like). Collaborative editing with pages, spaces, and rich content.",
"categories": ["productivity", "wiki"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/docmost/docmost/main/apps/client/public/android-chrome-192x192.png",
"note": "<b>First-time setup:</b> First registered user becomes admin.<br><b>Access:</b> https://docs.&lt;DOMAIN&gt;<br><b>Includes:</b> PostgreSQL + Redis",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/docmost/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
},
{
"name": "APP_SECRET",
"label": "App Secret",
"description": "Random secret for session signing. Generate with: openssl rand -hex 32"
},
{
"name": "DB_PASSWORD",
"label": "Database Password",
"description": "PostgreSQL password. Use a strong random password."
}
]
},
{
"type": 3,
"title": "FileBrowser",
"description": "Simple web file manager. Upload, download, and organize files through a clean web interface.",
"categories": ["files"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/filebrowser/logo/master/icon_raw.svg",
"note": "<b>First-time setup:</b> Default login: admin / admin — change immediately!<br><b>Access:</b> https://files.&lt;DOMAIN&gt;<br><b>Storage:</b> Files stored at HDD_PATH/storage/filebrowser/",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/filebrowser/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
},
{
"name": "HDD_PATH",
"label": "HDD Path",
"description": "External HDD mount path (e.g., /mnt/hdd_1)",
"default": "/mnt/hdd_1"
}
]
},
{
"type": 3,
"title": "Homebox",
"description": "Home inventory management. Track your belongings, warranties, manuals, and receipts.",
"categories": ["productivity"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/sysadminsmedia/homebox/main/frontend/static/lilbox.svg",
"note": "<b>First-time setup:</b> Register on first visit. First user becomes owner.<br><b>Access:</b> https://inventory.&lt;DOMAIN&gt;",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/homebox/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
}
]
},
{
"type": 3,
"title": "Immich",
"description": "Self-hosted photo and video management. Google Photos alternative with ML-powered search, face recognition, and mobile apps.",
"categories": ["photos", "media"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/immich-app/immich/main/docs/static/img/immich-logo-stacked-dark.svg",
"note": "<b>First-time setup:</b> Create admin account on first visit.<br><b>Access:</b> https://photos.&lt;DOMAIN&gt;<br><b>Includes:</b> PostgreSQL + Redis + ML engine<br><b>Requirements:</b> 4GB+ RAM, NOT recommended for Raspberry Pi<br><b>Storage:</b> Photos stored at HDD_PATH/storage/immich/",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/immich/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
},
{
"name": "HDD_PATH",
"label": "HDD Path",
"description": "External HDD mount path (e.g., /mnt/hdd_1)",
"default": "/mnt/hdd_1"
},
{
"name": "DB_PASSWORD",
"label": "Database Password",
"description": "PostgreSQL password. Use a strong random password."
}
]
},
{
"type": 3,
"title": "Mealie",
"description": "Recipe manager and meal planner. Save recipes from the web, plan meals, and generate shopping lists.",
"categories": ["productivity"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/mealie-recipes/mealie/mealie-next/frontend/static/icons/android-chrome-512x512.png",
"note": "<b>First-time setup:</b> Default login: changeme@example.com / MyPassword — change immediately!<br><b>Access:</b> https://recipes.&lt;DOMAIN&gt;",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/mealie/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
}
]
},
{
"type": 3,
"title": "Paperless-ngx",
"description": "Document management system with OCR. Scan, index, and archive paper documents digitally. Supports Hungarian + English OCR.",
"categories": ["documents", "productivity"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/dev/resources/logo/web/svg/Color%20logo%20-%20no%20background.svg",
"note": "<b>First-time setup:</b> Admin is auto-created if PAPERLESS_ADMIN_USER/PASSWORD env vars are set.<br><b>Access:</b> https://paperless.&lt;DOMAIN&gt;<br><b>Includes:</b> PostgreSQL + Redis<br><b>Storage:</b> Documents stored at HDD_PATH/storage/paperless/",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/paperless-ngx/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
},
{
"name": "HDD_PATH",
"label": "HDD Path",
"description": "External HDD mount path (e.g., /mnt/hdd_1)",
"default": "/mnt/hdd_1"
},
{
"name": "PAPERLESS_SECRET_KEY",
"label": "Secret Key",
"description": "Random secret key. Generate with: openssl rand -hex 32"
},
{
"name": "DB_PASSWORD",
"label": "Database Password",
"description": "PostgreSQL password. Use a strong random password."
},
{
"name": "PAPERLESS_ADMIN_USER",
"label": "Admin Username",
"description": "Initial admin username",
"default": "admin"
},
{
"name": "PAPERLESS_ADMIN_PASSWORD",
"label": "Admin Password",
"description": "Initial admin password. Change after first login."
}
]
},
{
"type": 3,
"title": "ROMM",
"description": "ROM manager for game libraries. Organize, browse, and manage retro game collections with metadata from IGDB.",
"categories": ["media", "gaming"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/rommapp/romm/release/frontend/assets/isotipo.svg",
"note": "<b>First-time setup:</b> Default login: admin / admin — change immediately!<br><b>Access:</b> https://arcade.&lt;DOMAIN&gt;<br><b>Includes:</b> MariaDB + Redis<br><b>Storage:</b> ROMs at HDD_PATH/storage/romm/library/",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/romm/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
},
{
"name": "HDD_PATH",
"label": "HDD Path",
"description": "External HDD mount path (e.g., /mnt/hdd_1)",
"default": "/mnt/hdd_1"
},
{
"name": "DB_PASSWORD",
"label": "Database Password",
"description": "MariaDB user password. Use a strong random password."
},
{
"name": "MYSQL_ROOT_PASSWORD",
"label": "MySQL Root Password",
"description": "MariaDB root password. Use a strong random password."
},
{
"name": "ROMM_AUTH_SECRET_KEY",
"label": "Auth Secret",
"description": "Authentication secret. Generate with: openssl rand -hex 32"
},
{
"name": "IGDB_CLIENT_ID",
"label": "IGDB Client ID",
"description": "IGDB API client ID for game metadata (optional)"
},
{
"name": "IGDB_CLIENT_SECRET",
"label": "IGDB Client Secret",
"description": "IGDB API client secret (optional)"
},
{
"name": "STEAMGRIDDB_API_KEY",
"label": "SteamGridDB API Key",
"description": "SteamGridDB API key for cover art (optional)"
}
]
},
{
"type": 3,
"title": "Stirling-PDF",
"description": "PDF manipulation toolkit. Merge, split, convert, compress, and edit PDFs — all locally, no cloud upload.",
"categories": ["tools", "productivity"],
"platform": "linux",
"logo": "https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png",
"note": "<b>First-time setup:</b> No login required by default. Enable via env vars if exposing externally.<br><b>Access:</b> https://pdf.&lt;DOMAIN&gt;",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/stirling-pdf/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
}
]
},
{
"type": 3,
"title": "Vaultwarden",
"description": "Password manager (Bitwarden-compatible). Store and sync passwords across all devices with browser extensions and mobile apps.",
"categories": ["security"],
"platform": "linux",
"logo": "https://cdn.simpleicons.org/bitwarden/175DDC",
"note": "<b>First-time setup:</b><ol><li>Visit https://vault.&lt;DOMAIN&gt; and create an account</li><li>Set SIGNUPS_ALLOWED=false in env vars</li><li>Redeploy stack</li></ol><b>Access:</b> https://vault.&lt;DOMAIN&gt;<br><b>Admin panel:</b> https://vault.&lt;DOMAIN&gt;/admin (if ADMIN_TOKEN set)<br><b>Clients:</b> Use any Bitwarden app — set server URL to https://vault.&lt;DOMAIN&gt;",
"repository": {
"url": "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu",
"stackfile": "templates/vaultwarden/docker-compose.yml"
},
"env": [
{
"name": "DOMAIN",
"label": "Domain",
"description": "Your server domain (e.g., demo-felhom.eu)"
},
{
"name": "ADMIN_TOKEN",
"label": "Admin Token",
"description": "Admin panel token (optional). Generate with: openssl rand -hex 32"
},
{
"name": "SIGNUPS_ALLOWED",
"label": "Allow Signups",
"description": "Allow new account registration. Set to 'false' after creating your account(s).",
"default": "true",
"select": [
{ "text": "Yes — allow new registrations", "value": "true", "default": true },
{ "text": "No — registration closed", "value": "false" }
]
}
]
}
]
}
+3 -3
View File
@@ -1,10 +1,10 @@
# ActualBudget - Personal Finance / Budgeting # ActualBudget - Personal Finance / Budgeting
# Domain: budget.{{DOMAIN}} # Domain: budget.${DOMAIN}
# Database: None (file-based) # Database: None (file-based)
# RAM: ~50MB | Pi-compatible: Yes # RAM: ~50MB | Pi-compatible: Yes
# #
# Environment variables (set in Portainer): # Environment variables (set in Portainer):
# (none required — app is self-contained) # DOMAIN - Your domain (e.g., demo-felhom.eu)
# #
# First-time setup: # First-time setup:
# Create a password on first visit, no default credentials. # Create a password on first visit, no default credentials.
@@ -28,7 +28,7 @@ services:
start_period: 10s start_period: 10s
labels: labels:
- "traefik.enable=true" - "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.entrypoints=websecure"
- "traefik.http.routers.actualbudget.tls=true" - "traefik.http.routers.actualbudget.tls=true"
- "traefik.http.routers.actualbudget.tls.certresolver=letsencrypt" - "traefik.http.routers.actualbudget.tls.certresolver=letsencrypt"
+6 -5
View File
@@ -1,11 +1,12 @@
# Docmost - Modern Wiki / Documentation (Notion-like) # Docmost - Modern Wiki / Documentation (Notion-like)
# Domain: docs.{{DOMAIN}} # Domain: docs.${DOMAIN}
# Database: PostgreSQL + Redis # Database: PostgreSQL + Redis
# RAM: ~200MB | Pi-compatible: Heavy but possible # RAM: ~200MB | Pi-compatible: Heavy but possible
# #
# Environment variables (set in Portainer): # Environment variables (set in Portainer):
# APP_SECRET - Random secret for session signing (required, generate with: openssl rand -hex 32) # DOMAIN - Your domain (e.g., demo-felhom.eu)
# DB_PASSWORD - PostgreSQL password (required) # APP_SECRET - Random secret for session signing (generate with: openssl rand -hex 32)
# DB_PASSWORD - PostgreSQL password
# #
# First-time setup: # First-time setup:
# First registered user becomes admin. # First registered user becomes admin.
@@ -24,7 +25,7 @@ services:
- APP_SECRET=${APP_SECRET} - APP_SECRET=${APP_SECRET}
- DATABASE_URL=postgresql://docmost:${DB_PASSWORD}@docmost-postgres:5432/docmost - DATABASE_URL=postgresql://docmost:${DB_PASSWORD}@docmost-postgres:5432/docmost
- REDIS_URL=redis://docmost-redis:6379 - REDIS_URL=redis://docmost-redis:6379
- APP_URL=https://docs.{{DOMAIN}} - APP_URL=https://docs.${DOMAIN}
- STORAGE_DRIVER=local - STORAGE_DRIVER=local
- FILE_UPLOAD_SIZE_LIMIT=50mb - FILE_UPLOAD_SIZE_LIMIT=50mb
volumes: volumes:
@@ -40,7 +41,7 @@ services:
start_period: 30s start_period: 30s
labels: labels:
- "traefik.enable=true" - "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.entrypoints=websecure"
- "traefik.http.routers.docmost.tls=true" - "traefik.http.routers.docmost.tls=true"
- "traefik.http.routers.docmost.tls.certresolver=letsencrypt" - "traefik.http.routers.docmost.tls.certresolver=letsencrypt"
+6 -5
View File
@@ -1,13 +1,14 @@
# FileBrowser - Simple Web File Manager # FileBrowser - Simple Web File Manager
# Domain: files.{{DOMAIN}} # Domain: files.${DOMAIN}
# Database: None (file-based) # Database: None (file-based)
# RAM: ~30MB | Pi-compatible: Yes # RAM: ~30MB | Pi-compatible: Yes
# #
# Environment variables (set in Portainer): # 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: # Storage layout:
# Browsable files → {{HDD_PATH}}/storage/filebrowser (HDD, host path — user files only) # Browsable files → ${HDD_PATH}/storage/filebrowser (HDD, host path — user files only)
# App config/DB → filebrowser_config (named volume, NVMe) # App config/DB → filebrowser_config (named volume, NVMe)
# #
# First-time setup: # First-time setup:
@@ -23,7 +24,7 @@ services:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
volumes: volumes:
- {{HDD_PATH}}/storage/filebrowser:/srv - ${HDD_PATH}/storage/filebrowser:/srv
- filebrowser_config:/database - filebrowser_config:/database
networks: networks:
- traefik-public - traefik-public
@@ -35,7 +36,7 @@ services:
start_period: 10s start_period: 10s
labels: labels:
- "traefik.enable=true" - "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.entrypoints=websecure"
- "traefik.http.routers.filebrowser.tls=true" - "traefik.http.routers.filebrowser.tls=true"
- "traefik.http.routers.filebrowser.tls.certresolver=letsencrypt" - "traefik.http.routers.filebrowser.tls.certresolver=letsencrypt"
+7 -5
View File
@@ -1,13 +1,15 @@
# Immich - Self-hosted Photo & Video Management # Immich - Self-hosted Photo & Video Management
# Domain: photos.{{DOMAIN}} # Domain: photos.${DOMAIN}
# Database: PostgreSQL (with VectorChord) + Redis # Database: PostgreSQL (with VectorChord) + Redis
# RAM: ~4GB minimum | Pi-compatible: No (ML too heavy) # RAM: ~4GB minimum | Pi-compatible: No (ML too heavy)
# #
# Environment variables (set in Portainer): # 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: # Storage layout:
# User photos/videos → {{HDD_PATH}}/storage/immich (HDD, host path) # User photos/videos → ${HDD_PATH}/storage/immich (HDD, host path)
# PostgreSQL data → immich_postgres_data (named volume, NVMe) # PostgreSQL data → immich_postgres_data (named volume, NVMe)
# ML model cache → immich_ml_cache (named volume, NVMe) # ML model cache → immich_ml_cache (named volume, NVMe)
# Redis data → immich_redis_data (named volume, NVMe) # Redis data → immich_redis_data (named volume, NVMe)
@@ -34,7 +36,7 @@ services:
- IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003 - IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
- TZ=Europe/Budapest - TZ=Europe/Budapest
volumes: volumes:
- {{HDD_PATH}}/storage/immich:/usr/src/app/upload - ${HDD_PATH}/storage/immich:/usr/src/app/upload
networks: networks:
- traefik-public - traefik-public
- immich-internal - immich-internal
@@ -46,7 +48,7 @@ services:
start_period: 60s start_period: 60s
labels: labels:
- "traefik.enable=true" - "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.entrypoints=websecure"
- "traefik.http.routers.immich.tls=true" - "traefik.http.routers.immich.tls=true"
- "traefik.http.routers.immich.tls.certresolver=letsencrypt" - "traefik.http.routers.immich.tls.certresolver=letsencrypt"
+15 -13
View File
@@ -1,18 +1,20 @@
# Paperless-ngx - Document Management System (DMS) # Paperless-ngx - Document Management System (DMS)
# Domain: docs.{{DOMAIN}} # Domain: paperless.${DOMAIN}
# Database: PostgreSQL + Redis # Database: PostgreSQL + Redis
# RAM: ~500MB (more with OCR/Tika) | Pi-compatible: Yes (arm64, 4GB+ RAM recommended) # RAM: ~500MB (more with OCR/Tika) | Pi-compatible: Yes (arm64, 4GB+ RAM recommended)
# #
# Environment variables (set in Portainer): # Environment variables (set in Portainer):
# PAPERLESS_SECRET_KEY - Random secret (required, generate with: openssl rand -hex 32) # DOMAIN - Your domain (e.g., demo-felhom.eu)
# DB_PASSWORD - PostgreSQL password (required) # HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
# PAPERLESS_ADMIN_USER - Initial admin username (optional, default: admin) # PAPERLESS_SECRET_KEY - Random secret (generate with: openssl rand -hex 32)
# PAPERLESS_ADMIN_PASSWORD - Initial admin password (optional) # DB_PASSWORD - PostgreSQL password
# PAPERLESS_ADMIN_USER - Initial admin username (default: admin)
# PAPERLESS_ADMIN_PASSWORD - Initial admin password
# #
# Storage layout: # Storage layout:
# Consume folder → {{HDD_PATH}}/storage/paperless/consume (HDD, drop files here) # Consume folder → ${HDD_PATH}/storage/paperless/consume (HDD, drop files here)
# Document media → {{HDD_PATH}}/storage/paperless/media (HDD, originals + archive) # Document media → ${HDD_PATH}/storage/paperless/media (HDD, originals + archive)
# Export folder → {{HDD_PATH}}/storage/paperless/export (HDD, for backups) # Export folder → ${HDD_PATH}/storage/paperless/export (HDD, for backups)
# App data/index → paperless_data (named volume, NVMe) # App data/index → paperless_data (named volume, NVMe)
# PostgreSQL data → paperless_postgres_data (named volume, NVMe) # PostgreSQL data → paperless_postgres_data (named volume, NVMe)
# Redis data → paperless_redis_data (named volume, NVMe) # Redis data → paperless_redis_data (named volume, NVMe)
@@ -38,7 +40,7 @@ services:
- PAPERLESS_DBPASS=${DB_PASSWORD} - PAPERLESS_DBPASS=${DB_PASSWORD}
- PAPERLESS_DBNAME=paperless - PAPERLESS_DBNAME=paperless
- PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY} - PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY}
- PAPERLESS_URL=https://paperless.{{DOMAIN}} - PAPERLESS_URL=https://paperless.${DOMAIN}
- PAPERLESS_TIME_ZONE=Europe/Budapest - PAPERLESS_TIME_ZONE=Europe/Budapest
- PAPERLESS_OCR_LANGUAGE=hun+eng - PAPERLESS_OCR_LANGUAGE=hun+eng
- PAPERLESS_ADMIN_USER=${PAPERLESS_ADMIN_USER:-} - PAPERLESS_ADMIN_USER=${PAPERLESS_ADMIN_USER:-}
@@ -50,9 +52,9 @@ services:
- USERMAP_GID=1000 - USERMAP_GID=1000
volumes: volumes:
- paperless_data:/usr/src/paperless/data - paperless_data:/usr/src/paperless/data
- {{HDD_PATH}}/storage/paperless/media:/usr/src/paperless/media - ${HDD_PATH}/storage/paperless/media:/usr/src/paperless/media
- {{HDD_PATH}}/storage/paperless/consume:/usr/src/paperless/consume - ${HDD_PATH}/storage/paperless/consume:/usr/src/paperless/consume
- {{HDD_PATH}}/storage/paperless/export:/usr/src/paperless/export - ${HDD_PATH}/storage/paperless/export:/usr/src/paperless/export
networks: networks:
- traefik-public - traefik-public
- paperless-internal - paperless-internal
@@ -64,7 +66,7 @@ services:
start_period: 60s start_period: 60s
labels: labels:
- "traefik.enable=true" - "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.entrypoints=websecure"
- "traefik.http.routers.paperless.tls=true" - "traefik.http.routers.paperless.tls=true"
- "traefik.http.routers.paperless.tls.certresolver=letsencrypt" - "traefik.http.routers.paperless.tls.certresolver=letsencrypt"
+8 -7
View File
@@ -1,21 +1,22 @@
# Vaultwarden - Password Manager (Bitwarden-compatible) # Vaultwarden - Password Manager (Bitwarden-compatible)
# Domain: vault.{{DOMAIN}} # Domain: vault.${DOMAIN}
# Database: None (SQLite, built-in) # Database: None (SQLite, built-in)
# RAM: ~50MB | Pi-compatible: Yes # RAM: ~50MB | Pi-compatible: Yes
# #
# Environment variables (set in Portainer): # Environment variables (set in Portainer):
# ADMIN_TOKEN - Admin panel token (optional but recommended, generate with: openssl rand -hex 32) # 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) # SIGNUPS_ALLOWED - Set to "false" after creating your account(s)
# #
# First-time setup: # 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 # 2. Set SIGNUPS_ALLOWED=false in Portainer env vars
# 3. Redeploy stack # 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: # Clients:
# Use any Bitwarden client (desktop, mobile, browser extension) # Use any Bitwarden client (desktop, mobile, browser extension)
# Set server URL to: https://vault.{{DOMAIN}} # Set server URL to: https://vault.${DOMAIN}
services: services:
vaultwarden: vaultwarden:
@@ -23,7 +24,7 @@ services:
container_name: vaultwarden container_name: vaultwarden
restart: unless-stopped restart: unless-stopped
environment: environment:
- DOMAIN=https://vault.{{DOMAIN}} - DOMAIN=https://vault.${DOMAIN}
- SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED:-true} - SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED:-true}
- ADMIN_TOKEN=${ADMIN_TOKEN:-} - ADMIN_TOKEN=${ADMIN_TOKEN:-}
- WEBSOCKET_ENABLED=true - WEBSOCKET_ENABLED=true
@@ -40,7 +41,7 @@ services:
start_period: 10s start_period: 10s
labels: labels:
- "traefik.enable=true" - "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.entrypoints=websecure"
- "traefik.http.routers.vaultwarden.tls=true" - "traefik.http.routers.vaultwarden.tls=true"
- "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt" - "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"