CommunityProgramación y desarrollogithub.com

csansoon/hostel-server-setup

Configura, despliega, respalda o actualiza un servidor Hostel en una VPS Linux o en una máquina local. Úsalo cuando el usuario diga "configurar un servidor Hostel", "desplegar Hostel", "ejecutar servidor Hostel", "poner Hostel detrás de Caddy/un proxy", "cambiar una configuración del servidor", "server.toml", "respaldar Hostel" o "actualizar el servidor".

¿Qué es hostel-server-setup?

Este skill automatiza la instalación, configuración y mantenimiento de un servidor Hostel en una máquina Linux (VPS o local). Hostel es una plataforma que gestiona colas de trabajo, usuarios, configuración y una puerta de enlace SSH, permitiendo que agentes y personas se conecten a través de WebSockets. El skill guía al usuario en la elección del modo TLS (autofirmado o detrás de un proxy), la instalación de binarios, la inicialización del servidor y la edición del archivo server.toml. También cubre la creación de un servicio systemd, la gestión de la configuración en la base de datos, la generación de invitaciones, las copias de seguridad y las actualizaciones. Es útil para desarrolladores y administradores que despliegan Hostel rápidamente en entornos productivos o de prueba, con instrucciones claras para cada paso.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/csansoon/hostel/tree/HEAD/skills/hostel-server-setup

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Configurar un servidor Hostel

El servidor gestiona la cola, los usuarios, la configuración y la puerta de enlace SSH. Ejecuta un servidor para todo el equipo. Los agentes y las personas se conectan desde sus propios ordenadores (hostel-install).

1. Elegir la máquina y el modo TLS

  • Una máquina Linux con systemd (amd64 o arm64; 2 CPUs y 4 GB son suficientes), o una máquina local que permanezca encendida. El repositorio solo documenta el servicio systemd; en otro sistema operativo, ejecuta hostel server run con tu propio gestor de servicios.
  • Una dirección HTTPS a la que los clientes puedan acceder. La API y la puerta de enlace la comparten: la puerta de enlace acepta SSH dentro de un WebSocket en /v1/gateway.
Modo TLSÚsalo cuandoVerificación del cliente
self-signed (por defecto)Sin dominio ni proxy: dirección IP, nombre LAN, nombre VPN. El servidor sirve HTTPS con su propio certificado.La clave fijada del código de invitación.
offHay un proxy con TLS delante del servidor (Caddy, un balanceador de carga en la nube).El certificado del proxy, de forma normal.

2. Instalar

Como administrador en la máquina del servidor:

curl -fsSL -o install.sh https://raw.githubusercontent.com/csansoon/hostel/main/install.sh
sudo sh install.sh --dir /usr/local/bin --server /opt/hostel

/opt/hostel/helpers obtiene los binarios para todas las salas (hostel-<os>-<arquitectura>, mise-<os>-<arquitectura>). /opt/hostel/platforms obtiene los scripts de plataforma (solo un servidor antiguo los importa; el binario tiene las plataformas por defecto).

3. Inicializar

Ejecuta hostel server init como el usuario que ejecuta el servicio (no root). En una terminal, pregunta por el nombre del servidor, las direcciones y tu nombre cuando las banderas no los proporcionan. Banderas:

BanderasSignificado
--server-idEl nombre del servidor, [a-z0-9]{1,20} (por defecto: del nombre del host). Forma parte de los nombres de las salas que el servidor crea.
--listenLa dirección de la API (por defecto 127.0.0.1:7410).
--tlsself-signed (por defecto) o off.
--urlUna dirección que los clientes usan. Repítela para varias. Los códigos de invitación las contienen.
--userTu nombre, para el primer administrador.
--helper-dirLos binarios para las salas: /opt/hostel/helpers después de install.sh --server /opt/hostel (por defecto: data_dir/helpers).
--configEl archivo a escribir (por defecto ~/.config/hostel/server.toml).

Con autofirmado, en su propio puerto (abrir TCP 7410 en el cortafuegos):

hostel server init --server-id demo --listen 0.0.0.0:7410 \
  --url https://hostel.example.com:7410 --user "Alice Example" \
  --helper-dir /opt/hostel/helpers

Detrás de un proxy con TLS:

hostel server init --server-id demo --tls off --listen 127.0.0.1:8000 \
  --url https://hostel.example.com --user "Alice Example" \
  --helper-dir /opt/hostel/helpers

Con --tls off y una dirección https://, init también escribe gateway_public = "wss://hostel.example.com/v1/gateway": los invitados y las máquinas unidas llegan a la puerta de enlace SSH a través del proxy. El proxy debe reenviar /v1/gateway (un WebSocket) al servidor.

init escribe server.toml, hostel.schema.json, el directorio de datos (~/.local/share/hostel: la base de datos, server_ed25519, gateway_host_ed25519, y el certificado TLS), e imprime la clave pública SSH del servidor y la primera invitación de administrador:

Conecta tu ordenador como primer administrador. Ejecuta esto en tu ordenador:

  hostel connect hostel1-...

Ejecuta ese comando en tu propio ordenador dentro de 24 horas (hostel-install).

4. Editar server.toml

server.toml solo tiene las claves que el servidor necesita antes de abrir su base de datos: server_id, listen, gateway_listen, gateway_public, tls, public_urls, data_dir, helper_dir, platforms_dir. init escribe helper_dir (con --helper-dir) y, detrás de un proxy, gateway_public. Verifícalos:

grep -E 'helper_dir|gateway_public' ~/.config/hostel/server.toml
hostel admin config check

Sin helper_dir, el servidor no puede dar a las salas su ayudante, y hostel machine join no puede descargar el binario. Sin gateway_public detrás de un proxy, cada sesión SSH invitada y cada máquina unida falla.

Un ejemplo con Caddy (Caddy pasa las actualizaciones WebSocket sin configuración adicional):

hostel.example.com {
	reverse_proxy 127.0.0.1:8000
}

Con tls = "self-signed", el gateway_public por defecto es /v1/gateway en la misma dirección; no lo configures. Verifica el archivo (imprime cada problema y los valores efectivos):

hostel admin config check

Un cambio en server.toml necesita un reinicio del servidor.

5. El servicio systemd

/etc/systemd/system/hostel.service (reemplaza alice con el usuario que ejecutó init):

[Unit]
Description=Servidor Hostel
After=network-online.target
Wants=network-online.target

[Service]
User=alice
ExecStart=/usr/local/bin/hostel server run
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now hostel
journalctl -u hostel -f

hostel server run --config <archivo> selecciona otro server.toml. El registro está en JSON en stderr. Si la configuración no es válida, el servidor no arranca y el registro indica por qué.

Para salas de tipo Namespace, las CLI devbox y nsc deben estar en el PATH del servicio (hostel-rooms, sección "Namespace").

6. La configuración en la base de datos

Todo lo demás (proveedores, máquinas, plataformas y las opciones) es el documento de configuración en la base de datos. Un administrador lo cambia desde cualquier ordenador conectado. Un cambio válido se aplica de inmediato, sin reinicio.

hostel config                    # muestra el documento (los miembros ven los secretos como ***)
hostel config edit               # lo cambia en $VISUAL / $EDITOR
hostel config apply archivo.toml # lo reemplaza con un archivo (o - para stdin)
hostel config history            # las revisiones, con usuario y hora
hostel config settings           # las opciones que no son las predeterminadas
hostel config settings set idle_timeout=20m

Opciones: idle_timeout (10m), poll_timeout (5m), limit_retry (2m), port_process_offline (10m), intervals.scheduler (10s), intervals.reconcile (5m), intervals.tunnel_check (30s), intervals.presence (30s), mise.idiomatic_tools (["node", "python"]), mise.github_token, mise.agent_device (true).

El servidor rechaza un cambio si otra revisión llegó primero (editar de nuevo) o si no es válido (el error nombra la ruta de la clave). Máquinas y proveedores: hostel-rooms. Plataformas: hostel-platforms. Usuarios: hostel-users.

7. Invitaciones en la máquina del servidor

Si nadie puede iniciar sesión como administrador, crea una invitación en la propia máquina del servidor (no usa la API):

hostel server invite                     # un administrador
hostel server invite --role member --name "Bob Example"

8. Copias de seguridad

El estado está en el directorio de datos (~/.local/share/hostel). Respalda las claves una vez (server_ed25519, gateway_host_ed25519, tls_cert.pem, tls_key.pem). Respalda la base de datos con SQLite, no con una copia de archivo:

sqlite3 ~/.local/share/hostel/hostel.db ".backup /var/backups/hostel.db"
  • Una base de datos perdida: los usuarios deben conectarse de nuevo; las salas bajo demanda con este server_id se destruyen en la siguiente reconciliación.
  • Una server_ed25519 perdida: coloca la nueva clave pública (hostel admin pubkey) en cada máquina estática.
  • Una clave TLS perdida (autofirmado): cada cliente debe conectarse de nuevo con un nuevo código de invitación.

9. Actualizar

curl -fsSL -o install.sh https://raw.githubusercontent.com/csansoon/hostel/main/install.sh
sudo sh install.sh --dir /usr/local/bin --server /opt/hostel
sudo systemctl restart hostel

El servidor envía el nuevo ayudante a cada sala antes de su próxima concesión.

Siguiente

  • Añadir salas: hostel-rooms.
  • Invitar personas: hostel-users.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Skills relacionados