Community코딩 & 개발github.com

csansoon/hostel-server-setup

리눅스 VPS 또는 홈 서버에 Hostel 서버를 설정, 구성, 백업 또는 업데이트합니다. 사용자가 'Hostel 서버 설정', 'Hostel 배포', 'Hostel 서버 실행', 'Hostel을 Caddy/프록시 뒤에 배치', '서버 설정 변경', 'server.toml', 'Hostel 백업', '서버 업데이트'라고 말할 때 사용하세요.

hostel-server-setup란 무엇인가요?

이 스킬은 Hostel 서버를 리눅스 VPS나 홈 머신에 설치, 초기화, 구성, 백업 및 업데이트하는 전체 프로세스를 안내합니다. Hostel은 팀을 위한 공유 개발 환경 플랫폼으로, 에이전트와 사용자가 SSH 게이트웨이를 통해 연결합니다. SKILL.md는 TLS 모드(self-signed 또는 off), 시스템 서비스 설정, server.toml 구성, 데이터베이스 설정, 초대 코드 생성, 백업 및 업데이트 방법을 상세히 설명합니다. Claude Code, Cursor, Cline과 같은 AI 어시스턴트가 이 문서를 참고하여 사용자에게 단계별 지침을 제공하거나 직접 명령을 실행할 수 있습니다. 또한 관리자용 명령어(hostel config, hostel server invite 등)와 방, 플랫폼, 사용자 관리 방법도 포함되어 있어 완전한 서버 운영 가이드를 제공합니다.

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

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Hostel 서버 설정하기

서버는 큐, 사용자, 구성 및 SSH 게이트웨이를 유지 관리합니다. 팀당 하나의 서버를 실행합니다. 에이전트와 사람들은 자신의 컴퓨터에서 연결합니다 (hostel-install).

1. 머신 및 TLS 모드 선택

  • systemd가 설치된 리눅스 머신(amd64 또는 arm64; 2 CPU와 4 GB면 충분함), 또는 항상 켜져 있는 홈 머신. 저장소는 systemd 서비스만 문서화합니다. 다른 OS에서는 자체 서비스 관리자와 함께 hostel server run을 실행하세요.
  • 클라이언트가 접근할 수 있는 HTTPS 주소 하나. API와 게이트웨이가 이를 공유합니다: 게이트웨이는 /v1/gateway에서 WebSocket 내부의 SSH를 수락합니다.
TLS 모드사용 시기클라이언트 확인 대상
self-signed (기본값)도메인 또는 프록시 없음: IP 주소, LAN 이름, VPN 이름. 서버가 자체 인증서로 HTTPS를 제공합니다.초대 코드의 고정 키.
offTLS가 있는 프록시가 서버 앞에 있음(Caddy, 클라우드 로드 밸런서).일반적인 방식으로 프록시의 인증서.

2. 설치

서버 머신의 관리자 권한으로:

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에는 모든 룸의 바이너리가 저장됩니다(hostel-<os>-<arch>, mise-<os>-<arch>). /opt/hostel/platforms에는 플랫폼 스크립트가 저장됩니다(이전 서버만 가져옴; 바이너리에는 기본 플랫폼이 있음).

3. 초기화

서비스를 실행하는 사용자(root 아님)로 hostel server init을 실행합니다. 터미널에서 플래그가 제공되지 않으면 서버 이름, 주소 및 사용자 이름을 묻습니다. 플래그:

플래그의미
--server-id서버 이름, [a-z0-9]{1,20} (기본값: 호스트 이름에서 가져옴). 서버가 생성하는 룸 이름의 일부입니다.
--listenAPI 주소 (기본값 127.0.0.1:7410).
--tlsself-signed (기본값) 또는 off.
--url클라이언트가 사용하는 주소. 여러 번 반복할 수 있습니다. 초대 코드에 포함됩니다.
--user첫 번째 관리자를 위한 사용자 이름.
--helper-dir룸의 바이너리: install.sh --server /opt/hostel 이후 /opt/hostel/helpers (기본값: data_dir/helpers).
--config작성할 파일 (기본값 ~/.config/hostel/server.toml).

자체 서명, 자체 포트 사용(방화벽에서 TCP 7410 열기):

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

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

--tls off와 https:// 주소를 사용하면 init은 또한 gateway_public = "wss://hostel.example.com/v1/gateway"를 작성합니다: 게스트와 조인된 머신이 프록시를 통해 SSH 게이트웨이에 도달합니다. 프록시는 /v1/gateway(WebSocket)를 서버로 전달해야 합니다.

init은 server.toml, hostel.schema.json, 데이터 디렉토리 (~/.local/share/hostel: 데이터베이스, server_ed25519, gateway_host_ed25519, 및 TLS 인증서)를 작성하고 서버의 SSH 공개 키와 첫 번째 관리자 초대를 출력합니다:

첫 번째 관리자로 컴퓨터를 연결하세요. 컴퓨터에서 다음을 실행하세요:

  hostel connect hostel1-...

24시간 이내에 자신의 컴퓨터에서 해당 명령을 실행하세요(hostel-install).

4. server.toml 편집

server.toml에는 서버가 데이터베이스를 열기 전에 필요한 키만 있습니다: server_id, listen, gateway_listen, gateway_public, tls, public_urls, data_dir, helper_dir, platforms_dir. init은 helper_dir(--helper-dir 사용 시)과 프록시 뒤에서는 gateway_public을 작성합니다. 확인:

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

helper_dir이 없으면 서버가 룸에 헬퍼를 제공할 수 없고, hostel machine join이 바이너리를 다운로드할 수 없습니다. 프록시 뒤에 gateway_public이 없으면 모든 게스트 SSH 세션과 모든 조인된 머신이 실패합니다.

Caddy 예시(Caddy는 추가 설정 없이 WebSocket 업그레이드를 전달합니다):

hostel.example.com {
	reverse_proxy 127.0.0.1:8000
}

tls = "self-signed"를 사용하면 기본 gateway_public은 동일한 주소의 /v1/gateway입니다. 설정하지 마세요. 파일 확인(각 문제와 유효 값을 출력합니다):

hostel admin config check

server.toml을 변경하려면 서버를 다시 시작해야 합니다.

5. systemd 서비스

/etc/systemd/system/hostel.service (alice를 init을 실행한 사용자로 바꾸세요):

[Unit]
Description=Hostel server
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>은 다른 server.toml을 선택합니다. 로그는 stderr로 JSON입니다. 구성이 유효하지 않으면 서버가 시작되지 않고 로그에 이유가 표시됩니다.

네임스페이스 룸의 경우 devbox 및 nsc CLI가 서비스의 PATH에 있어야 합니다(hostel-rooms, "네임스페이스" 섹션).

6. 데이터베이스의 구성

그 외 모든 것(프로바이더, 머신, 플랫폼 및 설정)은 데이터베이스의 구성 문서입니다. 관리자가 연결된 컴퓨터에서 변경합니다. 유효한 변경은 재시작 없이 즉시 적용됩니다.

hostel config                    # 문서 표시 (멤버는 비밀을 ***로 표시)
hostel config edit               # $VISUAL / $EDITOR에서 변경
hostel config apply file.toml    # 파일로 대체 (또는 -는 stdin)
hostel config history            # 사용자 및 시간이 포함된 개정 내역
hostel config settings           # 기본값이 아닌 설정
hostel config settings set idle_timeout=20m

설정: 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).

다른 개정이 먼저 도착했거나(다시 편집) 변경이 유효하지 않으면(오류가 키 경로를 지정함) 서버는 변경을 거부합니다. 머신 및 프로바이더: hostel-rooms. 플랫폼: hostel-platforms. 사용자: hostel-users.

7. 서버 머신에서의 초대

아무도 관리자로 로그인할 수 없는 경우 서버 머신 자체에서 초대를 생성합니다(API를 사용하지 않음):

hostel server invite                     # 관리자 초대
hostel server invite --role member --name "Bob Example"

8. 백업

상태는 데이터 디렉토리(~/.local/share/hostel)에 있습니다. 키는 한 번 백업하세요(server_ed25519, gateway_host_ed25519, tls_cert.pem, tls_key.pem). 데이터베이스는 파일 복사가 아닌 SQLite로 백업하세요:

sqlite3 ~/.local/share/hostel/hostel.db ".backup /var/backups/hostel.db"
  • 데이터베이스 분실: 사용자가 다시 연결해야 함; 이 server_id의 온디맨드 룸은 다음 조정 시 파괴됩니다.
  • server_ed25519 분실: 각 정적 머신에 새 공개 키(hostel admin pubkey)를 배치하세요.
  • TLS 키 분실(자체 서명): 각 클라이언트가 새 초대 코드로 다시 연결해야 합니다.

9. 업데이트

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

서버는 다음 임대 전에 새 헬퍼를 각 룸에 보냅니다.

다음 단계

  • 룸 추가: hostel-rooms.
  • 사용자 초대: hostel-users.

Individual skills in this repo

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

관련 스킬