added apps!

This commit is contained in:
2026-02-15 08:47:15 +01:00
parent 95bc16309e
commit 0bd3f2a0e2
96 changed files with 4867 additions and 82 deletions
+18
View File
@@ -28,3 +28,21 @@ deploy_fields:
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: 'Költségvetés tervező - pénzügyeid kézben tartása egyszerűen'
docs_url: 'https://actualbudget.org/docs/'
use_cases:
- 'Havi költségvetés tervezése és követése envelope módszerrel'
- 'Bankszámla tranzakciók importálása és kategorizálása'
- 'Riportok és grafikonok a kiadásokról és bevételekről'
- 'Több felhasználó - közös háztartási pénzügyek kezelése'
- 'Offline is működik, szinkronizálás a szerver és eszközök között'
first_steps:
- 'Nyisd meg a budget.DOMAIN címet a böngészőben'
- 'Hozz létre egy jelszót az első megnyitáskor'
- 'Hozd létre a költségvetési kategóriákat (pl. élelmiszer, közlekedés)'
- 'Adj hozzá számlákat és kezdd el rögzíteni a tranzakciókat'
+56
View File
@@ -0,0 +1,56 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "AdventureLog"
description: "Utazási napló és kalandtervező"
category: "travel"
subdomain: "travel"
slug: "adventurelog"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: SECRET_KEY
label: "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
# --- App info (info page content) ---
app_info:
tagline: "Utazási napló - utazások dokumentálása térképpel és fotókkal"
docs_url: "https://adventurelog.app/docs/"
use_cases:
- 'Utazások dokumentálása képekkel és jegyzetekkel'
- 'Térképes megjelenítés a meglátogatott helyekről'
- 'Úti tervek készítése és szervezése'
- 'Statisztikák - meglátogatott országok, városok'
- 'Kalandok megosztása családdal és barátokkal'
first_steps:
- 'Nyisd meg a travel.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat'
- 'Add hozzá az első utazásodat'
- 'Jelöld meg a meglátogatott helyeket a térképen'
+102
View File
@@ -0,0 +1,102 @@
# AdventureLog - Utazási napló és kalandtervező
# Domain: travel.${DOMAIN}
# Database: postgres
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# SECRET_KEY - Titkosítási kulcs (auto-generated)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
adventurelog:
image: ghcr.io/seanmorley15/adventurelog-backend:v0.12.0
container_name: adventurelog
restart: unless-stopped
depends_on:
adventurelog-postgres:
condition: service_healthy
environment:
- DJANGO_SECRET_KEY=${SECRET_KEY}
- PGHOST=adventurelog-postgres
- PGDATABASE=adventurelog
- PGUSER=adventurelog
- PGPASSWORD=${DB_PASSWORD}
- PUBLIC_URL=https://travel.${DOMAIN}
- CSRF_TRUSTED_ORIGINS=https://travel.${DOMAIN}
- FRONTEND_URL=https://travel.${DOMAIN}
volumes:
- adventurelog_media:/code/media
networks:
- adventurelog-internal
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8000/api/"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
adventurelog-postgres:
image: postgis/postgis:16-3.5-alpine
container_name: adventurelog-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=adventurelog
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=adventurelog
- TZ=Europe/Budapest
volumes:
- adventurelog_postgres_data:/var/lib/postgresql/data
networks:
- adventurelog-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U adventurelog -d adventurelog"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
adventurelog-frontend:
image: ghcr.io/seanmorley15/adventurelog-frontend:v0.12.0
container_name: adventurelog-frontend
restart: unless-stopped
environment:
- PUBLIC_SERVER_URL=http://adventurelog:8000
- BODY_SIZE_LIMIT=Infinity
- ORIGIN=https://travel.${DOMAIN}
networks:
- traefik-public
- adventurelog-internal
labels:
- "traefik.enable=true"
- "traefik.http.routers.adventurelog.rule=Host(`travel.${DOMAIN}`)"
- "traefik.http.routers.adventurelog.entrypoints=websecure"
- "traefik.http.routers.adventurelog.tls=true"
- "traefik.http.routers.adventurelog.tls.certresolver=letsencrypt"
- "traefik.http.services.adventurelog.loadbalancer.server.port=3000"
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
adventurelog_media:
adventurelog_postgres_data:
networks:
traefik-public:
external: true
adventurelog-internal:
+56
View File
@@ -0,0 +1,56 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Audiobookshelf"
description: "Hangoskönyv és podcast kezelő szerver"
category: "media"
subdomain: "audiobooks"
slug: "audiobookshelf"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Hangoskönyv tár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Hangoskönyv és podcast kezelő, lejátszó és szinkronizáló"
docs_url: "https://www.audiobookshelf.org/docs"
use_cases:
- 'Hangoskönyvek és podcastok rendszerezése és lejátszása'
- 'Automatikus metaadat letöltés - borítók, leírások, fejezetek'
- 'Folytatás ott, ahol abbahagytad (szinkron eszközök között)'
- 'Podcast feliratkozás és automatikus letöltés'
- 'Dedikált mobil alkalmazások (Android, iOS)'
first_steps:
- 'Nyisd meg az audiobooks.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot az első megnyitáskor'
- 'Add hozzá a könyvtárakat (/audiobooks és/vagy /podcasts)'
- 'Várd meg az automatikus szkennelést'
- 'Telepítsd az Audiobookshelf alkalmazást a telefonodra'
prerequisites:
- 'Külső HDD szükséges a hangoskönyvek tárolásához'
- 'Hangoskönyvek mappákba rendezve (pl. Szerző/Könyv/)'
@@ -0,0 +1,48 @@
# Audiobookshelf - Hangoskönyv és podcast kezelő szerver
# Domain: audiobooks.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - Hangoskönyv tár útvonal
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:2.19.5
container_name: audiobookshelf
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- audiobookshelf_config:/config
- audiobookshelf_metadata:/metadata
- ${HDD_PATH}/media/audiobooks:/audiobooks
- ${HDD_PATH}/media/podcasts:/podcasts
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/healthcheck"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.audiobookshelf.rule=Host(`audiobooks.${DOMAIN}`)"
- "traefik.http.routers.audiobookshelf.entrypoints=websecure"
- "traefik.http.routers.audiobookshelf.tls=true"
- "traefik.http.routers.audiobookshelf.tls.certresolver=letsencrypt"
- "traefik.http.services.audiobookshelf.loadbalancer.server.port=80"
volumes:
audiobookshelf_config:
audiobookshelf_metadata:
networks:
traefik-public:
external: true
+43
View File
@@ -0,0 +1,43 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "BentoPDF"
description: "Adatvédelmi fókuszú PDF eszköztár"
category: "tools"
subdomain: "bento"
slug: "bentopdf"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Adatvédelmi fókuszú PDF eszköztár - a fájlok soha nem hagyják el a szervered"
docs_url: "https://www.bentopdf.com/docs/"
use_cases:
- 'PDF összefűzés, szétválasztás és forgatás'
- 'PDF konvertálás képekké és képekből'
- 'Jelszóvédelem és titkosítás'
- 'Vízjel hozzáadása dokumentumokhoz'
- 'Minden feldolgozás a szerveren - a fájlok nem kerülnek külső szolgáltatóhoz'
first_steps:
- 'Nyisd meg a pdf.DOMAIN címet a böngészőben'
- 'Válaszd ki a kívánt műveletet'
- 'Töltsd fel a PDF fájlt és kattints a feldolgozásra'
+40
View File
@@ -0,0 +1,40 @@
# BentoPDF - Adatvédelmi fókuszú PDF eszköztár
# Domain: bento.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
bentopdf:
image: ghcr.io/alam00000/bentopdf:latest
container_name: bentopdf
restart: unless-stopped
environment:
- TZ=Europe/Budapest
networks:
- traefik-public
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.bentopdf.rule=Host(`bento.${DOMAIN}`)"
- "traefik.http.routers.bentopdf.entrypoints=websecure"
- "traefik.http.routers.bentopdf.tls=true"
- "traefik.http.routers.bentopdf.tls.certresolver=letsencrypt"
- "traefik.http.services.bentopdf.loadbalancer.server.port=8080"
volumes:
networks:
traefik-public:
external: true
+52
View File
@@ -0,0 +1,52 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "BookStack"
description: "Egyszerű, könyv-szerű wiki és dokumentáció platform"
category: "productivity"
subdomain: "wiki"
slug: "bookstack"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "150M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
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
# --- App info (info page content) ---
app_info:
tagline: "Egyszerű wiki platform - polcok, könyvek, fejezetek és oldalak"
default_creds: "admin@admin.com / password"
docs_url: "https://www.bookstackapp.com/docs/"
use_cases:
- 'Családi tudásbázis - receptek, kézikönyvek, szabályok'
- 'Projekt dokumentáció strukturált formában'
- 'Könyv > Fejezet > Oldal hierarchia az áttekinthetőségért'
- 'Teljes szöveges keresés és címkék'
- 'WYSIWYG és Markdown szerkesztő'
first_steps:
- 'Nyisd meg a wiki.DOMAIN címet a böngészőben'
- 'Jelentkezz be: admin@admin.com / password'
- 'Változtasd meg azonnal az admin jelszót és email címet'
- 'Hozd létre az első polcot és könyvet'
- 'Kezdj el írni!'
+83
View File
@@ -0,0 +1,83 @@
# BookStack - Egyszerű, könyv-szerű wiki és dokumentáció platform
# Domain: wiki.${DOMAIN}
# Database: mariadb
# RAM: ~150M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
bookstack:
image: lscr.io/linuxserver/bookstack:25.02.2
container_name: bookstack
restart: unless-stopped
depends_on:
bookstack-db:
condition: service_healthy
environment:
- TZ=Europe/Budapest
- PUID=1000
- PGID=1000
- DB_HOST=bookstack-db
- DB_PORT=3306
- DB_USER=bookstack
- DB_PASS=${DB_PASSWORD}
- DB_DATABASE=bookstack
- APP_URL=https://wiki.${DOMAIN}
volumes:
- bookstack_config:/config
networks:
- traefik-public
- bookstack-internal
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.bookstack.rule=Host(`wiki.${DOMAIN}`)"
- "traefik.http.routers.bookstack.entrypoints=websecure"
- "traefik.http.routers.bookstack.tls=true"
- "traefik.http.routers.bookstack.tls.certresolver=letsencrypt"
- "traefik.http.services.bookstack.loadbalancer.server.port=80"
bookstack-db:
image: mariadb:11.6
container_name: bookstack-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Budapest
volumes:
- bookstack_db_data:/var/lib/mysql
networks:
- bookstack-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
bookstack_config:
bookstack_db_data:
networks:
traefik-public:
external: true
bookstack-internal:
+66
View File
@@ -0,0 +1,66 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Cal.com"
description: "Nyílt forráskódú időpontfoglaló (Calendly alternatíva)"
category: "travel"
subdomain: "cal"
slug: "calcom"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "200M"
mem_limit: "768M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: NEXTAUTH_SECRET
label: "NextAuth titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
- env_var: CALENDSO_ENCRYPTION_KEY
label: "Titkosítási kulcs"
type: secret
generate: "hex:16"
locked_after_deploy: true
- env_var: DB_PASSWORD
label: "Adatbázis jelszó"
type: secret
generate: "password:24"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Időpontfoglaló - Calendly alternatíva saját szerveren"
docs_url: "https://cal.com/docs/"
use_cases:
- 'Időpontfoglalási oldal létrehozása ügyfeleknek'
- 'Naptár szinkronizáció (Google Calendar, Outlook)'
- 'Személyre szabható foglalási típusok és időtartamok'
- 'Automatikus emlékeztető emailek'
- 'Csapat naptár kezelés'
first_steps:
- 'Nyisd meg a cal.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot'
- 'Állíts be egy foglalási típust (pl. 30 perces megbeszélés)'
- 'Szinkronizáld a naptáradat'
- 'Oszd meg a foglalási linket'
prerequisites:
- 'x86 processzor szükséges'
- 'Legalább 1 GB szabad RAM (Cal.com + PostgreSQL)'
+77
View File
@@ -0,0 +1,77 @@
# Cal.com - Nyílt forráskódú időpontfoglaló (Calendly alternatíva)
# Domain: cal.${DOMAIN}
# Database: postgres
# RAM: ~200M (mem_limit: 768M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# NEXTAUTH_SECRET - NextAuth titkosítási kulcs (auto-generated)
# CALENDSO_ENCRYPTION_KEY- Titkosítási kulcs (auto-generated)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
calcom:
image: calcom/cal.com:v4.8.7
container_name: calcom
restart: unless-stopped
depends_on:
calcom-postgres:
condition: service_healthy
environment:
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
- CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY}
- DATABASE_URL=postgresql://calcom:${DB_PASSWORD}@calcom-postgres:5432/calcom
- NEXT_PUBLIC_WEBAPP_URL=https://cal.${DOMAIN}
- NEXTAUTH_URL=https://cal.${DOMAIN}
networks:
- traefik-public
- calcom-internal
deploy:
resources:
limits:
memory: 768M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.calcom.rule=Host(`cal.${DOMAIN}`)"
- "traefik.http.routers.calcom.entrypoints=websecure"
- "traefik.http.routers.calcom.tls=true"
- "traefik.http.routers.calcom.tls.certresolver=letsencrypt"
- "traefik.http.services.calcom.loadbalancer.server.port=3000"
calcom-postgres:
image: postgres:16-alpine
container_name: calcom-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=calcom
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=calcom
- TZ=Europe/Budapest
volumes:
- calcom_postgres_data:/var/lib/postgresql/data
networks:
- calcom-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U calcom -d calcom"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
calcom_postgres_data:
networks:
traefik-public:
external: true
calcom-internal:
+57
View File
@@ -0,0 +1,57 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Calibre-web"
description: "Webes felület a Calibre e-könyv könyvtáradhoz"
category: "media"
subdomain: "books"
slug: "calibre-web"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "E-könyvtár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja, ahol a Calibre könyvtár található"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "E-könyv könyvtár webes felülettel és e-olvasó küldéssel"
default_creds: "admin / admin123"
docs_url: "https://github.com/janeczku/calibre-web/wiki"
use_cases:
- 'E-könyvek böngészése és letöltése webes felületen'
- 'Küldés közvetlenül Kindle-re vagy más e-olvasóra'
- 'Több felhasználó külön könyvtárral és jogosultságokkal'
- 'On-the-fly formátum konvertálás (EPUB, MOBI, PDF)'
- 'OPDS feed kompatibilis e-olvasó alkalmazásokhoz'
first_steps:
- 'Nyisd meg a books.DOMAIN címet a böngészőben'
- 'Jelentkezz be: admin / admin123'
- 'Változtasd meg azonnal a jelszót'
- 'Állítsd be a Calibre könyvtár útvonalat (/books)'
- 'Töltsd fel az e-könyveidet vagy másold a könyvtárba'
prerequisites:
- 'Külső HDD szükséges az e-könyvek tárolásához'
- 'Calibre könyvtár (metadata.db) ajánlott a legjobb élményhez'
+47
View File
@@ -0,0 +1,47 @@
# Calibre-web - Webes felület a Calibre e-könyv könyvtáradhoz
# Domain: books.${DOMAIN}
# Database: None (file-based)
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - E-könyvtár útvonal
services:
calibre-web:
image: lscr.io/linuxserver/calibre-web:0.6.24
container_name: calibre-web
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- PUID=1000
- PGID=1000
volumes:
- calibre_web_config:/config
- ${HDD_PATH}/media/books:/books
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8083"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.calibre-web.rule=Host(`books.${DOMAIN}`)"
- "traefik.http.routers.calibre-web.entrypoints=websecure"
- "traefik.http.routers.calibre-web.tls=true"
- "traefik.http.routers.calibre-web.tls.certresolver=letsencrypt"
- "traefik.http.services.calibre-web.loadbalancer.server.port=8083"
volumes:
calibre_web_config:
networks:
traefik-public:
external: true
+56
View File
@@ -0,0 +1,56 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Claper"
description: "Interaktív prezentáció és közönség bevonás"
category: "productivity"
subdomain: "present"
slug: "claper"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: SECRET_KEY_BASE
label: "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
# --- App info (info page content) ---
app_info:
tagline: "Interaktív prezentáció - szavazás, kérdések és reakciók élőben"
docs_url: "https://docs.claper.co/"
use_cases:
- 'Interaktív prezentációk élő szavazásokkal'
- 'Közönség kérdéseinek gyűjtése és megjelenítése'
- 'Reakciók és visszajelzések valós időben'
- 'PDF prezentációk feltöltése és megosztása'
- 'QR kód a közönség gyors csatlakozásához'
first_steps:
- 'Nyisd meg a present.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat'
- 'Tölts fel egy PDF prezentációt'
- 'Oszd meg a kódot a közönséggel'
+77
View File
@@ -0,0 +1,77 @@
# Claper - Interaktív prezentáció és közönség bevonás
# Domain: present.${DOMAIN}
# Database: postgres
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# SECRET_KEY_BASE - Titkosítási kulcs (auto-generated)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
claper:
image: ghcr.io/claperco/claper:1.8
container_name: claper
restart: unless-stopped
depends_on:
claper-postgres:
condition: service_healthy
environment:
- DATABASE_URL=postgresql://claper:${DB_PASSWORD}@claper-postgres:5432/claper
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- BASE_URL=https://present.${DOMAIN}
volumes:
- claper_uploads:/app/priv/static/uploads
networks:
- traefik-public
- claper-internal
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:4000"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.claper.rule=Host(`present.${DOMAIN}`)"
- "traefik.http.routers.claper.entrypoints=websecure"
- "traefik.http.routers.claper.tls=true"
- "traefik.http.routers.claper.tls.certresolver=letsencrypt"
- "traefik.http.services.claper.loadbalancer.server.port=4000"
claper-postgres:
image: postgres:16-alpine
container_name: claper-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=claper
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=claper
- TZ=Europe/Budapest
volumes:
- claper_postgres_data:/var/lib/postgresql/data
networks:
- claper-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U claper -d claper"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
claper_postgres_data:
claper_uploads:
networks:
traefik-public:
external: true
claper-internal:
+54
View File
@@ -0,0 +1,54 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Code-Server"
description: "VS Code a böngészőben - kódolás bárhonnan"
category: "dev"
subdomain: "code"
slug: "code-server"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "200M"
mem_limit: "1024M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: PASSWORD
label: "Hozzáférési jelszó"
type: secret
generate: "password:16"
locked_after_deploy: false
# --- App info (info page content) ---
app_info:
tagline: "VS Code a böngészőben - teljes fejlesztői környezet bárhonnan"
default_creds: "(telepítéskor generált jelszó)"
docs_url: "https://coder.com/docs/code-server/"
use_cases:
- 'Kódolás bárhonnan, bármilyen eszközről böngészőben'
- 'VS Code teljes funkcionalitás - bővítmények, terminál, debug'
- 'Távoli fejlesztés alacsony sávszélességű kapcsolaton is'
- 'Egységes fejlesztői környezet több eszközről'
- 'Tableten és iPaden is használható'
first_steps:
- 'Nyisd meg a code.DOMAIN címet a böngészőben'
- 'Add meg a hozzáférési jelszót'
- 'Nyisd meg a terminált (Ctrl+`) és telepíts eszközöket'
- 'Telepíts bővítményeket az Extensions panelben'
prerequisites:
- 'x86 processzor szükséges a legjobb teljesítményhez'
- 'Legalább 1 GB szabad RAM ajánlott'
+48
View File
@@ -0,0 +1,48 @@
# Code-Server - VS Code a böngészőben - kódolás bárhonnan
# Domain: code.${DOMAIN}
# Database: None (file-based)
# RAM: ~200M (mem_limit: 1024M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# PASSWORD - Hozzáférési jelszó (auto-generated)
services:
code-server:
image: lscr.io/linuxserver/code-server:4.96.4
container_name: code-server
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- PUID=1000
- PGID=1000
- PASSWORD=${PASSWORD}
- DEFAULT_WORKSPACE=/config/workspace
volumes:
- codeserver_config:/config
networks:
- traefik-public
deploy:
resources:
limits:
memory: 1024M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8443/healthz"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.code-server.rule=Host(`code.${DOMAIN}`)"
- "traefik.http.routers.code-server.entrypoints=websecure"
- "traefik.http.routers.code-server.tls=true"
- "traefik.http.routers.code-server.tls.certresolver=letsencrypt"
- "traefik.http.services.code-server.loadbalancer.server.port=8443"
volumes:
codeserver_config:
networks:
traefik-public:
external: true
+48
View File
@@ -0,0 +1,48 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Crafty Controller"
description: "Minecraft szerver kezelő webes felülettel"
category: "games"
subdomain: "minecraft"
slug: "crafty-controller"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "256M"
mem_limit: "2048M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Minecraft szerver kezelő - hozd létre a saját világodat"
docs_url: "https://docs.craftycontrol.com/"
use_cases:
- 'Minecraft szerver létrehozása és kezelése webes felületen'
- 'Több szerver párhuzamos futtatása (Java és Bedrock)'
- 'Automatikus mentések és ütemezett újraindítás'
- 'Játékos menedzsment és konzol hozzáférés'
- 'Szerver fájlok kezelése böngészőből'
first_steps:
- 'Nyisd meg a minecraft.DOMAIN címet a böngészőben'
- 'Az alapértelmezett belépési adatokat a naplóban találod'
- 'Hozz létre egy új Minecraft szervert a varázslóval'
- 'Állítsd be a szerver beállításokat (játékmód, nehézség, stb.)'
- 'Csatlakozz a szerveredhez a Minecraft kliensből'
prerequisites:
- 'Legalább 2 GB szabad RAM ajánlott (Minecraft szerver + Crafty)'
- 'x86 processzor szükséges (nem fut Raspberry Pi-n)'
@@ -0,0 +1,51 @@
# Crafty Controller - Minecraft szerver kezelő webes felülettel
# Domain: minecraft.${DOMAIN}
# Database: None (file-based)
# RAM: ~256M (mem_limit: 2048M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
crafty-controller:
image: registry.gitlab.com/crafty-controller/crafty-4:4.4.8
container_name: crafty-controller
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- crafty_backups:/crafty/backups
- crafty_logs:/crafty/logs
- crafty_servers:/crafty/servers
- crafty_config:/crafty/app/config
- crafty_import:/crafty/import
networks:
- traefik-public
deploy:
resources:
limits:
memory: 2048M
healthcheck:
test: ["CMD", "curl", "-fk", "https://localhost:8443"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.crafty-controller.rule=Host(`minecraft.${DOMAIN}`)"
- "traefik.http.routers.crafty-controller.entrypoints=websecure"
- "traefik.http.routers.crafty-controller.tls=true"
- "traefik.http.routers.crafty-controller.tls.certresolver=letsencrypt"
- "traefik.http.services.crafty-controller.loadbalancer.server.port=8443"
volumes:
crafty_backups:
crafty_config:
crafty_import:
crafty_logs:
crafty_servers:
networks:
traefik-public:
external: true
+22
View File
@@ -40,3 +40,25 @@ deploy_fields:
type: secret
generate: "password:24"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: 'Modern wiki és dokumentáció platform Notion-szerű szerkesztővel'
docs_url: 'https://docmost.com/docs/'
use_cases:
- 'Csapat tudásbázis és belső dokumentáció'
- 'Notion-szerű blokk szerkesztő valós idejű együttműködéssel'
- 'Terek és oldalak hierarchikus szervezése'
- 'Képek, táblázatok és kód blokkok beágyazása'
- 'Keresés a teljes dokumentációban'
first_steps:
- 'Nyisd meg a docs.DOMAIN címet a böngészőben'
- 'Az első regisztrált felhasználó automatikusan admin lesz'
- 'Hozd létre az első teret (Space) a dokumentumoknak'
- 'Kezdj el írni a Notion-szerű szerkesztőben'
prerequisites:
- 'x86 processzor szükséges'
- 'Legalább 768 MB szabad RAM (Docmost + PostgreSQL + Redis)'
+57
View File
@@ -0,0 +1,57 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Emby"
description: "Személyes média szerver élő TV és DVR támogatással"
category: "media"
subdomain: "emby"
slug: "emby"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "512M"
mem_limit: "2048M"
pi_compatible: false
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Médiatár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Személyes média szerver élő TV és DVR támogatással"
docs_url: "https://emby.media/support/articles/Home.html"
use_cases:
- 'Filmek, sorozatok, zene és fotók kezelése egy helyen'
- 'Élő TV nézés és felvétel (DVR) TV tunerrel'
- 'Automatikus transzkódolás bármilyen eszközhöz'
- 'Szülői felügyelet és felhasználói profilok'
- 'Szinkronizálás offline megtekintéshez mobilon'
first_steps:
- 'Nyisd meg az emby.DOMAIN címet a böngészőben'
- 'Kövesd a beállítás varázslót'
- 'Hozd létre az admin fiókot'
- 'Add hozzá a médiatárat a /media mappából'
- 'Telepítsd az Emby alkalmazást eszközeidre'
prerequisites:
- 'Külső HDD szükséges a médiafájlok tárolásához'
- 'Legalább 2 GB szabad RAM ajánlott'
- 'Emby Premiere előfizetés a prémium funkciókhoz (opcionális)'
+47
View File
@@ -0,0 +1,47 @@
# Emby - Személyes média szerver élő TV és DVR támogatással
# Domain: emby.${DOMAIN}
# Database: None (file-based)
# RAM: ~512M (mem_limit: 2048M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - Médiatár útvonal
services:
emby:
image: emby/embyserver:4.9.0.42
container_name: emby
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- UID=1000
- GID=1000
volumes:
- emby_config:/config
- ${HDD_PATH}/media:/media:ro
networks:
- traefik-public
deploy:
resources:
limits:
memory: 2048M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8096/emby/system/ping"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.emby.rule=Host(`emby.${DOMAIN}`)"
- "traefik.http.routers.emby.entrypoints=websecure"
- "traefik.http.routers.emby.tls=true"
- "traefik.http.routers.emby.tls.certresolver=letsencrypt"
- "traefik.http.services.emby.loadbalancer.server.port=8096"
volumes:
emby_config:
networks:
traefik-public:
external: true
+19
View File
@@ -36,3 +36,22 @@ deploy_fields:
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja, ahol a fájlok tárolódnak"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: 'Egyszerű webes fájlkezelő - böngéssz, tölts fel és ossz meg fájlokat'
default_creds: 'admin / admin'
docs_url: 'https://filebrowser.org/'
use_cases:
- 'Fájlok böngészése és kezelése webes felületen'
- 'Fájlok feltöltése és letöltése bárhonnan'
- 'Fájlok és mappák megosztása linkkel'
- 'Beépített szöveg- és kódszerkesztő'
- 'Több felhasználó saját mappákkal és jogosultságokkal'
first_steps:
- 'Nyisd meg a files.DOMAIN címet a böngészőben'
- 'Jelentkezz be: admin / admin'
- 'Változtasd meg azonnal a jelszót a beállításokban'
- 'Böngészd a fájlokat vagy tölts fel újakat'
+46
View File
@@ -0,0 +1,46 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Ghost"
description: "Professzionális blog és hírlevél platform"
category: "productivity"
subdomain: "blog"
slug: "ghost"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "150M"
mem_limit: "512M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Professzionális blog és hírlevél platform"
docs_url: "https://ghost.org/docs/"
use_cases:
- 'Professzionális blog indítása és üzemeltetése'
- 'Hírlevél küldés beépített email funkcióval'
- 'SEO-optimalizált tartalom publikálás'
- 'Tagság és fizetős tartalom kezelés'
- 'Markdown és vizuális szerkesztő'
first_steps:
- 'Nyisd meg a blog.DOMAIN/ghost/ címet a böngészőben'
- 'Hozd létre az admin fiókot a beállítás varázslóban'
- 'Írd meg és publikáld az első posztodat'
- 'Személyre szabd a témát és beállításokat'
prerequisites:
- 'x86 processzor szükséges'
+47
View File
@@ -0,0 +1,47 @@
# Ghost - Professzionális blog és hírlevél platform
# Domain: blog.${DOMAIN}
# Database: None (file-based)
# RAM: ~150M (mem_limit: 512M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
ghost:
image: ghost:5.108.0-alpine
container_name: ghost
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- NODE_ENV=production
- url=https://blog.${DOMAIN}
- database__client=sqlite3
- database__connection__filename=content/data/ghost.db
volumes:
- ghost_content:/var/lib/ghost/content
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:2368/ghost/api/v4/admin/site/"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.ghost.rule=Host(`blog.${DOMAIN}`)"
- "traefik.http.routers.ghost.entrypoints=websecure"
- "traefik.http.routers.ghost.tls=true"
- "traefik.http.routers.ghost.tls.certresolver=letsencrypt"
- "traefik.http.services.ghost.loadbalancer.server.port=2368"
volumes:
ghost_content:
networks:
traefik-public:
external: true
+45
View File
@@ -0,0 +1,45 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Gitea"
description: "Könnyű, saját Git szerver webes felülettel"
category: "dev"
subdomain: "git"
slug: "gitea"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Saját Git szerver - GitHub-szerű felület, privát repók"
docs_url: "https://docs.gitea.com/"
use_cases:
- 'Privát Git repozitóriók a saját szerveren'
- 'GitHub-szerű felület: pull request, issue, wiki'
- 'CI/CD pipeline-ok (Gitea Actions - GitHub Actions kompatibilis)'
- 'Szervezetek és csapatok kezelése'
- 'Container registry és csomagkezelő'
first_steps:
- 'Nyisd meg a git.DOMAIN címet a böngészőben'
- 'Kövesd az első beállítás varázslót'
- 'Hozd létre az admin fiókot'
- 'Hozd létre az első repozitóriót'
- 'Klónozd a repót: git clone https://git.DOMAIN/user/repo.git'
+46
View File
@@ -0,0 +1,46 @@
# Gitea - Könnyű, saját Git szerver webes felülettel
# Domain: git.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
gitea:
image: gitea/gitea:1.23.4
container_name: gitea
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- GITEA__server__ROOT_URL=https://git.${DOMAIN}
- GITEA__server__SSH_DOMAIN=git.${DOMAIN}
- GITEA__database__DB_TYPE=sqlite3
volumes:
- gitea_data:/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/v1/version"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`git.${DOMAIN}`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls=true"
- "traefik.http.routers.gitea.tls.certresolver=letsencrypt"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
volumes:
gitea_data:
networks:
traefik-public:
external: true
+44
View File
@@ -0,0 +1,44 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Glance"
description: "Minimalista információs dashboard"
category: "dashboard"
subdomain: "dashboard"
slug: "glance"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "20M"
mem_limit: "128M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Minimalista dashboard - RSS, időjárás, könyvjelzők egy oldalon"
docs_url: "https://github.com/glanceapp/glance/blob/main/docs/configuration.md"
use_cases:
- 'RSS hírek, YouTube, Reddit és egyéb tartalmak egy oldalon'
- 'Időjárás és rendszer monitorozás widgetekkel'
- 'Könyvjelzők és kedvenc oldalak rendszerezése'
- 'Ultragyors, minimális erőforrás igény'
- 'Személyre szabható elrendezés YAML konfigurációval'
first_steps:
- 'Nyisd meg a dashboard.DOMAIN címet a böngészőben'
- 'Szerkeszd a glance.yml konfigurációs fájlt a kötetben'
- 'Add hozzá az RSS feedeket, widgeteket'
- 'Személyre szabd az elrendezést'
+43
View File
@@ -0,0 +1,43 @@
# Glance - Minimalista információs dashboard
# Domain: dashboard.${DOMAIN}
# Database: None (file-based)
# RAM: ~20M (mem_limit: 128M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
glance:
image: glanceapp/glance:v0.7.4
container_name: glance
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- glance_config:/app/config
networks:
- traefik-public
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.glance.rule=Host(`dashboard.${DOMAIN}`)"
- "traefik.http.routers.glance.entrypoints=websecure"
- "traefik.http.routers.glance.tls=true"
- "traefik.http.routers.glance.tls.certresolver=letsencrypt"
- "traefik.http.services.glance.loadbalancer.server.port=8080"
volumes:
glance_config:
networks:
traefik-public:
external: true
+45
View File
@@ -0,0 +1,45 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Gokapi"
description: "Ideiglenes fájlmegosztás lejáró linkekkel"
category: "files"
subdomain: "share"
slug: "gokapi"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "30M"
mem_limit: "128M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Ideiglenes fájlmegosztás lejáró linkekkel"
docs_url: "https://gokapi.readthedocs.io/"
use_cases:
- 'Fájlok biztonságos megosztása lejáró linkekkel'
- 'Beállítható lejárati idő és letöltési limit'
- 'Jelszóvédett letöltési linkek'
- 'API támogatás automatizált feltöltéshez'
- 'Titkosított tárolás és E2E titkosítás opció'
first_steps:
- 'Nyisd meg a share.DOMAIN címet a böngészőben'
- 'Kövesd a kezdeti beállítás varázslót'
- 'Állítsd be az admin jelszót'
- 'Tölts fel egy fájlt és generálj megosztási linket'
- 'Oszd meg a linket - automatikusan lejár a beállított idő után'
+45
View File
@@ -0,0 +1,45 @@
# Gokapi - Ideiglenes fájlmegosztás lejáró linkekkel
# Domain: share.${DOMAIN}
# Database: None (file-based)
# RAM: ~30M (mem_limit: 128M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
gokapi:
image: f0rc3/gokapi:v1.9.6
container_name: gokapi
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- gokapi_data:/app/data
- gokapi_config:/app/config
networks:
- traefik-public
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:53842"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.gokapi.rule=Host(`share.${DOMAIN}`)"
- "traefik.http.routers.gokapi.entrypoints=websecure"
- "traefik.http.routers.gokapi.tls=true"
- "traefik.http.routers.gokapi.tls.certresolver=letsencrypt"
- "traefik.http.services.gokapi.loadbalancer.server.port=53842"
volumes:
gokapi_config:
gokapi_data:
networks:
traefik-public:
external: true
+53
View File
@@ -0,0 +1,53 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Grafana"
description: "Professzionális monitoring és vizualizációs platform"
category: "dashboard"
subdomain: "grafana"
slug: "grafana"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: GF_SECURITY_ADMIN_PASSWORD
label: "Admin jelszó"
type: secret
generate: "password:16"
locked_after_deploy: false
# --- App info (info page content) ---
app_info:
tagline: "Vizualizációs platform - dashboardok, grafikonok, alertek"
default_creds: "admin / (telepítéskor megadott jelszó)"
docs_url: "https://grafana.com/docs/grafana/latest/"
use_cases:
- 'Rendszer metrikák vizualizálása (CPU, RAM, hálózat, lemez)'
- 'Egyedi dashboardok létrehozása különböző adatforrásokból'
- 'Alertek és értesítések küszöbértékek alapján'
- 'Prometheus, InfluxDB és sok más adatforrás támogatás'
- 'Szép, megosztható dashboardok'
first_steps:
- 'Nyisd meg a grafana.DOMAIN címet a böngészőben'
- 'Jelentkezz be az admin fiókkal'
- 'Add hozzá az adatforrásokat (Connections > Data Sources)'
- 'Importálj egy dashboard sablont vagy hozz létre sajátot'
prerequisites:
- 'Adatforrás szükséges (pl. Prometheus - külön telepítendő)'
+46
View File
@@ -0,0 +1,46 @@
# Grafana - Professzionális monitoring és vizualizációs platform
# Domain: grafana.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# GF_SECURITY_ADMIN_PASSWORD- Admin jelszó (auto-generated)
services:
grafana:
image: grafana/grafana:11.5.1
container_name: grafana
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- GF_SERVER_ROOT_URL=https://grafana.${DOMAIN}
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD:-admin}
volumes:
- grafana_data:/var/lib/grafana
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.grafana.rule=Host(`grafana.${DOMAIN}`)"
- "traefik.http.routers.grafana.entrypoints=websecure"
- "traefik.http.routers.grafana.tls=true"
- "traefik.http.routers.grafana.tls.certresolver=letsencrypt"
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
volumes:
grafana_data:
networks:
traefik-public:
external: true
+50
View File
@@ -0,0 +1,50 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Gramps Web"
description: "Családfa készítő és genealógiai szoftver"
category: "home"
subdomain: "family"
slug: "gramps-web"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: GRAMPSWEB_SECRET_KEY
label: "Titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Családfa készítő - genealógiai adatbázis webes felületen"
docs_url: "https://gramps-project.github.io/web/"
use_cases:
- 'Családfa építése és vizualizálása'
- 'Személyek, események, helyszínek és kapcsolatok rögzítése'
- 'Fényképek és dokumentumok csatolása a családtagokhoz'
- 'GEDCOM import és export kompatibilitás'
- 'Családtagok közös hozzáférése a családfához'
first_steps:
- 'Nyisd meg a family.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot'
- 'Importálj egy meglévő GEDCOM fájlt, vagy kezdd az üres családfát'
- 'Add hozzá az első családtagokat'
+50
View File
@@ -0,0 +1,50 @@
# Gramps Web - Családfa készítő és genealógiai szoftver
# Domain: family.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# GRAMPSWEB_SECRET_KEY- Titkosítási kulcs (auto-generated)
services:
gramps-web:
image: ghcr.io/gramps-project/grampsweb:v24.12.1
container_name: gramps-web
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- GRAMPSWEB_TREE=Family Tree
- GRAMPSWEB_SECRET_KEY=${GRAMPSWEB_SECRET_KEY}
volumes:
- gramps_data:/app/data
- gramps_media:/app/media
- gramps_tmp:/tmp
networks:
- traefik-public
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:5000"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.gramps-web.rule=Host(`family.${DOMAIN}`)"
- "traefik.http.routers.gramps-web.entrypoints=websecure"
- "traefik.http.routers.gramps-web.tls=true"
- "traefik.http.routers.gramps-web.tls.certresolver=letsencrypt"
- "traefik.http.services.gramps-web.loadbalancer.server.port=5000"
volumes:
gramps_data:
gramps_media:
gramps_tmp:
networks:
traefik-public:
external: true
+48
View File
@@ -0,0 +1,48 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Home Assistant"
description: "Nyílt forráskódú okos otthon központ"
category: "home"
subdomain: "ha"
slug: "home-assistant"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "256M"
mem_limit: "1024M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Okos otthon központ - automatizálás és vezérlés egy helyről"
docs_url: "https://www.home-assistant.io/docs/"
use_cases:
- 'Okos otthon eszközök központi kezelése (lámpa, termosztát, kamera)'
- 'Automatizálások létrehozása (pl. mozgásérzékelőre lámpa be)'
- '2000+ integráció (Zigbee, Z-Wave, Tuya, Shelly, stb.)'
- 'Dashboard a család számára mobilon és tableten'
- 'Energiafogyasztás monitorozás'
first_steps:
- 'Nyisd meg a ha.DOMAIN címet a böngészőben'
- 'Hozd létre a tulajdonos fiókot az onboarding során'
- 'Fedezd fel az automatikusan felfedezett eszközöket'
- 'Telepíts integrációkat az okos otthon eszközeidhez'
- 'Hozd létre az első automatizálást'
prerequisites:
- 'Okos otthon eszközök (nem kötelező, de ajánlott a telepítés előtt)'
- 'Zigbee/Z-Wave koordinátor USB eszközök átpasszolása nem támogatott Docker módban'
@@ -0,0 +1,43 @@
# Home Assistant - Nyílt forráskódú okos otthon központ
# Domain: ha.${DOMAIN}
# Database: None (file-based)
# RAM: ~256M (mem_limit: 1024M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
home-assistant:
image: ghcr.io/home-assistant/home-assistant:2026.2.2
container_name: home-assistant
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- homeassistant_config:/config
networks:
- traefik-public
deploy:
resources:
limits:
memory: 1024M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8123/api/"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.home-assistant.rule=Host(`ha.${DOMAIN}`)"
- "traefik.http.routers.home-assistant.entrypoints=websecure"
- "traefik.http.routers.home-assistant.tls=true"
- "traefik.http.routers.home-assistant.tls.certresolver=letsencrypt"
- "traefik.http.services.home-assistant.loadbalancer.server.port=8123"
volumes:
homeassistant_config:
networks:
traefik-public:
external: true
+18
View File
@@ -28,3 +28,21 @@ deploy_fields:
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: 'Otthoni leltár kezelő - tartsd számon a tárgyaidat'
docs_url: 'https://homebox.software/en/'
use_cases:
- 'Otthoni tárgyak leltározása és nyilvántartása'
- 'Helyszínek, címkék és kategóriák szerinti rendszerezés'
- 'Garancia lejáratok és beszerzési árak nyilvántartása'
- 'Vonalkód szkennelés a gyors hozzáadáshoz'
- 'Biztosítási célú leltár készítés'
first_steps:
- 'Nyisd meg az inventory.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat az első megnyitáskor'
- 'Add hozzá a helyszíneket (pl. nappali, konyha, garázs)'
- 'Kezdd el felvenni a tárgyakat fotókkal'
+44
View File
@@ -0,0 +1,44 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Homepage"
description: "Személyre szabható kezdőlap szolgáltatás widgetekkel"
category: "dashboard"
subdomain: "home"
slug: "homepage"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Személyes kezdőlap - szolgáltatás státuszok és widgetek egy helyen"
docs_url: "https://gethomepage.dev/"
use_cases:
- 'Összes szolgáltatás egy áttekinthető oldalon'
- 'Szolgáltatás állapot monitoring widgetek'
- 'Docker integráció - automatikus szolgáltatás felfedezés'
- 'Könyvjelzők és kedvenc oldalak'
- 'Időjárás, rendszer erőforrás és egyéb widgetek'
first_steps:
- 'Nyisd meg a home.DOMAIN címet a böngészőben'
- 'Szerkeszd a konfigurációs fájlokat a homepage_config kötetben'
- 'Add hozzá a szolgáltatásokat a services.yaml-ban'
- 'Állítsd be a widgeteket a widgets.yaml-ban'
+44
View File
@@ -0,0 +1,44 @@
# Homepage - Személyre szabható kezdőlap szolgáltatás widgetekkel
# Domain: home.${DOMAIN}
# Database: None (file-based)
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
homepage:
image: ghcr.io/gethomepage/homepage:v1.2.0
container_name: homepage
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- homepage_config:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.homepage.rule=Host(`home.${DOMAIN}`)"
- "traefik.http.routers.homepage.entrypoints=websecure"
- "traefik.http.routers.homepage.tls=true"
- "traefik.http.routers.homepage.tls.certresolver=letsencrypt"
- "traefik.http.services.homepage.loadbalancer.server.port=3000"
volumes:
homepage_config:
networks:
traefik-public:
external: true
+24
View File
@@ -42,3 +42,27 @@ deploy_fields:
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
# --- App info (info page content) ---
app_info:
tagline: 'Google Photos alternatíva - automatikus fotó mentés és rendszerezés'
docs_url: 'https://immich.app/docs/overview/introduction'
use_cases:
- 'Fotók és videók automatikus mentése telefonról'
- 'Arc- és tárgyfelismerés gépi tanulással'
- 'Térképes megjelenítés helyszín alapján'
- 'Emlékek és visszatekintések automatikus generálása'
- 'Albumok létrehozása és megosztása családtagokkal'
first_steps:
- 'Nyisd meg a photos.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot'
- 'Telepítsd az Immich alkalmazást a telefonodra (Android/iOS)'
- 'Állítsd be az automatikus feltöltést az alkalmazásban'
- 'Hívd meg a családtagokat külön fiókokkal'
prerequisites:
- 'Külső HDD szükséges a fotók és videók tárolásához'
- 'Legalább 4 GB szabad RAM ajánlott (gépi tanulás funkciókhoz)'
- 'x86 processzor szükséges (nem fut Raspberry Pi-n)'
+57
View File
@@ -0,0 +1,57 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Jellyfin"
description: "Ingyenes és nyílt forráskódú média szerver"
category: "media"
subdomain: "media"
slug: "jellyfin"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "512M"
mem_limit: "2048M"
pi_compatible: false
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Médiatár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja, ahol a filmek, sorozatok és zenék tárolódnak"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Ingyenes média szerver - filmek, sorozatok és zene streamelése"
docs_url: "https://jellyfin.org/docs/"
use_cases:
- 'Filmek, sorozatok és zenék streamelése bármilyen eszközre'
- 'Automatikus metaadat letöltés - borítók, leírások, értékelések'
- 'Élő TV és DVR funkció TV tunerrel'
- 'Több felhasználó külön profillal és szülői felügyelettel'
- 'Mobil és TV alkalmazások (Android, iOS, Roku, Fire TV, stb.)'
first_steps:
- 'Nyisd meg a media.DOMAIN címet a böngészőben'
- 'Kövesd a beállítás varázslót - válaszd a magyar nyelvet'
- 'Hozd létre az admin fiókot'
- 'Add hozzá a médiatárat (filmek: /media/movies, sorozatok: /media/shows)'
- 'Telepítsd a Jellyfin alkalmazást a telefonodra vagy TV-dre'
prerequisites:
- 'Külső HDD szükséges a médiafájlok tárolásához'
- 'Legalább 2 GB szabad RAM ajánlott'
- 'Filmek és sorozatok mappákba rendezve (pl. /media/movies/, /media/shows/)'
+47
View File
@@ -0,0 +1,47 @@
# Jellyfin - Ingyenes és nyílt forráskódú média szerver
# Domain: media.${DOMAIN}
# Database: None (file-based)
# RAM: ~512M (mem_limit: 2048M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - Médiatár útvonal
services:
jellyfin:
image: jellyfin/jellyfin:10.11.6
container_name: jellyfin
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- jellyfin_config:/config
- jellyfin_cache:/cache
- ${HDD_PATH}/media:/media:ro
networks:
- traefik-public
deploy:
resources:
limits:
memory: 2048M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8096/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyfin.rule=Host(`media.${DOMAIN}`)"
- "traefik.http.routers.jellyfin.entrypoints=websecure"
- "traefik.http.routers.jellyfin.tls=true"
- "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
volumes:
jellyfin_cache:
jellyfin_config:
networks:
traefik-public:
external: true
+62
View File
@@ -0,0 +1,62 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Kimai"
description: "Időkövetés és projektmenedzsment"
category: "productivity"
subdomain: "time"
slug: "kimai"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
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: ADMIN_EMAIL
label: "Admin email"
type: text
default: "admin@example.com"
- env_var: ADMIN_PASSWORD
label: "Admin jelszó"
type: secret
generate: "password:16"
locked_after_deploy: false
# --- App info (info page content) ---
app_info:
tagline: "Időkövetés - projektek, ügyfelek és munkaidő nyilvántartás"
default_creds: "(telepítéskor megadott admin email és jelszó)"
docs_url: "https://www.kimai.org/documentation/"
use_cases:
- 'Munkaidő nyilvántartás projektekre és ügyfelekre bontva'
- 'Stopper-szerű időmérés egy kattintással'
- 'Riportok és exportálás (PDF, CSV, Excel)'
- 'Költségek és számlázás nyilvántartás'
- 'Több felhasználó csapat szintű jogosultságokkal'
first_steps:
- 'Nyisd meg a time.DOMAIN címet a böngészőben'
- 'Jelentkezz be a telepítéskor megadott admin adatokkal'
- 'Hozd létre az első ügyfelet és projektet'
- 'Indítsd el az időmérést'
+80
View File
@@ -0,0 +1,80 @@
# Kimai - Időkövetés és projektmenedzsment
# Domain: time.${DOMAIN}
# Database: mariadb
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
# ADMIN_EMAIL - Admin email
# ADMIN_PASSWORD - Admin jelszó (auto-generated)
services:
kimai:
image: kimai/kimai2:apache-2.25.0
container_name: kimai
restart: unless-stopped
depends_on:
kimai-db:
condition: service_healthy
environment:
- TZ=Europe/Budapest
- DATABASE_URL=mysql://kimai:${DB_PASSWORD}@kimai-db:3306/kimai?charset=utf8mb4&serverVersion=11.6.2-MariaDB
- ADMINMAIL=${ADMIN_EMAIL:-admin@example.com}
- ADMINPASS=${ADMIN_PASSWORD}
volumes:
- kimai_var:/opt/kimai/var
networks:
- traefik-public
- kimai-internal
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8001"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.kimai.rule=Host(`time.${DOMAIN}`)"
- "traefik.http.routers.kimai.entrypoints=websecure"
- "traefik.http.routers.kimai.tls=true"
- "traefik.http.routers.kimai.tls.certresolver=letsencrypt"
- "traefik.http.services.kimai.loadbalancer.server.port=8001"
kimai-db:
image: mariadb:11.6
container_name: kimai-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MYSQL_DATABASE=kimai
- MYSQL_USER=kimai
- MYSQL_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Budapest
volumes:
- kimai_db_data:/var/lib/mysql
networks:
- kimai-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
kimai_db_data:
kimai_var:
networks:
traefik-public:
external: true
kimai-internal:
+56
View File
@@ -0,0 +1,56 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Komga"
description: "Képregény és manga szerver OPDS támogatással"
category: "media"
subdomain: "comics"
slug: "komga"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "200M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Képregénytár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Képregény, manga és könyv szerver webes olvasóval"
docs_url: "https://komga.org/docs/"
use_cases:
- 'Képregények és mangák rendszerezése és olvasása böngészőben'
- 'Automatikus metaadat szkennelés és borítókép generálás'
- 'OPDS feed kompatibilis olvasó alkalmazásokhoz'
- 'Olvasási haladás szinkronizálás eszközök között'
- 'Több felhasználó külön könyvtárral'
first_steps:
- 'Nyisd meg a comics.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot az első megnyitáskor'
- 'Add hozzá a könyvtárat (/data)'
- 'Várd meg az automatikus szkennelést'
- 'Használj OPDS-kompatibilis alkalmazást mobilon (pl. Tachiyomi)'
prerequisites:
- 'Külső HDD szükséges a képregények tárolásához'
- 'Támogatott formátumok: CBZ, CBR, PDF, EPUB'
+45
View File
@@ -0,0 +1,45 @@
# Komga - Képregény és manga szerver OPDS támogatással
# Domain: comics.${DOMAIN}
# Database: None (file-based)
# RAM: ~200M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - Képregénytár útvonal
services:
komga:
image: gotson/komga:1.20.0
container_name: komga
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- komga_config:/config
- ${HDD_PATH}/media/comics:/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:25600/api/v1/actuator/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.komga.rule=Host(`comics.${DOMAIN}`)"
- "traefik.http.routers.komga.entrypoints=websecure"
- "traefik.http.routers.komga.tls=true"
- "traefik.http.routers.komga.tls.certresolver=letsencrypt"
- "traefik.http.services.komga.loadbalancer.server.port=25600"
volumes:
komga_config:
networks:
traefik-public:
external: true
+20
View File
@@ -28,3 +28,23 @@ deploy_fields:
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: 'Receptkezelő és étkezés tervező a családnak'
default_creds: 'changeme@example.com / MyPassword'
docs_url: 'https://docs.mealie.io/'
use_cases:
- 'Receptek gyűjtése és rendszerezése kategóriák és címkék szerint'
- 'Receptek importálása weboldalakról automatikusan'
- 'Heti étkezés tervezés és bevásárlólista generálás'
- 'Receptek megosztása családtagokkal és barátokkal'
- 'Többnyelvű felület - magyar is elérhető'
first_steps:
- 'Nyisd meg a mealie.DOMAIN címet a böngészőben'
- 'Jelentkezz be: changeme@example.com / MyPassword'
- 'Változtasd meg azonnal az email címet és jelszót'
- 'Importáld az első receptet egy weboldal URL beillesztésével'
- 'Próbáld ki az étkezés tervezőt'
+52
View File
@@ -0,0 +1,52 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "n8n"
description: "Workflow automatizálás vizuális szerkesztővel"
category: "productivity"
subdomain: "auto"
slug: "n8n"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "150M"
mem_limit: "512M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: N8N_ENCRYPTION_KEY
label: "Titkosítási kulcs"
type: secret
generate: "hex:16"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Vizuális workflow automatizálás - Zapier/IFTTT alternatíva"
docs_url: "https://docs.n8n.io/"
use_cases:
- 'Alkalmazások összekapcsolása vizuális workflow szerkesztővel'
- 'Automatizálás: email, Telegram, webhook, fájl feldolgozás'
- '400+ integráció (Google, Slack, Notion, GitHub, stb.)'
- 'Időzített feladatok (cron) és webhook triggerek'
- 'AI munkafolyamatok LLM integrációval'
first_steps:
- 'Nyisd meg az auto.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot'
- 'Próbálj ki egy sablon workflow-t a Template galériából'
- 'Hozd létre az első saját munkafolyamatot'
prerequisites:
- 'x86 processzor szükséges'
+48
View File
@@ -0,0 +1,48 @@
# n8n - Workflow automatizálás vizuális szerkesztővel
# Domain: auto.${DOMAIN}
# Database: None (file-based)
# RAM: ~150M (mem_limit: 512M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# N8N_ENCRYPTION_KEY- Titkosítási kulcs (auto-generated)
services:
n8n:
image: n8nio/n8n:1.79.3
container_name: n8n
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- N8N_HOST=auto.${DOMAIN}
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://auto.${DOMAIN}/
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
volumes:
- n8n_data:/home/node/.n8n
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:5678/healthz"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n.rule=Host(`auto.${DOMAIN}`)"
- "traefik.http.routers.n8n.entrypoints=websecure"
- "traefik.http.routers.n8n.tls=true"
- "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
volumes:
n8n_data:
networks:
traefik-public:
external: true
+56
View File
@@ -0,0 +1,56 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Navidrome"
description: "Könnyű zene szerver Subsonic API támogatással"
category: "media"
subdomain: "music"
slug: "navidrome"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Zenegyűjtemény útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja, ahol a zenefájlok tárolódnak"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Könnyű zene szerver - streameld a saját zenegyűjteményedet"
docs_url: "https://www.navidrome.org/docs/"
use_cases:
- 'Saját zenegyűjtemény streamelése bármilyen eszközről'
- 'Subsonic API kompatibilis mobil alkalmazások használata'
- 'Lejátszási listák, kedvencek és értékelések kezelése'
- 'Automatikus metaadat és borítókép letöltés'
- 'Több felhasználó külön könyvtárral és beállításokkal'
first_steps:
- 'Nyisd meg a music.DOMAIN címet a böngészőben'
- 'Az első felhasználó automatikusan admin lesz'
- 'Hozd létre a fiókodat és várd meg az első szkennelést'
- 'Telepíts Subsonic-kompatibilis alkalmazást (pl. Subtracks, play:Sub)'
- 'Add meg a szerver címet: https://music.DOMAIN'
prerequisites:
- 'Külső HDD szükséges a zenefájlok tárolásához'
- 'Zenefájlok mappákba rendezve (pl. Előadó/Album/szám.flac)'
+48
View File
@@ -0,0 +1,48 @@
# Navidrome - Könnyű zene szerver Subsonic API támogatással
# Domain: music.${DOMAIN}
# Database: None (file-based)
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - Zenegyűjtemény útvonal
services:
navidrome:
image: deluan/navidrome:0.54.5
container_name: navidrome
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- ND_SCANSCHEDULE=1h
- ND_LOGLEVEL=info
- ND_BASEURL=
volumes:
- navidrome_data:/data
- ${HDD_PATH}/media/music:/music:ro
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:4533/ping"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.navidrome.rule=Host(`music.${DOMAIN}`)"
- "traefik.http.routers.navidrome.entrypoints=websecure"
- "traefik.http.routers.navidrome.tls=true"
- "traefik.http.routers.navidrome.tls.certresolver=letsencrypt"
- "traefik.http.services.navidrome.loadbalancer.server.port=4533"
volumes:
navidrome_data:
networks:
traefik-public:
external: true
+82
View File
@@ -0,0 +1,82 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Nextcloud"
description: "Saját felhő tárhely - Google Drive/Dropbox alternatíva"
category: "files"
subdomain: "cloud"
slug: "nextcloud"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "256M"
mem_limit: "1024M"
pi_compatible: false
needs_hdd: true
# --- Deploy fields (first deployment only) ---
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: NEXTCLOUD_ADMIN_USER
label: "Admin felhasználónév"
type: text
default: "admin"
locked_after_deploy: true
- env_var: NEXTCLOUD_ADMIN_PASSWORD
label: "Admin jelszó"
type: secret
generate: "password:16"
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"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "A saját Google Drive-od - fájlok, naptár, névjegyek egy helyen"
default_creds: "Az admin fiók adatait a telepítéskor adod meg"
docs_url: "https://docs.nextcloud.com/server/latest/user_manual/"
use_cases:
- 'Fájlok szinkronizálása és megosztása eszközök között'
- 'Naptár és névjegyek szinkronizálás (CalDAV/CardDAV)'
- 'Dokumentumok közös szerkesztése (OnlyOffice integrációval)'
- 'Fotó és videó automatikus feltöltés telefonról'
- 'Alkalmazásbolt - kibővíthető funkciók (Notes, Tasks, Forms, stb.)'
first_steps:
- 'Nyisd meg a cloud.DOMAIN címet a böngészőben'
- 'Jelentkezz be a telepítéskor megadott admin fiókkal'
- 'Telepítsd a Nextcloud asztali alkalmazást a számítógépedre'
- 'Telepítsd a Nextcloud mobil alkalmazást a telefonodra'
- 'Hívd meg a családtagokat felhasználói fiókok létrehozásával'
prerequisites:
- 'Külső HDD szükséges a fájlok tárolásához'
- 'Legalább 1 GB szabad RAM (Nextcloud + MariaDB + Redis)'
- 'x86 processzor ajánlott a legjobb teljesítményhez'
+118
View File
@@ -0,0 +1,118 @@
# Nextcloud - Saját felhő tárhely - Google Drive/Dropbox alternatíva
# Domain: cloud.${DOMAIN}
# Database: mariadb
# RAM: ~256M (mem_limit: 1024M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
# MYSQL_ROOT_PASSWORD- MariaDB root jelszó (auto-generated)
# NEXTCLOUD_ADMIN_USER- Admin felhasználónév
# NEXTCLOUD_ADMIN_PASSWORD- Admin jelszó (auto-generated)
# HDD_PATH - Adattárolási útvonal
services:
nextcloud:
image: nextcloud:31.0.14-apache
container_name: nextcloud
restart: unless-stopped
depends_on:
nextcloud-db:
condition: service_healthy
nextcloud-redis:
condition: service_healthy
environment:
- TZ=Europe/Budapest
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${DB_PASSWORD}
- MYSQL_HOST=nextcloud-db
- NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER:-admin}
- NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
- NEXTCLOUD_TRUSTED_DOMAINS=cloud.${DOMAIN}
- OVERWRITEPROTOCOL=https
- OVERWRITEHOST=cloud.${DOMAIN}
- REDIS_HOST=nextcloud-redis
volumes:
- nextcloud_html:/var/www/html
- ${HDD_PATH}/storage/nextcloud:/var/www/html/data
networks:
- traefik-public
- nextcloud-internal
deploy:
resources:
limits:
memory: 1024M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/status.php"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`cloud.${DOMAIN}`)"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls=true"
- "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.regex=/.well-known/(card|cal)dav"
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.replacement=/remote.php/dav/"
- "traefik.http.routers.nextcloud.middlewares=nextcloud-redirect"
nextcloud-db:
image: mariadb:11.6
container_name: nextcloud-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Budapest
volumes:
- nextcloud_db_data:/var/lib/mysql
networks:
- nextcloud-internal
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
nextcloud-redis:
image: redis:7-alpine
container_name: nextcloud-redis
restart: unless-stopped
command: redis-server --appendonly yes
environment:
- TZ=Europe/Budapest
volumes:
- nextcloud_redis_data:/data
networks:
- nextcloud-internal
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
nextcloud_db_data:
nextcloud_html:
nextcloud_redis_data:
networks:
traefik-public:
external: true
nextcloud-internal:
+55
View File
@@ -0,0 +1,55 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "OnlyOffice"
description: "Teljes értékű irodai csomag a böngészőben"
category: "productivity"
subdomain: "office"
slug: "onlyoffice"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "512M"
mem_limit: "2048M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: JWT_SECRET
label: "JWT titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Teljes értékű irodai csomag - Word, Excel, PowerPoint a böngészőben"
docs_url: "https://helpcenter.onlyoffice.com/"
use_cases:
- 'Dokumentumok, táblázatok és prezentációk szerkesztése böngészőben'
- 'Valós idejű közös szerkesztés több felhasználóval'
- 'Microsoft Office formátumok teljes kompatibilitása (docx, xlsx, pptx)'
- 'Nextcloud és egyéb felhő tárhely integrációk'
- 'PDF konvertálás és kitöltés'
first_steps:
- 'Nyisd meg az office.DOMAIN címet a böngészőben'
- 'Várj amíg az inicializálás befejeződik (1-2 perc)'
- 'A Document Server önmagában API-ként működik'
- 'Integráld Nextcloud-dal vagy más alkalmazással a JWT tokennel'
- 'Nextcloudban: telepítsd az OnlyOffice alkalmazást és add meg az URL-t'
prerequisites:
- 'Legalább 2 GB szabad RAM szükséges'
- 'x86 processzor szükséges (nem fut Raspberry Pi-n)'
- 'Nextcloud vagy más kompatibilis alkalmazás ajánlott az integrációhoz'
+47
View File
@@ -0,0 +1,47 @@
# OnlyOffice - Teljes értékű irodai csomag a böngészőben
# Domain: office.${DOMAIN}
# Database: None (file-based)
# RAM: ~512M (mem_limit: 2048M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# JWT_SECRET - JWT titkosítási kulcs (auto-generated)
services:
onlyoffice:
image: onlyoffice/documentserver:8.3.0
container_name: onlyoffice
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- JWT_SECRET=${JWT_SECRET}
volumes:
- onlyoffice_data:/var/www/onlyoffice/Data
- onlyoffice_logs:/var/log/onlyoffice
networks:
- traefik-public
deploy:
resources:
limits:
memory: 2048M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/healthcheck"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.onlyoffice.rule=Host(`office.${DOMAIN}`)"
- "traefik.http.routers.onlyoffice.entrypoints=websecure"
- "traefik.http.routers.onlyoffice.tls=true"
- "traefik.http.routers.onlyoffice.tls.certresolver=letsencrypt"
- "traefik.http.services.onlyoffice.loadbalancer.server.port=80"
volumes:
onlyoffice_data:
onlyoffice_logs:
networks:
traefik-public:
external: true
+44
View File
@@ -0,0 +1,44 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "OpenGist"
description: "Kód snippetek megosztása (GitHub Gist alternatíva)"
category: "dev"
subdomain: "gist"
slug: "opengist"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "30M"
mem_limit: "128M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Kód snippetek megosztása - privát GitHub Gist alternatíva"
docs_url: "https://github.com/thomiceli/opengist"
use_cases:
- 'Kód snippetek és szövegek megosztása'
- 'Szintaxis kiemelés sok programozási nyelvhez'
- 'Privát és nyilvános gistek'
- 'Git-alapú tárolás - verziókezelés automatikusan'
- 'Markdown támogatás és beágyazás'
first_steps:
- 'Nyisd meg a gist.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat (az első felhasználó admin lesz)'
- 'Hozd létre az első gistet - írd be a kódot és mentsd'
- 'Oszd meg a linket'
+44
View File
@@ -0,0 +1,44 @@
# OpenGist - Kód snippetek megosztása (GitHub Gist alternatíva)
# Domain: gist.${DOMAIN}
# Database: None (file-based)
# RAM: ~30M (mem_limit: 128M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
opengist:
image: ghcr.io/thomiceli/opengist:1.10
container_name: opengist
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- OG_EXTERNAL_URL=https://gist.${DOMAIN}
volumes:
- opengist_data:/opengist
networks:
- traefik-public
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:6157/healthcheck"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.opengist.rule=Host(`gist.${DOMAIN}`)"
- "traefik.http.routers.opengist.entrypoints=websecure"
- "traefik.http.routers.opengist.tls=true"
- "traefik.http.routers.opengist.tls.certresolver=letsencrypt"
- "traefik.http.services.opengist.loadbalancer.server.port=6157"
volumes:
opengist_data:
networks:
traefik-public:
external: true
+66
View File
@@ -0,0 +1,66 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Outline"
description: "Modern csapat tudásbázis Markdown támogatással"
category: "productivity"
subdomain: "kb"
slug: "outline"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "200M"
mem_limit: "768M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: SECRET_KEY
label: "Titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
- env_var: UTILS_SECRET
label: "Segédprogram 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
# --- App info (info page content) ---
app_info:
tagline: "Modern tudásbázis - Markdown, valós idejű együttműködés, keresés"
docs_url: "https://docs.getoutline.com/"
use_cases:
- 'Csapat tudásbázis és dokumentáció'
- 'Markdown szerkesztő valós idejű együttműködéssel'
- 'Strukturált dokumentumok fa-szerkezetben'
- 'Teljes szöveges keresés és hivatkozások'
- 'API és integrációk (Slack, webhookok)'
first_steps:
- 'Nyisd meg a kb.DOMAIN címet a böngészőben'
- 'Hozd létre az első felhasználót'
- 'Hozz létre egy gyűjteményt (Collection) a dokumentumoknak'
- 'Kezdj el írni Markdown-ban'
- 'Hívd meg a csapattagokat'
prerequisites:
- 'x86 processzor szükséges'
- 'Legalább 1 GB szabad RAM (Outline + PostgreSQL + Redis)'
+108
View File
@@ -0,0 +1,108 @@
# Outline - Modern csapat tudásbázis Markdown támogatással
# Domain: kb.${DOMAIN}
# Database: postgres
# RAM: ~200M (mem_limit: 768M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# SECRET_KEY - Titkosítási kulcs (auto-generated)
# UTILS_SECRET - Segédprogram kulcs (auto-generated)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
outline:
image: outlinewiki/outline:0.82.0
container_name: outline
restart: unless-stopped
depends_on:
outline-postgres:
condition: service_healthy
outline-redis:
condition: service_healthy
environment:
- NODE_ENV=production
- SECRET_KEY=${SECRET_KEY}
- UTILS_SECRET=${UTILS_SECRET}
- DATABASE_URL=postgres://outline:${DB_PASSWORD}@outline-postgres:5432/outline
- REDIS_URL=redis://outline-redis:6379
- URL=https://kb.${DOMAIN}
- PORT=3000
- FILE_STORAGE=local
- FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
volumes:
- outline_data:/var/lib/outline/data
networks:
- traefik-public
- outline-internal
deploy:
resources:
limits:
memory: 768M
healthcheck:
test: ["CMD", "node", "-e", "const http = require('http'); http.get('http://localhost:3000/_health', (r) => { process.exit(r.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.outline.rule=Host(`kb.${DOMAIN}`)"
- "traefik.http.routers.outline.entrypoints=websecure"
- "traefik.http.routers.outline.tls=true"
- "traefik.http.routers.outline.tls.certresolver=letsencrypt"
- "traefik.http.services.outline.loadbalancer.server.port=3000"
outline-postgres:
image: postgres:16-alpine
container_name: outline-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=outline
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=outline
- TZ=Europe/Budapest
volumes:
- outline_postgres_data:/var/lib/postgresql/data
networks:
- outline-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U outline -d outline"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
outline-redis:
image: redis:7-alpine
container_name: outline-redis
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- outline_redis_data:/data
networks:
- outline-internal
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
outline_data:
outline_postgres_data:
outline_redis_data:
networks:
traefik-public:
external: true
outline-internal:
+24
View File
@@ -105,3 +105,27 @@ deploy_fields:
label: "Német + Angol"
description: "Dokumentum felismerés nyelve"
locked_after_deploy: false
# --- App info (info page content) ---
app_info:
tagline: 'Digitális irattár - szkennelés, OCR és automatikus rendszerezés'
default_creds: 'admin / admin'
docs_url: 'https://docs.paperless-ngx.com/'
use_cases:
- 'Papír dokumentumok digitalizálása és rendszerezése'
- 'Automatikus OCR szövegfelismerés szkennelt dokumentumokon'
- 'Intelligens automatikus kategorizálás és címkézés'
- 'Teljes szöveges keresés az összes dokumentumban'
- 'Email-ből érkező dokumentumok automatikus feldolgozása'
first_steps:
- 'Nyisd meg a paperless.DOMAIN címet a böngészőben'
- 'Jelentkezz be: admin / admin'
- 'Változtasd meg azonnal a jelszót'
- 'Tölts fel egy dokumentumot (PDF, kép) és várd meg az OCR feldolgozást'
- 'Hozz létre címkéket és levelezőket az automatikus rendszerezéshez'
prerequisites:
- 'Külső HDD ajánlott a dokumentumok tárolásához'
- 'Legalább 1 GB szabad RAM (OCR feldolgozáshoz)'
+42
View File
@@ -0,0 +1,42 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Papra"
description: "Minimalista dokumentumtár és rendszerező"
category: "productivity"
subdomain: "papra"
slug: "papra"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Minimalista dokumentumtár - egyszerű rendszerezés és keresés"
docs_url: "https://docs.papra.app/"
use_cases:
- 'Dokumentumok egyszerű feltöltése és rendszerezése'
- 'Gyors keresés a dokumentumok között'
- 'Minimalista felület felesleges funkciók nélkül'
- 'Könnyű alternatíva a Paperless-ngx-hez'
first_steps:
- 'Nyisd meg a papra.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat'
- 'Töltsd fel az első dokumentumot'
+44
View File
@@ -0,0 +1,44 @@
# Papra - Minimalista dokumentumtár és rendszerező
# Domain: papra.${DOMAIN}
# Database: None (file-based)
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
papra:
image: ghcr.io/papra-hq/papra:latest
container_name: papra
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- APP_BASE_URL=https://papra.${DOMAIN}
volumes:
- papra_data:/app/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:1221"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.papra.rule=Host(`papra.${DOMAIN}`)"
- "traefik.http.routers.papra.entrypoints=websecure"
- "traefik.http.routers.papra.tls=true"
- "traefik.http.routers.papra.tls.certresolver=letsencrypt"
- "traefik.http.services.papra.loadbalancer.server.port=1221"
volumes:
papra_data:
networks:
traefik-public:
external: true
+50
View File
@@ -0,0 +1,50 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Plant-it"
description: "Növénynapló és gondozás emlékeztető"
category: "home"
subdomain: "plants"
slug: "plant-it"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: JWT_SECRET
label: "JWT titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Növénynapló - emlékeztetők öntözésre, trágyázásra és fotónapló"
docs_url: "https://docs.plant-it.org/"
use_cases:
- 'Szobanövények és kerti növények nyilvántartása'
- 'Emlékeztetők öntözésre, trágyázásra, átültetésre'
- 'Fotónapló a növények fejlődéséről'
- 'Statisztikák és gondozási előzmények'
- 'Több felhasználó - a család együtt gondozhat'
first_steps:
- 'Nyisd meg a plants.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat'
- 'Add hozzá az első növényt fotóval'
- 'Állíts be gondozási emlékeztetőket'
+50
View File
@@ -0,0 +1,50 @@
# Plant-it - Növénynapló és gondozás emlékeztető
# Domain: plants.${DOMAIN}
# Database: None (file-based)
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# JWT_SECRET - JWT titkosítási kulcs (auto-generated)
services:
plant-it:
image: msdeluise/plant-it:0.10.0
container_name: plant-it
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- JWT_SECRET=${JWT_SECRET}
- USERS_LIMIT=-1
- UPLOAD_DIR=/upload-dir
- API_PORT=8080
volumes:
- plantit_data:/upload-dir
- plantit_db:/app/db
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/api/info"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.plant-it.rule=Host(`plants.${DOMAIN}`)"
- "traefik.http.routers.plant-it.entrypoints=websecure"
- "traefik.http.routers.plant-it.tls=true"
- "traefik.http.routers.plant-it.tls.certresolver=letsencrypt"
- "traefik.http.services.plant-it.loadbalancer.server.port=8080"
volumes:
plantit_data:
plantit_db:
networks:
traefik-public:
external: true
+65
View File
@@ -0,0 +1,65 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Plex"
description: "Népszerű média szerver csiszolt felülettel"
category: "media"
subdomain: "plex"
slug: "plex"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "512M"
mem_limit: "2048M"
pi_compatible: false
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: PLEX_CLAIM
label: "Plex Claim Token"
type: text
required: true
placeholder: "claim-xxxxxxxxxxxx"
description: "Generáld a https://plex.tv/claim oldalon (4 percig érvényes)"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Médiatár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Prémium média szerver kiváló alkalmazás támogatással"
docs_url: "https://support.plex.tv/"
use_cases:
- 'Filmek, sorozatok és zene streamelése professzionális felületen'
- 'Automatikus transzkódolás bármilyen eszközhöz'
- 'Watch Together - közös filmnézés távolról'
- 'Intro/outro skip funkció (Plex Pass)'
- 'Gazdag mobilalkalmazás és Smart TV támogatás'
first_steps:
- 'Generálj egy claim tokent a https://plex.tv/claim oldalon'
- 'Telepítés után nyisd meg a plex.DOMAIN címet'
- 'Kapcsold össze a Plex fiókoddat a szerverrel'
- 'Add hozzá a médiatárat (filmek: /media/movies, sorozatok: /media/shows)'
- 'Telepítsd a Plex alkalmazást eszközeidre'
prerequisites:
- 'Plex fiók szükséges (ingyenes regisztráció a plex.tv-n)'
- 'Külső HDD a médiafájlok tárolásához'
- 'Legalább 2 GB szabad RAM (transzkódoláshoz több ajánlott)'
+49
View File
@@ -0,0 +1,49 @@
# Plex - Népszerű média szerver csiszolt felülettel
# Domain: plex.${DOMAIN}
# Database: None (file-based)
# RAM: ~512M (mem_limit: 2048M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# PLEX_CLAIM - Plex Claim Token
# HDD_PATH - Médiatár útvonal
services:
plex:
image: plexinc/pms-docker:1.41.4.9463-630c9f557
container_name: plex
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- PLEX_CLAIM=${PLEX_CLAIM}
volumes:
- plex_config:/config
- plex_transcode:/transcode
- ${HDD_PATH}/media:/media:ro
networks:
- traefik-public
deploy:
resources:
limits:
memory: 2048M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:32400/identity"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.plex.rule=Host(`plex.${DOMAIN}`)"
- "traefik.http.routers.plex.entrypoints=websecure"
- "traefik.http.routers.plex.tls=true"
- "traefik.http.routers.plex.tls.certresolver=letsencrypt"
- "traefik.http.services.plex.loadbalancer.server.port=32400"
volumes:
plex_config:
plex_transcode:
networks:
traefik-public:
external: true
+43
View File
@@ -0,0 +1,43 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "PrivateBin"
description: "Titkosított jegyzet és szöveg megosztás"
category: "security"
subdomain: "paste"
slug: "privatebin"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "30M"
mem_limit: "128M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Titkosított szöveg megosztás - a szerver nem látja a tartalmat"
docs_url: "https://github.com/PrivateBin/PrivateBin/wiki"
use_cases:
- 'Érzékeny szövegek biztonságos megosztása'
- 'E2E titkosítás - a szerver nem fér hozzá a tartalomhoz'
- 'Beállítható lejárati idő (5 perc - 1 év, vagy soha)'
- 'Olvasás után automatikus törlés opció'
- 'Jelszóvédelem a még nagyobb biztonságért'
first_steps:
- 'Nyisd meg a paste.DOMAIN címet a böngészőben'
- 'Írd be a szöveget és kattints a Küldés gombra'
- 'Oszd meg a generált linket - a titkosítási kulcs az URL-ben van'
+44
View File
@@ -0,0 +1,44 @@
# PrivateBin - Titkosított jegyzet és szöveg megosztás
# Domain: paste.${DOMAIN}
# Database: None (file-based)
# RAM: ~30M (mem_limit: 128M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
privatebin:
image: privatebin/pdo:1.7.5
container_name: privatebin
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- PHP_TZ=Europe/Budapest
volumes:
- privatebin_data:/srv/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.privatebin.rule=Host(`paste.${DOMAIN}`)"
- "traefik.http.routers.privatebin.entrypoints=websecure"
- "traefik.http.routers.privatebin.tls=true"
- "traefik.http.routers.privatebin.tls.certresolver=letsencrypt"
- "traefik.http.services.privatebin.loadbalancer.server.port=8080"
volumes:
privatebin_data:
networks:
traefik-public:
external: true
+57
View File
@@ -0,0 +1,57 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Radarr"
description: "Automatikus film letöltő és rendszerező"
category: "media-automation"
subdomain: "radarr"
slug: "radarr"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "150M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Médiatár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Automatikus film letöltő és rendszerező"
docs_url: "https://wiki.servarr.com/radarr"
use_cases:
- 'Filmek automatikus letöltése és rendszerezése'
- 'Kívánságlista - filmek automatikusan a könyvtáradba kerülnek'
- 'Minőség kezelés és automatikus frissítés jobb minőségre'
- 'Integráció Jellyfin/Plex és letöltő kliensekkel'
- 'Metaadat és borítókép automatikus letöltés'
first_steps:
- 'Nyisd meg a radarr.DOMAIN címet a böngészőben'
- 'Állíts be egy letöltő klienst (pl. qBittorrent)'
- 'Add hozzá az indexereket (vagy használj Prowlarr-t)'
- 'Állítsd be a gyökérmappát (/media/movies)'
- 'Keress rá egy filmre és add hozzá a listádhoz'
prerequisites:
- 'Külső HDD szükséges a médiafájlok tárolásához'
- 'Letöltő kliens szükséges (pl. qBittorrent - külön telepítendő)'
- 'Indexer hozzáférés szükséges a kereséshez'
+48
View File
@@ -0,0 +1,48 @@
# Radarr - Automatikus film letöltő és rendszerező
# Domain: radarr.${DOMAIN}
# Database: None (file-based)
# RAM: ~150M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - Médiatár útvonal
services:
radarr:
image: lscr.io/linuxserver/radarr:5.17.2
container_name: radarr
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- PUID=1000
- PGID=1000
volumes:
- radarr_config:/config
- ${HDD_PATH}/media:/media
- ${HDD_PATH}/downloads:/downloads
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7878/ping"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.radarr.rule=Host(`radarr.${DOMAIN}`)"
- "traefik.http.routers.radarr.entrypoints=websecure"
- "traefik.http.routers.radarr.tls=true"
- "traefik.http.routers.radarr.tls.certresolver=letsencrypt"
- "traefik.http.services.radarr.loadbalancer.server.port=7878"
volumes:
radarr_config:
networks:
traefik-public:
external: true
+56
View File
@@ -0,0 +1,56 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Rallly"
description: "Időpont szavazás (Doodle alternatíva)"
category: "productivity"
subdomain: "poll"
slug: "rallly"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: SECRET_PASSWORD
label: "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
# --- App info (info page content) ---
app_info:
tagline: "Időpont szavazás - Doodle alternatíva a saját szerveren"
docs_url: "https://support.rallly.co/"
use_cases:
- 'Közös időpont egyeztetés szavazással'
- 'Találkozók, események szervezése'
- 'Résztvevők regisztráció nélkül szavazhatnak'
- 'Email értesítések és emlékeztetők'
- 'Egyszerű, tiszta felület'
first_steps:
- 'Nyisd meg a poll.DOMAIN címet a böngészőben'
- 'Hozz létre egy új szavazást'
- 'Add meg a lehetséges időpontokat'
- 'Oszd meg a linket a résztvevőkkel'
+75
View File
@@ -0,0 +1,75 @@
# Rallly - Időpont szavazás (Doodle alternatíva)
# Domain: poll.${DOMAIN}
# Database: postgres
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# SECRET_PASSWORD - Titkosítási kulcs (auto-generated)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
rallly:
image: lukevella/rallly:3.12.1
container_name: rallly
restart: unless-stopped
depends_on:
rallly-postgres:
condition: service_healthy
environment:
- TZ=Europe/Budapest
- DATABASE_URL=postgresql://rallly:${DB_PASSWORD}@rallly-postgres:5432/rallly
- SECRET_PASSWORD=${SECRET_PASSWORD}
- NEXT_PUBLIC_BASE_URL=https://poll.${DOMAIN}
networks:
- traefik-public
- rallly-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.rallly.rule=Host(`poll.${DOMAIN}`)"
- "traefik.http.routers.rallly.entrypoints=websecure"
- "traefik.http.routers.rallly.tls=true"
- "traefik.http.routers.rallly.tls.certresolver=letsencrypt"
- "traefik.http.services.rallly.loadbalancer.server.port=3000"
rallly-postgres:
image: postgres:16-alpine
container_name: rallly-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=rallly
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=rallly
- TZ=Europe/Budapest
volumes:
- rallly_postgres_data:/var/lib/postgresql/data
networks:
- rallly-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U rallly -d rallly"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
rallly_postgres_data:
networks:
traefik-public:
external: true
rallly-internal:
+48
View File
@@ -0,0 +1,48 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Jellyseerr"
description: "Média igénylés kezelő Jellyfin/Plex integrációval"
category: "media-automation"
subdomain: "requests"
slug: "seerr"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Film és sorozat igénylő a háztartás tagjai számára"
docs_url: "https://docs.overseerr.dev/"
use_cases:
- 'Családtagok filmeket és sorozatokat igényelhetnek egyszerűen'
- 'Automatikus letöltés Sonarr/Radarr integrációval'
- 'Elérhető tartalmak böngészése szép felületen'
- 'Igénylések állapotának követése'
- 'Felhasználói kvóták és jogosultságok kezelése'
first_steps:
- 'Nyisd meg a requests.DOMAIN címet a böngészőben'
- 'Kövesd a beállítás varázslót'
- 'Csatlakoztasd a Jellyfin vagy Plex szerveredet'
- 'Csatlakoztasd a Sonarr és Radarr példányokat'
- 'Hívd meg a családtagokat'
prerequisites:
- 'Jellyfin vagy Plex szerver szükséges'
- 'Sonarr és/vagy Radarr szükséges az automatikus letöltéshez'
+43
View File
@@ -0,0 +1,43 @@
# Jellyseerr - Média igénylés kezelő Jellyfin/Plex integrációval
# Domain: requests.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
seerr:
image: fallenbagel/jellyseerr:2.3.0
container_name: seerr
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- seerr_config:/app/config
networks:
- traefik-public
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:5055/api/v1/status"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.seerr.rule=Host(`requests.${DOMAIN}`)"
- "traefik.http.routers.seerr.entrypoints=websecure"
- "traefik.http.routers.seerr.tls=true"
- "traefik.http.routers.seerr.tls.certresolver=letsencrypt"
- "traefik.http.services.seerr.loadbalancer.server.port=5055"
volumes:
seerr_config:
networks:
traefik-public:
external: true
+57
View File
@@ -0,0 +1,57 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Sonarr"
description: "Automatikus sorozat letöltő és rendszerező"
category: "media-automation"
subdomain: "sonarr"
slug: "sonarr"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "150M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: true
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: HDD_PATH
label: "Médiatár útvonal"
type: path
required: true
placeholder: "/mnt/hdd_1"
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Automatikus sorozat letöltő és rendszerező"
docs_url: "https://wiki.servarr.com/sonarr"
use_cases:
- 'Sorozatok automatikus letöltése és rendszerezése'
- 'Kívánságlista kezelés - új epizódok automatikus letöltése'
- 'Minőség kezelés (480p-tól 4K-ig, automatikus frissítés)'
- 'Integráció Jellyfin/Plex és letöltő kliensekkel'
- 'Felirat automatikus letöltés'
first_steps:
- 'Nyisd meg a sonarr.DOMAIN címet a böngészőben'
- 'Állíts be egy letöltő klienst (pl. qBittorrent)'
- 'Add hozzá az indexereket (vagy használj Prowlarr-t)'
- 'Állítsd be a gyökérmappát (/media/shows)'
- 'Keress rá egy sorozatra és add hozzá a listádhoz'
prerequisites:
- 'Külső HDD szükséges a médiafájlok tárolásához'
- 'Letöltő kliens szükséges (pl. qBittorrent - külön telepítendő)'
- 'Indexer hozzáférés szükséges a kereséshez'
+48
View File
@@ -0,0 +1,48 @@
# Sonarr - Automatikus sorozat letöltő és rendszerező
# Domain: sonarr.${DOMAIN}
# Database: None (file-based)
# RAM: ~150M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# HDD_PATH - Médiatár útvonal
services:
sonarr:
image: lscr.io/linuxserver/sonarr:4.0.13
container_name: sonarr
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- PUID=1000
- PGID=1000
volumes:
- sonarr_config:/config
- ${HDD_PATH}/media:/media
- ${HDD_PATH}/downloads:/downloads
networks:
- traefik-public
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8989/ping"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.sonarr.rule=Host(`sonarr.${DOMAIN}`)"
- "traefik.http.routers.sonarr.entrypoints=websecure"
- "traefik.http.routers.sonarr.tls=true"
- "traefik.http.routers.sonarr.tls.certresolver=letsencrypt"
- "traefik.http.services.sonarr.loadbalancer.server.port=8989"
volumes:
sonarr_config:
networks:
traefik-public:
external: true
-30
View File
@@ -1,30 +0,0 @@
# =============================================================================
# .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
-52
View File
@@ -1,52 +0,0 @@
# Stirling-PDF - PDF Manipulation Toolkit
# Domain: pdf.${DOMAIN}
# Database: None
# RAM: ~200MB (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
#
# First-time setup:
# No login by default — accessible immediately.
# Enable login via env vars if exposing externally.
services:
stirling-pdf:
image: stirlingtools/stirling-pdf:0.45.1
container_name: stirling-pdf
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- DOCKER_ENABLE_SECURITY=false
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
- LANGS=en_GB
volumes:
- stirling_data:/configs
- 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
timeout: 5s
retries: 3
start_period: 20s
labels:
- "traefik.enable=true"
- "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"
- "traefik.http.services.stirling-pdf.loadbalancer.server.port=8080"
volumes:
stirling_data:
stirling_training:
networks:
traefik-public:
external: true
+57
View File
@@ -0,0 +1,57 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Tandoor Recipes"
description: "Receptkezelő és étkezés tervező"
category: "home"
subdomain: "recipes"
slug: "tandoor"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "150M"
mem_limit: "512M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: SECRET_KEY
label: "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
# --- App info (info page content) ---
app_info:
tagline: "Receptkezelő és étkezés tervező a családnak"
docs_url: "https://docs.tandoor.dev/"
use_cases:
- 'Receptek gyűjtése és rendszerezése egy helyen'
- 'Receptek importálása weboldalakról egy kattintással'
- 'Heti étkezés tervezés és bevásárlólista generálás'
- 'Több felhasználó - a család együtt tervezhet'
- 'Receptek megosztása linkkel családtagokkal, barátokkal'
first_steps:
- 'Nyisd meg a recipes.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot'
- 'Importáld az első receptet egy weboldalról (Bookmarklet)'
- 'Próbáld ki az étkezés tervezőt'
- 'Hívd meg a családtagokat'
+84
View File
@@ -0,0 +1,84 @@
# Tandoor Recipes - Receptkezelő és étkezés tervező
# Domain: recipes.${DOMAIN}
# Database: postgres
# RAM: ~150M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# SECRET_KEY - Titkosítási kulcs (auto-generated)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
tandoor:
image: ghcr.io/tandoorrecipes/recipes:1.5.26
container_name: tandoor
restart: unless-stopped
depends_on:
tandoor-postgres:
condition: service_healthy
environment:
- SECRET_KEY=${SECRET_KEY}
- DB_ENGINE=django.db.backends.postgresql
- POSTGRES_HOST=tandoor-postgres
- POSTGRES_PORT=5432
- POSTGRES_USER=tandoor
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=tandoor
- TZ=Europe/Budapest
volumes:
- tandoor_static:/opt/recipes/staticfiles
- tandoor_media:/opt/recipes/mediafiles
networks:
- traefik-public
- tandoor-internal
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/accounts/login/"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.tandoor.rule=Host(`recipes.${DOMAIN}`)"
- "traefik.http.routers.tandoor.entrypoints=websecure"
- "traefik.http.routers.tandoor.tls=true"
- "traefik.http.routers.tandoor.tls.certresolver=letsencrypt"
- "traefik.http.services.tandoor.loadbalancer.server.port=8080"
tandoor-postgres:
image: postgres:16-alpine
container_name: tandoor-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=tandoor
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=tandoor
- TZ=Europe/Budapest
volumes:
- tandoor_postgres_data:/var/lib/postgresql/data
networks:
- tandoor-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U tandoor -d tandoor"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
tandoor_media:
tandoor_postgres_data:
tandoor_static:
networks:
traefik-public:
external: true
tandoor-internal:
+40
View File
@@ -0,0 +1,40 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Termix"
description: "Webes SSH és szerver menedzser"
category: "dev"
subdomain: "terminal"
slug: "termix"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "30M"
mem_limit: "128M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Webes SSH terminál - szerver hozzáférés a böngészőből"
docs_url: "https://github.com/Termix-SSH/Termix"
use_cases:
- 'SSH hozzáférés a szerveredhez böngészőből'
- 'Nincs szükség SSH kliensre a számítógépen'
- 'Alapvető szerver menedzsment feladatok bárhonnan'
first_steps:
- 'Nyisd meg a terminal.DOMAIN címet a böngészőben'
- 'Csatlakozz a szerveredhez SSH-n keresztül'
+44
View File
@@ -0,0 +1,44 @@
# Termix - Webes SSH és szerver menedzser
# Domain: terminal.${DOMAIN}
# Database: None (file-based)
# RAM: ~30M (mem_limit: 128M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
termix:
image: ghcr.io/lukegus/termix:latest
container_name: termix
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- PORT=8080
volumes:
- termix_data:/app/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.termix.rule=Host(`terminal.${DOMAIN}`)"
- "traefik.http.routers.termix.entrypoints=websecure"
- "traefik.http.routers.termix.tls=true"
- "traefik.http.routers.termix.tls.certresolver=letsencrypt"
- "traefik.http.services.termix.loadbalancer.server.port=8080"
volumes:
termix_data:
networks:
traefik-public:
external: true
+45
View File
@@ -0,0 +1,45 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Uptime Kuma"
description: "Szolgáltatás és weboldal monitoring"
category: "dashboard"
subdomain: "status"
slug: "uptime-kuma"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Szolgáltatás monitoring - értesítés ha valami nem működik"
docs_url: "https://github.com/louislam/uptime-kuma/wiki"
use_cases:
- 'Weboldalak és szolgáltatások elérhetőségének figyelése'
- 'HTTP, TCP, DNS, ping és egyéb protokollok támogatása'
- 'Értesítések emailben, Telegramon, Discord-on, stb.'
- 'Nyilvános státusz oldal a felhasználóknak'
- 'Szép grafikonok a rendelkezésre állásról'
first_steps:
- 'Nyisd meg a status.DOMAIN címet a böngészőben'
- 'Hozd létre az admin fiókot az első megnyitáskor'
- 'Add hozzá az első monitort (pl. a saját weboldalad)'
- 'Állíts be értesítéseket (email, Telegram, stb.)'
- 'Opcionálisan: hozz létre egy nyilvános státusz oldalt'
+43
View File
@@ -0,0 +1,43 @@
# Uptime Kuma - Szolgáltatás és weboldal monitoring
# Domain: status.${DOMAIN}
# Database: None (file-based)
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- uptime_kuma_data:/app/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "node", "/app/extra/healthcheck.mjs"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.uptime-kuma.rule=Host(`status.${DOMAIN}`)"
- "traefik.http.routers.uptime-kuma.entrypoints=websecure"
- "traefik.http.routers.uptime-kuma.tls=true"
- "traefik.http.routers.uptime-kuma.tls.certresolver=letsencrypt"
- "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001"
volumes:
uptime_kuma_data:
networks:
traefik-public:
external: true
+20
View File
@@ -47,3 +47,23 @@ deploy_fields:
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
# --- App info (info page content) ---
app_info:
tagline: 'Jelszókezelő - Bitwarden kompatibilis, a saját szerveren'
docs_url: 'https://github.com/dani-garcia/vaultwarden/wiki'
use_cases:
- 'Jelszavak biztonságos tárolása és automatikus kitöltése'
- 'Bitwarden kliensek teljes kompatibilitása (böngésző, mobil, asztali)'
- 'Jelszavak megosztása családtagokkal szervezeten belül'
- 'Kétfaktoros hitelesítés (TOTP) kódok tárolása'
- 'Biztonságos jegyzetek és bankkártya adatok tárolása'
first_steps:
- 'Nyisd meg a vault.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat erős mesterjelszóval'
- 'Telepítsd a Bitwarden bővítményt a böngésződbe'
- 'Telepítsd a Bitwarden alkalmazást a telefonodra'
- 'Importáld a meglévő jelszavaidat (Chrome, Firefox, LastPass, stb.)'
+51
View File
@@ -0,0 +1,51 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Vikunja"
description: "Feladatkezelő listák és táblák (Todoist/Trello alternatíva)"
category: "productivity"
subdomain: "tasks"
slug: "vikunja"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "50M"
mem_limit: "256M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: VIKUNJA_SERVICE_JWTSECRET
label: "JWT titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Feladatkezelő - listák, Kanban táblák és Gantt diagramok"
docs_url: "https://vikunja.io/docs/"
use_cases:
- 'Feladatlisták és teendők kezelése'
- 'Kanban tábla nézet (Trello-szerű)'
- 'Gantt diagram projekt ütemezéshez'
- 'Megosztott listák és csapat együttműködés'
- 'Emlékeztetők, lejárati dátumok, címkék és prioritások'
first_steps:
- 'Nyisd meg a tasks.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat'
- 'Hozd létre az első projektet és feladatlistát'
- 'Próbáld ki a Kanban és Lista nézeteket'
- 'Hívd meg a családtagokat vagy kollégákat'
+48
View File
@@ -0,0 +1,48 @@
# Vikunja - Feladatkezelő listák és táblák (Todoist/Trello alternatíva)
# Domain: tasks.${DOMAIN}
# Database: None (file-based)
# RAM: ~50M (mem_limit: 256M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# VIKUNJA_SERVICE_JWTSECRET- JWT titkosítási kulcs (auto-generated)
services:
vikunja:
image: vikunja/vikunja:0.24.6
container_name: vikunja
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- VIKUNJA_SERVICE_PUBLICURL=https://tasks.${DOMAIN}
- VIKUNJA_SERVICE_JWTSECRET=${VIKUNJA_SERVICE_JWTSECRET}
volumes:
- vikunja_data:/app/vikunja/files
- vikunja_db:/db
networks:
- traefik-public
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3456/api/v1/info"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.vikunja.rule=Host(`tasks.${DOMAIN}`)"
- "traefik.http.routers.vikunja.entrypoints=websecure"
- "traefik.http.routers.vikunja.tls=true"
- "traefik.http.routers.vikunja.tls.certresolver=letsencrypt"
- "traefik.http.services.vikunja.loadbalancer.server.port=3456"
volumes:
vikunja_data:
vikunja_db:
networks:
traefik-public:
external: true
+50
View File
@@ -0,0 +1,50 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Wanderer"
description: "Túra tervező és nyomkövetéssel"
category: "travel"
subdomain: "hike"
slug: "wanderer"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: MEILI_MASTER_KEY
label: "Keresőmotor kulcs"
type: secret
generate: "hex:16"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Túra tervező - útvonalak, GPX nyomok és domborzati térképek"
docs_url: "https://github.com/Flomp/wanderer"
use_cases:
- 'Túra útvonalak tervezése és mentése'
- 'GPX fájlok importálása és exportálása'
- 'Domborzati profilok és statisztikák'
- 'Fotók és jegyzetek hozzáadása az útvonalakhoz'
- 'Útvonalak megosztása másokkal'
first_steps:
- 'Nyisd meg a hike.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat'
- 'Importálj egy GPX fájlt vagy tervezz új útvonalat'
- 'Fedezd fel a térképes megjelenítést'
+75
View File
@@ -0,0 +1,75 @@
# Wanderer - Túra tervező és nyomkövetéssel
# Domain: hike.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# MEILI_MASTER_KEY- Keresőmotor kulcs (auto-generated)
services:
wanderer:
image: ghcr.io/flomp/wanderer:0.16.0
container_name: wanderer
restart: unless-stopped
depends_on:
wanderer-search:
condition: service_healthy
environment:
- TZ=Europe/Budapest
- MEILI_URL=http://wanderer-search:7700
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
- ORIGIN=https://hike.${DOMAIN}
volumes:
- wanderer_data:/app/pb_data
networks:
- traefik-public
- wanderer-internal
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.wanderer.rule=Host(`hike.${DOMAIN}`)"
- "traefik.http.routers.wanderer.entrypoints=websecure"
- "traefik.http.routers.wanderer.tls=true"
- "traefik.http.routers.wanderer.tls.certresolver=letsencrypt"
- "traefik.http.services.wanderer.loadbalancer.server.port=3000"
wanderer-search:
image: getmeili/meilisearch:v1.12
container_name: wanderer-search
restart: unless-stopped
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
- MEILI_NO_ANALYTICS=true
volumes:
- wanderer_meili_data:/meili_data
networks:
- wanderer-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:7700/health"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
wanderer_data:
wanderer_meili_data:
networks:
traefik-public:
external: true
wanderer-internal:
+52
View File
@@ -0,0 +1,52 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "wger"
description: "Edzésnapló és fitnesz tervező"
category: "home"
subdomain: "fitness"
slug: "wger"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "384M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: SECRET_KEY
label: "Titkosítási kulcs"
type: secret
generate: "hex:32"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Edzésnapló - edzéstervek, haladás követés és testsúly napló"
default_creds: "admin / adminadmin"
docs_url: "https://wger.readthedocs.io/"
use_cases:
- 'Edzéstervek létrehozása és követése'
- 'Testsúly és testméretek nyilvántartása grafikonokkal'
- 'Gyakorlatok adatbázisa képekkel és leírásokkal'
- 'Kalória és tápanyag követés'
- 'API támogatás fitnesz alkalmazás integrációkhoz'
first_steps:
- 'Nyisd meg a fitness.DOMAIN címet a böngészőben'
- 'Jelentkezz be: admin / adminadmin'
- 'Változtasd meg azonnal a jelszót'
- 'Hozd létre az edzéstervedet'
- 'Kezdd el naplózni az edzéseidet'
+49
View File
@@ -0,0 +1,49 @@
# wger - Edzésnapló és fitnesz tervező
# Domain: fitness.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# SECRET_KEY - Titkosítási kulcs (auto-generated)
services:
wger:
image: wger/server:2.3
container_name: wger
restart: unless-stopped
environment:
- TZ=Europe/Budapest
- SECRET_KEY=${SECRET_KEY}
- DJANGO_DB_ENGINE=django.db.backends.sqlite3
- SITE_URL=https://fitness.${DOMAIN}
volumes:
- wger_data:/home/wger/db
- wger_media:/home/wger/media
networks:
- traefik-public
deploy:
resources:
limits:
memory: 384M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.wger.rule=Host(`fitness.${DOMAIN}`)"
- "traefik.http.routers.wger.entrypoints=websecure"
- "traefik.http.routers.wger.tls=true"
- "traefik.http.routers.wger.tls.certresolver=letsencrypt"
- "traefik.http.services.wger.loadbalancer.server.port=80"
volumes:
wger_data:
wger_media:
networks:
traefik-public:
external: true
+44
View File
@@ -0,0 +1,44 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Wishlist"
description: "Családi kívánságlista megosztás"
category: "home"
subdomain: "wishes"
slug: "wishlist"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "30M"
mem_limit: "128M"
pi_compatible: true
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
# --- App info (info page content) ---
app_info:
tagline: "Családi kívánságlista - karácsonyra, születésnapokra"
docs_url: "https://github.com/cmintey/wishlist"
use_cases:
- 'Kívánságlisták létrehozása karácsonyra, születésnapokra'
- 'Családtagok meghívása saját listáik kezeléséhez'
- 'Ajándékok lefoglalása meglepetés nélkül'
- 'Árak és linkek hozzáadása az ajándékokhoz'
- 'Csoportos ajándékok szervezése'
first_steps:
- 'Nyisd meg a wishes.DOMAIN címet a böngészőben'
- 'Hozd létre a fiókodat'
- 'Hozd létre az első kívánságlistádat'
- 'Hívd meg a családtagokat'
+43
View File
@@ -0,0 +1,43 @@
# Wishlist - Családi kívánságlista megosztás
# Domain: wishes.${DOMAIN}
# Database: None (file-based)
# RAM: ~30M (mem_limit: 128M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
services:
wishlist:
image: cmintey/wishlist:1.9.0
container_name: wishlist
restart: unless-stopped
environment:
- TZ=Europe/Budapest
volumes:
- wishlist_data:/data
networks:
- traefik-public
deploy:
resources:
limits:
memory: 128M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.wishlist.rule=Host(`wishes.${DOMAIN}`)"
- "traefik.http.routers.wishlist.entrypoints=websecure"
- "traefik.http.routers.wishlist.tls=true"
- "traefik.http.routers.wishlist.tls.certresolver=letsencrypt"
- "traefik.http.services.wishlist.loadbalancer.server.port=3000"
volumes:
wishlist_data:
networks:
traefik-public:
external: true
+60
View File
@@ -0,0 +1,60 @@
# =============================================================================
# .felhom.yml - App metadata for felhom-controller
# =============================================================================
# --- Display info (shown on dashboard) ---
display_name: "Zipline"
description: "ShareX/Flameshot szerver - screenshot és fájlmegosztás"
category: "files"
subdomain: "img"
slug: "zipline"
# --- Resource hints (displayed on deploy screen) ---
resources:
mem_request: "100M"
mem_limit: "512M"
pi_compatible: false
needs_hdd: false
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
label: "Domain"
type: domain
description: "A szerver domain neve"
locked_after_deploy: true
- env_var: CORE_SECRET
label: "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
# --- App info (info page content) ---
app_info:
tagline: "Screenshot és fájlmegosztó szerver ShareX/Flameshot integrációval"
default_creds: "admin / zipline"
docs_url: "https://zipline.diced.sh/docs/"
use_cases:
- 'Screenshotok automatikus feltöltése ShareX/Flameshot-ból'
- 'URL rövidítés és szöveg megosztás (paste)'
- 'Galéria nézet és album kezelés'
- 'API támogatás egyedi integrációkhoz'
- 'Felhasználói fiókok és meghívó rendszer'
first_steps:
- 'Nyisd meg az img.DOMAIN címet a böngészőben'
- 'Jelentkezz be: admin / zipline'
- 'Változtasd meg azonnal a jelszót'
- 'Konfiguráld a ShareX-et vagy Flameshot-ot az API URL-lel'
- 'Tölts fel egy screenshot-ot a teszteléshez'
prerequisites:
- 'ShareX (Windows) vagy Flameshot (Linux) ajánlott a screenshot feltöltéshez'
+79
View File
@@ -0,0 +1,79 @@
# Zipline - ShareX/Flameshot szerver - screenshot és fájlmegosztás
# Domain: img.${DOMAIN}
# Database: postgres
# RAM: ~100M (mem_limit: 512M) | Pi-compatible: No
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# CORE_SECRET - Titkosítási kulcs (auto-generated)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
services:
zipline:
image: ghcr.io/diced/zipline:4.0.0
container_name: zipline
restart: unless-stopped
depends_on:
zipline-postgres:
condition: service_healthy
environment:
- TZ=Europe/Budapest
- CORE_SECRET=${CORE_SECRET}
- CORE_DATABASE_URL=postgresql://zipline:${DB_PASSWORD}@zipline-postgres:5432/zipline
volumes:
- zipline_uploads:/zipline/uploads
- zipline_public:/zipline/public
networks:
- traefik-public
- zipline-internal
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "node", "-e", "const http = require('http'); http.get('http://localhost:3000/api/health', (r) => { process.exit(r.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.zipline.rule=Host(`img.${DOMAIN}`)"
- "traefik.http.routers.zipline.entrypoints=websecure"
- "traefik.http.routers.zipline.tls=true"
- "traefik.http.routers.zipline.tls.certresolver=letsencrypt"
- "traefik.http.services.zipline.loadbalancer.server.port=3000"
zipline-postgres:
image: postgres:16-alpine
container_name: zipline-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=zipline
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=zipline
- TZ=Europe/Budapest
volumes:
- zipline_postgres_data:/var/lib/postgresql/data
networks:
- zipline-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U zipline -d zipline"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
zipline_postgres_data:
zipline_public:
zipline_uploads:
networks:
traefik-public:
external: true
zipline-internal: