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

Открытая реализация сервера управления Tailscale для самостоятельного хостинга.
Присоединяйтесь к нашему Discord-серверу для общения.
Примечание: Всегда выбирайте тот же тег GitHub, что и используемая вами версия, чтобы убедиться, что у вас правильный пример конфигурации. Ветка main может содержать невыпущенные изменения. Документация доступна для стабильной и разрабатываемой версий:
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.
Пожалуйста, ознакомьтесь с документацией.
Для пользователей NixOS модуль доступен в nix/.
mainСборки для разработки из ветки main доступны в виде образов контейнеров и бинарных файлов. Подробности смотрите в документации development builds.
Этот проект не связан с 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, чтобы узнать конкретную конфигурацию.
Установка и активация:
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.