Skip to content

fguyer/fgu-ki-gever

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# fgu-ki-gever

Erster Full-Stack-Wurf für eine GEVER-orientierte Anwendung mit Django-Backend, React-Frontend und Docker-Compose-Deployment auf einer einzelnen Hetzner-VM. Das Setup ist auf einen einfachen, nachvollziehbaren Produktionsbetrieb ohne zusätzliche Orchestrierung ausgelegt. 

## Dokumentation

- `docs/working-rules.md`
- `docs/architecture.md`

## Produktions-Setup auf Hetzner

Die Produktionsarchitektur nutzt drei Container:

- `frontend`: baut das React/Vite-Frontend und liefert es via Nginx aus
- `backend`: betreibt Django via Gunicorn
- `postgres`: persistente PostgreSQL-Datenbank

Der Frontend-Container terminiert den eingehenden HTTP-Traffic und leitet `/api/*` intern an das Backend weiter. Dadurch laufen Frontend und API im Browser unter derselben Origin, sodass kein separates CORS-Setup nötig ist. 

## Voraussetzungen auf dem Server

- Linux-VM (z. B. Hetzner Cloud)
- Docker Engine + Docker Compose Plugin (`docker compose`)
- Dieses Repository auf dem Server ausgecheckt

## 1) Produktions-Environment vorbereiten

```bash
cp infra/env/prod.env.example infra/env/prod.env
nano infra/env/prod.env
```

Wichtige Variablen in `infra/env/prod.env`:

- `DJANGO_SERVICE`: Compose-Service für Django/Gunicorn (`backend`)
- `DJANGO_MIGRATE_CMD`: Migrationskommando
- `DJANGO_COLLECTSTATIC_CMD`: Kommando für statische Assets
- `DJANGO_SECRET_KEY`: produktiver Django-Secret-Key
- `DJANGO_ALLOWED_HOSTS`: Server-IP und/oder Domain
- `DJANGO_CSRF_TRUSTED_ORIGINS`: vertrauenswürdige Origins für Form-Posts
- `POSTGRES_*`: Datenbankzugang für den App-Container
- `DB_*`: Datenbankzugang für das Backup-Skript
- `VITE_API_BASE_URL`: API-Basis-URL für den Frontend-Build (Standard: `/api`)

## 2) Deploy ausführen

```bash
chmod +x infra/deploy/deploy.sh infra/deploy/backup.sh
./infra/deploy/deploy.sh
```

Das Deploy-Skript führt in dieser Reihenfolge aus:

1. `docker compose pull`
2. `docker compose build`
3. `docker compose up -d --remove-orphans`
4. Django-Migrationen via `docker compose exec -T backend ...`
5. `collectstatic` im Backend-Container

## 3) Datenbank-Backup erstellen

```bash
./infra/deploy/backup.sh
```

Das Skript erstellt ein komprimiertes PostgreSQL-Dump unter `BACKUP_DIR`, z. B.:

- `backups/db-YYYYMMDD-HHMMSS.sql.gz`

## Beispiel-Ablauf auf einer frischen VM

```bash
git clone <repo-url>
cd fgu-ki-gever
cp infra/env/prod.env.example infra/env/prod.env
# Werte in prod.env setzen
chmod +x infra/deploy/deploy.sh infra/deploy/backup.sh
./infra/deploy/deploy.sh
```

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors