feat: central services mit traefik deployen
This commit is contained in:
@@ -7,7 +7,7 @@ Eigenständiger Stack für zentrale FEDEO-Dienste. Neben Push können Selfhost-I
|
||||
- `apps/api`: Fastify API für Admin-Dashboard und Selfhost-Instanzen
|
||||
- `apps/admin`: Nuxt Admin Dashboard mit Nuxt UI
|
||||
- `packages/db`: Drizzle Schema und Migrationen für PostgreSQL
|
||||
- `docker-compose.yml`: lokaler Stack aus Postgres, API und Admin
|
||||
- `docker-compose.yml`: produktiver Stack aus Traefik, Postgres, API und Admin
|
||||
|
||||
Provider-Schlüssel wie `OPENAI_API_KEY` und die GoCardless-Zugangsdaten liegen ausschließlich in diesem zentralen Stack. Selfhost-Instanzen erhalten nur Instanz-ID und Instanzschlüssel.
|
||||
|
||||
@@ -22,22 +22,48 @@ npm run dev:api
|
||||
npm run dev:admin
|
||||
```
|
||||
|
||||
Für den dauerhaften Betrieb:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# .env mit sicheren Zugangsdaten und Provider-Schlüsseln befüllen
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
Der API-Container wendet Datenbankmigrationen vor jedem Start automatisch an. PostgreSQL-Daten liegen im Volume `push_postgres_data`. Für ein öffentliches Deployment müssen API und Admin hinter einem TLS-Reverse-Proxy betrieben und `PUBLIC_API_BASE_URL` auf die öffentliche API-Adresse gesetzt werden.
|
||||
|
||||
Standardports:
|
||||
Lokale Entwicklungsports:
|
||||
|
||||
- API: `http://localhost:4020`
|
||||
- Admin: `http://localhost:3000` lokal oder `http://localhost:3020` über Docker Compose
|
||||
- Admin: `http://localhost:3000`
|
||||
- Postgres: `localhost:5442`
|
||||
|
||||
## Öffentlicher Betrieb mit Traefik
|
||||
|
||||
Voraussetzungen:
|
||||
|
||||
- Docker Engine mit Docker-Compose-Plugin
|
||||
- freie Ports `80` und `443`
|
||||
- A- beziehungsweise AAAA-Records für API- und Admin-Domain auf den Server
|
||||
|
||||
Der geführte Erststart erzeugt sichere lokale Schlüssel, bereitet den Let’s-Encrypt-Speicher vor und kann den Stack direkt starten:
|
||||
|
||||
```bash
|
||||
cd push-server
|
||||
chmod +x scripts/setup.sh
|
||||
./scripts/setup.sh --start
|
||||
```
|
||||
|
||||
Standardmäßig werden `services.fedeo.de` für die API und `services-admin.fedeo.de` für das Admin-Dashboard vorgeschlagen. Anschließend müssen die zentralen Provider-Zugangsdaten in `.env` gepflegt werden:
|
||||
|
||||
```env
|
||||
OPENAI_API_KEY=...
|
||||
GOCARDLESS_SECRET_ID=...
|
||||
GOCARDLESS_SECRET_KEY=...
|
||||
```
|
||||
|
||||
Ein Neustart nach Änderungen erfolgt mit:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
docker compose ps
|
||||
docker compose logs -f api
|
||||
```
|
||||
|
||||
Traefik leitet HTTP automatisch auf HTTPS um und bezieht Zertifikate per Let’s Encrypt TLS-Challenge. PostgreSQL besitzt keinen Host-Port und ist nur im internen Docker-Netz erreichbar. API und Admin werden ebenfalls nicht direkt über Host-Ports veröffentlicht.
|
||||
|
||||
Der API-Container wendet Datenbankmigrationen vor jedem Start automatisch an. PostgreSQL-Daten liegen im Volume `push_postgres_data`; Let’s-Encrypt-Daten liegen unter `traefik/letsencrypt`.
|
||||
|
||||
## Admin-Zugang
|
||||
|
||||
Das Dashboard nutzt den Wert aus `ADMIN_TOKEN`. Der Token wird im Browser nur lokal gespeichert und als `Authorization: Bearer ...` an die API gesendet.
|
||||
|
||||
Reference in New Issue
Block a user