
headscale v0.29.3
Открытая, самостоятельно размещаемая реализация сервера управления Tailscale

Открытая реализация контрольного сервера Tailscale для самостоятельного размещения.
Присоединяйтесь к нашему серверу Discord для общения.
Примечание: Всегда выбирайте тот же тег GitHub, что и используемая вами версия
релиза, чтобы убедиться, что у вас правильная конфигурация из примеров. Ветка main может
содержать невыпущенные изменения. Документация доступна для стабильной и
разрабатываемой версий:
Что такое Tailscale
Tailscale — это современный VPN, построенный на основе Wireguard. Он работает как оверлейная сеть между компьютерами ваших сетей — используя обход NAT.
Всё в Tailscale имеет открытый исходный код, кроме GUI-клиентов для проприетарных ОС (Windows и macOS/iOS) и контрольного сервера.
Контрольный сервер работает как точка обмена публичными ключами Wireguard для узлов в сети Tailscale. Он назначает IP-адреса клиентам, создаёт границы между каждым пользователем, позволяет делиться машинами между пользователями и публикует анонсированные маршруты ваших узлов.
Сеть Tailscale (tailnet) — это частная сеть, которую Tailscale назначает пользователю в терминах частных пользователей или организации.
Цель дизайна
Headscale стремится реализовать открытую альтернативу контрольному серверу Tailscale для самостоятельного размещения. Цель Headscale — предоставить самостоятельным хостерам и энтузиастам открытый сервер, который они могут использовать для своих проектов и лабораторий. Он реализует узкую область применения — единую сеть Tailscale (tailnet), подходящую для личного использования или небольшой открытой организации.
Поддержка Headscale
Если вам нравится headscale и вы находите его полезным, в репозитории доступны
кнопки спонсорства и пожертвований.
Возможности
См. раздел "Features" в документации.
Поддержка клиентских ОС
См. раздел "Client and operating system support" в документации.
Запуск headscale
Обратите внимание, что мы не поддерживаем и не поощряем использование обратных прокси и контейнеров для запуска Headscale.
Пожалуйста, ознакомьтесь с документацией.
Для пользователей NixOS доступен модуль в nix/.
Сборки из main
Сборки для разработки из ветки main доступны в виде образов контейнеров и
бинарных файлов. Подробности см. в документации по сборкам для разработки.
Доклады
- Fosdem 2026 (видео): Headscale & Tailscale: The complementary open source clone
- представил Kristoffer Dalby
- Fosdem 2023 (видео): Headscale: How we are using integration testing to reimplement Tailscale
- представили Juan Font Alonso и Kristoffer Dalby
Отказ от ответственности
Этот проект не связан с Tailscale Inc.
Однако один из активных мейнтейнеров Headscale работает в Tailscale, и ему разрешено тратить рабочие часы на вклад в проект. Вклад этого мейнтейнера проверяется другими мейнтейнерами.
Мейнтейнеры совместно определяют направление развития проекта. Основополагающий принцип — служить сообществу самостоятельных хостеров, энтузиастов и любителей, сохраняя при этом устойчивый проект.
Участие в разработке
Пожалуйста, прочитайте файл CONTRIBUTING.md.
Также ознакомьтесь с нашим AI_POLICY.md.
Требования
Чтобы внести вклад в headscale, вам понадобится последняя версия Go и Buf (генератор Protobuf).
Мы рекомендуем использовать Nix для настройки среды разработки. Это можно
сделать с помощью nix develop, которая установит инструменты и предоставит вам оболочку.
Это гарантирует, что у вас будет та же среда разработки, что и у сопровождающих headscale.
Стиль кода
Чтобы обеспечить некоторую согласованность при растущем числе вкладов, этот проект принял правила линтинга и стиля/форматирования:
Код на Go проверяется линтером golangci-lint и
форматируется форматтерами golangci-lint
(gofumpt, gci, goimports).
Пожалуйста, настройте свой редактор на запуск инструментов во время разработки и обязательно
запускайте make lint и make fmt перед коммитом любого кода.
Код на Proto проверяется линтером buf и
форматируется с помощью clang-format.
Документация форматируется с помощью mdformat.
Остальное (Markdown, YAML и т. д.) форматируется с помощью prettier.
Ознакомьтесь с .golangci.yaml и Makefile, чтобы увидеть конкретную конфигурацию.
Установка инструментов разработки
- Go
- Buf
- Инструменты Protobuf
Установка и активация:
nix develop
Тестирование и сборка
Некоторые части проекта требуют генерации кода Go из Protobuf
(если в proto/ внесены изменения), и его необходимо (пере)генерировать с помощью:
make generate
Примечание: Пожалуйста, вносите изменения из gen/ отдельным коммитом, чтобы их было легче проверять.
Чтобы запустить тесты:
make test
Для сборки программы:
make build
Процесс разработки
Мы рекомендуем использовать Nix для управления зависимостями, чтобы гарантировать наличие всех необходимых инструментов. Если вы предпочитаете управлять зависимостями самостоятельно, вы можете использовать Make напрямую:
С Nix (рекомендуется):
nix develop
make test
make build
С собственными зависимостями:
make test
make build
Makefile предупредит вас, если какие-либо необходимые инструменты отсутствуют, и предложит запустить nix develop. Запустите make help, чтобы увидеть все доступные цели.
Участники
Сделано с помощью contrib.rocks.