프로젝트 소개

Headscale은 Tailscale 제어 서버의 오픈 소스 셀프 호스팅 구현체입니다. Tailscale은 NAT 트래버설을 사용하여 컴퓨터 간 오버레이 네트워크로 작동하는 WireGuard 기반의 현대적 VPN입니다. Tailscale의 대부분은 오픈 소스이지만 제어 서버는 그렇지 않으며, Headscale이 이 공백을 메웁니다. 제어 서버는 Tailscale 네트워크 내 노드 간 WireGuard 공개 키를 교환하는 지점 역할을 합니다. 클라이언트 IP 주소를 할당하고, 사용자 간 경계를 설정하며, 사용자 간 머신 공유를 활성화하고, 노드의 광고된 라우트를 노출합니다. 테일넷은 Tailscale이 사용자 또는 조직에 할당하는 프라이빗 네트워크입니다. 설계 목표: Headscale은 셀프 호스팅 사용자와 취미 개발자가 프로젝트 및 실험실용으로 사용할 수 있는 오픈 소스 서버를 제공하는 것을 목표로 합니다. 개인 사용이나 소규모 오픈 소스 조직에 적합한 단일 테일넷이라는 좁은 범위를 의도적으로 구현합니다. 이 프로젝트는 Tailscale Inc.와 공식적으로 연관되어 있지 않지만, 한 명의 활성 유지 관리자가 Tailscale에 고용되어 근무 시간 중 기여가 허용되며, 이러한 기여는 다른 유지 관리자에 의해 검토됩니다. 유지 관리자는 셀프 호스팅 사용자, 열정적인 사용자 및 취미 개발자 커뮤니티를 지원하는 동시에 프로젝트의 지속 가능성을 유지한다는 원칙에 따라 함께 프로젝트 방향을 설정합니다. 안정 버전 및 개발 버전 모두에 대한 문서가 게시되며, 메인 브랜치에는 릴리스되지 않은 변경 사항이 포함될 수 있으므로 사용자는 릴리스된 버전과 일치하는 GitHub 태그를 선택하는 것이 좋습니다. 메인 브랜치에서의 개발 빌드는 컨테이너 이미지 및 바이너리로 제공됩니다. 이 프로젝트는 Headscale 실행을 위해 리버스 프록시나 컨테이너 사용을 지원하거나 권장하지 않는다고 명시합니다. nix/ 디렉터리에 NixOS 모듈이 제공됩니다. 기여를 하려면 최신 Go 및 Buf(Protobuf 생성기)가 필요합니다. nix develop을 통해 개발 환경을 설정하는 것이 권장되며, 이를 통해 도구가 설치되고 유지 관리자의 환경과 일치하는 셸이 제공됩니다. 코드 스타일 규칙에는 Go용 golangci-lint, golines, gofumpt, Protobuf용 buf, clang-format, 문서용 mdformat, 기타 파일용 prettier가 포함됩니다. 테스트는 make test, 빌드는 make build로 실행되며, Protobuf 변경 사항은 make generate가 필요합니다. 이 프로젝트는 AI 정책과 기여 가이드를 게시하며 Discord 커뮤니티를 유지 관리합니다.