# Domein en HTTPS instellen — Debian 13 (bestaande installatie)

De nieuwe wizard koppelt `status.archforge.nl` aan de **tweede VPS** en configureert Caddy om automatisch een Let's Encrypt- of ander publiek vertrouwd ACME-TLS-certificaat aan te vragen. Je hoeft geen `certbot` te installeren of handmatig certificaten te genereren. Caddy verzorgt automatische vernieuwing.

## 1. DNS bij je provider

Maak dit record aan (niet het IP van de hoofdwebsite):

| Type | Naam | Waarde |
| --- | --- | --- |
| A | `status` | Publiek IPv4-adres van **VPS 2** |

Een `AAAA`-record gebruik je alleen als de **tweede VPS** bereikbaar is via dat IPv6-adres. Verwijder oude/verkeerde A- en AAAA-records. Bij proxyproviders (zoals Cloudflare) is **DNS-only** het eenvoudigst voor directe verificatie. Een proxied DNS-record geeft het proxy-IP terug en wordt door de wizard bewust geweigerd: hij kan dan de bestemming niet betrouwbaar verifiëren.

Open bij de VPS-provider én eventuele Debian-firewall TCP **80 en 443**. Voor SSH blijft je bestaande SSH-poort bereikbaar. De Node.js-app hoort **niet** rechtstreeks publiek op poort 3000 te luisteren.

## 2. Eerst code in Git updaten

Plaats de bestanden van de 1.0.2-FULL-ZIP in de bestaande ArchForge Git-repository (geen `.env`/SQLite toevoegen), commit en push. Op VPS 2:

```bash
cd ~/archforge-external-status
git pull --ff-only
ls -l configure-domain.sh
```

**Ben je root?** `git pull` mag als root als deze bestaande checkout daadwerkelijk van root is, maar meng geen gebruikers of sudo in dezelfde checkout. De SSL-wizard vereist root-rechten. Je hoeft `./update.sh` of `./install.sh` niet opnieuw uit te voeren voor deze losse wizard.

## 3. Domain/SSL-wizard

```bash
sudo bash ./configure-domain.sh
```

Als je als root bent ingelogd, kan dit ook gewoon met `bash ./configure-domain.sh`. De wizard vraagt:

1. Het statusdomein (bijv. `status.archforge.nl`).
2. Het **publieke IPv4-adres van VPS 2**; dit moet overeenkomen met het DNS A-record.
3. Optioneel het werkelijke publieke IPv6-adres van VPS 2; een bestaand verkeerd AAAA-record wordt geweigerd.
4. Een optioneel e-mailadres voor ACME-certificaatmeldingen.
5. Toestemming om waar nodig actieve UFW-regels voor TCP 80/443 open te zetten.
6. `ENABLE` als expliciete bevestiging voor configuratiewijzigingen.

De wizard valideert DNS **voordat** Caddy of de app-configuratie wordt gewijzigd. Bij onjuiste DNS stopt hij met aanwijzingen. Hij bewaart de oude Caddyconfiguratie en status.env tijdelijk en herstelt die bij een Caddy-validatie- of servicefout.

Opmerking: als je op één VPS meerdere websites via Caddy host, controleer vóór aanpassing de bestaande `/etc/caddy/Caddyfile` en mogelijke dubbele domeinregistraties. Er wordt geen Caddyconfiguratie van andere websites doelbewust vervangen.

## 4. Controleer de echte SSL-uitgifte

```bash
systemctl status caddy --no-pager
systemctl status archforge-status --no-pager
curl -Iv https://status.archforge.nl
curl -fsS https://status.archforge.nl/healthz
journalctl -u caddy -n 80 --no-pager
```

De wizard rapporteert **geverifieerde TLS** alleen als een echte HTTPS-call via de lokale Caddy met een vertrouwd certificaat en werkend `/healthz` lukt. Als de uitgifte nog loopt, meldt hij **NOT YET VERIFIED**: dat is geen garantie dat TLS klaar is. Controleer DNS, poorten, firewall, Caddy-logs en probeer de test opnieuw.

Bij problemen met `dig`: `apt-get install -y dnsutils`. Bij een ontbrekende Caddy-installatie: `apt-get install -y caddy`. Een echte Debian 13 VPS is nodig om publiek ACME-certificaatbeheer te testen.

## Wat blijft behouden?

- `/var/lib/archforge-status/status.db`: SQLite, monitoringgeschiedenis, admin en 2FA.
- `/etc/archforge-status/status.env`: alle bestaande geheimen en instellingen behalve `STATUS_PUBLIC_URL`.
- `/etc/archforge-status/msmtprc`: SMTP-configuratie.
- `archforge.nl` en zijn bestaande webproject: geen wijziging.

### Let op

Een HTTPS-certificaat bewijst alleen dat het domein via TLS bereikbaar is. Het zegt niet dat de hoofdsite zelf online is; juist daarvoor draait de externe monitoring onafhankelijk.
