Coolify Installation: Anwendungs-Deployment mit Self-Hosted PaaS
Coolify-Installation: Docker- und Git-Integration, Deployment, Datenbanken, SSL und Umgebungsvariablen als selbst gehostete Heroku/Netlify-Alternative.
n8n Docker-Installation, Webhook-Integrationen, Workflow-Erstellung, 400+ App-Verbindungen, geplante Aufgaben, Credentials-Verwaltung und Production-Deployment.
n8n ist eine Open-Source-Workflow-Automatisierungsplattform mit visueller Oberfläche, die 400+ Anwendungen und Dienste verbinden kann. Sie können es als self-hosted Alternative zu Diensten wie Zapier und Make (Integromat) auf Ihrem eigenen Server betreiben. Sie können komplexe Automatisierungen ohne Code erstellen oder benutzerdefinierte Logik mit JavaScript/Python hinzufügen.
n8n (Kurzform für "nodemation") ermöglicht die Erstellung von Workflows mit knotenbasierter visueller Programmierung. Hauptmerkmale:
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
environment:
- N8N_HOST=n8n.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Europe/Berlin
- N8N_ENCRYPTION_KEY=starker-verschluesselungsschluessel
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
# Container starten
docker compose up -d
# Logs prüfen
docker logs n8n -f
N8N_ENCRYPTION_KEY wird zur Verschlüsselung von Credentials verwendet. Wenn Sie diesen Wert verlieren, werden alle Ihre Credentials unzugänglich. Bewahren Sie ihn an einem sicheren Ort auf.
version: '3.8'
services:
postgres:
image: postgres:15
container_name: n8n-postgres
restart: unless-stopped
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: starkes-passwort
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 5s
timeout: 5s
retries: 10
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=starkes-passwort
- N8N_HOST=n8n.example.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Europe/Berlin
- N8N_ENCRYPTION_KEY=starker-verschluesselungsschluessel
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=admin-passwort
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
volumes:
postgres-data:
server {
listen 80;
server_name n8n.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name n8n.example.com;
ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
}
}
/slack-notify{{ $json.message }}# Webhook testen
curl -X POST https://n8n.example.com/webhook/slack-notify \
-H "Content-Type: application/json" \
-d '{"message": "Hallo n8n!"}'
# Cron-Ausdrücke
0 9 * * 1-5 # Werktags um 09:00
*/15 * * * * # Alle 15 Minuten
0 0 * * * # Jeden Mitternacht
0 8 * * 1 # Jeden Montag um 08:00
Einstellungen → Credentials → Credential hinzufügen
Beispiel: GitHub API
- Credential-Typ: GitHub API
- Access Token: ghp_xxxxxxxxxxxx
- Verbindung testen
GitHub Trigger (Push-Event)
→ IF (branch == 'main')
→ Slack ("Neues Deployment: {{ $json.commits[0].message }}")
→ E-Mail (Team benachrichtigen)
Cron Trigger (jeden Morgen um 09:00)
→ PostgreSQL (gestrige Verkäufe abrufen)
→ Code (Daten formatieren)
→ Google Sheets (zum Bericht hinzufügen)
→ Slack (Zusammenfassung senden)
environment:
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
redis:
image: redis:7-alpine
container_name: n8n-redis
restart: unless-stopped
# n8n-Daten sichern
tar -czf n8n-backup-$(date +%Y%m%d).tar.gz ./n8n-data/
# PostgreSQL-Backup
docker exec n8n-postgres pg_dump -U n8n n8n > n8n-db-$(date +%Y%m%d).sql
Mit n8n auf REXE VPS-Servern können Sie alle Ihre Geschäftsprozesse automatisieren. Mit 2 GB RAM können Sie Hunderte von Workflows ausführen.
n8n ist self-hosted und Open-Source; Zapier ist cloudbasiert und kostenpflichtig. Bei n8n bleiben Ihre Daten auf Ihrem eigenen Server und Sie können unbegrenzte Workflows und Ausführungen erstellen. Zapier kann benutzerfreundlicher sein, hat aber monatliche Ausführungslimits und hohe Kosten. n8n erlaubt auch das Schreiben von benutzerdefiniertem Code mit JavaScript/Python.
Stellen Sie sicher, dass die WEBHOOK_URL-Umgebungsvariable korrekt gesetzt ist (https://n8n.example.com/). Überprüfen Sie, ob der Nginx-Proxy WebSocket-Verbindungen unterstützt (Upgrade- und Connection-Header). Vergewissern Sie sich, dass Port 443 in der Firewall geöffnet ist. Stellen Sie sicher, dass der Workflow in n8n im Status 'Active' ist.
Wenn N8N_ENCRYPTION_KEY geändert wird, können vorhandene Credentials nicht entschlüsselt werden. In diesem Fall müssen Sie alle Credentials neu erstellen. Deshalb ist es wichtig, den Verschlüsselungsschlüssel an einem sicheren Ort (Passwort-Manager, Vault) aufzubewahren. Sichern Sie diesen Schlüssel auch bei Backups.
Begrenzen Sie den Ausführungsverlauf: EXECUTIONS_DATA_MAX_AGE=168 (7 Tage). Für große Datensätze speichern Sie Binärdaten im Dateisystem: N8N_DEFAULT_BINARY_DATA_MODE=filesystem. Kontrollieren Sie die Worker-Anzahl mit dem Queue-Modus. Deaktivieren Sie unnötige Workflows.
Sie können die Ausgabe jedes Knotens im Workflow-Editor sehen. Testen Sie einzelne Knoten mit 'Execute Node'. Überprüfen Sie vergangene Ausführungen aus der Ausführungsliste. Fügen Sie einen Fehlerknoten hinzu, um Fehler abzufangen und Slack/E-Mail-Benachrichtigungen zu erhalten. Überprüfen Sie Systemlogs mit docker logs n8n.
Bei PostgreSQL ist das Update sicher. Erstellen Sie vor dem Update ein Datenbank-Backup: docker exec n8n-postgres pg_dump -U n8n n8n > backup.sql. Dann mit docker compose pull && docker compose up -d aktualisieren. n8n führt automatische Migrationen durch. Bei SQLite sichern Sie das ./n8n-data/-Verzeichnis.
Coolify-Installation: Docker- und Git-Integration, Deployment, Datenbanken, SSL und Umgebungsvariablen als selbst gehostete Heroku/Netlify-Alternative.
Nextcloud-Installation mit Docker, Nginx-Konfiguration, Datenbankeinrichtung, SSL-Zertifikat, Dateisynchronisierung, App-Store und Leistungsoptimierung.
Portainer CE installieren: Docker- und Kubernetes-Verwaltung, Stack-Deployment, Volumes und Netzwerke, Benutzerrechte und GitOps-Integration.