Some checks failed
Test Suite / lint-backend (push) Waiting to run
Test Suite / build-frontend (push) Waiting to run
Test Suite / k6 /health Baseline (push) Waiting to run
Test Suite / playwright-tests (push) Waiting to run
Deploy Development / deploy (push) Failing after 1s
Test Suite / pytest-backend (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
128 lines
3.6 KiB
Markdown
128 lines
3.6 KiB
Markdown
# Deployment – Kairo Jinkendo
|
||
|
||
**Stand:** 2026-07-04
|
||
**Server:** Raspberry Pi 5 (`192.168.2.49`) — gleicher Host wie Shinkan/Mitai
|
||
**Runner:** Gitea Actions (`/home/lars/gitea-runner/`)
|
||
|
||
---
|
||
|
||
## Port- und Pfad-Übersicht
|
||
|
||
| | Production | Development |
|
||
|---|------------|-------------|
|
||
| **Git-Branch** | `main` | `develop` |
|
||
| **Server-Verzeichnis** | `/home/lars/docker/kairo` | `/home/lars/docker/kairo-dev` |
|
||
| **Frontend-Port** | 3004 | 3097 |
|
||
| **Backend-Port** | 8004 | 8097 |
|
||
| **PostgreSQL (localhost)** | 5436 | 5437 |
|
||
| **Domain** | kairo.jinkendo.de | dev.kairo.jinkendo.de |
|
||
| **Medien-Host-Pfad** | `/kairo-media` | `/kairo-media/dev` |
|
||
|
||
**Familien-Referenz (bereits belegt):**
|
||
|
||
| App | Prod UI/API | Dev UI/API |
|
||
|-----|-------------|------------|
|
||
| Mitai | 3002 / 8002 | 3099 / 8099 |
|
||
| Shinkan | 3003 / 8003 | 3098 / 8098 |
|
||
| **Kairo** | **3004 / 8004** | **3097 / 8097** |
|
||
|
||
---
|
||
|
||
## Einmalige Server-Einrichtung
|
||
|
||
Auf dem Pi als User `lars` ausführen:
|
||
|
||
```bash
|
||
# Verzeichnisse anlegen
|
||
mkdir -p /home/lars/docker/kairo
|
||
mkdir -p /home/lars/docker/kairo-dev
|
||
mkdir -p /kairo-media /kairo-media/dev
|
||
|
||
# Production
|
||
cd /home/lars/docker/kairo
|
||
git clone http://192.168.2.144:3000/Lars/Kairo-Jinkendo.git .
|
||
git checkout main
|
||
cp .env.example .env
|
||
# .env bearbeiten (DB_PASSWORD, SMTP, OPENROUTER, …)
|
||
|
||
# Development
|
||
cd /home/lars/docker/kairo-dev
|
||
git clone http://192.168.2.144:3000/Lars/Kairo-Jinkendo.git .
|
||
git checkout develop
|
||
cp .env.example .env
|
||
# .env mit Dev-Werten bearbeiten (siehe Kommentare in .env.example)
|
||
```
|
||
|
||
> **Hinweis:** Erstes `docker compose up` funktioniert erst, wenn `backend/` und `frontend/` mit Dockerfiles vorhanden sind.
|
||
|
||
---
|
||
|
||
## Reverse Proxy (Synology / Fritz!Box)
|
||
|
||
Analog zu Shinkan — neue Hostnamen im Proxy eintragen:
|
||
|
||
| Hostname | Ziel (Pi) |
|
||
|----------|-----------|
|
||
| `kairo.jinkendo.de` | `http://192.168.2.49:3004` |
|
||
| `dev.kairo.jinkendo.de` | `http://192.168.2.49:3097` |
|
||
|
||
SSL/TLS wie bei den Schwester-Apps (Let's Encrypt über Synology).
|
||
|
||
---
|
||
|
||
## Gitea Actions
|
||
|
||
Workflows unter `.gitea/workflows/`:
|
||
|
||
| Workflow | Trigger | Aktion |
|
||
|----------|---------|--------|
|
||
| `deploy-dev.yml` | Push auf `develop` | Build + Deploy nach `kairo-dev/` |
|
||
| `deploy-prod.yml` | Push auf `main` | Build + Deploy nach `kairo/` |
|
||
| `test.yml` | PR/Push `develop`, nach Deploy | pytest, Lint, Frontend-Build, k6, Playwright |
|
||
|
||
Health-Checks nach Deploy:
|
||
|
||
- Dev: `curl http://localhost:8097/api/version` und `http://localhost:3097/api/version`
|
||
- Prod: `curl http://localhost:8004/api/version` und `http://localhost:3004/api/version`
|
||
|
||
---
|
||
|
||
## Gitea Secrets (für E2E-Tests)
|
||
|
||
In Gitea unter Repository → Settings → Actions → Secrets (analog Shinkan):
|
||
|
||
| Secret | Verwendung |
|
||
|--------|------------|
|
||
| `E2E_DEV_TEST_EMAIL` | Playwright Dev-Login |
|
||
| `E2E_DEV_TEST_PASSWORD` | Playwright Dev-Login |
|
||
| `E2E_PROD_TEST_EMAIL` | Playwright Prod-Login |
|
||
| `E2E_PROD_TEST_PASSWORD` | Playwright Prod-Login |
|
||
|
||
---
|
||
|
||
## Manuelles Deploy
|
||
|
||
```bash
|
||
# Development
|
||
cd /home/lars/docker/kairo-dev
|
||
git fetch origin develop && git reset --hard origin/develop
|
||
docker compose -f docker-compose.dev-env.yml build --no-cache
|
||
docker compose -f docker-compose.dev-env.yml up -d
|
||
|
||
# Production
|
||
cd /home/lars/docker/kairo
|
||
git fetch origin main && git reset --hard origin/main
|
||
docker compose build --no-cache
|
||
docker compose up -d
|
||
```
|
||
|
||
---
|
||
|
||
## Nächster Schritt (App-Code)
|
||
|
||
1. `backend/` mit FastAPI-Skeleton (main.py, Dockerfile, migrations/)
|
||
2. `frontend/` mit React/Vite-Skeleton (Dockerfile, nginx.conf)
|
||
3. Erster Push auf `develop` → Auto-Deploy Dev
|
||
4. Reverse-Proxy-Einträge für Domains aktivieren
|
||
5. Gitea E2E-Secrets setzen
|