DesarrolladoresInicio rápido
Inicio rápido: despliega desde GitHub
Esta guía despliega una app desde un repositorio público de GitHub con simples llamadas HTTP. Necesitas:
- un servidor de aplicaciones, comprado en la consola en Servidores y facturación;
- un token de API con Lectura, Escritura, Despliegue y Lectura de datos sensibles;
curlyjq.
Los ejemplos usan una app Node que escucha en el puerto 3000. Cámbialos por tu propio repositorio y puerto.
1. Prepara tu terminal#
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 es un pequeño atajo para que los comandos de abajo sean cortos; --fail-with-body se detiene ante errores y muestra el mensaje de la API. Si esto muestra tu equipo, el token funciona.
2. Elige un servidor#
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 es lo que necesitas para crear una app. Las entradas VPS no lo tienen: las apps se ejecutan en servidores de aplicaciones.
3. Crea un proyecto#
export PROJECT=$(hw -X POST $API/projects -d '{"name": "hello"}' | jq -r .uuid)
Un proyecto nuevo viene con un entorno production.
4. Crea la app#
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:nixpacksorailpackdetectan el lenguaje y hacen el build por ti;dockerfileusa el Dockerfile del repositorio;staticsirve archivos.- Omite
domainspara obtener una dirección HTTPS generada con el nombre de tu servidor. Para usar la tuya, pasa"domains": "https://shop.example.com"y apunta un registro DNS a la IP del servidor. - Para un repositorio privado, usa
/applications/private-deploy-keyo/applications/private-github-app; consulta la referencia de la API.
5. Define las variables de entorno#
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 oculta un valor para siempre después de guardarlo.
6. Despliega y espera#
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
Un primer build suele tardar de uno a tres minutos. Si falla, el registro de build dice por qué:
hw $API/deployments/$DEPLOYMENT | jq -r '.logs | fromjson | map(select(.hidden | not) | .output) | .[-30:][]'
7. Ábrela y lee los registros#
hw $API/applications/$APP | jq -r .fqdn
hw "$API/applications/$APP/logs?lines=50" | jq -r .logs
fqdn lista las direcciones de la app, separadas por comas. Los registros necesitan el permiso Lectura de datos sensibles.
8. Limpia#
hw -X DELETE $API/applications/$APP
hw -X DELETE $API/projects/$PROJECT
Eliminar una app también elimina sus volúmenes, salvo que pases ?delete_volumes=false. Un proyecto solo se puede eliminar cuando está vacío, así que espera unos segundos después de eliminar la app.
Siguientes pasos#
- Despliega en cada
git push: despliegues por push. - Añade una base de datos: bases de datos gestionadas.
- Atiende más tráfico: varios servidores y autoescalado.
- El mismo flujo en TypeScript está en el inicio rápido del SDK.