App deployen
Dieser Guide zeigt, wie ihr eine neue Anwendung auf der Plattform einrichtet und deployt — sowohl über die Benutzeroberfläche als auch über die API.
Voraussetzungen
- Aktiver Plattform-Zugang (API-Token vorhanden)
- Anwendungs-Repository in Gitea (
git.coolai.btc-ag.cloud) Dockerfileim Repository-Root (empfohlen) oder Nixpacks-kompatible Projektstruktur- Gewünschte Domain (Subdomain unter
btc-ag.cloudoder eigene Domain)
Dockerfile-Anforderungen
Ein gutes Dockerfile für die Plattform folgt diesen Grundsätzen:
# Multi-Stage Build — klein und sicherFROM node:20-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ci --only=productionCOPY . .RUN npm run build
FROM node:20-alpineWORKDIR /appCOPY --from=builder /app/dist ./distCOPY --from=builder /app/node_modules ./node_modules
# Expliziter PortEXPOSE 3000
# Kein RootUSER node
CMD ["node", "dist/server.js"]Wichtige Punkte:
- Den Port explizit via
EXPOSEdeklarieren — die Plattform liest diesen Wert aus. - Multi-Stage Builds verwenden, um das finale Image klein zu halten.
- Den Container nicht als Root ausführen.
- Keine Secrets ins Image einbacken — alles über Umgebungsvariablen.
Deployment via Oberfläche
-
Repository verbinden
Im Dashboard: Projekt öffnen → “Neue Ressource” → “Anwendung”
Repository-Typ wählen:
- Öffentliches Repository: GitHub, GitLab, beliebige öffentliche URL
- Privates Repository (Deploy-Key): Gitea auf
git.coolai.btc-ag.cloud(empfohlen)
-
Repository-Details eintragen
Feld Beschreibung Repository-URL https://git.coolai.btc-ag.cloud/meinteam/meine-appBranch z. B. mainoderproductionBuild-Pack DockerfileDockerfile-Pfad Standard: ./DockerfilePort Euer App-Port (z. B. 3000,8080) -
Domain konfigurieren
Unter dem Tab “Domains”:
meine-app.btc-ag.cloudTLS wird automatisch eingerichtet.
-
Umgebungsvariablen setzen
Unter “Umgebungsvariablen” alle nötigen Werte hinterlegen. Secrets (Passwörter, Tokens) als geheimen Wert markieren.
-
Deployment starten
Klick auf “Deployen” — Build-Log erscheint in Echtzeit.
Deployment via API
curl -s -X POST https://coolai.btc-ag.cloud/api/v1/applications/private-deploy-key \ -H "Authorization: Bearer $COOLIFY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "project_uuid": "<projekt-uuid>", "server_uuid": "<server-uuid>", "environment_name": "production", "private_key_uuid": "<deploy-key-uuid>", "git_repository": "git@git.coolai.btc-ag.cloud:meinteam/meine-app.git", "git_branch": "main", "build_pack": "dockerfile", "ports_exposes": "3000", "name": "meine-app", "domains": "https://meine-app.btc-ag.cloud" }'# Deployment triggern (UUID aus dem App-Anlegen-Response)curl -s -X GET \ "https://coolai.btc-ag.cloud/api/v1/deploy?uuid=<app-uuid>&force=false" \ -H "Authorization: Bearer $COOLIFY_TOKEN"# Deployment-Status abfragencurl -s https://coolai.btc-ag.cloud/api/v1/applications/<app-uuid> \ -H "Authorization: Bearer $COOLIFY_TOKEN" \ | jq '.status'Deployment-Verlauf
Jedes Deployment wird mit ID, Zeitstempel, Status und vollständigem Log gespeichert.
# Alle Deployments einer Anwendungcurl -s https://coolai.btc-ag.cloud/api/v1/deployments/applications/<app-uuid> \ -H "Authorization: Bearer $COOLIFY_TOKEN" \ | jq '.[] | {id: .id, status: .status, created_at: .created_at}'Troubleshooting
| Problem | Mögliche Ursache | Lösung |
|---|---|---|
| Build schlägt fehl | Fehler im Dockerfile | Build-Log prüfen |
| Container startet nicht | Falscher Port / fehlende Env-Var | Logs prüfen, Umgebungsvariablen kontrollieren |
| Domain nicht erreichbar | DNS noch nicht propagiert / TLS ausstehend | 5–10 Minuten warten, dann erneut prüfen |
Permission denied beim Build | Root-Rechte im Container fehlen | USER-Direktive im Dockerfile prüfen |