Handleiding

Installeren met Docker

Draai Penweir op één machine met Docker Compose of de kale Docker-image, stap voor stap.

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.

  1. Models, Add provider. Voor OpenAI: type openai_compatible, base URL https://api.openai.com/v1 en je API-key. De key wordt versleuteld opgeslagen.
  2. 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_FILE en PENWEIR_TLS_KEY_FILE, die beide poorten over HTTPS aanbiedt en HSTS toevoegt op de adminpoort.
  • Stuur bij een proxy Strict-Transport-Security: max-age=31536000 mee.
  • 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.