Fixes mixed content errors when OO is behind Traefik HTTPS reverse
proxy. Without this, OO Document Server generates http:// URLs for
editor resources, which browsers block on HTTPS pages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Declares FileBrowser and Nextcloud as integration targets for the
new app-to-app integration framework in the controller.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The !include directives for automations/scripts/scenes reference files
that don't exist on fresh install, causing HA to enter recovery mode
which ignores trusted_proxies. Simplified to minimal config with just
default_config and http block - HA adds the rest during onboarding.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
HA rejects proxied requests (400 Bad Request) without trusted_proxies
in configuration.yaml. Uses entrypoint wrapper pattern (like romm) to
ensure the http config block exists before HA starts.
Handles both fresh deploys (creates full configuration.yaml) and
existing installs (appends http block if missing).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The /api/ endpoint requires authentication, causing healthcheck to always
fail and spam HA logs with "invalid authentication" warnings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ghost 6.x redirects all HTTP requests to the configured external URL.
- Docker healthcheck: use node http.get (accepts 301 as healthy)
- Controller probe: switch from api (expect 200) to http (any response)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each app template now declares a healthcheck: section in .felhom.yml
with appropriate probe type (http, api, or tcp) and endpoint based on
the app's known health endpoints. The controller uses these to verify
services are actually responding, not just that containers are running.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The vikunja/vikunja:0.24.6 image is a scratch/distroless build with
only the Go binary. wget, curl, sh, and all other utilities are
missing, making in-container healthchecks impossible.
Removing the healthcheck lets the controller detect the container
as "running" directly from Docker state, which is the correct
behavior for shell-less images.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Vikunja 0.24.6 runs as uid=1000 but named Docker volumes are
created with root ownership, causing permission denied on /db.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hungarian recipe scraper for Mealie & Tandoor. Supports mindmegette.hu,
streetkitchen.hu, nosalty.hu, sobors.hu, kiskegyed.hu, gastrohobbi.hu
with schema.org fallback for other sites.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All user-facing admin passwords now use type: password instead of
type: secret, giving users a visible editable field with Generate
button (matching Paperless-ngx pattern).
Affected apps: Nextcloud, Grafana, Kimai, Code-server
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Compose templates were mounting app data at ${HDD_PATH}/appdata/ instead
of ${HDD_PATH}/felhom-data/appdata/ as designed in the v0.26.0+ path
structure. Affects: nextcloud, immich, paperless-ngx, romm.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend: wget missing from image, use python urllib instead.
Frontend: localhost resolves to IPv6, use 127.0.0.1.
Backend: add SECRET_KEY env var (v0.11.0 reads it directly).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All 51 docker-compose.yml: replaced hardcoded subdomain.${DOMAIN}
with ${SUBDOMAIN}.${DOMAIN} in Traefik labels, app env vars, and
comments.
All 51 .felhom.yml: added SUBDOMAIN deploy field (type: subdomain)
with default matching existing subdomain metadata value.
Works with felhom-controller v0.27.0 which validates and stores the
user-chosen subdomain in app.yaml. Existing deployed apps get
SUBDOMAIN auto-injected via InjectMissingFields() on next sync.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Part of v0.14.0 storage architecture overhaul — standardize
app data paths under appdata/ instead of storage/.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
FileBrowser is now deployed as infrastructure via docker-setup.sh,
no longer managed through the app catalog.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hungarian quotation marks „..." used ASCII " as closing quote, which
terminated the YAML double-quoted string prematurely. Escaped with \".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>