# Beveiliging

> Inloggegevens, HTTPS, aanmelden en netwerktoegang van een PentAGI-installatie.

## [Wijzig de standaardinstellingen](https://pentagi.com/nl/docs/configuration/security/#change-the-defaults)

Een nieuwe installatie maakt de lokale beheerder `admin@pentagi.com` aan met het wachtwoord `admin`, dat je bij de eerste aanmelding moet wijzigen. Als je het wachtwoord kwijtraakt, stelt het onderhoudsmenu van het installatieprogramma het opnieuw in, zolang het account nog steeds het `admin@pentagi.com`-adres gebruikt.

Stel deze waarden in `.env` in vóór de eerste start; het installatieprogramma genereert de salt en de wachtwoorden voor je. PostgreSQL en Neo4j nemen hun inloggegevens alleen over wanneer ze hun datavolumes aanmaken, dus als je ze later wijzigt, werkt de verbinding niet meer:

| Variabele                                            | Doel                                                                                                           |
| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `COOKIE_SIGNING_SALT`                                | Ondertekent sessiecookies en API-tokens — stel een willekeurige waarde in                                      |
| `PENTAGI_POSTGRES_USER`, `PENTAGI_POSTGRES_PASSWORD` | PostgreSQL-inloggegevens                                                                                       |
| `NEO4J_PASSWORD`                                     | Neo4j-wachtwoord voor de [knowledge graph](https://pentagi.com/nl/docs/glossary/#knowledge-graph); `NEO4J_USER` moet `neo4j` blijven |
| `PUBLIC_URL`                                         | De URL die gebruikers openen, bijvoorbeeld `https://pentagi.example.com`                                       |

Bij een draaiende installatie wijzig je eerst een database-wachtwoord in PostgreSQL of Neo4j, en daarna in `.env`.

## [HTTPS](https://pentagi.com/nl/docs/configuration/security/#https)

PentAGI biedt HTTPS aan op poort 8443 met een zelfondertekend certificaat. Om je eigen certificaat te gebruiken, stel je `SERVER_SSL_CRT` en `SERVER_SSL_KEY` in en koppel je de bestanden in `docker-compose.yml`.

## [Gebruikers en aanmelden](https://pentagi.com/nl/docs/configuration/security/#users-and-sign-in)

Er is geen registratieformulier. Beheerders beheren lokale gebruikers via de Users API (`/api/v1/users/`) vanuit een ingelogde browsersessie — een API-token krijgt daar een 403-fout — en rollen beperken wat elke gebruiker kan zien en wijzigen. Lokale gebruikers wijzigen hun eigen e-mailadres en wachtwoord onder **Settings → Account**.

Als aanmelden via GitHub of Google is geconfigureerd, logt een login waarvan de door de provider geverifieerde e-mail overeenkomt met een bestaand account (lokale accounts inbegrepen) in op dat account met de bijbehorende rol; elke andere login krijgt een nieuw account met de standaard gebruikersrol. Elke installatie begint met de administrator `admin@pentagi.com`, dus verplaats deze naar een adres dat je beheert onder **Settings → Account** voordat je aanmelding inschakelt, en schakel het alleen in waar nieuwe accounts acceptabel zijn, bijvoorbeeld met een Google Workspace-app die beperkt is tot je domein.

Aanmelden via GitHub en Google is beschikbaar via OAuth. Registreer een app met de callback `${PUBLIC_URL}/api/v1/auth/login-callback` en voeg de inloggegevens toe:

```bash
PUBLIC_URL=https://pentagi.example.com
OAUTH_GITHUB_CLIENT_ID=your_github_client_id
OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret
```

## [Netwerkblootstelling](https://pentagi.com/nl/docs/configuration/security/#network-exposure)

Standaard luistert de webinterface van PentAGI alleen op `127.0.0.1`. Om deze vanaf andere machines te bereiken:

```bash
PENTAGI_LISTEN_IP=0.0.0.0
PENTAGI_LISTEN_PORT=8443
PUBLIC_URL=https://192.168.1.100:8443
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443
```

Gebruik het echte adres in `PUBLIC_URL` en `CORS_ORIGINS`, nooit `0.0.0.0`. Maak de containers opnieuw aan met `docker compose up -d --force-recreate` en open poort 8443 in de firewall.

Achter een reverse proxy stel je `TRUSTED_PROXIES` in op het adres of de CIDR van de proxy, gescheiden door komma's. Anders lijkt elk verzoek afkomstig te zijn van de proxy en wordt de aanmeldlimiet per adres — 30 mislukte pogingen binnen vijf minuten, gevolgd door een vergrendeling van 15 minuten — gedeeld door alle gebruikers.

Elke sandbox-container van een [flow](https://pentagi.com/nl/docs/glossary/#flow) publiceert ook twee poorten voor out-of-band callbacks, zoals reverse shells. Ze komen uit de 2000 poorten die beginnen bij `DOCKER_PORTS_BASE` (standaard `28000`) en zijn gebonden aan `DOCKER_PUBLIC_IP`, het adres dat de [agents](https://pentagi.com/nl/docs/glossary/#agent) ook aan targets geven om terug te bellen naar.

Standaard is `DOCKER_PUBLIC_IP` ingesteld op `0.0.0.0`: de poorten luisteren op elke interface van de Docker-host en de agents zoeken hun openbare adres zelf op. Stel dit alleen in op een specifiek adres als de host dat adres bezit en de targets het kunnen bereiken; achter NAT houd je de standaardinstelling aan. Poorten die Docker publiceert, omzeilen ufw- en firewalld-regels op de host, dus beperk het bereik met een firewall voor de host, zoals een cloud security group, of met regels in de `DOCKER-USER`-keten van Docker.

`PROXY_URL` stuurt de oproepen van de backend naar modelproviders, de embeddingprovider, zoek-API's en de updatecontrole via een proxy, wat helpt om de installatie te isoleren van externe netwerken. Zelfgehoste eindpunten zoals Ollama, vLLM of SearXNG gaan er ook doorheen, aangezien er geen `NO_PROXY`-uitzondering is, dus de proxy moet ze kunnen bereiken. De sandboxcontainers van de flows, waar de agents hun commando's uitvoeren, de scraper, die webpagina's opent voor de browsertool, en de Graphiti-service maken hier geen gebruik van, dus beperk hun uitgaande verkeer op netwerkniveau. Aanmelden met GitHub of Google en oproepen naar een Langfuse- of OpenTelemetry-eindpunt buiten de meegeleverde stacks maken hier ook geen gebruik van, en de Docker-daemon haalt images op met zijn eigen proxy-instellingen.

## [Updatecontrole](https://pentagi.com/nl/docs/configuration/security/#update-check)

Binnen twee minuten na het starten en daarna elke drie uur vraagt de server aan `update.pentagi.com` of er een nieuwere build beschikbaar is. Het verzoek bevat de installatie-ID, de licentiesleutel als deze is ingesteld, de versie en het platform, en een samenvatting van de installatie: de geconfigureerde provider en aanmeldingstypen, een paar functieschakelaars, aantallen gebruikers, flows, [tasks](https://pentagi.com/nl/docs/glossary/#task), containers, prompts, API-tokens en [tool calls](https://pentagi.com/nl/docs/glossary/#tool-call), en token- en kostentotalen per providertype — geen namen, adressen, prompts of flow-inhoud. `UPDATE_CHECK_INTERVAL=0` schakelt dit uit. Telkens wanneer de installer start en na elke actie die deze uitvoert, zoals Apply Changes, Update, Start of Stop, verzendt deze de geïnstalleerde images en de status van elke stack, plus dezelfde samenvatting zolang PentAGI draait; `UPDATE_CHECK_INTERVAL` heeft hier geen invloed op.

> [!WARNING]
> De container `pentagi` draait als root omdat deze containers beheert via de Docker-socket. Voor een sterkere isolatie draai je de [tools](https://pentagi.com/nl/docs/glossary/#tool) op een aparte [worker node](https://pentagi.com/nl/docs/deployment/worker-node/).