Self-hosted mesh VPN powered by Headscale + Tailscale
100.64.0.0/10 и може да достъпва другите по име
(напр. s13.webfactor.internal). Използваме Headscale (self-hosted Tailscale координатор)
на s13 като централен сървър.
| Параметър | Стойност |
|---|---|
| Координатор (Control Server) | https://head.webfactor.com |
| Web UI (Headplane) | headplane.s13.webfactor.com/admin/ |
| Headscale версия | v0.28.0 |
| MagicDNS домейн | *.webfactor.internal |
| IP обхват (v4) | 100.64.0.0/10 |
| IP обхват (v6) | fd7a:115c:a1e0::/48 |
Ако имаш auth key, изпълни на новата машина:
curl -sL https://vpn.s13.webfactor.com/join.sh | sudo bash -s -- <hostname>
Скриптът ще поиска auth key интерактивно. Или подай го директно:
curl -sL https://vpn.s13.webfactor.com/join.sh | sudo AUTHKEY=<key> bash -s -- <hostname>
SSH до s13 и изпълни:
# Ключ за еднократна употреба (1 час валидност)
docker exec headscale headscale preauthkeys create --user 1 --expiration 1h
# Ключ за многократна употреба (за няколко машини наведнъж)
docker exec headscale headscale preauthkeys create --user 1 --reusable --expiration 24h
# Linux (Debian/Ubuntu/Fedora/Arch/Alpine)
curl -fsSL https://tailscale.com/install.sh | sh
# macOS
brew install tailscale
# Windows - свали от https://tailscale.com/download/windows
# Linux / macOS
sudo tailscale up \
--login-server https://head.webfactor.com \
--authkey <auth-key-от-стъпка-1> \
--hostname <име-на-машината> \
--accept-routes \
--accept-dns
s14, laptop-alex,
office-pc). Машината ще бъде достъпна като <hostname>.webfactor.internal.
tailscale status # списък на свързаните машини
ping s13.webfactor.internal # пинг до s13
tailscale ping s13.webfactor.internal # директен tailscale пинг
Ако искаш Claude Code (или друг AI агент) да добави машина към мрежата автоматично:
# 1. Първо генерирай auth key на s13:
docker exec headscale headscale preauthkeys create --user 1 --reusable --expiration 1h
# 2. После дай на агента тази команда за изпълнение:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up \
--login-server https://head.webfactor.com \
--authkey AUTH_KEY_HERE \
--hostname HOSTNAME_HERE \
--accept-routes --accept-dns
Или използвай готовия скрипт:
curl -sL https://vpn.s13.webfactor.com/join.sh | sudo AUTHKEY=AUTH_KEY bash -s -- HOSTNAME
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --login-server https://head.webfactor.com --authkey KEY --hostname NAME --accept-routes --accept-dns
# Вариант 1: CLI (препоръчително за сървъри)
brew install tailscale
sudo tailscaled &
sudo tailscale up --login-server https://head.webfactor.com --authkey KEY --hostname NAME
# Вариант 2: GUI app от App Store (без --authkey, влизаш ръчно)
# Отвори Tailscale > Use custom coordination server > https://head.webfactor.com
tailscale up --login-server https://head.webfactor.com --authkey KEY --hostname NAME
Мобилните приложения на Tailscale поддържат custom login server от менюто.
Отвори Settings > Use an alternate server и въведи:
https://head.webfactor.com
Отвори headplane.s13.webfactor.com/admin/ и въведи API ключа.
# Списък машини
docker exec headscale headscale nodes list
# Списък потребители
docker exec headscale headscale users list
# Списък auth ключове
docker exec headscale headscale preauthkeys list --user 1
# Изтрий машина
docker exec headscale headscale nodes delete --identifier <ID>
# Създай нов потребител
docker exec headscale headscale users create <name>
# Преименувай машина
docker exec headscale headscale nodes rename <ID> <new-name>
# Махни immutable флага (често при VPS)
sudo chattr -i /etc/resolv.conf
sudo systemctl restart tailscaled
sudo tailscale up --login-server https://head.webfactor.com --accept-dns
Провери:
tailscale netcheck - показва мрежови проблемиjournalctl -u tailscaled -f - логове на tailscale# На машината:
sudo tailscale set --hostname new-name
# Или от s13:
docker exec headscale headscale nodes rename <ID> new-name
Копирай целия блок и го пусни на всяка Linux машина. Автоматично определя системата, инсталира Tailscale и се свързва:
# === Webfactor VPN Quick Join ===
# Замени AUTH_KEY и MY_HOSTNAME преди да пуснеш!
AUTH_KEY="PASTE_AUTH_KEY_HERE"
MY_HOSTNAME="PASTE_HOSTNAME_HERE"
# Инсталирай Tailscale (работи на Debian/Ubuntu/Fedora/CentOS/Arch/Alpine)
if ! command -v tailscale &>/dev/null; then
curl -fsSL https://tailscale.com/install.sh | sh
fi
sudo systemctl enable --now tailscaled 2>/dev/null || true
sleep 2
# Махни immutable от resolv.conf ако има (VPS fix)
sudo chattr -i /etc/resolv.conf 2>/dev/null || true
# Свържи се
sudo tailscale up \
--login-server https://head.webfactor.com \
--authkey "$AUTH_KEY" \
--hostname "$MY_HOSTNAME" \
--accept-routes --accept-dns
# Готово!
echo "=== Connected as $MY_HOSTNAME ==="
tailscale status
Webfactor VPN • Headscale v0.28.0 • s13.webfactor.com
Пълна документация