Naar inhoud springen
PentAGI
Configuratie

Beveiliging

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

Wijzig de standaardinstellingen

Een nieuwe installatie maakt de lokale beheerder [email protected] 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 [email protected]-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:

VariabeleDoel
COOKIE_SIGNING_SALTOndertekent sessiecookies en API-tokens — stel een willekeurige waarde in
PENTAGI_POSTGRES_USER, PENTAGI_POSTGRES_PASSWORDPostgreSQL-inloggegevens
NEO4J_PASSWORDNeo4j-wachtwoord voor de knowledge graph; NEO4J_USER moet neo4j blijven
PUBLIC_URLDe 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

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

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 [email protected], 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:

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

Netwerkblootstelling

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

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 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 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

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, containers, prompts, API-tokens en tool calls, 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.

De container pentagi draait als root omdat deze containers beheert via de Docker-socket. Voor een sterkere isolatie draai je de tools op een aparte worker node.

Laatst bijgewerkt op