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
+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: