server-up/docs/pangolin.md
Ramon ea9b1eb668
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 2m10s
v0.7.80-beta - Volgende-knop, tijdzones, netwerken per groepje, Pangolin
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
2026-07-28 22:25:38 +02:00

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:

  1. een resource aanmaken — het publieke adres, standaard <stacknaam>.<domein>;
  2. 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.