# Woodpecker CI Woodpecker CI met Gitea OAuth2, Traefik reverse proxy, en een lokale Docker-agent. ## Eerste keer opstarten ### 1. Gitea OAuth2 applicatie aanmaken Ga naar `https:///user/settings/applications` en maak een nieuwe OAuth2 App: - **Application name:** Woodpecker CI - **Redirect URI:** `https://pecker.smulders.online/authorize` Noteer de **Client ID** en **Client Secret**. ### 2. .env aanmaken ```bash cp .env.example .env ``` Vul in: | Variabele | Waarde | |---|---| | `WOODPECKER_GITEA_CLIENT` | Client ID uit stap 1 | | `WOODPECKER_GITEA_SECRET` | Client Secret uit stap 1 | | `WOODPECKER_GITEA_URL` | URL van je Gitea instance | | `WOODPECKER_AGENT_SECRET` | `openssl rand -hex 32` | | `WOODPECKER_HOST` | `https://pecker.smulders.online` | | `WOODPECKER_ADMIN` | Je Gitea gebruikersnaam | ### 3. Starten Via Portainer: importeer de stack en wijs de `.env` toe. Of via CLI: ```bash docker compose up -d ``` ### 4. Verificatie ```bash docker compose logs -f woodpecker-server ``` Woodpecker is bereikbaar op `https://pecker.smulders.online`. ## Architectuur ``` Internet └── Traefik (traefik-proxy network) └── woodpecker-server :8000 (UI + API) └── woodpecker-agent (woodpecker-internal network) └── Docker socket (pipeline containers) ``` - **Server** zit op twee netwerken: `traefik-proxy` (extern) en `woodpecker-internal` (intern naar agent) - **Agent** zit alleen op `woodpecker-internal` — niet direct bereikbaar van buiten - Agent communiceert met server via gRPC op poort `9000` ## Authentik toevoegen (later) Voeg aan de server-labels toe: ```yaml - "traefik.http.routers.woodpecker.middlewares=authentik@docker" ``` En zorg dat de Authentik forward-auth middleware beschikbaar is in Traefik. ## Pipeline voorbeeld Maak `.woodpecker.yml` in een Gitea-repo: ```yaml steps: - name: build image: python:3.12-slim commands: - pip install -r requirements.txt - python -m pytest ```