From 0bd3f2a0e22ffb69a37a99429f7b9306ee3b15ed Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sun, 15 Feb 2026 08:47:15 +0100 Subject: [PATCH] added apps! --- templates/actualbudget/.felhom.yml | 18 +++ templates/adventurelog/.felhom.yml | 56 +++++++++ templates/adventurelog/docker-compose.yml | 102 +++++++++++++++ templates/audiobookshelf/.felhom.yml | 56 +++++++++ templates/audiobookshelf/docker-compose.yml | 48 +++++++ templates/bentopdf/.felhom.yml | 43 +++++++ templates/bentopdf/docker-compose.yml | 40 ++++++ templates/bookstack/.felhom.yml | 52 ++++++++ templates/bookstack/docker-compose.yml | 83 ++++++++++++ templates/calcom/.felhom.yml | 66 ++++++++++ templates/calcom/docker-compose.yml | 77 ++++++++++++ templates/calibre-web/.felhom.yml | 57 +++++++++ templates/calibre-web/docker-compose.yml | 47 +++++++ templates/claper/.felhom.yml | 56 +++++++++ templates/claper/docker-compose.yml | 77 ++++++++++++ templates/code-server/.felhom.yml | 54 ++++++++ templates/code-server/docker-compose.yml | 48 +++++++ templates/crafty-controller/.felhom.yml | 48 +++++++ .../crafty-controller/docker-compose.yml | 51 ++++++++ templates/docmost/.felhom.yml | 22 ++++ templates/emby/.felhom.yml | 57 +++++++++ templates/emby/docker-compose.yml | 47 +++++++ templates/filebrowser/.felhom.yml | 19 +++ templates/ghost/.felhom.yml | 46 +++++++ templates/ghost/docker-compose.yml | 47 +++++++ templates/gitea/.felhom.yml | 45 +++++++ templates/gitea/docker-compose.yml | 46 +++++++ templates/glance/.felhom.yml | 44 +++++++ templates/glance/docker-compose.yml | 43 +++++++ templates/gokapi/.felhom.yml | 45 +++++++ templates/gokapi/docker-compose.yml | 45 +++++++ templates/grafana/.felhom.yml | 53 ++++++++ templates/grafana/docker-compose.yml | 46 +++++++ templates/gramps-web/.felhom.yml | 50 ++++++++ templates/gramps-web/docker-compose.yml | 50 ++++++++ templates/home-assistant/.felhom.yml | 48 +++++++ templates/home-assistant/docker-compose.yml | 43 +++++++ templates/homebox/.felhom.yml | 18 +++ templates/homepage/.felhom.yml | 44 +++++++ templates/homepage/docker-compose.yml | 44 +++++++ templates/immich/.felhom.yml | 24 ++++ templates/jellyfin/.felhom.yml | 57 +++++++++ templates/jellyfin/docker-compose.yml | 47 +++++++ templates/kimai/.felhom.yml | 62 +++++++++ templates/kimai/docker-compose.yml | 80 ++++++++++++ templates/komga/.felhom.yml | 56 +++++++++ templates/komga/docker-compose.yml | 45 +++++++ templates/mealie/.felhom.yml | 20 +++ templates/n8n/.felhom.yml | 52 ++++++++ templates/n8n/docker-compose.yml | 48 +++++++ templates/navidrome/.felhom.yml | 56 +++++++++ templates/navidrome/docker-compose.yml | 48 +++++++ templates/nextcloud/.felhom.yml | 82 ++++++++++++ templates/nextcloud/docker-compose.yml | 118 ++++++++++++++++++ templates/onlyoffice/.felhom.yml | 55 ++++++++ templates/onlyoffice/docker-compose.yml | 47 +++++++ templates/opengist/.felhom.yml | 44 +++++++ templates/opengist/docker-compose.yml | 44 +++++++ templates/outline/.felhom.yml | 66 ++++++++++ templates/outline/docker-compose.yml | 108 ++++++++++++++++ templates/paperless-ngx/.felhom.yml | 24 ++++ templates/papra/.felhom.yml | 42 +++++++ templates/papra/docker-compose.yml | 44 +++++++ templates/plant-it/.felhom.yml | 50 ++++++++ templates/plant-it/docker-compose.yml | 50 ++++++++ templates/plex/.felhom.yml | 65 ++++++++++ templates/plex/docker-compose.yml | 49 ++++++++ templates/privatebin/.felhom.yml | 43 +++++++ templates/privatebin/docker-compose.yml | 44 +++++++ templates/radarr/.felhom.yml | 57 +++++++++ templates/radarr/docker-compose.yml | 48 +++++++ templates/rallly/.felhom.yml | 56 +++++++++ templates/rallly/docker-compose.yml | 75 +++++++++++ templates/seerr/.felhom.yml | 48 +++++++ templates/seerr/docker-compose.yml | 43 +++++++ templates/sonarr/.felhom.yml | 57 +++++++++ templates/sonarr/docker-compose.yml | 48 +++++++ templates/stirling-pdf/.felhom.yml | 30 ----- templates/stirling-pdf/docker-compose.yml | 52 -------- templates/tandoor/.felhom.yml | 57 +++++++++ templates/tandoor/docker-compose.yml | 84 +++++++++++++ templates/termix/.felhom.yml | 40 ++++++ templates/termix/docker-compose.yml | 44 +++++++ templates/uptime-kuma/.felhom.yml | 45 +++++++ templates/uptime-kuma/docker-compose.yml | 43 +++++++ templates/vaultwarden/.felhom.yml | 20 +++ templates/vikunja/.felhom.yml | 51 ++++++++ templates/vikunja/docker-compose.yml | 48 +++++++ templates/wanderer/.felhom.yml | 50 ++++++++ templates/wanderer/docker-compose.yml | 75 +++++++++++ templates/wger/.felhom.yml | 52 ++++++++ templates/wger/docker-compose.yml | 49 ++++++++ templates/wishlist/.felhom.yml | 44 +++++++ templates/wishlist/docker-compose.yml | 43 +++++++ templates/zipline/.felhom.yml | 60 +++++++++ templates/zipline/docker-compose.yml | 79 ++++++++++++ 96 files changed, 4867 insertions(+), 82 deletions(-) create mode 100644 templates/adventurelog/.felhom.yml create mode 100644 templates/adventurelog/docker-compose.yml create mode 100644 templates/audiobookshelf/.felhom.yml create mode 100644 templates/audiobookshelf/docker-compose.yml create mode 100644 templates/bentopdf/.felhom.yml create mode 100644 templates/bentopdf/docker-compose.yml create mode 100644 templates/bookstack/.felhom.yml create mode 100644 templates/bookstack/docker-compose.yml create mode 100644 templates/calcom/.felhom.yml create mode 100644 templates/calcom/docker-compose.yml create mode 100644 templates/calibre-web/.felhom.yml create mode 100644 templates/calibre-web/docker-compose.yml create mode 100644 templates/claper/.felhom.yml create mode 100644 templates/claper/docker-compose.yml create mode 100644 templates/code-server/.felhom.yml create mode 100644 templates/code-server/docker-compose.yml create mode 100644 templates/crafty-controller/.felhom.yml create mode 100644 templates/crafty-controller/docker-compose.yml create mode 100644 templates/emby/.felhom.yml create mode 100644 templates/emby/docker-compose.yml create mode 100644 templates/ghost/.felhom.yml create mode 100644 templates/ghost/docker-compose.yml create mode 100644 templates/gitea/.felhom.yml create mode 100644 templates/gitea/docker-compose.yml create mode 100644 templates/glance/.felhom.yml create mode 100644 templates/glance/docker-compose.yml create mode 100644 templates/gokapi/.felhom.yml create mode 100644 templates/gokapi/docker-compose.yml create mode 100644 templates/grafana/.felhom.yml create mode 100644 templates/grafana/docker-compose.yml create mode 100644 templates/gramps-web/.felhom.yml create mode 100644 templates/gramps-web/docker-compose.yml create mode 100644 templates/home-assistant/.felhom.yml create mode 100644 templates/home-assistant/docker-compose.yml create mode 100644 templates/homepage/.felhom.yml create mode 100644 templates/homepage/docker-compose.yml create mode 100644 templates/jellyfin/.felhom.yml create mode 100644 templates/jellyfin/docker-compose.yml create mode 100644 templates/kimai/.felhom.yml create mode 100644 templates/kimai/docker-compose.yml create mode 100644 templates/komga/.felhom.yml create mode 100644 templates/komga/docker-compose.yml create mode 100644 templates/n8n/.felhom.yml create mode 100644 templates/n8n/docker-compose.yml create mode 100644 templates/navidrome/.felhom.yml create mode 100644 templates/navidrome/docker-compose.yml create mode 100644 templates/nextcloud/.felhom.yml create mode 100644 templates/nextcloud/docker-compose.yml create mode 100644 templates/onlyoffice/.felhom.yml create mode 100644 templates/onlyoffice/docker-compose.yml create mode 100644 templates/opengist/.felhom.yml create mode 100644 templates/opengist/docker-compose.yml create mode 100644 templates/outline/.felhom.yml create mode 100644 templates/outline/docker-compose.yml create mode 100644 templates/papra/.felhom.yml create mode 100644 templates/papra/docker-compose.yml create mode 100644 templates/plant-it/.felhom.yml create mode 100644 templates/plant-it/docker-compose.yml create mode 100644 templates/plex/.felhom.yml create mode 100644 templates/plex/docker-compose.yml create mode 100644 templates/privatebin/.felhom.yml create mode 100644 templates/privatebin/docker-compose.yml create mode 100644 templates/radarr/.felhom.yml create mode 100644 templates/radarr/docker-compose.yml create mode 100644 templates/rallly/.felhom.yml create mode 100644 templates/rallly/docker-compose.yml create mode 100644 templates/seerr/.felhom.yml create mode 100644 templates/seerr/docker-compose.yml create mode 100644 templates/sonarr/.felhom.yml create mode 100644 templates/sonarr/docker-compose.yml delete mode 100644 templates/stirling-pdf/.felhom.yml delete mode 100644 templates/stirling-pdf/docker-compose.yml create mode 100644 templates/tandoor/.felhom.yml create mode 100644 templates/tandoor/docker-compose.yml create mode 100644 templates/termix/.felhom.yml create mode 100644 templates/termix/docker-compose.yml create mode 100644 templates/uptime-kuma/.felhom.yml create mode 100644 templates/uptime-kuma/docker-compose.yml create mode 100644 templates/vikunja/.felhom.yml create mode 100644 templates/vikunja/docker-compose.yml create mode 100644 templates/wanderer/.felhom.yml create mode 100644 templates/wanderer/docker-compose.yml create mode 100644 templates/wger/.felhom.yml create mode 100644 templates/wger/docker-compose.yml create mode 100644 templates/wishlist/.felhom.yml create mode 100644 templates/wishlist/docker-compose.yml create mode 100644 templates/zipline/.felhom.yml create mode 100644 templates/zipline/docker-compose.yml diff --git a/templates/actualbudget/.felhom.yml b/templates/actualbudget/.felhom.yml index cc1ebf0..601698a 100644 --- a/templates/actualbudget/.felhom.yml +++ b/templates/actualbudget/.felhom.yml @@ -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' diff --git a/templates/adventurelog/.felhom.yml b/templates/adventurelog/.felhom.yml new file mode 100644 index 0000000..d19b525 --- /dev/null +++ b/templates/adventurelog/.felhom.yml @@ -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' + diff --git a/templates/adventurelog/docker-compose.yml b/templates/adventurelog/docker-compose.yml new file mode 100644 index 0000000..a863c53 --- /dev/null +++ b/templates/adventurelog/docker-compose.yml @@ -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: diff --git a/templates/audiobookshelf/.felhom.yml b/templates/audiobookshelf/.felhom.yml new file mode 100644 index 0000000..cb68f9c --- /dev/null +++ b/templates/audiobookshelf/.felhom.yml @@ -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/)' diff --git a/templates/audiobookshelf/docker-compose.yml b/templates/audiobookshelf/docker-compose.yml new file mode 100644 index 0000000..24990c0 --- /dev/null +++ b/templates/audiobookshelf/docker-compose.yml @@ -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 diff --git a/templates/bentopdf/.felhom.yml b/templates/bentopdf/.felhom.yml new file mode 100644 index 0000000..06bf523 --- /dev/null +++ b/templates/bentopdf/.felhom.yml @@ -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' + diff --git a/templates/bentopdf/docker-compose.yml b/templates/bentopdf/docker-compose.yml new file mode 100644 index 0000000..ea17ab0 --- /dev/null +++ b/templates/bentopdf/docker-compose.yml @@ -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 diff --git a/templates/bookstack/.felhom.yml b/templates/bookstack/.felhom.yml new file mode 100644 index 0000000..509684e --- /dev/null +++ b/templates/bookstack/.felhom.yml @@ -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!' + diff --git a/templates/bookstack/docker-compose.yml b/templates/bookstack/docker-compose.yml new file mode 100644 index 0000000..1cea7ff --- /dev/null +++ b/templates/bookstack/docker-compose.yml @@ -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: diff --git a/templates/calcom/.felhom.yml b/templates/calcom/.felhom.yml new file mode 100644 index 0000000..77d17e4 --- /dev/null +++ b/templates/calcom/.felhom.yml @@ -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)' diff --git a/templates/calcom/docker-compose.yml b/templates/calcom/docker-compose.yml new file mode 100644 index 0000000..17f7754 --- /dev/null +++ b/templates/calcom/docker-compose.yml @@ -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: diff --git a/templates/calibre-web/.felhom.yml b/templates/calibre-web/.felhom.yml new file mode 100644 index 0000000..aa448b0 --- /dev/null +++ b/templates/calibre-web/.felhom.yml @@ -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' diff --git a/templates/calibre-web/docker-compose.yml b/templates/calibre-web/docker-compose.yml new file mode 100644 index 0000000..55030a8 --- /dev/null +++ b/templates/calibre-web/docker-compose.yml @@ -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 diff --git a/templates/claper/.felhom.yml b/templates/claper/.felhom.yml new file mode 100644 index 0000000..e096f5a --- /dev/null +++ b/templates/claper/.felhom.yml @@ -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' + diff --git a/templates/claper/docker-compose.yml b/templates/claper/docker-compose.yml new file mode 100644 index 0000000..175400c --- /dev/null +++ b/templates/claper/docker-compose.yml @@ -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: diff --git a/templates/code-server/.felhom.yml b/templates/code-server/.felhom.yml new file mode 100644 index 0000000..6d6de9f --- /dev/null +++ b/templates/code-server/.felhom.yml @@ -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' diff --git a/templates/code-server/docker-compose.yml b/templates/code-server/docker-compose.yml new file mode 100644 index 0000000..6b4d451 --- /dev/null +++ b/templates/code-server/docker-compose.yml @@ -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 diff --git a/templates/crafty-controller/.felhom.yml b/templates/crafty-controller/.felhom.yml new file mode 100644 index 0000000..ccfb22a --- /dev/null +++ b/templates/crafty-controller/.felhom.yml @@ -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)' diff --git a/templates/crafty-controller/docker-compose.yml b/templates/crafty-controller/docker-compose.yml new file mode 100644 index 0000000..f9164ef --- /dev/null +++ b/templates/crafty-controller/docker-compose.yml @@ -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 diff --git a/templates/docmost/.felhom.yml b/templates/docmost/.felhom.yml index 048b938..d5d9389 100644 --- a/templates/docmost/.felhom.yml +++ b/templates/docmost/.felhom.yml @@ -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)' diff --git a/templates/emby/.felhom.yml b/templates/emby/.felhom.yml new file mode 100644 index 0000000..9b1bf59 --- /dev/null +++ b/templates/emby/.felhom.yml @@ -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)' diff --git a/templates/emby/docker-compose.yml b/templates/emby/docker-compose.yml new file mode 100644 index 0000000..e17077b --- /dev/null +++ b/templates/emby/docker-compose.yml @@ -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 diff --git a/templates/filebrowser/.felhom.yml b/templates/filebrowser/.felhom.yml index 5e20dce..012bf69 100644 --- a/templates/filebrowser/.felhom.yml +++ b/templates/filebrowser/.felhom.yml @@ -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' \ No newline at end of file diff --git a/templates/ghost/.felhom.yml b/templates/ghost/.felhom.yml new file mode 100644 index 0000000..26b2958 --- /dev/null +++ b/templates/ghost/.felhom.yml @@ -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' diff --git a/templates/ghost/docker-compose.yml b/templates/ghost/docker-compose.yml new file mode 100644 index 0000000..8af4ba0 --- /dev/null +++ b/templates/ghost/docker-compose.yml @@ -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 diff --git a/templates/gitea/.felhom.yml b/templates/gitea/.felhom.yml new file mode 100644 index 0000000..75f5964 --- /dev/null +++ b/templates/gitea/.felhom.yml @@ -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' + diff --git a/templates/gitea/docker-compose.yml b/templates/gitea/docker-compose.yml new file mode 100644 index 0000000..039b8d7 --- /dev/null +++ b/templates/gitea/docker-compose.yml @@ -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 diff --git a/templates/glance/.felhom.yml b/templates/glance/.felhom.yml new file mode 100644 index 0000000..c8dd1c9 --- /dev/null +++ b/templates/glance/.felhom.yml @@ -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' + diff --git a/templates/glance/docker-compose.yml b/templates/glance/docker-compose.yml new file mode 100644 index 0000000..5c8d24e --- /dev/null +++ b/templates/glance/docker-compose.yml @@ -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 diff --git a/templates/gokapi/.felhom.yml b/templates/gokapi/.felhom.yml new file mode 100644 index 0000000..4e985ca --- /dev/null +++ b/templates/gokapi/.felhom.yml @@ -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' + diff --git a/templates/gokapi/docker-compose.yml b/templates/gokapi/docker-compose.yml new file mode 100644 index 0000000..d3b46ce --- /dev/null +++ b/templates/gokapi/docker-compose.yml @@ -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 diff --git a/templates/grafana/.felhom.yml b/templates/grafana/.felhom.yml new file mode 100644 index 0000000..6b60bc5 --- /dev/null +++ b/templates/grafana/.felhom.yml @@ -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ő)' diff --git a/templates/grafana/docker-compose.yml b/templates/grafana/docker-compose.yml new file mode 100644 index 0000000..696b6df --- /dev/null +++ b/templates/grafana/docker-compose.yml @@ -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 diff --git a/templates/gramps-web/.felhom.yml b/templates/gramps-web/.felhom.yml new file mode 100644 index 0000000..c74cdfb --- /dev/null +++ b/templates/gramps-web/.felhom.yml @@ -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' + diff --git a/templates/gramps-web/docker-compose.yml b/templates/gramps-web/docker-compose.yml new file mode 100644 index 0000000..48066cb --- /dev/null +++ b/templates/gramps-web/docker-compose.yml @@ -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 diff --git a/templates/home-assistant/.felhom.yml b/templates/home-assistant/.felhom.yml new file mode 100644 index 0000000..530fc03 --- /dev/null +++ b/templates/home-assistant/.felhom.yml @@ -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' diff --git a/templates/home-assistant/docker-compose.yml b/templates/home-assistant/docker-compose.yml new file mode 100644 index 0000000..83e0759 --- /dev/null +++ b/templates/home-assistant/docker-compose.yml @@ -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 diff --git a/templates/homebox/.felhom.yml b/templates/homebox/.felhom.yml index cbb6034..750911d 100644 --- a/templates/homebox/.felhom.yml +++ b/templates/homebox/.felhom.yml @@ -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' \ No newline at end of file diff --git a/templates/homepage/.felhom.yml b/templates/homepage/.felhom.yml new file mode 100644 index 0000000..c7cd984 --- /dev/null +++ b/templates/homepage/.felhom.yml @@ -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' + diff --git a/templates/homepage/docker-compose.yml b/templates/homepage/docker-compose.yml new file mode 100644 index 0000000..37a5548 --- /dev/null +++ b/templates/homepage/docker-compose.yml @@ -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 diff --git a/templates/immich/.felhom.yml b/templates/immich/.felhom.yml index b341048..dff96f3 100644 --- a/templates/immich/.felhom.yml +++ b/templates/immich/.felhom.yml @@ -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)' diff --git a/templates/jellyfin/.felhom.yml b/templates/jellyfin/.felhom.yml new file mode 100644 index 0000000..cc6de84 --- /dev/null +++ b/templates/jellyfin/.felhom.yml @@ -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/)' diff --git a/templates/jellyfin/docker-compose.yml b/templates/jellyfin/docker-compose.yml new file mode 100644 index 0000000..d174c5a --- /dev/null +++ b/templates/jellyfin/docker-compose.yml @@ -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 diff --git a/templates/kimai/.felhom.yml b/templates/kimai/.felhom.yml new file mode 100644 index 0000000..a28bbd9 --- /dev/null +++ b/templates/kimai/.felhom.yml @@ -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' + diff --git a/templates/kimai/docker-compose.yml b/templates/kimai/docker-compose.yml new file mode 100644 index 0000000..24423ed --- /dev/null +++ b/templates/kimai/docker-compose.yml @@ -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: diff --git a/templates/komga/.felhom.yml b/templates/komga/.felhom.yml new file mode 100644 index 0000000..249c5ba --- /dev/null +++ b/templates/komga/.felhom.yml @@ -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' diff --git a/templates/komga/docker-compose.yml b/templates/komga/docker-compose.yml new file mode 100644 index 0000000..4b025de --- /dev/null +++ b/templates/komga/docker-compose.yml @@ -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 diff --git a/templates/mealie/.felhom.yml b/templates/mealie/.felhom.yml index 5c95048..583def9 100644 --- a/templates/mealie/.felhom.yml +++ b/templates/mealie/.felhom.yml @@ -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' \ No newline at end of file diff --git a/templates/n8n/.felhom.yml b/templates/n8n/.felhom.yml new file mode 100644 index 0000000..5dd2511 --- /dev/null +++ b/templates/n8n/.felhom.yml @@ -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' diff --git a/templates/n8n/docker-compose.yml b/templates/n8n/docker-compose.yml new file mode 100644 index 0000000..2e066ba --- /dev/null +++ b/templates/n8n/docker-compose.yml @@ -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 diff --git a/templates/navidrome/.felhom.yml b/templates/navidrome/.felhom.yml new file mode 100644 index 0000000..d1afd78 --- /dev/null +++ b/templates/navidrome/.felhom.yml @@ -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)' diff --git a/templates/navidrome/docker-compose.yml b/templates/navidrome/docker-compose.yml new file mode 100644 index 0000000..041a285 --- /dev/null +++ b/templates/navidrome/docker-compose.yml @@ -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 diff --git a/templates/nextcloud/.felhom.yml b/templates/nextcloud/.felhom.yml new file mode 100644 index 0000000..aa65ead --- /dev/null +++ b/templates/nextcloud/.felhom.yml @@ -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' diff --git a/templates/nextcloud/docker-compose.yml b/templates/nextcloud/docker-compose.yml new file mode 100644 index 0000000..4236ad2 --- /dev/null +++ b/templates/nextcloud/docker-compose.yml @@ -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: diff --git a/templates/onlyoffice/.felhom.yml b/templates/onlyoffice/.felhom.yml new file mode 100644 index 0000000..2e38caf --- /dev/null +++ b/templates/onlyoffice/.felhom.yml @@ -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' diff --git a/templates/onlyoffice/docker-compose.yml b/templates/onlyoffice/docker-compose.yml new file mode 100644 index 0000000..c61da96 --- /dev/null +++ b/templates/onlyoffice/docker-compose.yml @@ -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 diff --git a/templates/opengist/.felhom.yml b/templates/opengist/.felhom.yml new file mode 100644 index 0000000..5ec43b9 --- /dev/null +++ b/templates/opengist/.felhom.yml @@ -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' + diff --git a/templates/opengist/docker-compose.yml b/templates/opengist/docker-compose.yml new file mode 100644 index 0000000..c89b2ac --- /dev/null +++ b/templates/opengist/docker-compose.yml @@ -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 diff --git a/templates/outline/.felhom.yml b/templates/outline/.felhom.yml new file mode 100644 index 0000000..d539a0a --- /dev/null +++ b/templates/outline/.felhom.yml @@ -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)' diff --git a/templates/outline/docker-compose.yml b/templates/outline/docker-compose.yml new file mode 100644 index 0000000..a879634 --- /dev/null +++ b/templates/outline/docker-compose.yml @@ -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: diff --git a/templates/paperless-ngx/.felhom.yml b/templates/paperless-ngx/.felhom.yml index 1f5a68c..1e571a9 100644 --- a/templates/paperless-ngx/.felhom.yml +++ b/templates/paperless-ngx/.felhom.yml @@ -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)' diff --git a/templates/papra/.felhom.yml b/templates/papra/.felhom.yml new file mode 100644 index 0000000..bbfde8a --- /dev/null +++ b/templates/papra/.felhom.yml @@ -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' + diff --git a/templates/papra/docker-compose.yml b/templates/papra/docker-compose.yml new file mode 100644 index 0000000..2eee191 --- /dev/null +++ b/templates/papra/docker-compose.yml @@ -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 diff --git a/templates/plant-it/.felhom.yml b/templates/plant-it/.felhom.yml new file mode 100644 index 0000000..9f521d2 --- /dev/null +++ b/templates/plant-it/.felhom.yml @@ -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' + diff --git a/templates/plant-it/docker-compose.yml b/templates/plant-it/docker-compose.yml new file mode 100644 index 0000000..f1b1b49 --- /dev/null +++ b/templates/plant-it/docker-compose.yml @@ -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 diff --git a/templates/plex/.felhom.yml b/templates/plex/.felhom.yml new file mode 100644 index 0000000..033f2ed --- /dev/null +++ b/templates/plex/.felhom.yml @@ -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)' diff --git a/templates/plex/docker-compose.yml b/templates/plex/docker-compose.yml new file mode 100644 index 0000000..33e23d3 --- /dev/null +++ b/templates/plex/docker-compose.yml @@ -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 diff --git a/templates/privatebin/.felhom.yml b/templates/privatebin/.felhom.yml new file mode 100644 index 0000000..120bab7 --- /dev/null +++ b/templates/privatebin/.felhom.yml @@ -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' + diff --git a/templates/privatebin/docker-compose.yml b/templates/privatebin/docker-compose.yml new file mode 100644 index 0000000..891c5fb --- /dev/null +++ b/templates/privatebin/docker-compose.yml @@ -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 diff --git a/templates/radarr/.felhom.yml b/templates/radarr/.felhom.yml new file mode 100644 index 0000000..1049d21 --- /dev/null +++ b/templates/radarr/.felhom.yml @@ -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' diff --git a/templates/radarr/docker-compose.yml b/templates/radarr/docker-compose.yml new file mode 100644 index 0000000..e31b0ca --- /dev/null +++ b/templates/radarr/docker-compose.yml @@ -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 diff --git a/templates/rallly/.felhom.yml b/templates/rallly/.felhom.yml new file mode 100644 index 0000000..2070fd2 --- /dev/null +++ b/templates/rallly/.felhom.yml @@ -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' + diff --git a/templates/rallly/docker-compose.yml b/templates/rallly/docker-compose.yml new file mode 100644 index 0000000..c674137 --- /dev/null +++ b/templates/rallly/docker-compose.yml @@ -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: diff --git a/templates/seerr/.felhom.yml b/templates/seerr/.felhom.yml new file mode 100644 index 0000000..ec3256e --- /dev/null +++ b/templates/seerr/.felhom.yml @@ -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' diff --git a/templates/seerr/docker-compose.yml b/templates/seerr/docker-compose.yml new file mode 100644 index 0000000..fbc8e3d --- /dev/null +++ b/templates/seerr/docker-compose.yml @@ -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 diff --git a/templates/sonarr/.felhom.yml b/templates/sonarr/.felhom.yml new file mode 100644 index 0000000..4b901b5 --- /dev/null +++ b/templates/sonarr/.felhom.yml @@ -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' diff --git a/templates/sonarr/docker-compose.yml b/templates/sonarr/docker-compose.yml new file mode 100644 index 0000000..0b5caed --- /dev/null +++ b/templates/sonarr/docker-compose.yml @@ -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 diff --git a/templates/stirling-pdf/.felhom.yml b/templates/stirling-pdf/.felhom.yml deleted file mode 100644 index 02496b2..0000000 --- a/templates/stirling-pdf/.felhom.yml +++ /dev/null @@ -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 diff --git a/templates/stirling-pdf/docker-compose.yml b/templates/stirling-pdf/docker-compose.yml deleted file mode 100644 index c0411a2..0000000 --- a/templates/stirling-pdf/docker-compose.yml +++ /dev/null @@ -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 diff --git a/templates/tandoor/.felhom.yml b/templates/tandoor/.felhom.yml new file mode 100644 index 0000000..7e63eb1 --- /dev/null +++ b/templates/tandoor/.felhom.yml @@ -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' + diff --git a/templates/tandoor/docker-compose.yml b/templates/tandoor/docker-compose.yml new file mode 100644 index 0000000..739a2f5 --- /dev/null +++ b/templates/tandoor/docker-compose.yml @@ -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: diff --git a/templates/termix/.felhom.yml b/templates/termix/.felhom.yml new file mode 100644 index 0000000..917cec5 --- /dev/null +++ b/templates/termix/.felhom.yml @@ -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' + diff --git a/templates/termix/docker-compose.yml b/templates/termix/docker-compose.yml new file mode 100644 index 0000000..1d1578f --- /dev/null +++ b/templates/termix/docker-compose.yml @@ -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 diff --git a/templates/uptime-kuma/.felhom.yml b/templates/uptime-kuma/.felhom.yml new file mode 100644 index 0000000..f7fbed6 --- /dev/null +++ b/templates/uptime-kuma/.felhom.yml @@ -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' + diff --git a/templates/uptime-kuma/docker-compose.yml b/templates/uptime-kuma/docker-compose.yml new file mode 100644 index 0000000..e2bb544 --- /dev/null +++ b/templates/uptime-kuma/docker-compose.yml @@ -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 diff --git a/templates/vaultwarden/.felhom.yml b/templates/vaultwarden/.felhom.yml index b709cb5..9ab5a68 100644 --- a/templates/vaultwarden/.felhom.yml +++ b/templates/vaultwarden/.felhom.yml @@ -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.)' + diff --git a/templates/vikunja/.felhom.yml b/templates/vikunja/.felhom.yml new file mode 100644 index 0000000..5ece43c --- /dev/null +++ b/templates/vikunja/.felhom.yml @@ -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' + diff --git a/templates/vikunja/docker-compose.yml b/templates/vikunja/docker-compose.yml new file mode 100644 index 0000000..e666ff5 --- /dev/null +++ b/templates/vikunja/docker-compose.yml @@ -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 diff --git a/templates/wanderer/.felhom.yml b/templates/wanderer/.felhom.yml new file mode 100644 index 0000000..ebfc3d2 --- /dev/null +++ b/templates/wanderer/.felhom.yml @@ -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' + diff --git a/templates/wanderer/docker-compose.yml b/templates/wanderer/docker-compose.yml new file mode 100644 index 0000000..9d80c96 --- /dev/null +++ b/templates/wanderer/docker-compose.yml @@ -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: diff --git a/templates/wger/.felhom.yml b/templates/wger/.felhom.yml new file mode 100644 index 0000000..04dc277 --- /dev/null +++ b/templates/wger/.felhom.yml @@ -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' + diff --git a/templates/wger/docker-compose.yml b/templates/wger/docker-compose.yml new file mode 100644 index 0000000..fce1950 --- /dev/null +++ b/templates/wger/docker-compose.yml @@ -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 diff --git a/templates/wishlist/.felhom.yml b/templates/wishlist/.felhom.yml new file mode 100644 index 0000000..8ad7d16 --- /dev/null +++ b/templates/wishlist/.felhom.yml @@ -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' + diff --git a/templates/wishlist/docker-compose.yml b/templates/wishlist/docker-compose.yml new file mode 100644 index 0000000..c2a57a3 --- /dev/null +++ b/templates/wishlist/docker-compose.yml @@ -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 diff --git a/templates/zipline/.felhom.yml b/templates/zipline/.felhom.yml new file mode 100644 index 0000000..4c38bde --- /dev/null +++ b/templates/zipline/.felhom.yml @@ -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' diff --git a/templates/zipline/docker-compose.yml b/templates/zipline/docker-compose.yml new file mode 100644 index 0000000..4985e4b --- /dev/null +++ b/templates/zipline/docker-compose.yml @@ -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: