Headscale + Tailscale — 벤더 없이 자기 Tailnet
Tailscale SaaS 를 걷어내고 Headscale 로 자기 컨트롤 서버를 세운 이야기.
지난 글에서 자가호스팅을 왜 하는지 이야기했다면, 이번 글은 그 첫 벽돌을 쌓은 이야기입니다. 바로 Tailnet 자체를 자기 것으로 만드는 일 입니다.
시작#
Tailscale 은 편했습니다. 하지만 컨트롤 서버가 벤더 소유라는 사실은 마음에 걸렸습니다.
문제 정의#
- SaaS 컨트롤 서버가 다운되면 새 노드 등록 불가
- ACL, DNS, 라우팅 모두 벤더에 종속
- 무료 tier 제한 (100 노드) 이 언젠가 벽이 됨
대안#
Headscale — Tailscale 의 오픈소스 컨트롤 서버 구현. 이 조합으로 완전한 자가호스팅.
셋업#
VPS 하나에 Headscale 만 얹으면 끝났습니다.
도메인 + TLS#
Caddy 가 hs.ppajji.com 앞에 서서 Let’s Encrypt 인증서 자동 관리. Headscale 은 HTTP 만 담당.
첫 노드 등록#
Home PC 에서 Tailscale 클라이언트를 --login-server=https://hs.ppajji.com 로 실행. Pre-auth key 로 한 번에 등록.
DERP relay#
기본은 Tailscale 의 공식 DERP 를 씀. 원한다면 자체 DERP 도 세울 수 있지만, 현재는 필요 없다고 판단.
실제 사용감#
한 달 넘게 운영하며 느낀 것.
안정성#
Tailscale SaaS 시절보다 안정적. 재부팅해도 노드가 다시 붙고, 컨트롤 서버 로그도 내가 다 볼 수 있음.
관리 부담#
낮음. docker compose up -d 로 세운 이후 거의 손대지 않았습니다. 백업만 하면 됨.
스케일#
현재 노드 16 개. 100 개 넘어도 무료. 트래픽은 P2P 라 컨트롤 서버 부하 낮음.
남은 과제#
이 시리즈의 다음 편에서 다룰 것들입니다.
- ACL 세분화 — 서비스 간 접근 제한
- stale 노드 자동 정리 — 30일 이상 오프라인 노드 삭제
- 자체 DERP — 필요 시점 판단
마치며#
벤더 락인을 걷어내는 첫 단계로서, Headscale 은 좋은 선택이었습니다. 다음 편은 이 위에 세운 서비스들 이야기입니다.