Provisionar

Prepara un servidor para alojar aplicaciones de Vela. Puede usarse cualquier host basado en Debian accesible por SSH. Ejecútalo una vez por servidor, antes del primer despliegue.

Sintaxis

$ vela provision <target>
$ vela provision root@example.com

El destino es una dirección SSH: un alias de ~/.ssh/config, o user@host. El aprovisionamiento es idempotente — ejecutarlo de nuevo en un servidor ya preparado lo actualiza en lugar de empezar de cero.

Opciones

  • -i, --identity <file> - Clave privada SSH con la que autenticarse
  • --ssh-port <port> - Puerto SSH
  • --accept-host-keys - Confiar en una clave de host desconocida en la primera conexión (CI)
  • --pb-version <version> - Versión de PocketBase a instalar, por defecto aquella contra la que se desarrolla esta CLI
  • --node-major <version> - Versión mayor de Node.js a instalar, por defecto 22

Stack

Vela instala lo siguiente en el servidor:

  • Node.js
  • Caddy, con HTTPS automático
  • PocketBase
  • Unidades de systemd para la aplicación y la base de datos

Se crea un usuario del sistema vela para ser el propietario de las aplicaciones y ejecutarlas. A Caddy se le añade una línea import /etc/vela/caddy/*.caddy a su Caddyfile existente — por lo demás, la configuración existente se deja intacta, y el resultado se valida antes de recargar Caddy.

Estructura

Las aplicaciones viven bajo /var/lib/vela, con la configuración en /etc/vela:

/var/lib/vela/apps/<app>       releases y datos, por aplicación
/var/lib/vela/state            estado de todo el servidor: asignación de puertos, un cerrojo por objetivo
/var/lib/vela/script-versions  los scripts de servidor, un directorio por versión de la CLI
/var/lib/vela/trash            datos eliminados por una purga, conservados dos semanas
/etc/vela/apps                 archivos de entorno, legibles solo por root
/etc/vela/caddy                fragmentos de Caddy generados, uno por aplicación

Cada objetivo desplegado ejecuta dos servicios de systemd, vela-web@ para el servidor de Node y vela-pb@ para la base de datos, en un puerto asignado internamente. Varias aplicaciones y varios objetivos de la misma aplicación pueden compartir un servidor.

Requisitos

Para que el HTTPS se aprovisione automáticamente al desplegar, el servidor debe tener una dirección IP pública y el dominio debe apuntar a ella. Eso es lo que permite a Caddy obtener certificados. El aprovisionamiento necesita root, directamente o mediante sudo.