- Beheer per container: de stackkaart klapt uit naar de losse containers, met start/stop/herstart, logs en live CPU-/geheugengebruik per container. De containernaam wordt getoetst aan compose_ps van díé stack, zodat de route geen willekeurige container op de host kan raken. - Stacks met een eigen IP-adres (macvlan/ipvlan): netwerkbeheer onder Instellingen → Netwerken, netwerkkeuze in de installatiemodal met voorstel voor het eerstvolgende vrije adres, en automatische omzetting van het gerenderde compose-bestand (poortmappings eruit, ipv4_address erin). De templates in apps/ blijven ongewijzigd. - Toegekende IP's worden vastgehouden in .serverup.json en getoond op de stackkaart, zodat een volgende installatie ze niet opnieuw uitdeelt. - Vrije poort voorstellen bij installeren: next_free_port() bestond al maar werd nergens gebruikt. Bezette poorten worden in de UI gemeld. - Genereerknop voor velden die op een geheim wijzen (token/password/secret), lokaal gegenereerd via crypto.getRandomValues. - Compose valideren met `docker compose config` vóór het wegschrijven, zowel bij de editor als na het renderen bij installatie. Ontbreekt de compose-CLI, dan blokkeert dat een installatie niet. - Uitloggen in de zijbalk; gebruikersbeheer en wachtwoord wijzigen onder Instellingen → Beveiliging. - docs/netwerken.md (incl. de shim-interface die de host nodig heeft om zijn eigen macvlan-containers te bereiken) en docs/beveiliging.md toegevoegd. - CHANGELOG bijgewerkt; testsuite uitgebreid naar 112 tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
5 KiB
Stacks een eigen IP-adres geven (macvlan / ipvlan)
Standaard publiceert een stack poorten op de host: Vaultwarden op 8222, Mealie
op 9925, enzovoort. Dat werkt, maar levert op den duur een lange lijst
poortnummers op die je moet onthouden, en twee apps die allebei poort 8080 willen
gaan niet samen.
Met een macvlan- of ipvlan-netwerk krijgt een stack een eigen IP-adres in je LAN. De app draait dan gewoon op zijn eigen standaardpoort:
| Zonder | Met eigen IP |
|---|---|
http://192.168.1.10:8222 |
http://192.168.1.240 |
http://192.168.1.10:9925 |
http://192.168.1.241 |
Je kunt er ook per app op firewallen, en een DNS-naam aan koppelen.
⚠️ Lees dit eerst: de host bereikt zijn eigen containers niet
Dit is de bekendste valkuil van macvlan. De Docker-host kan niet bij een container die op een macvlan-netwerk draait, en andersom ook niet. Alle andere apparaten in je netwerk kunnen dat wél.
Draait Server Up op dezelfde machine als de containers, dan zie je dus:
- vanaf je laptop:
http://192.168.1.240werkt - vanaf de server zelf:
curl http://192.168.1.240loopt vast
Heb je dat nodig (bijvoorbeeld voor een healthcheck of een reverse proxy die op de host draait), maak dan een shim-interface aan op de host:
# Eenmalig; vervang eth0 en de adressen door die van jouw netwerk.
ip link add shim link eth0 type macvlan mode bridge
ip addr add 192.168.1.239/32 dev shim
ip link set shim up
ip route add 192.168.1.240/28 dev shim
Zet dat in een systemd-unit of in /etc/network/interfaces, anders is het na een
herstart weg.
ipvlan (l2) heeft dit probleem niet op dezelfde manier, maar vereist wel dat je switch en router er goed mee omgaan. Werkt macvlan niet, probeer dan ipvlan.
Stap 1 — Bepaal je netwerkgegevens
Je hebt vier dingen nodig:
| Wat | Voorbeeld | Hoe kom je eraan |
|---|---|---|
| Host-interface | eth0 |
ip -br link op de server |
| Subnet | 192.168.1.0/24 |
Je router; hetzelfde subnet als de server |
| Gateway | 192.168.1.1 |
ip route | grep default |
| IP-range | 192.168.1.240/28 |
Een blok dat je buiten je DHCP-bereik houdt |
De IP-range is optioneel maar sterk aanbevolen. Zonder range mag Docker het hele
subnet gebruiken en kan het een adres uitdelen dat je DHCP-server ook aan een
telefoon geeft. 192.168.1.240/28 reserveert .240 t/m .255 — zestien
adressen. Zet dat bereik in je router buiten de DHCP-pool.
Stap 2 — Netwerk aanmaken in Server Up
Ga naar Instellingen → Netwerken → Netwerk en vul de gegevens in. Server Up maakt het Docker-netwerk aan en onthoudt de definitie.
Hetzelfde met de hand zou zijn:
docker network create -d macvlan \
--subnet 192.168.1.0/24 \
--gateway 192.168.1.1 \
--ip-range 192.168.1.240/28 \
-o parent=eth0 \
lan
Stap 3 — Een stack installeren op een eigen IP
Kies in de installatiemodal bij Netwerk je netwerk in plaats van "Poorten op de host". Server Up stelt het eerstvolgende vrije adres voor; je kunt het overschrijven.
Bij het installeren gebeurt er dit met het compose-bestand:
# vóór # ná
services: services:
vaultwarden: vaultwarden:
image: vaultwarden/server image: vaultwarden/server
ports: networks:
- "8222:80" lan:
ipv4_address: 192.168.1.240
networks:
lan:
external: true
De poortmapping verdwijnt — die heeft geen functie meer. Vaultwarden luistert op
poort 80 en is bereikbaar op http://192.168.1.240.
Bestaat een stack uit meerdere containers, dan krijgt de container die poorten publiceerde het vaste adres; de rest komt zonder vast adres in hetzelfde netwerk, zodat ze elkaar op servicenaam blijven vinden.
Adresbeheer
Server Up bewaart het toegekende adres in .serverup.json in de stackmap. Zo
blijft het gereserveerd, ook als de stack gestopt is, en krijgt een volgende
installatie het volgende vrije adres voorgesteld.
Wil je het adres van een bestaande stack wijzigen, pas dan het compose-bestand
aan via compose bewerken en werk ipv4_address bij.
Verwijderen
Een netwerk kan pas weg als er geen containers meer op draaien. Stop eerst de betreffende stacks; Server Up weigert het anders met een melding.
Problemen oplossen
| Symptoom | Oorzaak |
|---|---|
network ... not found bij het starten |
Netwerk verwijderd terwijl de stack er nog naar verwijst — maak het opnieuw aan |
| Container krijgt geen verbinding | Verkeerde parent-interface, of de interface zit in een bond/bridge |
| Adres al in gebruik | Het adres valt binnen je DHCP-bereik; verklein de DHCP-pool of kies een andere range |
| Vanaf de server niet bereikbaar, vanaf laptop wel | Verwacht gedrag — zie de shim-interface bovenaan |
| Werkt niet op WiFi | Klopt: macvlan werkt niet over een draadloze interface |