headscale
headscale
Проект Headscale реализует открытый серверный компонент виртуальной сети Tailscale, который позволяет создавать сети, схожие с Tailscale, без привязки к сторонним сервисам. Код Headscale написан на языке Go и распространяется под лицензией BSD.
Tailscale позволяет объединить любое количество территориально разнесённых хостов в одну сеть, построенную по образу mesh-сети, в которой каждый узел взаимодействует с другими узлами напрямую (P2P) или через соседние узлы, без передачи трафика через централизованные внешние серверы VPN-провайдера. Поддерживается управление доступом и маршрутами на основе ACL. Для установки каналов связи в условиях применения трансляторов адресов (NAT) предоставляется поддержка механизмов STUN, ICE и DERP (аналог TURN, но на базе HTTPS). В случае блокировки канала связи между определёнными узлами сеть может перестраивать маршрутизацию для направления трафика через другие узлы.
(Caddy + Headscale)
Простой способ запустить Headscale в связке с Caddy.
Для запуска понадобится:
- Сервер (Виртуальная машина) - например Free tier от Cloud.ru
- Доменное имя
Запуск:
- Клонируем репозиторий
- Переходим в каталог headscale и создаем файл .env с переменными для Caddy
BASE_NETWORK_DOMAIN='test-headscale.ru'
BASE_EMAIL='admin@test-headscale.ru'
- Для быстрого старта в файле конфигурации data/headscale/config/config.yaml необходимо отредактировать два значения:
- server_url: https://homelocal.domain.ru - (строка 13. Доменное имя в интернете)
- base_domain: home.local - (строка 270. Локальное доменное имя внутри сети)
- Запускаем файл Docker Compose
docker compose up -d
- Для проверки работоспособности переходим на страницу https://Ваш_домен/windows должна открыться страница с регистрацией клиента для Windows.
[!NOTE] Более подробную инструкцию можно посмотреть тут: https://linux.31bel.ru/post/install-headscale/.
(Caddy + Headscale + Cloudflare)
Для работы нам необходим аккаунт на Cloudflare в котором нужно добавить наш домен и создать API Tokens. При создании токена выберите следующие разрешения:
- Zone - Zone - Read
- Zone - DNS - Edit
Далее необходимо отредактировать несколько файлов. В файл .env необходимо добавить переменную CLOUDFLARE_API_TOKEN='' с токеном. В файле docker-compose.yml необходимо раскомментировать 4 и 21 строку для смены образа docker в котором есть модуль Cloudflare и закомментировать 3 строку.
#image: caddy:latest image: ghcr.io/caddybuilds/caddy-cloudflare:latest ... - CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
В файле data/caddy/Caddyfile необходимо раскомментировать строку 3 с дополнительным параметром.
{ email {$BASE_EMAIL} acme_dns cloudflare {$CLOUDFLARE_API_TOKEN}}...
[!TIP] Нюанс: при использовании доменных имен 4-того и более уровня в Cloudflare на них необходимо отключить Proxied.
Языки
YAML