- Headscale은 Tailscale의 컨트롤 서버 기능을 자체 호스팅할 수 있도록 만든 오픈 소스 대안 프로젝트
- Tailscale은 WireGuard 기반의 현대적 VPN 솔루션으로, NAT 환경에서도 작동하는 오버레이 네트워크 구성 가능
- 원래의 Tailscale Control 서버는 비공개 소프트웨어이나, Headscale은 이를 대체할 수 있는 자유롭게 설치 가능한 서버 소프트웨어로 개발됨
- Windows, macOS, iOS 클라이언트는 여전히 Tailscale의 GUI를 필요로 함
Headscale의 목적과 특징
- Headscale은 개인 및 소규모 오픈소스 조직이 사용할 수 있도록 한 개의 tailnet(가상 사설망)만 지원
-
자체 서버를 운영하고 싶은 사용자와 자유 소프트웨어 애호가에게 적합한 솔루션
- 설계 범위를 좁게 설정하여 유지 보수와 관리가 간편함
주요 기능
- 클라이언트 노드 간의 WireGuard 공개 키 교환
- 각 노드의 IP 주소 할당 및 경계 설정
- 사용자 간의 머신 공유 기능
- 노드의 라우트 광고 관리
- 공식 기능 목록은 여기에서 확인 가능
지원 클라이언트 운영 체제
- Headscale과 호환 가능한 운영 체제 및 클라이언트 목록은 공식 문서에서 확인 가능
설치 및 실행 관련 안내
- **역방향 프록시(reverse proxy)**나 컨테이너 기반 실행은 공식적으로 권장하지 않음
- 실행 방법 및 설정은 공식 문서 참고
커뮤니티 및 기여
개발 환경 및 코드 스타일
- 개발에 필요한 주요 도구:
- 최신 버전의 Go
- Buf (Protobuf 생성기)
- Nix를 이용한 개발 환경 구성 가능 (nix develop 명령어)
- 코드 스타일:
- Go 코드: golangci-lint, golines, gofumpt 사용
- Proto 코드: buf, clang-format 사용
- 기타 파일: prettier로 정렬
- 커밋 전에는 make lint, make fmt로 코드 정리 필수
빌드 및 테스트
- Protobuf 코드 변경 시, Go 코드 재생성 필요: make generate
- 테스트 실행: make test
- 빌드:
-
nix build
- 또는 make build 명령어 사용
기타 정보
- 2023년 FOSDEM에서 Headscale 관련 발표 진행: 영상 보기
- 프로젝트는 Tailscale Inc.와 직접적인 연관은 없으나, Tailscale 소속의 기여자가 참여 중이며 독립적으로 코드 리뷰 및 방향성 설정