Versienummering terug in de 0.7-reeks, stappen van 0.01
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 17m1s

Ik sprong met tientallen (0.7.90 → 0.8.00 → … → 0.9.00 → 0.10.00) en liep
daarmee de reeks uit: dit schema rolt over bij .90, dus na 0.9.90 hoort 1.0.00
te komen. "0.10.00" bestond niet, en schond ook het formaat v0.0.00 uit de
projectafspraken.

De vijftien uitgaven van deze sessie zijn hernummerd naar 0.7.81 t/m 0.7.95,
aaneengesloten. In één doorloop met een tabel, want 0.8.81 wordt 0.7.90 en
0.7.90 wordt 0.7.81 — achtereenvolgende vervangingen zouden elkaar overschrijven.

Meegenomen: verwijzingen in de documentatie, .env.example, install.sh en de
tests. Verkorte vormen als "vanaf v0.10" zijn vervangen door het volledige
nummer, want die waren niet automatisch te herleiden.

De commit-onderwerpen in de geschiedenis dragen nog de oude nummers; VERSION en
CHANGELOG zijn leidend.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
This commit is contained in:
Ramon 2026-08-03 07:51:05 +02:00
parent f3ead0c526
commit 3bee664484
9 changed files with 29 additions and 29 deletions

View file

@ -43,7 +43,7 @@ PORT=5000
#BASE_DIR=/opt/serverup #BASE_DIR=/opt/serverup
# Onder welk account Server Up draait. install.sh vult dit in; 0 (of leeg) is # Onder welk account Server Up draait. install.sh vult dit in; 0 (of leeg) is
# root, zoals vóór v0.10. De container start altijd als root — dat moet, want # root, zoals vóór v0.7.93. De container start altijd als root — dat moet, want
# het docker-volume is van root — en zakt daarna af naar deze uid/gid. # het docker-volume is van root — en zakt daarna af naar deze uid/gid.
# #
# Loop je ergens tegenaan, zet ze dan allebei op 0 en draai `docker compose up -d`. # Loop je ergens tegenaan, zet ze dan allebei op 0 en draai `docker compose up -d`.

View file

@ -1,4 +1,4 @@
# v0.10.20-beta — Bijwerken vanuit de interface, en een script dat nakijkt # v0.7.95-beta — Bijwerken vanuit de interface, en een script dat nakijkt
Het tweede deel van de controle op het installatiepad. Het tweede deel van de controle op het installatiepad.
@ -11,8 +11,8 @@ viel niet op omdat een zelfgebouwd image de knop toch al uitschakelt; zette je
te zetten — dan faalde hij altijd. De helper-container mount die map wél en te zetten — dan faalde hij altijd. De helper-container mount die map wél en
draait als root, dus die zet de tag nu. draait als root, dus die zet de tag nu.
**Een vastgepinde versie kon nooit bijgewerkt worden.** `--branch v0.9.00-beta` **Een vastgepinde versie kon nooit bijgewerkt worden.** `--branch v0.7.92-beta`
installeerde prima, maar bijwerken deed `git reset --hard origin/v0.9.00-beta` installeerde prima, maar bijwerken deed `git reset --hard origin/v0.7.92-beta`
en tags krijgen geen `origin/`-ref: "fatal: ambiguous argument". Het resetten en tags krijgen geen `origin/`-ref: "fatal: ambiguous argument". Het resetten
gaat nu naar `FETCH_HEAD`, wat voor takken en tags allebei klopt. De test liet gaat nu naar `FETCH_HEAD`, wat voor takken en tags allebei klopt. De test liet
zien dat het na een tag-installatie óók voor takken stuk was. zien dat het na een tag-installatie óók voor takken stuk was.
@ -36,7 +36,7 @@ Twee nieuwe opties:
1 bij fouten. De CI draait hem na elke deploy tegen de echte installatie — 1 bij fouten. De CI draait hem na elke deploy tegen de echte installatie —
ruim honderd regels shell die je nergens anders getest krijgt. ruim honderd regels shell die je nergens anders getest krijgt.
# v0.10.10-beta — Het installatiescript loog op drie plekken # v0.7.94-beta — Het installatiescript loog op drie plekken
Een controle van het hele installatiepad leverde drie fouten op die alledrie op Een controle van het hele installatiepad leverde drie fouten op die alledrie op
`curl … | sh` liggen — de regel die de README noemt. `curl … | sh` liggen — de regel die de README noemt.
@ -80,7 +80,7 @@ builtin*, en een mislukte redirect daarop beëindigt volgens POSIX de hele shell
— exit 2, zonder melding, nog vóór de eerste stap. Dat brak elke installatie — exit 2, zonder melding, nog vóór de eerste stap. Dat brak elke installatie
zonder terminal. De openpoging staat nu in een subshell. zonder terminal. De openpoging staat nu in een subshell.
# v0.10.00-beta — Server Up draait niet meer als root # v0.7.93-beta — Server Up draait niet meer als root
Er stond `user: "0:0"` in `docker-compose.yml` en nergens waarom. Dat is nu een Er stond `user: "0:0"` in `docker-compose.yml` en nergens waarom. Dat is nu een
keuze die je bij de installatie maakt. keuze die je bij de installatie maakt.
@ -130,7 +130,7 @@ is, en dat `SU_UID=0` root laat blijven.
**Terug naar de oude situatie:** zet `SU_UID=0` en `SU_GID=0` in je `.env` en **Terug naar de oude situatie:** zet `SU_UID=0` en `SU_GID=0` in je `.env` en
draai `docker compose up -d`. draai `docker compose up -d`.
# v0.9.00-beta — Eén hoofdmap, en je data mag mee verhuizen # v0.7.92-beta — Eén hoofdmap, en je data mag mee verhuizen
**Server Up stelde `/opt/serverup` voor, wat je ook instelde.** Dat was geen **Server Up stelde `/opt/serverup` voor, wat je ook instelde.** Dat was geen
weergavefout maar drie fouten tegelijk: weergavefout maar drie fouten tegelijk:
@ -176,7 +176,7 @@ Lukt dat niet, dan gaat de verhuizing door met een waarschuwing in het log.
Jobs kregen daarvoor een `voortgang()`; de terminal toont de balk boven het log. Jobs kregen daarvoor een `voortgang()`; de terminal toont de balk boven het log.
# v0.8.82-beta — "Poort {port} is vrij" stond er letterlijk # v0.7.91-beta — "Poort {port} is vrij" stond er letterlijk
De poortcontrole werd aangesloten op vertaalsleutels die er al waren, en twee De poortcontrole werd aangesloten op vertaalsleutels die er al waren, en twee
daarvan verwachten een plaatshouder die niet werd meegegeven: `port_free` wil daarvan verwachten een plaatshouder die niet werd meegegeven: `port_free` wil
@ -189,7 +189,7 @@ en ook voor aanroepen zónder variabelen. Dat laatste was nodig: de eerste versi
van die test keek alleen naar aanroepen die wél iets meegaven, en liet de fout van die test keek alleen naar aanroepen die wél iets meegaven, en liet de fout
waar hij voor gemaakt was gewoon passeren. waar hij voor gemaakt was gewoon passeren.
# v0.8.81-beta — Poorten kiezen zonder gokken, en installeren op een telefoon # v0.7.90-beta — Poorten kiezen zonder gokken, en installeren op een telefoon
**De poortcontrole zat er wel, maar werd nooit gevraagd.** `/api/ports/check` **De poortcontrole zat er wel, maar werd nooit gevraagd.** `/api/ports/check`
bestaat en kijkt naar wat Docker publiceert én naar wat er rechtstreeks op de bestaat en kijkt naar wat Docker publiceert én naar wat er rechtstreeks op de
@ -217,7 +217,7 @@ op een rare plek af te breken. En omdat er dan geen achtergrond meer is om op te
tikken, zit er een sluitknop in de kop — die was er niet, en zonder deze tikken, zit er een sluitknop in de kop — die was er niet, en zonder deze
wijziging was je er niet uit gekomen. wijziging was je er niet uit gekomen.
# v0.8.70-beta — De store blijft soepel, en achtentwintig apps erbij # v0.7.89-beta — De store blijft soepel, en achtentwintig apps erbij
**Typen in het zoekveld werd traag.** `filteredStore()` is een methode, geen **Typen in het zoekveld werd traag.** `filteredStore()` is een methode, geen
gecachte getter, en werd per repo drie keer per reactieve tick aangeroepen: in de gecachte getter, en werd per repo drie keer per reactieve tick aangeroepen: in de
@ -250,7 +250,7 @@ alles te kijken. En het zoekveld wacht 200 ms voordat het filtert.
Alle 318 images in de catalogus zijn opnieuw tegen hun registry gecontroleerd. Alle 318 images in de catalogus zijn opnieuw tegen hun registry gecontroleerd.
# v0.8.60-beta — Backups bevatten nu je gegevens, en Pangolin hoort erbij # v0.7.88-beta — Backups bevatten nu je gegevens, en Pangolin hoort erbij
**Een backup gaf je niets terug.** `backups.create()` maakte een tar van de **Een backup gaf je niets terug.** `backups.create()` maakte een tar van de
stackmap: de compose, de `.env` en de metadata. `LIBRARY_DIR` is stackmap: de compose, de `.env` en de metadata. `LIBRARY_DIR` is
@ -290,7 +290,7 @@ installeren wat er ontbrak. Haal je Mosquitto later weg, dan viel Zigbee2MQTT
stil zonder dat iets zei waarom. Dat staat nu als badge op de stackkaart, met de stil zonder dat iets zei waarom. Dat staat nu als badge op de stackkaart, met de
reden in de tooltip en een doorklik naar de store. reden in de tooltip en een doorklik naar de store.
# v0.8.50-beta — Leesbare namen, zichtbaar wat al draait, en bruikbaar op een telefoon # v0.7.87-beta — Leesbare namen, zichtbaar wat al draait, en bruikbaar op een telefoon
**Het auditlog toonde ruwe id's.** In de kolommen stond `store`, `reconfigure`, **Het auditlog toonde ruwe id's.** In de kolommen stond `store`, `reconfigure`,
`credentials_view` — de sleutels waarmee de code logt, niet iets wat je leest. Die `credentials_view` — de sleutels waarmee de code logt, niet iets wat je leest. Die
@ -318,7 +318,7 @@ rest — mét namen erbij. Op een breed scherm verandert er niets. De rij van tw
categorieknoppen boven de stacks is hetzelfde menu geworden als in de app store, categorieknoppen boven de stacks is hetzelfde menu geworden als in de app store,
en "Updates controleren" verliest op smalle schermen zijn label. en "Updates controleren" verliest op smalle schermen zijn label.
# v0.8.40-beta — De filter in de app store is een menu geworden # v0.7.86-beta — De filter in de app store is een menu geworden
**Twee rijen knoppen vulden een half scherm.** Boven de app store stonden twintig **Twee rijen knoppen vulden een half scherm.** Boven de app store stonden twintig
categorieknoppen en veertien labelknoppen, allemaal tegelijk uitgeklapt. Bij 256 categorieknoppen en veertien labelknoppen, allemaal tegelijk uitgeklapt. Bij 256
@ -348,7 +348,7 @@ verkeerd en de rest van de pagina schuift in de verkeerde tak — wat je pas mer
als je die kant op klikt. Er draait nu een test die het hele sjabloon op als je die kant op klikt. Er draait nu een test die het hele sjabloon op
gebalanceerde tags controleert, naast de bestaande die de JavaScript parseert. gebalanceerde tags controleert, naast de bestaande die de JavaScript parseert.
# v0.8.30-beta — Sjablonen kunnen zeggen wat ze nodig hebben, en vijftien domotica-apps # v0.7.85-beta — Sjablonen kunnen zeggen wat ze nodig hebben, en vijftien domotica-apps
**Een app kon niet zeggen dat hij een andere nodig had.** Het `connect`-veld **Een app kon niet zeggen dat hij een andere nodig had.** Het `connect`-veld
wijst naar een andere app en vult een adres in, maar zegt niets over noodzaak. wijst naar een andere app en vult een adres in, maar zegt niets over noodzaak.
@ -387,7 +387,7 @@ Drie daarvan hebben een fysiek apparaat nodig — een P1-kabel, een SDR-stick, e
Zigbee-dongle. Die krijgen een veld met uitleg over hoe je het juiste pad vindt, Zigbee-dongle. Die krijgen een veld met uitleg over hoe je het juiste pad vindt,
in plaats van een gok die stilzwijgend faalt. in plaats van een gok die stilzwijgend faalt.
# v0.8.20-beta — Prometheus startte niet, en 23 apps erbij # v0.7.84-beta — Prometheus startte niet, en 23 apps erbij
**Prometheus stond kapot in de catalogus.** Het sjabloon koppelde een lege map op **Prometheus stond kapot in de catalogus.** Het sjabloon koppelde een lege map op
`/etc/prometheus` en startte met `--config.file=/etc/prometheus/prometheus.yml` `/etc/prometheus` en startte met `--config.file=/etc/prometheus/prometheus.yml`
@ -423,7 +423,7 @@ uit als een image dat er niet is. Bijna had ik negen werkende sjablonen
"gerepareerd". Die controle zit nu in `tools/controleer_images.py`, met vier "gerepareerd". Die controle zit nu in `tools/controleer_images.py`, met vier
tegelijk en opnieuw proberen bij twijfel, en draait als stap in CI. tegelijk en opnieuw proberen bij twijfel, en draait als stap in CI.
# v0.8.10-beta — Vervangers voor big tech, en sleutels in het juiste formaat # v0.7.83-beta — Vervangers voor big tech, en sleutels in het juiste formaat
**Een sleutel is niet zomaar een willekeurige string.** De generator maakte **Een sleutel is niet zomaar een willekeurige string.** De generator maakte
altijd url-veilige base64, en dat is precies wat Laravel, Homarr en LibreChat altijd url-veilige base64, en dat is precies wat Laravel, Homarr en LibreChat
@ -466,7 +466,7 @@ leggen hun domein vast zodra andere servers je kennen, CryptPad heeft echt twee
verschillende domeinen nodig om zijn sandbox te laten werken, en LibreTranslate verschillende domeinen nodig om zijn sandbox te laten werken, en LibreTranslate
haalt bij de eerste start zijn taalmodellen op. haalt bij de eerste start zijn taalmodellen op.
# v0.8.00-beta — 55 apps erbij, en drie kapotte images gevonden # v0.7.82-beta — 55 apps erbij, en drie kapotte images gevonden
**De catalogus stond scheef.** Na het ARR-werk telde media 42 apps en downloaden **De catalogus stond scheef.** Na het ARR-werk telde media 42 apps en downloaden
19, terwijl communicatie er 4 had, AI 4, financiën 3 en foto's 2. Wie de store 19, terwijl communicatie er 4 had, AI 4, financiën 3 en foto's 2. Wie de store
@ -507,7 +507,7 @@ Daarvoor geldt nu: elke extra container draagt de servicenaam als voorvoegsel
staat vast in een sjabloon, en er wacht altijd iemand met `depends_on` op de staat vast in een sjabloon, en er wacht altijd iemand met `depends_on` op de
database. database.
# v0.7.90-beta — De ARR-stack uit elkaar, en netwerkopties per container # v0.7.81-beta — De ARR-stack uit elkaar, en netwerkopties per container
**Elk *arr-onderdeel is nu een losse app.** Wie alleen Sonarr wil, hoefde eerst **Elk *arr-onderdeel is nu een losse app.** Wie alleen Sonarr wil, hoefde eerst
de hele ARR-stack te nemen. Er staan nu zesenveertig losse sjablonen in de store de hele ARR-stack te nemen. Er staan nu zesenveertig losse sjablonen in de store

View file

@ -1 +1 @@
0.10.20-beta 0.7.95-beta

View file

@ -31,7 +31,7 @@ dump ingespeeld nádat de container draait; de bestanden zijn het vangnet voor h
geval de container tijdens de backup uit stond. Stond hij uit, dan staat dat als geval de container tijdens de backup uit stond. Stond hij uit, dan staat dat als
waarschuwing in het log — niet als stille overslag. waarschuwing in het log — niet als stille overslag.
> Dit is niet altijd zo geweest. Tot v0.8.60 bevatte een backup alleen de > Dit is niet altijd zo geweest. Tot v0.7.88 bevatte een backup alleen de
> stackmap. `LIBRARY_DIR` en de appdata-map staan náást elkaar, dus je maakte een > stackmap. `LIBRARY_DIR` en de appdata-map staan náást elkaar, dus je maakte een
> backup, kreeg een groen vinkje, en hield bij terugzetten een lege app over. > backup, kreeg een groen vinkje, en hield bij terugzetten een lege app over.

View file

@ -146,9 +146,9 @@ niets meer.
## Onder welk account Server Up draait ## Onder welk account Server Up draait
Tot v0.9 draaide Server Up als root. Vanaf v0.10 kies je bij de installatie een Tot v0.7.92 draaide Server Up als root. Vanaf v0.7.93 kies je bij de installatie
account — standaard een nieuw systeemaccount `serverup` zonder shell en zonder een account — standaard een nieuw systeemaccount `serverup` zonder shell en
wachtwoord — en zakt de container daarnaartoe af. zonder wachtwoord — en zakt de container daarnaartoe af.
```bash ```bash
sh install.sh --user serverup # aanbevolen, wordt zo nodig aangemaakt sh install.sh --user serverup # aanbevolen, wordt zo nodig aangemaakt
@ -205,7 +205,7 @@ SU_UID=0
SU_GID=0 SU_GID=0
``` ```
en draai `docker compose up -d`. Alles werkt dan zoals vóór v0.10. en draai `docker compose up -d`. Alles werkt dan zoals vóór v0.7.93.
## Wat níét is afgedekt ## Wat níét is afgedekt

View file

@ -180,7 +180,7 @@ zoals voorheen en meldt de interface netjes waarom bijwerken niet kan.
> Server Up schrijft `SU_TAG` niet zelf in je `.env`, en dat is met opzet: de > Server Up schrijft `SU_TAG` niet zelf in je `.env`, en dat is met opzet: de
> installatiemap is nergens in de container gemount. De helper-container die de > installatiemap is nergens in de container gemount. De helper-container die de
> hercreatie doet, mount hem wél en zet de tag daar. Tot v0.10.20 probeerde > hercreatie doet, mount hem wél en zet de tag daar. Tot v0.7.95 probeerde
> Server Up het zelf, en faalde dat dus altijd. > Server Up het zelf, en faalde dat dus altijd.
Eerste keer overstappen van lokaal bouwen naar de registry: Eerste keer overstappen van lokaal bouwen naar de registry:

View file

@ -347,7 +347,7 @@ haal_broncode() {
log "Bestaande installatie bijwerken in $DOEL" log "Bestaande installatie bijwerken in $DOEL"
git_doe -C "$DOEL" fetch --depth 1 origin "$BRANCH" git_doe -C "$DOEL" fetch --depth 1 origin "$BRANCH"
# FETCH_HEAD en niet origin/$BRANCH: een tag krijgt geen origin/-ref, # FETCH_HEAD en niet origin/$BRANCH: een tag krijgt geen origin/-ref,
# dus `--branch v0.9.00-beta` installeerde prima maar kon daarna nooit # dus `--branch v0.7.92-beta` installeerde prima maar kon daarna nooit
# meer bijgewerkt worden ("fatal: ambiguous argument"). FETCH_HEAD wijst # meer bijgewerkt worden ("fatal: ambiguous argument"). FETCH_HEAD wijst
# na een fetch altijd naar wat er net opgehaald is, tak of tag. # na een fetch altijd naar wat er net opgehaald is, tak of tag.
git_doe -C "$DOEL" reset --hard FETCH_HEAD git_doe -C "$DOEL" reset --hard FETCH_HEAD

View file

@ -319,7 +319,7 @@ def _gelukt(stdout=b""):
# ── Rechten: wie is de eigenaar van wat er teruggezet wordt? ───────────────── # ── Rechten: wie is de eigenaar van wat er teruggezet wordt? ─────────────────
# Server Up draait vanaf v0.10 niet meer als root. Twee gevolgen die eerder # Server Up draait vanaf v0.7.93 niet meer als root. Twee gevolgen die eerder
# geen rol speelden: appdata van een app met een eigen uid kan buiten bereik # geen rol speelden: appdata van een app met een eigen uid kan buiten bereik
# liggen, en `tarfile` met filter="data" geeft alles aan wie uitpakt. # liggen, en `tarfile` met filter="data" geeft alles aan wie uitpakt.

View file

@ -526,7 +526,7 @@ def test_readme_en_docs_noemen_dezelfde_installatieregel():
# ── Onder welk account draait Server Up? ───────────────────────────────────── # ── Onder welk account draait Server Up? ─────────────────────────────────────
# Vanaf v0.10 draait Server Up niet meer als root. Welke gebruiker het wordt is # Vanaf v0.7.93 draait Server Up niet meer als root. Welke gebruiker het wordt is
# een keuze bij de installatie, en die keuze mag niet stilzwijgend verkeerd # een keuze bij de installatie, en die keuze mag niet stilzwijgend verkeerd
# uitpakken: een typefout in de naam hoort te stoppen, en 'root' moet blijven # uitpakken: een typefout in de naam hoort te stoppen, en 'root' moet blijven
# kunnen voor wie problemen krijgt. # kunnen voor wie problemen krijgt.
@ -930,7 +930,7 @@ def test_de_token_komt_daadwerkelijk_bij_git_aan(tmp_path):
# ── --base-dir ─────────────────────────────────────────────────────────────── # ── --base-dir ───────────────────────────────────────────────────────────────
# BASE_DIR is sinds v0.9 de hoofdknop voor je paden, maar je kon hem alleen # BASE_DIR is sinds v0.7.92 de hoofdknop voor je paden, maar je kon hem alleen
# achteraf in .env zetten — en dan moet je de data alsnog verhuizen. # achteraf in .env zetten — en dan moet je de data alsnog verhuizen.
def test_base_dir_belandt_in_env_en_in_de_mappen(tmp_path): def test_base_dir_belandt_in_env_en_in_de_mappen(tmp_path):