added apps!
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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!'
|
||||
|
||||
@@ -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:
|
||||
@@ -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)'
|
||||
@@ -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:
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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)'
|
||||
|
||||
@@ -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)'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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ő)'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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)'
|
||||
|
||||
@@ -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/)'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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)'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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:
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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)'
|
||||
@@ -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:
|
||||
@@ -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)'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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)'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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.)'
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
@@ -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:
|
||||
Reference in New Issue
Block a user