De knop Volgende deed niets. Alpine haalt een boolean-attribuut alleen weg bij null, undefined of false; het getal 0 zet het juist AAN. Mijn :disabled="stepMissing().length" gaf bij een ingevuld formulier 0 en zette de knop dus permanent uit. De logica klopte, de binding niet — met losse logica niet te vinden, dus er draait nu een test die de echte modal met Alpine in een DOM rendert en erop klikt. Tijdzones: - Nieuwe instelling TIMEZONE, standaard die van de server (TZ, /etc/timezone, /etc/localtime). In alle 77 sjablonen stond Europe/Amsterdam hard ingevuld. - Apps zonder tijdzoneveld krijgen TZ er automatisch bij; die draaiden in UTC. Poorten: - _bezette_poorten() telt nu ook mee waar de host zelf op luistert, gelezen uit /proc/net/tcp in een hulpcontainer met --network host. Een nginx buiten Docker zag Server Up eerder niet. - GET /api/ports/check geeft vrij/bezet plus een alternatief, en meldt of de host echt gecontroleerd kon worden. Netwerken: - APP_NETWORKS: meerdere gedeelde bridge-netwerken in plaats van één waar élke app aan hing. Per app kies je welke; aanmaken kan vanuit het invulmenu, met eigen naam of een voorstel (su-<appnaam>). - add_shared_network() accepteert een lijst; één naam blijft werken. - GET /api/networks/<n>/ip-check controleert subnet, bereik, Docker-toewijzing en de ARP-tabel van de host (vangt een fysiek apparaat met DHCP-adres) en stelt een vrij adres voor. Pangolin (nieuw, core/pangolin.py): - Publieke URL per app via een tunnel, zonder poorten open te zetten. - De API veranderde in 1.9 (resource hing onder een site, staat nu los); beide routes worden geprobeerd en bij een fout krijg je beide meldingen. - API-sleutel is write-only. Getest tegen een nagebouwde API, niet tegen een echte server. Nieuw: docs/pangolin.md; docs/netwerken.md uitgebreid. 2369 tests groen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
3.2 KiB
Pangolin — een publiek adres voor je apps
Pangolin is een reverse proxy met tunnel: je apps blijven thuis draaien en krijgen toch een adres op internet, zónder dat je poorten hoeft open te zetten in je router. Server Up kan die adressen voor je aanmaken, zodat je dat niet per app in de Pangolin-interface hoeft te doen.
Server Up installeert Pangolin niet. Je hebt een draaiende Pangolin-server nodig (in de cloud of op een VPS) en een Newt-site die vanaf je thuisnetwerk naar buiten verbindt. Server Up praat alleen met de API.
Instellen
Onder Instellingen → Pangolin:
| Veld | Waar vind je dat |
|---|---|
| Adres | De URL van je Pangolin-server, bijvoorbeeld https://pangolin.voorbeeld.nl |
| API-sleutel | In Pangolin onder Settings → API Keys. Geef hem rechten om resources en targets te maken. |
| Organisatie-id | Staat in de URL als je in Pangolin bent ingelogd |
| Site | Wordt opgehaald zodra de sleutel werkt; dit is je Newt-verbinding |
| Domein | Wordt opgehaald zodra de sleutel werkt |
Klik daarna op Verbinding testen. Lukt het, dan staat er hoeveel sites er gevonden zijn. De API-sleutel is write-only: je kunt hem instellen, maar de API geeft hem nooit terug.
Een URL aanmaken
Open Inloggegevens op de stackkaart en klik op Publieke URL aanmaken. Server Up doet dan twee dingen:
- een resource aanmaken — het publieke adres, standaard
<stacknaam>.<domein>; - een target aanmaken — waar dat adres naartoe wijst.
Het doel wordt afgeleid: heeft de stack een eigen IP-adres (macvlan), dan dat; anders het adres van de host met de gepubliceerde poort. De URL wordt bij de stack bewaard en daarna in het paneel getoond.
Als het misgaat
"De API-sleutel wordt geweigerd (401)" — de sleutel is verlopen of heeft te weinig rechten.
"Organisatie niet gevonden (404)" — het organisatie-id klopt niet. Het is de korte naam uit de URL, niet de weergavenaam.
"Geen site gevonden; installeer eerst Newt" — Pangolin heeft een tunnel naar je netwerk nodig. Zet Newt op je thuisserver en koppel die als site.
"Aanmaken mislukt" met twee HTTP-codes — de API van Pangolin is in versie
1.9 veranderd: een resource hing eerst onder een site
(PUT /org/<org>/site/<site>/resource) en staat sindsdien los
(PUT /org/<org>/resource). Server Up probeert allebei en toont beide
foutmeldingen, zodat je ziet welke route jouw versie verwacht. Zie
fosrl/pangolin#1344.
Wat er níét gebeurt
- Server Up beheert de URL niet verder: verwijder je de stack, dan blijft de resource in Pangolin staan. Ruim die daar zelf op.
- Er wordt geen authenticatie voor de resource ingesteld. Wil je dat het adres niet voor de hele wereld open staat, zet dan in Pangolin zelf een toegangsregel of SSO op die resource.
- Meerdere targets per resource (load balancing) valt hierbuiten.
Deze integratie is getest tegen een nagebouwde API, niet tegen een echte Pangolin-server. Dat de juiste verzoeken verstuurd worden ligt vast in de tests; of jouw versie ze accepteert, blijkt bij de eerste poging. De foutmeldingen zijn daarom zo volledig mogelijk gehouden.