# 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](/es/deploy).

### 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`.