updated app templates

This commit is contained in:
2026-02-14 13:39:44 +01:00
parent 1deacc08cb
commit 6d7e64da93
20 changed files with 609 additions and 207 deletions
+30
View File
@@ -0,0 +1,30 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/actualbudget/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "ActualBudget"
description: "Személyes pénzügyek és költségvetés kezelése"
category: "finance"
subdomain: "budget"
# --- Asset slug ---
slug: "actualbudget"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
+7 -3
View File
@@ -1,9 +1,9 @@
# ActualBudget - Personal Finance / Budgeting
# Domain: budget.${DOMAIN}
# Database: None (file-based)
# RAM: ~50MB | Pi-compatible: Yes
# RAM: ~50MB (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
#
# First-time setup:
@@ -20,6 +20,10 @@ services:
- actualbudget_data:/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "node", "-e", "const http = require('http'); http.get('http://localhost:5006/', (r) => { process.exit(r.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"]
interval: 30s
@@ -39,4 +43,4 @@ volumes:
networks:
traefik-public:
external: true
external: true
+42
View File
@@ -0,0 +1,42 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/docmost/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Docmost"
description: "Modern wiki és dokumentáció platform (Notion-szerű)"
category: "productivity"
subdomain: "docs"
# --- Asset slug ---
slug: "docmost"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "200M"
mem_limit: "768M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: APP_SECRET
label: "Alkalmazás titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
- env_var: DB_PASSWORD
label: "Adatbázis jelszó"
type: secret
generate: "password:24"
locked_after_deploy: true
+21 -5
View File
@@ -1,12 +1,12 @@
# Docmost - Modern Wiki / Documentation (Notion-like)
# Domain: docs.${DOMAIN}
# Database: PostgreSQL + Redis
# RAM: ~200MB | Pi-compatible: Heavy but possible
# RAM: ~200MB (mem_limit: 768M total — docmost 384M + postgres 256M + redis 128M) | Pi-compatible: No (heavy)
#
# Environment variables (set in Portainer):
# Environment variables:
# 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
# APP_SECRET - Random secret for session signing (auto-generated)
# DB_PASSWORD - PostgreSQL password (auto-generated)
#
# First-time setup:
# First registered user becomes admin.
@@ -28,11 +28,16 @@ services:
- APP_URL=https://docs.${DOMAIN}
- STORAGE_DRIVER=local
- FILE_UPLOAD_SIZE_LIMIT=50mb
- TZ=Europe/Budapest
volumes:
- docmost_storage:/app/data/storage
networks:
- traefik-public
- docmost-internal
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "node", "-e", "const http = require('http'); http.get('http://localhost:3000/', (r) => { process.exit(r.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"]
interval: 30s
@@ -55,10 +60,15 @@ services:
- POSTGRES_USER=docmost
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=docmost
- TZ=Europe/Budapest
volumes:
- docmost_postgres_data:/var/lib/postgresql/data
networks:
- docmost-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U docmost -d docmost"]
interval: 10s
@@ -71,10 +81,16 @@ services:
container_name: docmost-redis
restart: unless-stopped
command: redis-server --appendonly yes
environment:
- TZ=Europe/Budapest
volumes:
- docmost_redis_data:/data
networks:
- docmost-internal
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
@@ -89,4 +105,4 @@ volumes:
networks:
traefik-public:
external: true
docmost-internal:
docmost-internal:
+38
View File
@@ -0,0 +1,38 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/filebrowser/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "FileBrowser"
description: "Egyszerű webes fájlkezelő"
category: "tools"
subdomain: "files"
# --- Asset slug ---
slug: "filebrowser"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "30M"
mem_limit: "128M"
pi_compatible: true
needs_hdd: true
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Adattárolási útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja, ahol a fájlok tárolódnak"
locked_after_deploy: true
+7 -3
View File
@@ -1,9 +1,9 @@
# FileBrowser - Simple Web File Manager
# Domain: files.${DOMAIN}
# Database: None (file-based)
# RAM: ~30MB | Pi-compatible: Yes
# RAM: ~30MB (mem_limit: 128M) | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
#
@@ -28,6 +28,10 @@ services:
- filebrowser_config:/database
networks:
- traefik-public
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/health"]
interval: 30s
@@ -47,4 +51,4 @@ volumes:
networks:
traefik-public:
external: true
external: true
+30
View File
@@ -0,0 +1,30 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/homebox/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Homebox"
description: "Otthoni leltár és eszköznyilvántartás"
category: "tools"
subdomain: "inventory"
# --- Asset slug ---
slug: "homebox"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
+10 -6
View File
@@ -1,10 +1,10 @@
# Homebox - Home Inventory Management
# Domain: inventory.{{DOMAIN}}
# Domain: inventory.${DOMAIN}
# Database: None (SQLite, file-based)
# RAM: ~50MB | Pi-compatible: Yes
# RAM: ~50MB (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# (none required)
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
#
# First-time setup:
# Register on first visit, first user becomes owner.
@@ -23,6 +23,10 @@ services:
- homebox_data:/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:7745/api/v1/status"]
interval: 30s
@@ -31,7 +35,7 @@ services:
start_period: 10s
labels:
- "traefik.enable=true"
- "traefik.http.routers.homebox.rule=Host(`inventory.{{DOMAIN}}`)"
- "traefik.http.routers.homebox.rule=Host(`inventory.${DOMAIN}`)"
- "traefik.http.routers.homebox.entrypoints=websecure"
- "traefik.http.routers.homebox.tls=true"
- "traefik.http.routers.homebox.tls.certresolver=letsencrypt"
@@ -42,4 +46,4 @@ volumes:
networks:
traefik-public:
external: true
external: true
+44
View File
@@ -0,0 +1,44 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/immich/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Immich"
description: "Fotók és videók kezelése (Google Photos alternatíva)"
category: "media"
subdomain: "photos"
# --- Asset slug ---
slug: "immich"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "2048M"
mem_limit: "4096M"
pi_compatible: false
needs_hdd: true
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: DB_PASSWORD
label: "Adatbázis jelszó"
type: secret
generate: "password:24"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Adattárolási útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja, ahol a fotók és videók tárolódnak"
locked_after_deploy: true
+23 -4
View File
@@ -1,12 +1,12 @@
# Immich - Self-hosted Photo & Video Management
# Domain: photos.${DOMAIN}
# Database: PostgreSQL (with VectorChord) + Redis
# RAM: ~4GB minimum | Pi-compatible: No (ML too heavy)
# RAM: ~4GB minimum (mem_limit: 4096M total — server 2048M + ML 1536M + postgres 256M + redis 128M) | Pi-compatible: No (ML too heavy)
#
# Environment variables (set in Portainer):
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
# DB_PASSWORD - PostgreSQL password
# DB_PASSWORD - PostgreSQL password (auto-generated)
#
# Storage layout:
# User photos/videos → ${HDD_PATH}/storage/immich (HDD, host path)
@@ -40,6 +40,10 @@ services:
networks:
- traefik-public
- immich-internal
deploy:
resources:
limits:
memory: 2048M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:2283/api/server/ping"]
interval: 30s
@@ -65,6 +69,10 @@ services:
- immich_ml_cache:/cache
networks:
- immich-internal
deploy:
resources:
limits:
memory: 1536M
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:3003/ping')"]
interval: 30s
@@ -81,10 +89,15 @@ services:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=immich
- POSTGRES_INITDB_ARGS=--data-checksums
- TZ=Europe/Budapest
volumes:
- immich_postgres_data:/var/lib/postgresql/data
networks:
- immich-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U immich -d immich"]
interval: 10s
@@ -97,10 +110,16 @@ services:
container_name: immich-redis
restart: unless-stopped
command: redis-server --appendonly yes
environment:
- TZ=Europe/Budapest
volumes:
- immich_redis_data:/data
networks:
- immich-internal
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
@@ -115,4 +134,4 @@ volumes:
networks:
traefik-public:
external: true
immich-internal:
immich-internal:
+30
View File
@@ -0,0 +1,30 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/mealie/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Mealie"
description: "Receptkezelő és étkezéstervező"
category: "productivity"
subdomain: "recipes"
# --- Asset slug ---
slug: "mealie"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "200M"
mem_limit: "1000M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
+7 -8
View File
@@ -1,11 +1,10 @@
# Mealie - Recipe Manager & Meal Planner
# Domain: recipes.{{DOMAIN}}
# Domain: recipes.${DOMAIN}
# Database: None (SQLite, built-in)
# RAM: ~200MB | Pi-compatible: Yes (arm64 only)
# RAM: ~200MB (mem_limit: 1000M) | Pi-compatible: Yes (arm64 only)
#
# Environment variables (set in Portainer):
# (none required for basic usage)
# SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD - for email features (optional)
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
#
# Storage layout:
# Recipe data/images → mealie_data (named volume, NVMe — moderate size)
@@ -26,7 +25,7 @@ services:
- TZ=Europe/Budapest
- MAX_WORKERS=1
- WEB_CONCURRENCY=1
- BASE_URL=https://recipes.{{DOMAIN}}
- BASE_URL=https://recipes.${DOMAIN}
volumes:
- mealie_data:/app/data/
networks:
@@ -43,7 +42,7 @@ services:
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.mealie.rule=Host(`recipes.{{DOMAIN}}`)"
- "traefik.http.routers.mealie.rule=Host(`recipes.${DOMAIN}`)"
- "traefik.http.routers.mealie.entrypoints=websecure"
- "traefik.http.routers.mealie.tls=true"
- "traefik.http.routers.mealie.tls.certresolver=letsencrypt"
@@ -54,4 +53,4 @@ volumes:
networks:
traefik-public:
external: true
external: true
+9 -5
View File
@@ -1,13 +1,13 @@
# Paperless-ngx - Document Management System (DMS)
# Domain: paperless.${DOMAIN}
# Database: PostgreSQL + Redis
# RAM: ~500MB (more with OCR/Tika) | Pi-compatible: Yes (arm64, 4GB+ RAM recommended)
# RAM: ~500MB (mem_limit: 1152M total — paperless 768M + postgres 256M + redis 128M) | Pi-compatible: Yes (arm64, 4GB+ RAM recommended)
#
# Environment variables (set in Portainer):
# Environment variables:
# 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_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
#
@@ -51,6 +51,7 @@ services:
- PAPERLESS_THREADS_PER_WORKER=1
- USERMAP_UID=1000
- USERMAP_GID=1000
- TZ=Europe/Budapest
volumes:
- paperless_data:/usr/src/paperless/data
- ${HDD_PATH}/storage/paperless/media:/usr/src/paperless/media
@@ -85,6 +86,7 @@ services:
- POSTGRES_USER=paperless
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=paperless
- TZ=Europe/Budapest
volumes:
- paperless_postgres_data:/var/lib/postgresql/data
networks:
@@ -105,6 +107,8 @@ services:
container_name: paperless-redis
restart: unless-stopped
command: redis-server --appendonly yes
environment:
- TZ=Europe/Budapest
volumes:
- paperless_redis_data:/data
networks:
@@ -127,4 +131,4 @@ volumes:
networks:
traefik-public:
external: true
paperless-internal:
paperless-internal:
+56
View File
@@ -0,0 +1,56 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/romm/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "ROMM"
description: "Retro játékgyűjtemény kezelő"
category: "media"
subdomain: "arcade"
# --- Asset slug ---
slug: "romm"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "300M"
mem_limit: "1024M"
pi_compatible: false
needs_hdd: true
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: DB_PASSWORD
label: "Adatbázis jelszó"
type: secret
generate: "password:24"
locked_after_deploy: true
- env_var: MYSQL_ROOT_PASSWORD
label: "MariaDB root jelszó"
type: secret
generate: "password:24"
locked_after_deploy: true
- env_var: ROMM_AUTH_SECRET_KEY
label: "Hitelesítési titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Adattárolási útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja, ahol a ROM-ok és borítóképek tárolódnak"
locked_after_deploy: true
+35 -16
View File
@@ -1,19 +1,18 @@
# ROMM - ROM Manager for Game Libraries
# Domain: arcade.{{DOMAIN}}
# Domain: arcade.${DOMAIN}
# Database: MariaDB + Redis
# RAM: ~300MB | Pi-compatible: Possible but heavy
# RAM: ~300MB (mem_limit: 1024M total — romm 512M + mariadb 384M + redis 128M) | Pi-compatible: No (MariaDB + heavy)
#
# Environment variables (set in Portainer):
# DB_PASSWORD - MariaDB user password (required)
# MYSQL_ROOT_PASSWORD - MariaDB root password (required)
# ROMM_AUTH_SECRET_KEY - Auth secret (required, generate with: openssl rand -hex 32)
# IGDB_CLIENT_ID - IGDB API client ID (optional, for game metadata)
# IGDB_CLIENT_SECRET - IGDB API client secret (optional)
# STEAMGRIDDB_API_KEY - SteamGridDB API key (optional, for cover art)
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - HDD mount path (e.g., /mnt/hdd_1)
# 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}}/storage/romm/library (HDD, host path)
# Cover art etc → {{HDD_PATH}}/storage/romm/resources (HDD, host path)
# 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)
@@ -30,7 +29,7 @@ services:
romm-db:
condition: service_healthy
romm-redis:
condition: service_started
condition: service_healthy
entrypoint: ["/bin/sh", "-c"]
command:
- |
@@ -60,15 +59,25 @@ services:
- STEAMGRIDDB_API_KEY=${STEAMGRIDDB_API_KEY:-}
- TZ=Europe/Budapest
volumes:
- {{HDD_PATH}}/storage/romm/library:/romm/library
- {{HDD_PATH}}/storage/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
- romm-internal
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
labels:
- "traefik.enable=true"
- "traefik.http.routers.romm.rule=Host(`arcade.{{DOMAIN}}`)"
- "traefik.http.routers.romm.rule=Host(`arcade.${DOMAIN}`)"
- "traefik.http.routers.romm.entrypoints=websecure"
- "traefik.http.routers.romm.tls=true"
- "traefik.http.routers.romm.tls.certresolver=letsencrypt"
@@ -88,6 +97,10 @@ services:
- romm_db_data:/var/lib/mysql
networks:
- romm-internal
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
@@ -100,10 +113,16 @@ services:
container_name: romm-redis
restart: unless-stopped
command: redis-server --appendonly yes
environment:
- TZ=Europe/Budapest
volumes:
- romm_redis_data:/data
networks:
- romm-internal
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
@@ -118,4 +137,4 @@ volumes:
networks:
traefik-public:
external: true
romm-internal:
romm-internal:
+30
View File
@@ -0,0 +1,30 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/stirling-pdf/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Stirling-PDF"
description: "PDF szerkesztő és konvertáló eszköztár"
category: "tools"
subdomain: "pdf"
# --- Asset slug ---
slug: "stirling-pdf"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "200M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
+10 -8
View File
@@ -1,12 +1,10 @@
# Stirling-PDF - PDF Manipulation Toolkit
# Domain: pdf.{{DOMAIN}}
# Domain: pdf.${DOMAIN}
# Database: None
# RAM: ~200MB | Pi-compatible: Yes
# RAM: ~200MB (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# (none required for basic usage)
# SECURITY_ENABLELOGIN=true - Enable login (optional)
# SECURITY_INITIALLOGIN_USERNAME / SECURITY_INITIALLOGIN_PASSWORD - if login enabled
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
#
# First-time setup:
# No login by default — accessible immediately.
@@ -27,6 +25,10 @@ services:
- stirling_training:/usr/share/tessdata
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/api/v1/info/status"]
interval: 30s
@@ -35,7 +37,7 @@ services:
start_period: 20s
labels:
- "traefik.enable=true"
- "traefik.http.routers.stirling-pdf.rule=Host(`pdf.{{DOMAIN}}`)"
- "traefik.http.routers.stirling-pdf.rule=Host(`pdf.${DOMAIN}`)"
- "traefik.http.routers.stirling-pdf.entrypoints=websecure"
- "traefik.http.routers.stirling-pdf.tls=true"
- "traefik.http.routers.stirling-pdf.tls.certresolver=letsencrypt"
@@ -47,4 +49,4 @@ volumes:
networks:
traefik-public:
external: true
external: true
+49
View File
@@ -0,0 +1,49 @@
# =============================================================================
# .felhom.yml — App metadata for felhom-controller
# =============================================================================
# Place alongside docker-compose.yml in each stack directory:
# /opt/docker/stacks/vaultwarden/.felhom.yml
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Vaultwarden"
description: "Jelszókezelő (Bitwarden-kompatibilis)"
category: "security"
subdomain: "vault"
# --- Asset slug ---
slug: "vaultwarden"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: ADMIN_TOKEN
label: "Admin panel token"
type: secret
generate: "hex:32"
description: "Token az admin panel eléréséhez (https://vault.<domain>/admin)"
locked_after_deploy: true
- env_var: SIGNUPS_ALLOWED
label: "Regisztráció engedélyezése"
type: select
default: "true"
options:
- value: "true"
label: "Igen regisztráció engedélyezve"
- value: "false"
label: "Nem regisztráció lezárva"
description: "Új fiókok regisztrálásának engedélyezése. Az első fiók létrehozása után állítsd 'Nem'-re."
locked_after_deploy: false
+10 -7
View File
@@ -1,18 +1,17 @@
# Vaultwarden - Password Manager (Bitwarden-compatible)
# Domain: vault.${DOMAIN}
# Database: None (SQLite, built-in)
# RAM: ~50MB | Pi-compatible: Yes
# RAM: ~50MB (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables (set in Portainer):
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# ADMIN_TOKEN - Admin panel token (optional, generate with: openssl rand -hex 32)
# ADMIN_TOKEN - Admin panel token (auto-generated)
# SIGNUPS_ALLOWED - Set to "false" after creating your account(s)
#
# First-time setup:
# 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)
# 2. Set SIGNUPS_ALLOWED=false via the controller
# 3. Admin panel at https://vault.${DOMAIN}/admin (if ADMIN_TOKEN set)
#
# Clients:
# Use any Bitwarden client (desktop, mobile, browser extension)
@@ -33,6 +32,10 @@ services:
- vaultwarden_data:/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/alive"]
interval: 30s
@@ -52,4 +55,4 @@ volumes:
networks:
traefik-public:
external: true
external: true