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

Открытая реализация сервера управления Tailscale для самостоятельного хостинга.
Присоединяйтесь к нашему Discord-серверу для общения.
Примечание: Всегда выбирайте тот же тег GitHub, что и используемая вами версия, чтобы убедиться, что у вас правильный пример конфигурации. Ветка main может содержать невыпущенные изменения. Документация доступна для стабильной и разрабатываемой версий:
Что такое Tailscale
Tailscale — это современный VPN, построенный на основе Wireguard. Он работает как оверлейная сеть между компьютерами ваших сетей — используя NAT traversal.
Всё в Tailscale является открытым исходным кодом, за исключением графических клиентов для проприетарных ОС (Windows, macOS/iOS) и сервера управления.
Сервер управления работает как точка обмена открытыми ключами Wireguard для узлов в сети Tailscale. Он назначает IP-адреса клиентов, создает границы между пользователями, позволяет обмениваться машинами между пользователями и открывает объявленные маршруты ваших узлов.
Сеть Tailscale (tailnet) — это частная сеть, которую Tailscale назначает пользователю в контексте частных лиц или организации.
Цель дизайна
Headscale стремится реализовать самостоятельную хостинг-альтернативу с открытым исходным кодом для сервера управления Tailscale. Цель Headscale — предоставить энтузиастам самостоятельного хостинга и любителям open-source сервер, который они могут использовать для своих проектов и лабораторий. Он реализует узкую область — одну сеть Tailscale (tailnet), подходящую для личного использования или небольшой open-source организации.
Поддержка Headscale
Если вам нравится headscale и вы находите его полезным, в репозитории доступны кнопки спонсорства и пожертвований.
Возможности
Пожалуйста, смотрите "Возможности" в документации.
Поддержка клиентских ОС
Пожалуйста, смотрите "Поддержка клиентов и операционных систем" в документации.
Запуск headscale
Обратите внимание: мы не поддерживаем и не рекомендуем использовать обратные прокси и контейнеры для запуска Headscale.
Пожалуйста, ознакомьтесь с документацией.
Для пользователей NixOS модуль доступен в nix/.
Сборки из main
Сборки для разработки из ветки main доступны в виде образов контейнеров и бинарных файлов. Подробности смотрите в документации development builds.
Доклады
- Fosdem 2026 (видео): Headscale & Tailscale: The complementary open source clone — представил Кристоффер Далби
- Fosdem 2023 (видео): Headscale: How we are using integration testing to reimplement Tailscale — представили Хуан Фонт Алонсо и Кристоффер Далби
Отказ от ответственности
Этот проект не связан с Tailscale Inc.
Однако один из активных мейнтейнеров Headscale работает в Tailscale и ему разрешено тратить рабочее время на участие в проекте. Вклад этого мейнтейнера проверяется другими мейнтейнерами.
Мейнтейнеры совместно определяют направление проекта. Основной принцип — служить сообществу самостоятельных хостинг-провайдеров, энтузиастов и любителей, сохраняя при этом устойчивость проекта.
Участие в разработке
Пожалуйста, прочитайте файл CONTRIBUTING.md.
Требования
Для участия в разработке headscale вам понадобятся последние версии Go и Buf (генератор Protobuf).
Мы рекомендуем использовать Nix для настройки среды разработки. Это можно сделать с помощью nix develop, который установит инструменты и предоставит вам оболочку. Это гарантирует, что у вас будет такое же окружение для разработки, как у мейнтейнеров headscale.
Стиль кода
Чтобы обеспечить некоторую согласованность при растущем количестве вкладов, в этом проекте приняты правила линтинга и стиля/форматирования:
Go код проверяется с помощью golangci-lint и форматируется с помощью golines (ширина 88) и gofumpt. Пожалуйста, настройте свой редактор для запуска этих инструментов во время разработки и не забывайте выполнять 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.