updated templates for Portainer
This commit is contained in:
+310
@@ -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.<DOMAIN>",
|
||||||
|
"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.<DOMAIN><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.<DOMAIN><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.<DOMAIN>",
|
||||||
|
"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.<DOMAIN><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.<DOMAIN>",
|
||||||
|
"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.<DOMAIN><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.<DOMAIN><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.<DOMAIN>",
|
||||||
|
"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.<DOMAIN> and create an account</li><li>Set SIGNUPS_ALLOWED=false in env vars</li><li>Redeploy stack</li></ol><b>Access:</b> https://vault.<DOMAIN><br><b>Admin panel:</b> https://vault.<DOMAIN>/admin (if ADMIN_TOKEN set)<br><b>Clients:</b> Use any Bitwarden app — set server URL to https://vault.<DOMAIN>",
|
||||||
|
"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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
# 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:
|
||||||
# Default login: admin / admin — change immediately!
|
# Default login: admin / admin — change immediately!
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
# 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)
|
||||||
#
|
#
|
||||||
# First-time setup:
|
# First-time setup:
|
||||||
# Create admin account on first visit.
|
# Create admin account on first visit.
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,21 +1,23 @@
|
|||||||
# 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)
|
||||||
#
|
#
|
||||||
# First-time setup:
|
# First-time setup:
|
||||||
# If PAPERLESS_ADMIN_USER/PASSWORD env vars are set, admin is auto-created.
|
# If PAPERLESS_ADMIN_USER/PASSWORD env vars are set, admin is auto-created.
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
# SIGNUPS_ALLOWED - Set to "false" after creating your account(s)
|
# 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:
|
# 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"
|
||||||
|
|||||||
Reference in New Issue
Block a user