All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 2m10s
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
78 lines
3.2 KiB
Markdown
78 lines
3.2 KiB
Markdown
# Pangolin — een publiek adres voor je apps
|
|
|
|
[Pangolin](https://github.com/fosrl/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](https://github.com/fosrl/pangolin/issues/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.
|