Dit kost ongeveer tien minuten op een machine met Docker. Penweir draait als één container met een SQLite-database op een volume. Postgres is optioneel. Draai je op Kubernetes? Gebruik dan de Helm-gids.
1. Haal de demo op
Download penweir-demo-1.3.0.zip van de downloadpagina en pak hem uit:
unzip penweir-demo-1.3.0.zip
cd penweir-demo-1.3.0
2. Maak een master key
De master key versleutelt opgeslagen provider-keys en two-factor-seeds. Bewaar hem in je secret manager. Een back-up van de database is nutteloos zonder deze sleutel.
docker compose run --rm penweir keygen master
Zet de sleutel in een .env-bestand naast compose.yaml, dat Compose zelf inleest, en houd dat bestand buiten versiebeheer:
echo "PENWEIR_MASTER_KEY=<de sleutel>" > .env
chmod 600 .env
Een omgevingsvariabele is zichtbaar voor iedereen die docker inspect op de host kan draaien. Waar dat uitmaakt, bewaar je de sleutel in een bestand en mount je dat read-only: zet PENWEIR_MASTER_KEY_FILE op het pad binnen de container, bijvoorbeeld met een secrets:-onderdeel in Compose, dat onder /run/secrets/ verschijnt. De Helm-chart mount hem standaard als bestand.
3. Start Penweir en maak de eerste admin
docker compose up -d
docker compose exec -it penweir penweir admin create <je-naam>
Er is geen standaardaccount. Het commando vraagt om een wachtwoord van minimaal 12 tekens en weigert te draaien zodra er een admin bestaat.
Controleer of het draait:
curl http://127.0.0.1:8080/readyz
Vanaf de machine zelf zegt /readyz ook welke controle faalt. Andere aanroepers zien alleen ready of not_ready; de logs en het dashboard geven de reden.
4. Stel het in via het dashboard
Open http://127.0.0.1:8081 en log in.
- Models, Add provider. Voor OpenAI: type
openai_compatible, base URLhttps://api.openai.com/v1en je API-key. De key wordt versleuteld opgeslagen. - Pipelines, Edit configuration. Voeg een model en een pipeline toe en kies Deploy changes:
models:
- {name: cloud/default, targets: {openai: gpt-4o-mini}}
pipelines:
- name: default
default: true
routing: {allow: [openai]}
request_steps:
- {detector: email, action: tokenize}
- {detector: iban, action: tokenize}
- {detector: bsn, action: block}
Stuur daarna je eerste verzoek.
Zonder Compose
Heb je al een eigen opzet, draai de image dan direct. Maak de sleutel één keer aan en bewaar hem, want de opgeslagen secrets zijn zonder deze sleutel onleesbaar:
export PENWEIR_MASTER_KEY=$(docker run --rm ghcr.io/robinhana04/penweir-app:1.3.0 keygen master)
docker run -d --name penweir \
-p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 \
-v penweir-data:/var/lib/penweir \
-e PENWEIR_MASTER_KEY \
ghcr.io/robinhana04/penweir-app:1.3.0
Maak de eerste admin met docker exec -it penweir penweir admin create <je-naam>.
Bereikbaar maken voor andere machines
Beide poorten zijn alleen gepubliceerd op 127.0.0.1. Voordat je ze openzet:
- Zet TLS voor Penweir met een reverse proxy, of gebruik de ingebouwde TLS-modus:
PENWEIR_TLS_CERT_FILEenPENWEIR_TLS_KEY_FILE, die beide poorten over HTTPS aanbiedt en HSTS toevoegt op de adminpoort. - Stuur bij een proxy
Strict-Transport-Security: max-age=31536000mee. - Houd de adminpoort (8081) op een intern netwerk of achter een VPN. Alleen applicaties hebben de gatewaypoort (8080) nodig.
- Beperk uitgaand verkeer tot de providers die je hebt ingesteld.
Postgres
Zet PENWEIR_DATABASE_URL=postgresql+asyncpg://user:password@host:5432/penweir. Penweir migreert het schema bij het starten. De database bevat alleen metadata en configuratie.
Upgraden
Pak de nieuwe demo uit en draai docker compose up -d. Migraties draaien bij het starten. Maak eerst een back-up van het databasevolume.
Verwijderen
docker compose down -v stopt Penweir en verwijdert het volume, inclusief de database.