Назад к обновлениям
New releaseJul 29, 2026

headscale v0.29.3

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

Поделиться

headscale logo

ci

Открытая реализация контрольного сервера 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 доступны в виде образов контейнеров и бинарных файлов. Подробности см. в документации по сборкам для разработки.

Доклады

Отказ от ответственности

Этот проект не связан с 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.

Категории