# Phase 7: Gitea + Woodpecker CI (GitOps for Homelab) ## Status: ✅ COMPLETED **Deployed:** 2026-01-18 --- ## Deployed Components | Service | Container | Version | Port | URL | Status | |---------|-----------|---------|------|-----|--------| | Gitea | gitea | 1.25.3 | 3005→3000, 2222→22 | https://git.xtrm-lab.org | ✅ Running | | Woodpecker Server | woodpecker-server | 3.13.0 | 8008→8000 | https://ci.xtrm-lab.org | ✅ Running | | Woodpecker Agent | woodpecker-agent | 3.13.0 | - | - | ✅ Running | --- ## Configuration ### Gitea | Parameter | Value | |-----------|-------| | Admin User | jazzymc | | Database | PostgreSQL (gitea_db @ 172.18.0.13) | | DB User | gitea | | SSH Port | 2222 | | Data Path | /mnt/user/appdata/gitea/data | | Network | dockerproxy | ### Woodpecker CI | Parameter | Value | |-----------|-------| | Version | 3.13.0 | | Admin User | jazzymc (via Gitea OAuth) | | Server IP | 172.18.0.134 | | gRPC Port | 9000 | | HTTP Port | 8000 (mapped to 8008) | | Max Workflows | 2 (parallel) | | Data Path | /mnt/user/appdata/woodpecker/server | | Agent Secret | 564a5716400532874a8e02313a491b4f3864ce9b77a5122ce0eb14777749e740 | ### Gitea OAuth App (for Woodpecker) | Parameter | Value | |-----------|-------| | Client ID | 924b3300-b607-4a48-bc26-35b06dbf18c7 | | Redirect URI | https://ci.xtrm-lab.org/authorize | --- ## Network Configuration All services on `dockerproxy` network: | Service | Internal IP | DNS Name | |---------|-------------|----------| | Gitea | Dynamic | gitea | | Woodpecker Server | 172.18.0.134 | woodpecker-server | | PostgreSQL | 172.18.0.13 | postgresql17 | ### Traefik Routes | Domain | Service | Port | |--------|---------|------| | git.xtrm-lab.org | gitea | 3000 | | ci.xtrm-lab.org | woodpecker-server | 8000 | --- ## Verification Checklist - [x] Gitea container running - [x] Gitea accessible at https://git.xtrm-lab.org - [x] Admin account created (jazzymc) - [x] OAuth app created for Woodpecker - [x] Woodpecker Server v3.13.0 running - [x] Woodpecker Agent v3.13.0 running and connected - [x] Woodpecker accessible at https://ci.xtrm-lab.org - [x] Gitea OAuth login working - [x] CI pipeline tested successfully --- ## Usage ### Git Operations ```bash # Clone via HTTPS git clone https://git.xtrm-lab.org/jazzymc/infrastructure.git # Clone via SSH (port 2222) git clone ssh://git@git.xtrm-lab.org:2222/jazzymc/infrastructure.git ``` ### CI Pipeline (.woodpecker.yml) ```yaml steps: - name: test image: alpine commands: - echo 'Hello from Woodpecker CI!' - date ``` ### Example: Node.js Pipeline ```yaml steps: - name: install image: node:20 commands: - npm install - name: test image: node:20 commands: - npm test - name: build image: node:20 commands: - npm run build when: branch: main ``` ### Example: Docker Build ```yaml steps: - name: build image: docker commands: - docker build -t myapp . volumes: - /var/run/docker.sock:/var/run/docker.sock ``` --- ## Maintenance ### Update Woodpecker ```bash docker pull woodpeckerci/woodpecker-server:v3 docker pull woodpeckerci/woodpecker-agent:v3 docker restart woodpecker-server woodpecker-agent ``` ### Backup Important paths to backup: - /mnt/user/appdata/gitea/data - /mnt/user/appdata/woodpecker/server - PostgreSQL database: gitea_db --- ## Related Documents - [00-CURRENT-STATE.md](./00-CURRENT-STATE.md) - Infrastructure overview - [03-PHASE3-AUTHENTIK-ZEROTRUST.md](./03-PHASE3-AUTHENTIK-ZEROTRUST.md) - SSO setup