5 KiB
v0.3.01 — Boilerplates fixes + git-driven versioning
Fixes bovenop v0.3.0
🔁 Auto-migratie van default-repos voor upgraders
Bestaande installaties (vanaf v0.2.x) hadden de Boilerplates-repo niet zichtbaar
in de App Store omdat hun config.json in de su-data volume al bestond en de
nieuwe DEFAULTS["APP_REPOS"] daardoor werd overschreven.
core/__init__.py load() doet nu een eenmalige migratie: ontbrekende
default-repos worden bij opstart aangevuld op basis van id, en gemarkeerd in
MIGRATIONS_DONE: ["v0.3.0_default_repos"]. Wordt direct gepersisteerd.
Verwijdert een gebruiker de Boilerplates-repo expliciet, dan komt-ie niet
automatisch terug.
🧹 YAML-poetsstap na boilerplate-render
Bij stacks waar de meeste optionele groepen uit staan (Authentik, Nextcloud,
etc.) liet de Jinja-render verlaten mapping-sleutels achter (volumes:,
networks:, etc. zonder kinderen). Docker-compose faalt daarop met "block
sequence entries are not allowed in this context".
core/boilerplates.py _tidy() heeft nu een _drop_empty_mappings() substep
die in meerdere passes mapping-sleutels verwijdert die alleen worden gevolgd
door whitespace/commentaar of een sibling op gelijke/lagere indent. Werkt in
cascade.
🏷️ Versie komt nu uit git
Dockerfile accepteert ARG SU_VERSION=dev en bakt die in ENV SU_VERSION +
OCI image-label. Met docker build --build-arg SU_VERSION=$(git describe ...)
weet het image zijn eigen versie. De Server Up UI toont automatisch de juiste
waarde, ongeacht wat de productie-compose meegeeft.
Forgejo Actions kan een tag-push automatisch verwerken — zie
server-up-deploy/README.md.
Migratie vanaf v0.3.0
docker compose build --no-cache
docker compose up -d
v0.3.0 — UI rebuild + Boilerplates support
Hoogtepunten
🎨 Nieuwe UI (Tailwind + Alpine + HTMX)
templates/index.htmlis volledig herschreven. De handgeschreven CSS (--bg/--s1/...variabelen, ad-hoc grid-classes) is vervangen door Tailwind utility-classes met een gematchte donker/licht-palette.- Statebeheer via Alpine.js: één
app()component bovenop het hele document, geen$=document.getElementById-spaghetti meer. - HTMX is geladen voor toekomstige server-rendered partials. Het bestaande fetch-RPC patroon blijft werken; HTMX kan progressief worden ingezet.
- Modals, toasts, terminal-overlay en first-run wizard zitten allemaal in één Alpine-state — geen losse globale variabelen meer.
- Mobiele sidebar gedraagt zich nu correct (slide-in i.p.v. layout-flip).
🧩 ChristianLempa Boilerplates ondersteund
Server Up herkent nu twee stack-formaten naast elkaar:
| Formaat | Detectie | Bron |
|---|---|---|
| Compose (origineel) | compose.yml / docker-compose.yml (+ optioneel stack.json) |
bes-r/server-up |
| Boilerplate (nieuw) | template.json + files/ |
ChristianLempa/boilerplates-library |
Nieuw bestand app/core/boilerplates.py:
is_boilerplate(d)— detectiemetadata(d)— converteerttemplate.json["metadata"](incl. selfhst-icons) naar Server-Up formaatfields(d)— flattened variable-schema voor de install-modalrender_to_dir(src, dest, values)— rendertfiles/*.yamlmet de Jinja-achtige<< var >>+<%- if expr %>syntax die de boilerplates gebruiken (Jinja2 met custom delimiters). Niet-tekst bestanden worden verbatim gekopieerd.
app/core/git.py → _scan_compose_dirs herkent beide formaten en zet
format: "boilerplate" in de stack-entry zodat de UI er een badge bij kan tonen.
app/app.py:
_find_stack_srcaccepteert ook boilerplate-mappen.POST /api/store/previewretourneert voor boilerplates het variabelen-schema (fields) plus een gerenderde preview met defaults.POST /api/store/installmet body{values: {...}}rendert de templates voor je voordat de stack gestart wordt.
⚙️ Default-repos
Een nieuwe Server Up komt nu uit de doos met twee app-repositories:
bes-r/server-up— eigen stacks, submapappsChristianLempa/boilerplates-library— community templates, submapcompose
📦 Versie / Dockerfile
SU_VERSION=0.3.0inDockerfileendocker-compose.ymlrequirements.txt: Jinja2 expliciet toegevoegd (was al een Flask-dep)
Migratie vanaf v0.2.29
- Build opnieuw:
docker compose up -d --build --no-cache - Bestaande stacks blijven werken (legacy formaat is intact).
- De Boilerplates-repo wordt automatisch toegevoegd voor verse installs.
Bestaande gebruikers kunnen de repo handmatig toevoegen via
Instellingen → Git Repositories met submap
compose.
Bekende beperkingen
- Boilerplate-templates met onbekende custom-filters of complexe Ansible-style conditionals kunnen falen — de fout verschijnt in het terminal-paneel.
volumes:blokken die conditioneel zijn (<%- if volume_mode == 'local' %>) werken; complexere render-logica (loops over services) is nog niet getest.- HTMX is geladen maar de meeste interacties draaien nog op fetch-RPC. Verdere migratie naar server-rendered partials kan stapsgewijs in volgende releases.