# 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.240` werkt - vanaf de server zelf: `curl http://192.168.1.240` loopt 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: ```bash # 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: ```bash 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: ```yaml # 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 |