Coolify-Deployment
Self-Hosted PaaS — Nuxt-Apps auf dem eigenen Server deployen
Was ist Coolify?
Coolify ist eine Open-Source Platform-as-a-Service (PaaS), die du auf deinem eigenen Server installierst. Es funktioniert wie Heroku oder Vercel — aber du behältst die volle Kontrolle über deine Daten und Infrastruktur.
Mit Coolify kannst du Git-Repositories verbinden, Docker-basierte Apps deployen, SSL-Zertifikate automatisch verwalten und mehrere Projekte auf einem Server betreiben.
Rails-Vergleich: Heroku / Kamal vs Coolify
| Feature | Heroku | Kamal (Rails) | Coolify |
|---|---|---|---|
| Self-Hosted | ❌ | ✅ | ✅ |
| Git-Integration | ✅ | ❌ | ✅ |
| Web-UI | ✅ | ❌ (CLI) | ✅ |
| SSL automatisch | ✅ | ✅ (Traefik) | ✅ (Traefik) |
| Multi-App | ✅ | ✅ | ✅ |
| Kosten | Ab $5/Mo | Server-Kosten | Server-Kosten |
| Docker Compose | ❌ | ❌ | ✅ |
Coolify kombiniert das Beste aus Heroku (einfache UI, Git-Push-Deploy) und Kamal (Self-Hosted, Docker-basiert). Perfekt für Entwickler, die ihre Infrastruktur selbst betreiben wollen.
Coolify installieren
# Voraussetzung: Ein VPS mit Ubuntu 22.04+, min. 2 GB RAM
# z.B. bei Hetzner, DigitalOcean, Contabo
# Coolify mit einem Befehl installieren
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
# Nach der Installation:
# → Coolify läuft auf http://DEIN-SERVER:8000
# → Erstelle beim ersten Aufruf einen Admin-Account
# → Verbinde deinen Server als "Destination"Was Coolify installiert
- Docker — Falls noch nicht vorhanden
- Traefik — Reverse-Proxy für SSL und Routing
- Coolify-Dashboard — Web-UI zur Verwaltung
- PostgreSQL — Für Coolify's eigene Datenbank
Git-Repository verbinden
Coolify unterstützt GitHub, GitLab und Gitea. Die Verbindung ermöglicht automatische Deployments bei jedem Push.
1. Coolify Dashboard öffnen → "New Resource"
2. "Application" wählen
3. Git-Provider auswählen:
→ GitHub: OAuth-Verbindung oder Deploy-Key
→ GitLab: Personal Access Token
→ Öffentliche Repos: Direkte URL
4. Repository auswählen:
→ Repository: github.com/dein-user/vue-tutorial
→ Branch: main
5. Build-Konfiguration:
→ Build Pack: "Docker Compose" oder "Dockerfile"
→ Bei Docker Compose: docker-compose.yml auswählen
→ Bei Dockerfile: Dockerfile im Root wird erkannt
6. "Deploy" klicken → Coolify baut und startet die AppAutomatische Deployments
Aktiviere den Webhook in den Coolify-Einstellungen. Coolify erstellt automatisch einen Webhook in deinem GitHub-Repository. Bei jedem Push auf den konfigurierten Branch wird automatisch neu deployed.
Docker Compose Deployment
Coolify kann Docker Compose-Dateien direkt deployen — ideal für unsere Nuxt + json-server Kombination:
services:
nuxt:
build:
context: .
dockerfile: Dockerfile
environment:
- NODE_ENV=production
- NUXT_PUBLIC_API_BASE=http://json-server:3001
healthcheck:
test: ['CMD', 'wget', '--spider', '-q', 'http://localhost:3000']
interval: 30s
timeout: 5s
retries: 3
# Port wird von Coolify/Traefik automatisch geroutet
# NICHT manuell ports: angeben!
json-server:
image: node:20-alpine
working_dir: /data
command: >
sh -c 'npm install -g json-server &&
json-server --watch db.json --port 3001 --host 0.0.0.0'
volumes:
- json-data:/data
healthcheck:
test: ['CMD', 'wget', '--spider', '-q', 'http://localhost:3001']
interval: 10s
timeout: 3s
retries: 5
volumes:
json-data:Ports in Coolify
In Coolify brauchst du keine ports: im Docker Compose anzugeben. Traefik routet den Traffic automatisch. Konfiguriere den exponierten Port stattdessen in den Coolify-Einstellungen unter "Network" → "Exposed Port".
Umgebungsvariablen in Coolify
┌──────────────────────────────────────────────────────┐
│ Environment Variables │
├──────────────────────────────────────────────────────┤
│ │
│ Schlüssel │ Wert │ Secret │
│ ─────────────────────── │ ─────────────── │ ────── │
│ NODE_ENV │ production │ ☐ │
│ NUXT_PUBLIC_API_BASE │ http://json-.. │ ☐ │
│ NUXT_PUBLIC_APP_NAME │ Kontakte-Mgr │ ☐ │
│ NUXT_JWT_SECRET │ •••••••••••• │ ☑ │
│ NUXT_SESSION_SECRET │ •••••••••••• │ ☑ │
│ │
│ [+ Variable hinzufügen] │
│ │
│ ℹ️ Secrets werden verschlüsselt gespeichert und │
│ sind nur zur Build- und Laufzeit verfügbar. │
└──────────────────────────────────────────────────────┘Build vs. Runtime Variablen
- Build-Time — Verfügbar während
docker build. Für NUXT_PUBLIC_ Variablen, die ins Client-Bundle eingebaut werden. - Runtime — Verfügbar wenn der Container läuft. Für Server-Secrets.
- In Coolify kannst du pro Variable festlegen, ob sie beim Build und/oder zur Laufzeit verfügbar sein soll.
SSL und Domain-Setup
Schritte:
1. DNS konfigurieren:
→ A-Record: kontakte.deine-domain.de → SERVER-IP
→ Oder Wildcard: *.deine-domain.de → SERVER-IP
2. In Coolify → Application → "General" Tab:
→ Domain: kontakte.deine-domain.de
→ HTTPS: Automatisch (Let's Encrypt) ✅
3. Coolify kümmert sich automatisch um:
→ Let's Encrypt Zertifikat anfordern
→ SSL-Terminierung via Traefik
→ HTTP → HTTPS Redirect
→ Zertifikat-Erneuerung
4. Testen:
→ https://kontakte.deine-domain.de ✅
→ http://kontakte.deine-domain.de → Redirect zu HTTPSMehrere Domains
Du kannst mehrere Domains oder Subdomains auf dieselbe App zeigen lassen. Coolify und Traefik routen den Traffic automatisch. Jede Domain bekommt ihr eigenes SSL-Zertifikat.
Monitoring und Logs
┌──────────────────────────────────────────────────────┐
│ Application → Logs │
├──────────────────────────────────────────────────────┤
│ │
│ 📋 Container Logs (Live-Stream): │
│ [2024-01-15 10:23:01] Listening on 0.0.0.0:3000 │
│ [2024-01-15 10:23:15] GET / 200 - 45ms │
│ [2024-01-15 10:23:16] GET /api/kontakte 200 - 12ms │
│ [2024-01-15 10:24:02] GET /api/health 200 - 2ms │
│ │
│ 📊 Container Stats: │
│ CPU: 2.3% │
│ Memory: 128 MB / 2048 MB │
│ Network I/O: 1.2 MB in / 3.4 MB out │
│ │
│ 🔄 Deployment History: │
│ #5 15.01.2024 10:20 ✅ Erfolgreich (main@abc123)│
│ #4 14.01.2024 16:45 ✅ Erfolgreich (main@def456)│
│ #3 14.01.2024 14:30 ❌ Fehlgeschlagen │
│ #2 13.01.2024 09:15 ✅ Erfolgreich (main@ghi789)│
└──────────────────────────────────────────────────────┘# Container-Status prüfen
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
# Logs eines Containers anschauen
docker logs -f --tail 100 CONTAINER_NAME
# In einen Container einloggen
docker exec -it CONTAINER_NAME sh
# Ressourcenverbrauch aller Container
docker stats --no-stream
# Coolify-eigene Container anzeigen
docker ps --filter 'label=coolify.managed=true'Benachrichtigungen
Coolify kann dich bei Deployment-Events benachrichtigen über:
- E-Mail — Einfach, aber effektiv
- Discord — Webhook-Integration
- Slack — Webhook-Integration
- Telegram — Bot-Integration
Konfiguriere Benachrichtigungen unter "Settings" → "Notifications".
Zusammenfassung
Coolify-Deployment Checkliste
- Coolify installieren — Ein Befehl auf dem VPS
- Git verbinden — GitHub/GitLab OAuth oder Deploy-Key
- Docker Compose — Nuxt + json-server zusammen deployen
- Umgebungsvariablen — Secrets sicher in Coolify verwalten
- Domain + SSL — DNS-Record setzen, Coolify erledigt den Rest
- Monitoring — Logs, Stats und Deployment-History in der UI
- Auto-Deploy — Webhook für Push-basiertes Deployment