v0.257.0: the app catalog can speak English (R-560, slice 5 Part A)
gates / gates (push) Successful in 25s
gates / gates (push) Successful in 25s
The READ PATH for a second language in `.felhom.yml`. An `i18n: {en: …}` sibling
block inside the same file; `Metadata.For(lang)` merges it FIELD BY FIELD over the
Hungarian, so a missing or blank English field shows the Hungarian one and a
half-translated app is a legal, shippable state.
`For("hu")` is the parsed struct with `I18n` cleared and nothing else — measured
against all 53 real catalog files, copied into `internal/stacks/testdata/catalog/`.
Lists replace whole; every other list is matched by its own key, never by position.
`For` never writes through the receiver: the metadata is the stack manager's, shared
by concurrent requests, and an in-place merge would leak one household's language
into another household's page.
Pages reach catalog copy only through `LocalizeStacks`/`LocalizeStackPtr`/`MetaFor`,
and `TestNoDirectMetaCopyReadOnPages` keeps a named, reasoned allow-list of every
direct `.Meta.<copy>` read in `internal/web` so the NEXT page to read one fails the
suite instead of quietly rendering Hungarian to an English household.
Eight red-proofs. Two of them convicted a hollow TEST rather than the code: a struct
copy shares its slices' backing arrays, so the obvious DeepEqual mutation check
passed a deliberately broken merge; and a one-entry fixture cannot tell key matching
from position matching. Both rewritten, both then seen to fail.
MinAgent: 0.131.0 (unchanged). Older controllers are unaffected — `LoadMetadata`
uses non-strict `yaml.Unmarshal`, so a pre-0.257.0 box drops the whole block.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/actualbudget/.felhom.yml
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "ActualBudget"
|
||||
description: "Személyes pénzügyek és költségvetés kezelése"
|
||||
category: "finance"
|
||||
subdomain: "budget"
|
||||
|
||||
# --- Asset slug ---
|
||||
slug: "actualbudget"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "50M"
|
||||
mem_limit: "256M"
|
||||
pi_compatible: true
|
||||
needs_hdd: false
|
||||
|
||||
# --- Deploy fields ---
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "budget"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 5006
|
||||
@@ -0,0 +1,81 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "travel"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: SECRET_KEY
|
||||
label: "Titkosítási kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
# Data-encrypting key: the app secures stored data with it, so it must NOT be regenerated on
|
||||
# restore (that would render restored data unreadable). The recovery unit stays secret-free; at
|
||||
# restore the controller recovers this key from the guest's own app.yaml (live, or via the PBS
|
||||
# whole-guest snapshot) and FAILS CLOSED (refuse + warn) if it cannot — never silently restores.
|
||||
data_key: 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8000
|
||||
path: "/api/"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,86 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "100M"
|
||||
mem_limit: "512M"
|
||||
pi_compatible: true
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media/audiobooks
|
||||
class: optional # PENDING-VETO: spike chose excluded; ruled optional for consistency
|
||||
# with komga/romm (curated, often personally ripped — precious).
|
||||
# If Viktor rules excluded, flip THIS LINE ONLY before committing.
|
||||
- path: media/podcasts
|
||||
class: excluded # re-downloadable by definition
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "audiobooks"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Hangoskönyv tár útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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/)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 80
|
||||
path: "/healthcheck"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,60 @@
|
||||
# =============================================================================
|
||||
# .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: "pdf"
|
||||
slug: "bentopdf"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-12"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "pdf"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8080
|
||||
@@ -0,0 +1,75 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "wiki"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: APP_KEY
|
||||
label: "Alkalmazás kulcs"
|
||||
type: secret
|
||||
generate: "base64key: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: "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!'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 80
|
||||
@@ -0,0 +1,101 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "cal"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 3000
|
||||
# /api/health does not exist in cal.com v4.x (404); /api/auth/providers is a stable 200 once serving.
|
||||
path: "/api/auth/providers"
|
||||
expect:
|
||||
status: 200
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# Cal.com (Nodemailer) hard-codes TLS rejectUnauthorized=true with no skip flag and opportunistically
|
||||
# STARTTLS-upgrades whenever the server offers it — so it cannot use the self-signed :2525 listener.
|
||||
# tls_mode=plaintext points it at the :2526 listener, which does NOT advertise STARTTLS, so Cal.com never
|
||||
# attempts TLS (plaintext on the single-tenant app bridge — accepted posture). secure is inferred from the
|
||||
# port (≠465 → plaintext). EMAIL_SERVER_USER/PASSWORD stay unset (the shim accepts no-auth).
|
||||
smtp_mapping:
|
||||
tls_mode: plaintext
|
||||
host_var: EMAIL_SERVER_HOST
|
||||
port_var: EMAIL_SERVER_PORT
|
||||
from_var: EMAIL_FROM
|
||||
from_name_var: EMAIL_FROM_NAME
|
||||
from_local: calcom
|
||||
@@ -0,0 +1,94 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml - App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Calibre-Web Automated"
|
||||
description: "Automatizált e-könyv könyvtár - konvertálás, metaadat kezelés és webes olvasó"
|
||||
category: "media"
|
||||
subdomain: "books"
|
||||
slug: "calibre-web"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-12"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "200M"
|
||||
mem_limit: "768M"
|
||||
pi_compatible: false
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media/books
|
||||
class: mandatory # metadata.db lives INSIDE the tree — DB and books are one unit
|
||||
import:
|
||||
- path: calibre
|
||||
class: excluded # ingest inbox, transient
|
||||
|
||||
# --- Customer-facing folder annotation (R-75) ---
|
||||
data_paths:
|
||||
- path: calibre
|
||||
root: import
|
||||
role: import
|
||||
label: "Beolvasandó e-könyvek"
|
||||
- path: media/books
|
||||
root: userdata
|
||||
role: library
|
||||
label: "E-könyvtár"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "books"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "E-könyvtár útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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: 'Automatizált e-könyv könyvtár - könyvfeldolgozás, formátumkonverzió és OPDS feed'
|
||||
default_creds: "admin / admin123"
|
||||
docs_url: "https://github.com/crocodilestick/Calibre-Web-Automated/wiki"
|
||||
|
||||
use_cases:
|
||||
- 'Automatizált e-könyv feldolgozás - csak dobd be az ingest mappába'
|
||||
- 'Automatikus formátumkonverzió (EPUB, MOBI, PDF, AZW3)'
|
||||
- 'OPDS feed e-olvasókhoz (Kindle, KOReader, Moon+ Reader)'
|
||||
- 'Webes olvasó böngészőben'
|
||||
- 'KOReader szinkronizáció (olvasási pozíció, könyvjelzők)'
|
||||
|
||||
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'
|
||||
- 'Dobj egy könyvet a Fájlkezelőben (FileBrowser) az import/calibre mappába — automatikusan feldolgozza és a media/books könyvtárba helyezi'
|
||||
|
||||
prerequisites:
|
||||
- 'Külső HDD szükséges az e-könyvek tárolásához'
|
||||
- 'x86 processzor szükséges (a CWA tartalmazza a Calibre binárist)'
|
||||
- 'Legalább 768 MB szabad RAM ajánlott'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8083
|
||||
@@ -0,0 +1,73 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "present"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 4000
|
||||
@@ -0,0 +1,75 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "code"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: PASSWORD
|
||||
label: "Hozzáférési jelszó"
|
||||
type: password
|
||||
generate: "password:16"
|
||||
description: "Bejelentkezési jelszó a szerkesztőhöz."
|
||||
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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8443
|
||||
path: "/healthz"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,86 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-06-26"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "minecraft"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: CRAFTY_PASSWORD
|
||||
label: "Admin jelszó"
|
||||
type: password
|
||||
generate: password:24
|
||||
locked_after_deploy: true
|
||||
description: "A Crafty admin felhasználó (admin) kezdeti jelszava — ezzel tudsz belépni a kezelőfelületre"
|
||||
|
||||
# --- 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'
|
||||
- 'A kezdeti belépési adatokat ezen az oldalon (Kezdeti belépési adatok) 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.)'
|
||||
- 'Állítsd be a szerver portját a 25565–25575 tartományon belül (server.properties → server-port); az első szerver a 25565-öt használja, a továbbiak 25566–25575-öt'
|
||||
- 'Helyi hálózaton csatlakozz a szerver helyi IP-címére és portjára (pl. 192.168.x.x:25565) — a Minecraft kliens „helyi hálózat keresése” nem listázza automatikusan, add meg kézzel a címet'
|
||||
- 'Interneten keresztüli eléréshez port-továbbítás szükséges a választott port(ok)ra — egyeztess az üzemeltetővel'
|
||||
|
||||
prerequisites:
|
||||
- 'Legalább 2 GB szabad RAM ajánlott (Minecraft szerver + Crafty)'
|
||||
- 'x86 processzor szükséges (nem fut Raspberry Pi-n)'
|
||||
- 'A Minecraft szerverek a 25565–25575 porttartományt használhatják (egyszerre legfeljebb 11 szerver)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: tcp
|
||||
port: 8443
|
||||
|
||||
# --- Initial login (felhom-seeded) ---
|
||||
# The admin password is seeded into default.json by the compose entrypoint (CRAFTY_PASSWORD deploy
|
||||
# field). The controller reads it back from default.json and shows it on the app page under "Kezdeti
|
||||
# belépési adatok" — same value the customer set at deploy time.
|
||||
initial_credentials:
|
||||
file: /crafty/app/config/default.json
|
||||
format: json
|
||||
username_key: username
|
||||
password_key: password
|
||||
note: "Kezdeti admin jelszó (a telepítéskor beállított). Az első belépés után változtasd meg a Crafty felületén — ez a kártya továbbra is a kezdeti jelszót mutatja."
|
||||
@@ -0,0 +1,81 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/docmost/.felhom.yml
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Docmost"
|
||||
description: "Modern wiki és dokumentáció platform (Notion-szerű)"
|
||||
category: "productivity"
|
||||
subdomain: "docs"
|
||||
|
||||
# --- Asset slug ---
|
||||
slug: "docmost"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "200M"
|
||||
mem_limit: "768M"
|
||||
pi_compatible: false
|
||||
needs_hdd: false
|
||||
|
||||
# --- Deploy fields ---
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "docs"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: APP_SECRET
|
||||
label: "Alkalmazás titkosítási kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: DB_PASSWORD
|
||||
label: "Adatbázis jelszó"
|
||||
type: secret
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
|
||||
# --- 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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 3000
|
||||
@@ -0,0 +1,83 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "512M"
|
||||
mem_limit: "2048M"
|
||||
pi_compatible: false
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media
|
||||
class: excluded # pure reader of the shared tree (:ro); state lives in volumes
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "emby"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Médiatár útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8096
|
||||
path: "/emby/system/ping"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,65 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
# Bare "/" is the public blog; the admin panel / setup wizard lives at /ghost/.
|
||||
open_path: "/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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "blog"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 2368
|
||||
@@ -0,0 +1,81 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "git"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 3000
|
||||
# /api/healthz is always available (200) once serving; /api/v1/version 404s pre-install-lock.
|
||||
path: "/api/healthz"
|
||||
expect:
|
||||
status: 200
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# Gitea uses STARTTLS to the shim and trusts its self-signed cert via FORCE_TRUST_SERVER_CERT.
|
||||
# Gitea applies GITEA__* env on every boot, so toggling app-email + redeploy takes effect. The From
|
||||
# is Gitea's single GITEA__mailer__FROM; USER/PASSWD stay unset (the shim accepts no-auth).
|
||||
smtp_mapping:
|
||||
host_var: GITEA__mailer__SMTP_ADDR
|
||||
port_var: GITEA__mailer__SMTP_PORT
|
||||
security_var: GITEA__mailer__PROTOCOL
|
||||
security_value: "smtp+starttls"
|
||||
from_var: GITEA__mailer__FROM
|
||||
from_local: gitea
|
||||
extra:
|
||||
GITEA__mailer__ENABLED: "true"
|
||||
GITEA__mailer__FORCE_TRUST_SERVER_CERT: "true"
|
||||
@@ -0,0 +1,61 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "dashboard"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8080
|
||||
@@ -0,0 +1,72 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
# Gokapi's bare "/" redirects away (file-share index); the admin/login UI is at /admin.
|
||||
open_path: "/admin"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "share"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: GOKAPI_PASSWORD
|
||||
label: "Admin jelszó"
|
||||
type: password
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
description: "A Gokapi admin felhasználó (admin) jelszava — ezzel tudsz belépni a kezelőfelületre"
|
||||
|
||||
# --- App info (info page content) ---
|
||||
app_info:
|
||||
tagline: "Ideiglenes fájlmegosztás lejáró linkekkel"
|
||||
docs_url: "https://gokapi.readthedocs.io/"
|
||||
default_creds: "Felhasználó: admin · A jelszó a Beállítások oldalon látható (telepítéskor generált kezdeti jelszó)"
|
||||
|
||||
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'
|
||||
- 'Lépj be: felhasználó "admin", a jelszó a Beállítások oldalon található'
|
||||
- 'Tölts fel egy fájlt és generálj megosztási linket'
|
||||
- 'Állíts be lejárati időt és letöltési limitet a linkhez'
|
||||
- 'Oszd meg a linket - automatikusan lejár a beállított idő után'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 53842
|
||||
@@ -0,0 +1,74 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "grafana"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: GF_SECURITY_ADMIN_PASSWORD
|
||||
label: "Admin jelszó"
|
||||
type: password
|
||||
generate: "password:16"
|
||||
description: "Első bejelentkezéshez. Utána a webes felületen módosítható."
|
||||
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ő)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 3000
|
||||
path: "/api/health"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,67 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "384M"
|
||||
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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "family"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 5000
|
||||
@@ -0,0 +1,66 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "ha"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8123
|
||||
path: "/api/"
|
||||
@@ -0,0 +1,78 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/homebox/.felhom.yml
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Homebox"
|
||||
description: "Otthoni leltár és eszköznyilvántartás"
|
||||
category: "tools"
|
||||
subdomain: "inventory"
|
||||
|
||||
# --- Asset slug ---
|
||||
slug: "homebox"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-19"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "50M"
|
||||
mem_limit: "256M"
|
||||
pi_compatible: true
|
||||
needs_hdd: false
|
||||
|
||||
# --- Deploy fields ---
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: HBOX_AUTH_API_KEY_PEPPER
|
||||
label: "API-kulcs pepper"
|
||||
type: secret
|
||||
generate: "base64key:48"
|
||||
locked_after_deploy: true
|
||||
# A Homebox 0.26+ pánikol induláskor, ha ez nincs beállítva (min. 32 bájt).
|
||||
# Ez sózza az API-kulcsokat: ha újragenerálódik, MINDEN kiadott API-kulcs
|
||||
# érvénytelenné válik, ezért visszaállításkor a régi értéket kell megtartani.
|
||||
data_key: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "inventory"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 7745
|
||||
path: "/api/v1/status"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,61 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "home"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 3000
|
||||
@@ -0,0 +1,102 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/immich/.felhom.yml
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Immich"
|
||||
description: "Fotók és videók kezelése (Google Photos alternatíva)"
|
||||
category: "media"
|
||||
subdomain: "photos"
|
||||
|
||||
# --- Asset slug ---
|
||||
slug: "immich"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "2048M"
|
||||
mem_limit: "4096M"
|
||||
pi_compatible: false
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
hdd:
|
||||
- path: appdata/immich
|
||||
class: mandatory # managed upload library — DB-referenced (SQ3: restore-without = broken)
|
||||
userdata:
|
||||
- path: media/photos
|
||||
class: optional # external library, :ro — precious but re-scanned (explicit overrides ro-default)
|
||||
|
||||
# --- Deploy fields ---
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "photos"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: DB_PASSWORD
|
||||
label: "Adatbázis jelszó"
|
||||
type: secret
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Adattárolási útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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'
|
||||
# MOUNT-READY, REGISTRATION PENDING: a megosztott média/photos mappa be van csatolva
|
||||
# /external/photos néven (csak olvasható), de az Immich CSAK akkor látja, ha az
|
||||
# adminfelületen (Administration → External Libraries) regisztrálod a /external/photos
|
||||
# útvonalat. Compose ezt NEM teszi meg automatikusan — ez egy telepítés utáni lépés.
|
||||
- 'Külső könyvtár (opcionális): Administration → External Libraries → add /external/photos'
|
||||
|
||||
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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 2283
|
||||
path: "/api/server/ping"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,83 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "512M"
|
||||
mem_limit: "2048M"
|
||||
pi_compatible: false
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media
|
||||
class: excluded # pure reader of the shared tree (:ro); state lives in volumes
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "media"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Médiatár útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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/)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8096
|
||||
path: "/health"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,80 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "time"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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: password
|
||||
generate: "password:16"
|
||||
description: "Első bejelentkezéshez. Utána a webes felületen módosítható."
|
||||
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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8001
|
||||
@@ -0,0 +1,83 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "200M"
|
||||
mem_limit: "512M"
|
||||
pi_compatible: true
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media/comics
|
||||
class: optional # ruled: precious-decoupled (re-scanned, hand-curated)
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "comics"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Képregénytár útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 25600
|
||||
# /actuator/health is unauthenticated (200); the /api/v1 prefix is auth-gated (401).
|
||||
path: "/actuator/health"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,82 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/mealie/.felhom.yml
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Mealie"
|
||||
description: "Receptkezelő és étkezéstervező"
|
||||
category: "productivity"
|
||||
subdomain: "recipes"
|
||||
|
||||
# --- Asset slug ---
|
||||
slug: "mealie"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "200M"
|
||||
mem_limit: "1000M"
|
||||
pi_compatible: true
|
||||
needs_hdd: false
|
||||
|
||||
# --- Deploy fields ---
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "recipes"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: tcp
|
||||
port: 9000
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# When app-email is on (global toggle + this app's per-app toggle), the controller injects
|
||||
# host = the on-box shim, port = 2525, From = mealie@felhom.eu. Mealie has NO accept-invalid-
|
||||
# cert option, so it talks PLAINTEXT (SMTP_AUTH_STRATEGY=NONE) to the shim on 2525 — the
|
||||
# spike-validated mode (SPIKE-smtp-app-relay-2026-06-28 §7). SMTP_USER/SMTP_PASSWORD stay
|
||||
# unset (no auth needed; the shim holds no Resend key).
|
||||
smtp_mapping:
|
||||
host_var: SMTP_HOST
|
||||
port_var: SMTP_PORT
|
||||
security_var: SMTP_AUTH_STRATEGY
|
||||
security_value: "NONE"
|
||||
from_var: SMTP_FROM_EMAIL
|
||||
from_name_var: SMTP_FROM_NAME
|
||||
from_local: mealie
|
||||
@@ -0,0 +1,72 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "512M"
|
||||
mem_limit: "1536M"
|
||||
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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "auto"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 5678
|
||||
path: "/healthz"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,82 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "50M"
|
||||
mem_limit: "256M"
|
||||
pi_compatible: true
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media/music
|
||||
class: excluded # re-rippable bulk, :ro, shared tree
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "music"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Zenegyűjtemény útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 4533
|
||||
path: "/ping"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,125 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "256M"
|
||||
mem_limit: "1024M"
|
||||
pi_compatible: false
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
hdd:
|
||||
- path: appdata/nextcloud
|
||||
class: mandatory # THE user files — oc_filecache/shares reference them
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "cloud"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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: password
|
||||
generate: "password:16"
|
||||
description: "Első bejelentkezéshez. Utána a webes felületen módosítható."
|
||||
locked_after_deploy: false
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Adattárolási útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 80
|
||||
path: "/status.php"
|
||||
expect:
|
||||
status: 200
|
||||
body_contains: "installed"
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# Nextcloud (Symfony Mailer) has no env to skip TLS cert verification and opportunistically STARTTLS-upgrades,
|
||||
# so it can't use the self-signed :2525 listener → tls_mode=plaintext points it at :2526 (STARTTLS NOT
|
||||
# advertised → no upgrade attempted; plaintext on the single-tenant app bridge — accepted posture).
|
||||
# Nextcloud SPLITS the From into local-part + domain, so from_var=MAIL_FROM_ADDRESS (local) +
|
||||
# from_domain_var=MAIL_DOMAIN → nextcloud@felhom.eu. No security_var (SMTP_SECURE stays empty = no TLS);
|
||||
# SMTP_NAME/PASSWORD unset (no auth). The official image reads these via getenv() on every boot.
|
||||
smtp_mapping:
|
||||
tls_mode: plaintext
|
||||
host_var: SMTP_HOST
|
||||
port_var: SMTP_PORT
|
||||
from_var: MAIL_FROM_ADDRESS
|
||||
from_domain_var: MAIL_DOMAIN
|
||||
from_local: nextcloud
|
||||
@@ -0,0 +1,84 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "office"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
# --- App-to-app integrations ---
|
||||
integrations:
|
||||
- target: filebrowser
|
||||
label: "FileBrowser integráció"
|
||||
description: "Dokumentumok szerkesztése a fájlkezelőben"
|
||||
- target: nextcloud
|
||||
label: "Nextcloud integráció"
|
||||
description: "Dokumentumok szerkesztése a Nextcloudban"
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 80
|
||||
path: "/healthcheck"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,64 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "gist"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 6157
|
||||
path: "/healthcheck"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,86 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "kb"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 3000
|
||||
path: "/_health"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,167 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/paperless-ngx/.felhom.yml
|
||||
#
|
||||
# This file defines:
|
||||
# 1. Display info (name, description, icon)
|
||||
# 2. Deploy fields (what the user fills in during first deployment)
|
||||
# 3. Asset references (logos, screenshots loaded from felhom.eu)
|
||||
# 4. Resource hints (RAM, Pi compatibility)
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Paperless-ngx"
|
||||
description: "Dokumentumok digitalizálása és rendszerezése"
|
||||
category: "productivity" # productivity, media, finance, security, tools
|
||||
subdomain: "paperless" # -> paperless.<domain>
|
||||
|
||||
# --- Asset slug ---
|
||||
# Used to construct URLs for logo and screenshots from felhom.eu:
|
||||
# Logo: {assets.base_url}/assets/{slug}-logo.webp
|
||||
# Screenshot: {assets.base_url}/assets/{slug}-screenshot-{n}.webp
|
||||
# App page: {assets.base_url}/alkalmazasok#{slug}
|
||||
# Falls back to directory name if not set.
|
||||
slug: "paperless-ngx"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "500M" # Expected memory usage (display hint)
|
||||
mem_limit: "1664M" # Total enforced limit across all containers (1280+256+128) — R-514
|
||||
pi_compatible: true # Runs on Raspberry Pi 3B+
|
||||
needs_hdd: true # Needs external storage for user data
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
hdd:
|
||||
- path: appdata/paperless/media
|
||||
class: mandatory # document originals+archive — DB hashes/paths reference them
|
||||
- path: appdata/paperless/export
|
||||
class: excluded # transient export target
|
||||
import:
|
||||
- path: paperless
|
||||
class: excluded # consume inbox — deleted after ingest by contract
|
||||
|
||||
# --- Customer-facing folder annotation (R-75) ---
|
||||
# ANNOTATES paths that already exist as compose binds above; never declares a new one.
|
||||
# role: import | library | export (unknown role → that entry is simply not shown)
|
||||
data_paths:
|
||||
- path: paperless
|
||||
root: import
|
||||
role: import
|
||||
label: "Beolvasandó dokumentumok"
|
||||
|
||||
# --- Deploy fields ---
|
||||
# Shown to the user during first deployment.
|
||||
# After deployment, values are saved to app.yaml in the stack directory.
|
||||
#
|
||||
# Field types:
|
||||
# domain - Auto-filled from controller config, read-only
|
||||
# secret - Auto-generated, hidden (user sees "Generated ✓")
|
||||
# password - Auto-generated but shown, user can override
|
||||
# path - Filesystem path (validated for existence)
|
||||
# text - Free text input
|
||||
# select - Dropdown with predefined options
|
||||
# boolean - Toggle switch
|
||||
#
|
||||
# Generator types (for secret/password):
|
||||
# password:N - N chars alphanumeric
|
||||
# hex:N - N bytes hex-encoded
|
||||
# static:VAL - Fixed value
|
||||
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "paperless"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: DB_PASSWORD
|
||||
label: "Adatbázis jelszó"
|
||||
type: secret
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: PAPERLESS_SECRET_KEY
|
||||
label: "Titkosítási kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: PAPERLESS_ADMIN_USER
|
||||
label: "Admin felhasználónév"
|
||||
type: text
|
||||
default: "admin"
|
||||
locked_after_deploy: false
|
||||
|
||||
- env_var: PAPERLESS_ADMIN_PASSWORD
|
||||
label: "Admin jelszó"
|
||||
type: password
|
||||
generate: "password:16"
|
||||
description: "Első bejelentkezéshez. Utána a webes felületen módosítható."
|
||||
locked_after_deploy: false
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Adattárolási útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/hdd_1"
|
||||
description: "A külső merevlemez elérési útja, ahol a dokumentumok tárolódnak"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: PAPERLESS_OCR_LANGUAGE
|
||||
label: "OCR nyelv"
|
||||
type: select
|
||||
default: "hun+eng"
|
||||
options:
|
||||
- value: "hun"
|
||||
label: "Magyar"
|
||||
- value: "eng"
|
||||
label: "Angol"
|
||||
- value: "hun+eng"
|
||||
label: "Magyar + Angol"
|
||||
- value: "deu+eng"
|
||||
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'
|
||||
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'
|
||||
- 'Lépj be: felhasználó "admin", a jelszó a Beállítások oldalon található (Automatikusan generált értékek)'
|
||||
- 'Tölts fel egy dokumentumot a webfelületen, VAGY dobd a Fájlkezelőben (FileBrowser) az import/paperless mappába — onnan automatikusan beolvassa és OCR-rel feldolgozza. A Fájlkezelő belépése a Fájlkezelő alkalmazás oldalán található'
|
||||
- 'Sok dokumentumot egyszerre is feltölthetsz: egyenként dolgozza fel őket, egy nagyobb köteg néhány percig tart'
|
||||
- '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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8000
|
||||
@@ -0,0 +1,70 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-12"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "papra"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: AUTH_SECRET
|
||||
label: "Munkamenet-aláíró kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
# A Papra éles módban ELUTASÍTJA az indulást, ha ez az alapértelmezett érték
|
||||
# marad ("the auth secret must not be the default one"), ezért kötelező.
|
||||
# Ez írja alá a munkameneteket: ha újragenerálódik, minden bejelentkezés
|
||||
# érvénytelenné válik, ezért visszaállításkor a régi kulcsot kell megtartani.
|
||||
data_key: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 1221
|
||||
@@ -0,0 +1,83 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-21"
|
||||
|
||||
# --- Lifecycle ---
|
||||
# abandoned: upstream stopped developing the self-hosted edition. NOT offered for new installs;
|
||||
# anyone already running it keeps running it, with a permanent notice that no updates or security
|
||||
# fixes will arrive. Evidence (2026-07-21): the `backend/` and `deployment/` directories are DELETED
|
||||
# from upstream `main` (the project is now an Android app on F-Droid/Obtainium); the last server
|
||||
# image `msdeluise/plant-it-server:0.10.0` was pushed 2024-12-10 and is a security-frozen Spring
|
||||
# Boot 3.4.0; and it requires MySQL 8.0 + Redis, which this template never had.
|
||||
#
|
||||
# The compose below is deliberately LEFT AS-IS (it pins `msdeluise/plant-it:0.10.0`, a repository
|
||||
# that does not exist — the real one is `-server`). It is not worth fixing: the app is not
|
||||
# installable, and rewriting it would imply it is.
|
||||
lifecycle: abandoned
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "plants"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8080
|
||||
path: "/api/info"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,91 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-02-15"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "512M"
|
||||
mem_limit: "2048M"
|
||||
pi_compatible: false
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media
|
||||
class: excluded # pure reader of the shared tree (:ro); state lives in volumes
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "plex"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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/felhom-drives/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)'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 32400
|
||||
path: "/identity"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,60 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-09-14"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "paste"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8080
|
||||
@@ -0,0 +1,85 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "150M"
|
||||
mem_limit: "512M"
|
||||
pi_compatible: true
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media/movies
|
||||
class: excluded # re-downloadable by design
|
||||
- path: downloads
|
||||
class: excluded # ruled: transient queue (cross-app shared with sonarr)
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "radarr"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Médiatár útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 7878
|
||||
path: "/ping"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,88 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "384M"
|
||||
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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "poll"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 3000
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# Rallly (Nodemailer) uses STARTTLS to the shim (SMTP_SECURE=false) and accepts the shim's self-signed
|
||||
# cert (SMTP_REJECT_UNAUTHORIZED=false on v4; v3.x accepts by default). From = Rallly's single
|
||||
# NOREPLY_EMAIL; SMTP_USER/SMTP_PWD stay unset (the shim accepts no-auth).
|
||||
smtp_mapping:
|
||||
host_var: SMTP_HOST
|
||||
port_var: SMTP_PORT
|
||||
security_var: SMTP_SECURE
|
||||
security_value: "false"
|
||||
from_var: NOREPLY_EMAIL
|
||||
from_name_var: NOREPLY_EMAIL_NAME
|
||||
from_local: rallly
|
||||
extra:
|
||||
SMTP_REJECT_UNAUTHORIZED: "false"
|
||||
@@ -0,0 +1,79 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/recipe-importer/.felhom.yml
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Recipe Importer"
|
||||
description: "Magyar receptoldalak importálása Mealie-be és Tandoor-ba"
|
||||
category: "tools"
|
||||
subdomain: "rimport"
|
||||
|
||||
# --- Asset slug ---
|
||||
slug: "recipe-importer"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-12"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "30M"
|
||||
mem_limit: "128M"
|
||||
pi_compatible: true
|
||||
needs_hdd: false
|
||||
|
||||
# --- Deploy fields ---
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "rimport"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: SECRET_KEY
|
||||
label: "Titkos kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
description: "Flask munkamenet titkos kulcs (automatikusan generált)"
|
||||
|
||||
# --- App info (info page content) ---
|
||||
app_info:
|
||||
tagline: 'Magyar receptoldalak importálása egyszerűen — egyedi és tömeges import Mealie-be és Tandoor-ba'
|
||||
docs_url: 'https://gitea.dooplex.hu/admin/recipe-importer'
|
||||
|
||||
use_cases:
|
||||
- 'Receptek importálása 6 magyar oldalról: mindmegette.hu, streetkitchen.hu, nosalty.hu, sobors.hu, kiskegyed.hu és gastrohobbi.hu — hozzávalók, lépések, képek és címkék automatikus felismerése'
|
||||
- 'Tömeges importálás: több URL beillesztése egyszerre, recept-áttekintéssel vagy teljesen automatikus módban'
|
||||
- 'Importálás előtti szerkesztés — strukturált hozzávalók (mennyiség, mértékegység, étel, megjegyzés), lépések módosítása, címkék kezelése'
|
||||
- 'Mealie és Tandoor Recipes egyidejű támogatás — választhatsz célrendszert, vagy mindkettőbe importálhatsz egyszerre'
|
||||
- 'Ismeretlen oldalak esetén schema.org JSON-LD alapú automatikus feldolgozás (recipeIngredient, recipeInstructions, keywords)'
|
||||
|
||||
first_steps:
|
||||
- 'Nyisd meg a rimport.DOMAIN címet a böngészőben'
|
||||
- 'Menj a Beállítások oldalra és add meg a Mealie és/vagy Tandoor URL-t és API kulcsot (Mealie: Profil → API Tokens; Tandoor: Beállítások → API Browser → Auth Token)'
|
||||
- 'Állíts be felhasználónevet és jelszót a hozzáférés védelméhez'
|
||||
- 'Illeszd be egy recept URL-jét az importálás oldalon, kattints a Feldolgozás gombra, majd ellenőrzés után az Importálás gombra'
|
||||
|
||||
prerequisites:
|
||||
- 'Mealie és/vagy Tandoor Recipes telepítve és elérhető a hálózaton'
|
||||
- 'API kulcs a célalkalmazásban (Mealie és/vagy Tandoor) létrehozva'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8000
|
||||
path: "/health"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,149 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "RomM"
|
||||
description: "Retró játékgyűjtemény kezelő"
|
||||
category: "media"
|
||||
subdomain: "arcade"
|
||||
slug: "romm"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "300M"
|
||||
mem_limit: "1024M"
|
||||
pi_compatible: false
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: roms
|
||||
class: optional # ruled: curated ROM sets often not re-acquirable
|
||||
hdd:
|
||||
- path: appdata/romm/resources
|
||||
class: excluded # scraper cache, re-derivable
|
||||
|
||||
# --- Customer-facing folder annotation (R-75) ---
|
||||
data_paths:
|
||||
- path: roms
|
||||
root: userdata
|
||||
role: library
|
||||
label: "ROM gyűjtemény"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "arcade"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: DB_PASSWORD
|
||||
label: "Adatbázis jelszó"
|
||||
type: secret
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: MYSQL_ROOT_PASSWORD
|
||||
label: "MariaDB root jelszó"
|
||||
type: secret
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: ROMM_AUTH_SECRET_KEY
|
||||
label: "Hitelesítési titkosítási kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Adattárolási útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/hdd_1"
|
||||
description: "A külső merevlemez elérési útja, ahol a ROM-ok és borítóképek tárolódnak"
|
||||
locked_after_deploy: true
|
||||
|
||||
# --- App info (info page content) ---
|
||||
app_info:
|
||||
tagline: "Retró játékgyűjtemény kezelő, böngésző és lejátszó"
|
||||
default_creds: "admin / admin"
|
||||
docs_url: "https://github.com/rommapp/romm/wiki"
|
||||
|
||||
use_cases:
|
||||
- "Retró játékgyűjtemény rendszerezése és böngészése webes felületen"
|
||||
- "Játékok metaadatainak automatikus letöltése — borítók, leírások, értékelések"
|
||||
- "Platformonkénti szűrés és keresés a teljes gyűjteményben"
|
||||
- "ROM fájlok webes feltöltése és letöltése"
|
||||
- "Többfelhasználós hozzáférés a háztartás tagjai számára"
|
||||
|
||||
first_steps:
|
||||
- "Nyisd meg az arcade.DOMAIN címet a böngészőben"
|
||||
- "Jelentkezz be az alapértelmezett admin / admin fiókkal"
|
||||
- "Változtasd meg azonnal a jelszót a Settings menüben"
|
||||
- "Töltsd fel a ROM fájlokat a Fájlkezelőben (FileBrowser) a roms/ mappába, platform mappákba rendezve (pl. roms/gba/, roms/snes/)"
|
||||
- "Indíts egy Scan-t a bal oldali menüben a ROM-ok beolvasásához"
|
||||
- "Opcionális: állíts be metaadat-szolgáltatókat a borítóképek és leírások automatikus letöltéséhez (lásd lent)"
|
||||
|
||||
prerequisites:
|
||||
- "Külső HDD szükséges a ROM fájlok és borítóképek tárolásához"
|
||||
- "Legalább 1 GB szabad RAM ajánlott (MariaDB + Redis + RomM)"
|
||||
- "ROM fájlok platform mappákba rendezve (pl. roms/gba/, roms/snes/)"
|
||||
|
||||
# --- Optional config (configurable before or after deployment) ---
|
||||
optional_config:
|
||||
- group: "Metaadat-szolgáltatók"
|
||||
description: "Játékok borítóinak, leírásainak és értékeléseinek automatikus letöltéséhez. Legalább az IGDB beállítása ajánlott. Mindegyik ingyenesen használható regisztráció után."
|
||||
fields:
|
||||
- env_var: IGDB_CLIENT_ID
|
||||
label: "IGDB Client ID"
|
||||
type: text
|
||||
help_url: "https://api-docs.igdb.com/#getting-started"
|
||||
help_text: "1) Regisztrálj / jelentkezz be a Twitch fejlesztői portálon (dev.twitch.tv). 2) Hozz létre egy új alkalmazást (bármilyen névvel). 3) Másold be a Client ID-t."
|
||||
|
||||
- env_var: IGDB_CLIENT_SECRET
|
||||
label: "IGDB Client Secret"
|
||||
type: secret_input
|
||||
help_text: "A Twitch alkalmazásod Client Secret-je (a „New Secret\" gombbal generálhatod)."
|
||||
|
||||
- env_var: STEAMGRIDDB_API_KEY
|
||||
label: "SteamGridDB API Key"
|
||||
type: text
|
||||
help_url: "https://www.steamgriddb.com/profile/preferences/api"
|
||||
help_text: "Regisztrálj a SteamGridDB oldalon, majd a Preferences → API fül alatt kattints a „Generate API key\" gombra."
|
||||
|
||||
- env_var: SCREENSCRAPER_USER
|
||||
label: "ScreenScraper felhasználónév"
|
||||
type: text
|
||||
help_url: "https://www.screenscraper.fr/"
|
||||
help_text: "Regisztrálj a screenscraper.fr oldalon. A felhasználóneved lesz az API felhasználónév."
|
||||
|
||||
- env_var: SCREENSCRAPER_PASSWORD
|
||||
label: "ScreenScraper jelszó"
|
||||
type: secret_input
|
||||
help_text: "A screenscraper.fr fiókod jelszava."
|
||||
|
||||
- env_var: MOBYGAMES_API_KEY
|
||||
label: "MobyGames API Key"
|
||||
type: text
|
||||
help_url: "https://www.mobygames.com/info/api/"
|
||||
help_text: "Regisztrálj a MobyGames oldalon, majd az API oldalon igényelj kulcsot. Részletes játékinformációkat és krediteket biztosít."
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8080
|
||||
@@ -0,0 +1,68 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "requests"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 5055
|
||||
path: "/api/v1/status"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,85 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "150M"
|
||||
mem_limit: "512M"
|
||||
pi_compatible: true
|
||||
needs_hdd: true
|
||||
|
||||
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
|
||||
backup:
|
||||
userdata:
|
||||
- path: media/tv
|
||||
class: excluded
|
||||
- path: downloads
|
||||
class: excluded
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "sonarr"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: HDD_PATH
|
||||
label: "Médiatár útvonal"
|
||||
type: path
|
||||
required: true
|
||||
placeholder: "/mnt/felhom-drives/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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 8989
|
||||
path: "/ping"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,91 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml - App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
|
||||
display_name: "SparkyFitness"
|
||||
description: "Táplálkozás- és edzéskövető"
|
||||
category: "home"
|
||||
subdomain: "sparky"
|
||||
slug: "sparkyfitness"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
resources:
|
||||
mem_request: "400M"
|
||||
# Sum of compose limits: db 512M + server 1024M + frontend 256M = 1792M
|
||||
mem_limit: "1792M"
|
||||
pi_compatible: false
|
||||
needs_hdd: false
|
||||
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "sparky"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: DB_PASSWORD
|
||||
label: "Adatbázis jelszó"
|
||||
type: secret
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: APP_DB_PASSWORD
|
||||
label: "Alkalmazás adatbázis jelszó"
|
||||
type: secret
|
||||
generate: "password:24"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: API_ENCRYPTION_KEY
|
||||
label: "Adattitkosítási kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
# Encrypts stored data (e.g. external-integration credentials). Must NEVER be
|
||||
# regenerated after first boot — that would make existing encrypted data
|
||||
# unrecoverable. At restore the controller RECOVERS (never regenerates) it.
|
||||
data_key: true
|
||||
|
||||
- env_var: BETTER_AUTH_SECRET
|
||||
label: "Munkamenet aláíró kulcs"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
locked_after_deploy: true
|
||||
# Signs sessions and encrypts 2FA/TOTP secrets. Must NEVER change after first
|
||||
# boot — changing it locks out any user who enabled two-factor auth.
|
||||
data_key: true
|
||||
|
||||
app_info:
|
||||
tagline: "Táplálkozási napló, kalóriaszámláló és edzéskövető – önállóan üzemeltetve"
|
||||
docs_url: "https://github.com/CodeWithCJ/SparkyFitness"
|
||||
|
||||
use_cases:
|
||||
- 'Napi étkezések és kalóriabevitel naplózása'
|
||||
- 'Testsúly és testméretek követése grafikonokkal'
|
||||
- 'Edzések és mozgás rögzítése'
|
||||
- 'Tápanyag-célok (fehérje, szénhidrát, zsír) beállítása és követése'
|
||||
- 'Haladás áttekintése idővonalon és statisztikákon'
|
||||
|
||||
first_steps:
|
||||
- 'Nyisd meg a sparky.DOMAIN címet a böngészőben'
|
||||
- 'Regisztrálj egy fiókot e-mail címmel és jelszóval'
|
||||
- 'Állítsd be a profilodat és a napi céljaidat'
|
||||
- 'Kezdd el naplózni az étkezéseidet és edzéseidet'
|
||||
|
||||
prerequisites:
|
||||
- 'Az első indításkor a szerver lefuttatja az adatbázis-migrációkat – ez akár 1-2 percig is eltarthat, mire az alkalmazás elérhetővé válik'
|
||||
|
||||
# --- Controller-side health probe (same form as wger) ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 80
|
||||
@@ -0,0 +1,75 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "512M"
|
||||
mem_limit: "1280M"
|
||||
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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "recipes"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8080
|
||||
path: "/accounts/login/"
|
||||
@@ -0,0 +1,57 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-12"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "terminal"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 8080
|
||||
@@ -0,0 +1,62 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "status"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 3001
|
||||
@@ -0,0 +1,112 @@
|
||||
# =============================================================================
|
||||
# .felhom.yml — App metadata for felhom-controller
|
||||
# =============================================================================
|
||||
# Place alongside docker-compose.yml in each stack directory:
|
||||
# /opt/docker/stacks/vaultwarden/.felhom.yml
|
||||
# =============================================================================
|
||||
|
||||
# --- Display info (shown on dashboard) ---
|
||||
display_name: "Vaultwarden"
|
||||
description: "Jelszókezelő (Bitwarden-kompatibilis)"
|
||||
category: "security"
|
||||
subdomain: "vault"
|
||||
|
||||
# --- Asset slug ---
|
||||
slug: "vaultwarden"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "50M"
|
||||
mem_limit: "256M"
|
||||
pi_compatible: true
|
||||
needs_hdd: false
|
||||
|
||||
# --- Deploy fields ---
|
||||
deploy_fields:
|
||||
- env_var: DOMAIN
|
||||
label: "Domain"
|
||||
type: domain
|
||||
description: "A szerver domain neve"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "vault"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: ADMIN_TOKEN
|
||||
label: "Admin panel token"
|
||||
type: secret
|
||||
generate: "hex:32"
|
||||
description: "Token az admin panel eléréséhez (https://vault.<domain>/admin)"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: SIGNUPS_ALLOWED
|
||||
label: "Regisztráció engedélyezése"
|
||||
type: select
|
||||
default: "false"
|
||||
options:
|
||||
- value: "false"
|
||||
label: "Nem – csak meghívással (ajánlott)"
|
||||
- value: "true"
|
||||
label: "Igen – bárki regisztrálhat, aki ismeri a címet"
|
||||
description: "Alapból lezárva: a család tagjait az admin panelen hívod meg (lásd Első lépések). Nyitott regisztrációval bárki fiókot nyithat, aki kitalálja a címet."
|
||||
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/admin címet, és lépj be az admin panel tokenjével (Beállítások → Automatikusan generált értékek)'
|
||||
- 'A „Users" fülön az „Invite User" mezőben hívd meg a saját és a családtagok e-mail címét — a regisztráció alapból le van zárva, csak meghívott cím nyithat fiókot'
|
||||
- 'Nyisd meg a vault.DOMAIN címet, válaszd a „Create account" lehetőséget a meghívott címmel, és adj meg erős mesterjelszót'
|
||||
- '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.)'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 80
|
||||
path: "/alive"
|
||||
expect:
|
||||
status: 200
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# When app-email is on (global toggle + this app's per-app toggle), the controller injects
|
||||
# the relay SMTP settings: host = the on-box shim, port = 2525, From = vaultwarden@felhom.eu.
|
||||
# Vaultwarden uses STARTTLS to the shim and accepts its self-signed cert
|
||||
# (SMTP_ACCEPT_INVALID_CERTS/HOSTNAMES). SMTP_USERNAME/SMTP_PASSWORD are intentionally left
|
||||
# unset — the shim accepts no-auth on the Docker network and holds no Resend key.
|
||||
smtp_mapping:
|
||||
host_var: SMTP_HOST
|
||||
port_var: SMTP_PORT
|
||||
security_var: SMTP_SECURITY
|
||||
security_value: starttls
|
||||
from_var: SMTP_FROM
|
||||
from_name_var: SMTP_FROM_NAME
|
||||
from_local: vaultwarden
|
||||
extra:
|
||||
SMTP_ACCEPT_INVALID_CERTS: "true"
|
||||
SMTP_ACCEPT_INVALID_HOSTNAMES: "true"
|
||||
# Boot-gate for Vaultwarden's strict SMTP validation (campaign finding F1, 2026-07-06):
|
||||
# the image errors out when SMTP_HOST/SMTP_FROM are defined-but-empty, so the compose
|
||||
# default is _ENABLE_SMTP=false and this injection flips it on with the rest of the group.
|
||||
_ENABLE_SMTP: "true"
|
||||
@@ -0,0 +1,71 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "tasks"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 3456
|
||||
path: "/api/v1/info"
|
||||
expect:
|
||||
status: 200
|
||||
@@ -0,0 +1,81 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-21"
|
||||
|
||||
# --- Resource hints (displayed on deploy screen) ---
|
||||
resources:
|
||||
mem_request: "350M"
|
||||
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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "hike"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- env_var: SUBDOMAIN_DB
|
||||
label: "Adatbázis aldomain"
|
||||
type: subdomain
|
||||
default: "hike-db"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "A PocketBase adatbázis aldomainje - a böngésző KÖZVETLENÜL ezt hívja, ezért saját nevet kap"
|
||||
|
||||
- env_var: MEILI_MASTER_KEY
|
||||
label: "Keresőmotor kulcs"
|
||||
type: secret
|
||||
generate: "hex:16"
|
||||
locked_after_deploy: true
|
||||
|
||||
- env_var: POCKETBASE_ENCRYPTION_KEY
|
||||
label: "Adatbázis titkosítási 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://wanderer.to/"
|
||||
|
||||
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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 3000
|
||||
@@ -0,0 +1,69 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-19"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "fitness"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 80
|
||||
@@ -0,0 +1,61 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-19"
|
||||
|
||||
# --- 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
|
||||
|
||||
- env_var: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "wishes"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
# --- 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'
|
||||
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 3000
|
||||
@@ -0,0 +1,80 @@
|
||||
# =============================================================================
|
||||
# .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"
|
||||
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
|
||||
# changes an image: line must set this to the same day (see CLAUDE.md).
|
||||
catalog_since: "2026-07-18"
|
||||
|
||||
# --- 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: SUBDOMAIN
|
||||
label: "Aldomain"
|
||||
type: subdomain
|
||||
default: "img"
|
||||
required: true
|
||||
locked_after_deploy: true
|
||||
description: "Az alkalmazás aldomainje"
|
||||
|
||||
- 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'
|
||||
|
||||
# --- Controller-side health probe ---
|
||||
healthcheck:
|
||||
checks:
|
||||
- type: api
|
||||
port: 3000
|
||||
path: "/api/health"
|
||||
expect:
|
||||
status: 200
|
||||
Reference in New Issue
Block a user