EntwicklerSchnellstart
Schnellstart: von GitHub deployen
Diese Anleitung deployt eine App aus einem öffentlichen GitHub-Repository mit einfachen HTTP-Aufrufen. Du brauchst:
- einen App-Server, gekauft in der Konsole unter Server & Abrechnung;
- ein API-Token mit Lesen, Schreiben, Deploy und Sensible Daten lesen;
curlundjq.
Die Beispiele nutzen eine Node-App, die auf Port 3000 lauscht. Setz dein eigenes Repository und deinen Port ein.
1. Shell einrichten#
export HOSTWOLF_APPS_TOKEN='12|your_token'
export API=https://console.app.hostwolf.net/api/v1
hw() { curl -sS --fail-with-body -H "Authorization: Bearer $HOSTWOLF_APPS_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" "$@"; }
hw $API/team | jq '{id, name}'
hw ist ein kleiner Helfer, damit die Befehle unten kurz bleiben; --fail-with-body bricht bei Fehlern ab und gibt die Meldung der API aus. Wenn das dein Team ausgibt, funktioniert das Token.
2. Server auswählen#
hw $API/hostwolf/servers | jq '.[] | {name, city, size, status, server_uuid}'
export SERVER=$(hw $API/hostwolf/servers | jq -r '[.[] | select(.kind == "app" and .status == "ready")][0].server_uuid')
server_uuid brauchst du zum Erstellen einer App. VPS-Einträge haben keine: Apps laufen auf App-Servern.
3. Projekt erstellen#
export PROJECT=$(hw -X POST $API/projects -d '{"name": "hello"}' | jq -r .uuid)
Ein neues Projekt hat eine Umgebung production.
4. App erstellen#
export APP=$(hw -X POST $API/applications/public -d "{
\"project_uuid\": \"$PROJECT\",
\"environment_name\": \"production\",
\"server_uuid\": \"$SERVER\",
\"git_repository\": \"https://github.com/you/your-app\",
\"git_branch\": \"main\",
\"build_pack\": \"nixpacks\",
\"ports_exposes\": \"3000\"
}" | jq -r .uuid)
build_pack:nixpacksoderrailpackerkennen die Sprache und bauen die App für dich;dockerfilenutzt das Dockerfile im Repository;staticliefert Dateien aus.- Lass
domainsweg, um eine generierte HTTPS-Adresse unter dem Namen deines Servers zu bekommen. Für eine eigene übergib"domains": "https://shop.example.com"und richte einen DNS-Eintrag auf die IP des Servers. - Für ein privates Repository nutze stattdessen
/applications/private-deploy-keyoder/applications/private-github-app; siehe die API-Referenz.
5. Umgebungsvariablen setzen#
hw -X PATCH $API/applications/$APP/envs/bulk -d '{"data": [
{"key": "NODE_ENV", "value": "production"},
{"key": "SESSION_SECRET", "value": "change-me", "is_shown_once": true}
]}' | jq 'map(.key)'
is_shown_once verbirgt einen Wert nach dem Speichern dauerhaft.
6. Deployen und warten#
DEPLOYMENT=$(hw -X POST $API/applications/$APP/start | jq -r .deployment_uuid)
while :; do
STATUS=$(hw $API/deployments/$DEPLOYMENT | jq -r .status)
echo "$STATUS"
case $STATUS in finished|failed|cancelled*) break ;; esac
sleep 5
done
Ein erster Build dauert meist ein bis drei Minuten. Schlägt er fehl, steht der Grund im Build-Log:
hw $API/deployments/$DEPLOYMENT | jq -r '.logs | fromjson | map(select(.hidden | not) | .output) | .[-30:][]'
7. Öffnen und Logs lesen#
hw $API/applications/$APP | jq -r .fqdn
hw "$API/applications/$APP/logs?lines=50" | jq -r .logs
fqdn listet die Adressen der App, kommagetrennt. Logs brauchen die Berechtigung Sensible Daten lesen.
8. Aufräumen#
hw -X DELETE $API/applications/$APP
hw -X DELETE $API/projects/$PROJECT
Beim Löschen einer App werden auch ihre Volumes gelöscht, außer du übergibst ?delete_volumes=false. Ein Projekt lässt sich erst löschen, wenn es leer ist; warte also nach dem Löschen der App ein paar Sekunden.
Nächste Schritte#
- Bei jedem
git pushdeployen: Push-Deployments. - Datenbank hinzufügen: verwaltete Datenbanken.
- Mehr Traffic bewältigen: Multi-Server und Autoscaling.
- Derselbe Ablauf in TypeScript steht im SDK-Schnellstart.