- apps/prometheus was kapot: het koppelde een lege map op /etc/prometheus en
startte met --config.file naar een bestand dat er nooit kwam. Er zit nu een
startconfiguratie bij, met koppelvelden naar node-exporter en cAdvisor
- De meeste apps van deze ronde zijn de ontbrekende helft van wat er al stond:
node-exporter, cAdvisor en Alertmanager maken Prometheus bruikbaar; Loki en
Alloy bewaren logs waar Dozzle alleen live meekijkt; Unbound zoekt DNS zelf op
in plaats van door te vragen aan Google of Cloudflare
- Domeinen die ontbraken: evcc (energie), Healthchecks (cronbewaking),
Infisical (geheimen voor applicaties), Music Assistant, pgAdmin
- Verder Crafty, Manyfold, ErsatzTV, FitTrackee, ComfyUI, Omada, en de zwaardere
Zabbix, Graylog, Wazuh, NetBox, Seafile en OpenCloud. Van 218 naar 241 apps
- Nieuw tools/controleer_images.py: controleert of elk image echt bestaat. De
ad-hoc versie draaide met zestien verzoeken tegelijk en meldde negen
ontbrekende images die alle negen wel bestonden -- registries knijpen af, en
dat is niet te onderscheiden van een ontbrekend image. Nu vier tegelijk met
opnieuw proberen, en als stap in de drie workflows
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
- Elk *arr-onderdeel is nu ook een losse app in de store (46 nieuwe sjablonen);
los en gebundeld komen uit één bron (tools/arr_sjablonen.py) met een test die
bewaakt dat ze niet uiteen lopen
- Alles deelt één /data-map, zodat hardlinks werken; losse /tv-, /movies- en
/downloads-mounts zijn eruit, UMASK=002 erbij
- Nieuwe eerste stap "Onderdelen" in het invulmenu, met kopjes per soort; de
dubbele groepsschakelaar en de lege kaarten in Instellingen zijn weg
- Eigen IP-adres per container in plaats van per stack; containers zonder adres
houden hun poortmapping. Ook Pangolin publiceert nu per container
- Huntarr vervangen door NeutArr (project offline na lekken, image bestaat niet
meer), Maintainerr naar zijn nieuwe organisatie
- 31 apps toegevoegd uit het *arr-ecosysteem, alle images tegen hun registry
gecontroleerd
- data_dir hernoemd naar appdata_dir in de hele catalogus, naast de nieuwe
data_root; qBittorrent van poort 8080 naar 8097
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
Aanleiding: Homepage weigerde met "Host validation failed" omdat de
standaardwaarde van allowed_hosts poort 3001 noemde terwijl het poortveld op
3002 stond. Alle 96 sjablonen zijn daarop nagelopen.
Systemisch:
- De dobbelsteenknop, waar zeventien apps in hun uitleg naar verwijzen,
verscheen nooit: hij hing af van een veld 'secret' dat fields() niet
meestuurde. Wachtwoorden stonden daardoor leesbaar in het formulier.
- 27 velden die je toch nooit zelf typt (databasewachtwoorden, JWT- en
versleutelingssleutels) worden nu voorgevuld met een willekeurige waarde.
Inlogwachtwoorden krijgen alleen een knop, want die moet je noteren.
- De knop hangt nu aan 'generate' in plaats van aan 'secret': voor een
WireGuard-privésleutel of een token uit een andere app is een verzonnen
waarde juist fout.
- required werd nergens gecontroleerd. Je kon installeren met een leeg
databasewachtwoord of een lege sleutel. Nu geweigerd bij installeren en bij
herconfigureren, met vermelding van de lege velden. Velden achter een
uitgeschakelde groepsschakelaar tellen niet mee.
- Wachtwoorden werden uitgeschreven in het installatielog; nu gemaskeerd.
Losse fouten:
- homepage: allowed_hosts stond op localhost:3001, nu * met uitleg.
- baserow, hedgedoc, ntfy: URL in de standaardwaarde wees naar een poort waar
niets luistert.
- Vast wachtwoord in acht sjablonen weggehaald: ghost, immich, miniflux,
paperless-ngx, unifi-network en vikunja kregen allemaal dezelfde
database-wachtwoorden; grafana en gotify stonden op 'admin'.
- data_dir bij keycloak, metube, miniflux en teslamate stond in het formulier
maar kwam nergens terecht (die apps gebruiken een Docker-volume).
- puid/pgid bij freshrss: het image kent ze niet.
- prometheus gaf de gevraagde tijdzone niet door.
Nieuw tests/test_app_templates.py: rendert elke app met zijn standaardwaarden
en controleert ongedefinieerde variabelen, velden zonder werking,
niet-gedeclareerde volumes, depends_on, dubbele containernamen,
poortconflicten, poortnummers in standaardwaarden en vaste wachtwoorden.
2236 tests groen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
Van 65 naar 96 apps. Selectie op basis van awesome-selfhosted, selfh.st,
Perfect Media Server en een paar overzichtslijsten van 2026, aangevuld met de
gaten in de bestaande collectie.
- Monitoring: prometheus, influxdb, netdata, beszel
- Proxy: caddy
- Notities/kennis: memos, hedgedoc, wikijs, excalidraw, karakeep
- Data: nocodb, baserow, metabase
- Identiteit: authelia, keycloak
- Media: komga, photoprism, metube, pinchflat
- Meldingen: ntfy
- Productiviteit: planka, focalboard, kimai
- Locatie/voertuig: owntracks, teslamate
- Hulpmiddelen: shlink, cyberchef, languagetool, kopia
- AI: ollama, open-webui
Prometheus ontbrak terwijl Grafana er al stond; Authelia en Keycloak sluiten
aan op de reverse-proxy-SSO die Server Up zelf ondersteunt.
De images van de nieuwere apps (beszel, karakeep, pinchflat) zijn nagetrokken
bij de bron in plaats van uit het hoofd opgeschreven. Van karakeep is de
officiele compose overgenomen inclusief de meilisearch- en chrome-containers.
Vijftien poortbotsingen met bestaande apps automatisch rechtgezet. Caddy deelt
80/443 met traefik en nginx-proxy-manager (alternatieven voor dezelfde taak) en
staat daarvoor in de allowlist.
705 tests groen; elke app rendert naar geldige compose-YAML met gedeclareerde
volumes en zonder onvervangen variabelen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb