mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 14:19:40 +02:00
Applied formatting to 1487+ files using pnpm format:write - TypeScript/JavaScript files - Svelte components - Astro pages - JSON configs - Markdown docs 13 files still need manual review (Astro JSX comments)
3.2 KiB
3.2 KiB
uLoad Deployment Guide
🚀 Deployment Architektur
Die Anwendung wurde vereinfacht und läuft nun ohne embedded PocketBase. PocketBase wird als separater Service in Coolify deployed.
Container-Struktur
uLoad Container (Port 3000)
├── SvelteKit App
├── Node.js Runtime
└── Health Check Endpoint
PocketBase Container (Port 8090) - Separat in Coolify
├── PocketBase Server
├── SQLite Database
└── Admin UI
📦 Was wurde geändert?
Entfernte Komponenten:
- ❌ Embedded PocketBase im Container
- ❌ Supervisor Process Manager
- ❌ Docker Entrypoint Script
- ❌ PocketBase Initialisierungs-Scripts
- ❌ Port 8090 Mapping im App Container
- ❌ Volume für pb_data
Neue Struktur:
- ✅ Schlanker Container nur mit SvelteKit
- ✅ Externe PocketBase Verbindung via
PUBLIC_POCKETBASE_URL - ✅ Direkte Node.js Ausführung (kein Supervisor)
- ✅ Reduzierte Image-Größe (~80MB kleiner)
🔧 Deployment in Coolify
1. PocketBase Service (falls noch nicht vorhanden)
# Als separater Service in Coolify
Service: PocketBase
Port: 8090
Persistent Volume: /pb_data
2. uLoad App Service
# docker-compose.coolify.yml verwenden
Service: uLoad
Port: 3000
Build: Dockerfile
Environment:
- PUBLIC_POCKETBASE_URL=http://pocketbase:8090 # Interner Service Name
- ORIGIN=https://ulo.ad
- PUBLIC_UMAMI_URL=...
- PUBLIC_UMAMI_WEBSITE_ID=...
🔄 Migration Steps
Für bestehende Deployments:
-
PocketBase Daten sichern (falls noch embedded):
docker cp container_name:/app/pb_data ./pb_data_backup -
Externe PocketBase aufsetzen in Coolify
-
Daten importieren in neue PocketBase Instanz
-
Environment Variables anpassen:
PUBLIC_POCKETBASE_URL=http://pocketbase:8090 -
Neues Image deployen mit aktualisiertem Dockerfile
📝 Environment Variables
# Required
PORT=3000
ORIGIN=https://ulo.ad
PUBLIC_POCKETBASE_URL=http://pocketbase:8090
# Optional
PUBLIC_UMAMI_URL=https://analytics.domain.com
PUBLIC_UMAMI_WEBSITE_ID=xxx-xxx-xxx
🏗️ Build & Deploy
Lokal testen:
# Build
docker build -t uload:latest .
# Run mit externer PocketBase
docker run -p 3000:3000 \
-e PUBLIC_POCKETBASE_URL=https://pb.ulo.ad \
-e ORIGIN=http://localhost:3000 \
uload:latest
Production Deploy:
# Via Coolify mit docker-compose.coolify.yml
# Oder direkt:
docker compose -f docker-compose.yml up -d
📊 Vorteile der neuen Architektur
- Bessere Skalierbarkeit: App und DB können unabhängig skaliert werden
- Einfachere Updates: PocketBase Updates ohne App-Rebuild
- Kleinere Images: ~120MB statt ~200MB
- Klarere Trennung: Frontend und Backend sind klar getrennt
- Flexiblere Konfiguration: PocketBase kann zentral für mehrere Apps genutzt werden
⚠️ Wichtige Hinweise
- PocketBase Hooks (
pb_hooks/) müssen manuell zur externen PocketBase migriert werden - Schema (
backend/pb_schema.json) muss in der externen PocketBase importiert werden - Interne Coolify Networking nutzen (nicht über Public URL)
- Health Check läuft nur auf Port 3000 (nicht mehr auf 8090)