csansoon/hostel-server-setup

Configure, faça backup ou atualize um servidor Hostel em uma VPS Linux ou em uma máquina local. Use quando o usuário disser "configure um servidor Hostel", "implante o Hostel", "execute o servidor Hostel", "coloque o Hostel atrás do Caddy/um proxy", "altere uma configuração do servidor", "server.toml", "faça backup do Hostel" ou "atualize o servidor".

O que é hostel-server-setup?

Esta skill permite configurar, gerenciar e manter um servidor Hostel em uma máquina Linux com systemd (VPS ou local), que serve como o hub central para equipes se conectarem via uma interface SSH sobre WebSocket. O servidor gerencia a fila, usuários, configurações e o gateway SSH, e suporta dois modos de TLS: "self-signed" para uso direto via IP ou VPN, e "off" para uso atrás de um proxy como Caddy. A skill orienta desde a instalação com um script curl, inicialização interativa com flags como `--server-id`, `--listen` e `--url`, até a edição do arquivo `server.toml` e a criação de um serviço systemd para execução contínua. Alterações na configuração do banco de dados podem ser feitas dinamicamente via comandos `hostel config`, sem necessidade de reinicialização. Ela é útil para administradores que precisam implantar ou atualizar rapidamente um servidor Hostel em qualquer ambiente Linux, garantindo conectividade segura para agentes e usuários. Plataformas suportadas: Linux (amd64/arm64 com systemd), home machines. Como funciona: Usa o binário `hostel` para inicializar, gerenciar configurações via TOML e banco de dados local, e fornece um endpoint HTTPS/WebSocket para conexão de clientes.

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

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Configurar um servidor Hostel

O servidor mantém a fila, os utilizadores, a configuração e o gateway SSH. Execute um servidor por equipa. Agentes e pessoas ligam-se a partir dos seus próprios computadores (hostel-install).

1. Escolher a máquina e o modo TLS

  • Uma máquina Linux com systemd (amd64 ou arm64; 2 CPUs e 4 GB são suficientes), ou uma máquina doméstica que fique ligada. O repositório documenta apenas o serviço systemd; noutro SO, execute hostel server run com o seu próprio gestor de serviços.
  • Um endereço HTTPS que os clientes possam alcançar. A API e o gateway partilham-no: o gateway aceita SSH dentro de um WebSocket em /v1/gateway.
Modo TLSUse quandoClientes verificam
self-signed (padrão)Sem domínio ou sem proxy: um endereço IP, um nome LAN, um nome VPN. O servidor serve HTTPS com o seu próprio certificado.A chave fixa do código de convite.
offUm proxy com TLS está à frente do servidor (Caddy, um balanceador de carga na cloud).O certificado do proxy, da forma normal.

2. Instalar

Como administrador na máquina do 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 recebe os binários para todas as salas (hostel-<os>-<arch>, mise-<os>-<arch>). /opt/hostel/platforms recebe os scripts de plataforma (apenas um servidor antigo os importa; o binário tem as plataformas predefinidas).

3. Inicializar

Execute hostel server init como o utilizador que executa o serviço (não root). Num terminal, ele pergunta pelo nome do servidor, os endereços e o seu nome quando as flags não os fornecem. Flags:

FlagSignificado
--server-idO nome do servidor, [a-z0-9]{1,20} (padrão: a partir do nome do host). Faz parte dos nomes das salas que o servidor cria.
--listenO endereço da API (padrão 127.0.0.1:7410).
--tlsself-signed (padrão) ou off.
--urlUm endereço que os clientes usam. Repita-o para vários. Os códigos de convite contêm-nos.
--userO seu nome, para o primeiro administrador.
--helper-dirOs binários para as salas: /opt/hostel/helpers após install.sh --server /opt/hostel (padrão: data_dir/helpers).
--configO ficheiro a escrever (padrão ~/.config/hostel/server.toml).

Auto-assinado, na sua própria porta (abrir TCP 7410 na firewall):

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

Atrás de um proxy com 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

Com --tls off e um endereço https://, init também escreve gateway_public = "wss://hostel.example.com/v1/gateway": convidados e máquinas associadas alcançam o gateway SSH através do proxy. O proxy deve encaminhar /v1/gateway (um WebSocket) para o servidor.

init escreve server.toml, hostel.schema.json, o diretório de dados (~/.local/share/hostel: a base de dados, server_ed25519, gateway_host_ed25519, e o certificado TLS), e imprime a chave pública SSH do servidor e o primeiro convite de administrador:

Conecte o seu computador como o primeiro administrador. Execute isto no seu computador:

  hostel connect hostel1-...

Execute esse comando no seu próprio computador dentro de 24 horas (hostel-install).

4. Editar server.toml

server.toml tem apenas as chaves de que o servidor precisa antes de abrir a sua base de dados: server_id, listen, gateway_listen, gateway_public, tls, public_urls, data_dir, helper_dir, platforms_dir. init escreve helper_dir (com --helper-dir) e, atrás de um proxy, gateway_public. Verifique-os:

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

Sem helper_dir, o servidor não pode fornecer às salas o seu helper, e hostel machine join não pode descarregar o binário. Sem gateway_public atrás de um proxy, cada sessão SSH convidada e cada máquina associada falha.

Um exemplo com Caddy (Caddy passa atualizações WebSocket sem configurações adicionais):

hostel.example.com {
	reverse_proxy 127.0.0.1:8000
}

Com tls = "self-signed", o gateway_public padrão é /v1/gateway no mesmo endereço; não o defina. Verifique o ficheiro (imprime cada problema e os valores efetivos):

hostel admin config check

Uma alteração de server.toml requer um reinício do servidor.

5. O serviço systemd

/etc/systemd/system/hostel.service (substitua alice pelo utilizador que executou 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 <file> seleciona outro server.toml. O registo é JSON no stderr. Se a configuração for inválida, o servidor não inicia e o registo diz porquê.

Para salas de Namespace, os CLIs devbox e nsc devem estar no PATH do serviço (hostel-rooms, secção "Namespace").

6. A configuração na base de dados

Tudo o resto (fornecedores, máquinas, plataformas e as definições) é o documento de configuração na base de dados. Um administrador altera-o a partir de qualquer computador ligado. Uma alteração válida aplica-se imediatamente, sem reinício.

hostel config                    # mostra o documento (membros veem segredos como ***)
hostel config edit               # altera-o em $VISUAL / $EDITOR
hostel config apply file.toml    # substitui-o por um ficheiro (ou - para stdin)
hostel config history            # as revisões, com utilizador e hora
hostel config settings           # as definições que não são padrão
hostel config settings set idle_timeout=20m

Definições: 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).

O servidor recusa uma alteração se outra revisão chegou primeiro (edite novamente) ou se for inválida (o erro nomeia o caminho da chave). Máquinas e fornecedores: hostel-rooms. Plataformas: hostel-platforms. Utilizadores: hostel-users.

7. Convites na máquina do servidor

Se ninguém conseguir entrar como administrador, crie um convite na própria máquina do servidor (não usa a API):

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

8. Cópias de segurança

O estado está no diretório de dados (~/.local/share/hostel). Faça backup das chaves uma vez (server_ed25519, gateway_host_ed25519, tls_cert.pem, tls_key.pem). Faça backup da base de dados com SQLite, não com uma cópia de ficheiro:

sqlite3 ~/.local/share/hostel/hostel.db ".backup /var/backups/hostel.db"
  • Uma base de dados perdida: os utilizadores devem ligar-se novamente; as salas on-demand com este server_id são destruídas na próxima reconciliação.
  • Uma server_ed25519 perdida: coloque a nova chave pública (hostel admin pubkey) em cada máquina estática.
  • Uma chave TLS perdida (auto-assinada): cada cliente deve ligar-se novamente com um novo código de convite.

9. Atualizar

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

O servidor envia o novo helper para cada sala antes do seu próximo lease.

Seguir

  • Adicionar salas: hostel-rooms.
  • Convidar pessoas: hostel-users.

Individual skills in this repo

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

Habilidades Relacionadas