Webfactor VPN Network

Self-hosted mesh VPN powered by Headscale + Tailscale

Какво е това?
Частна VPN мрежа, която свързва всички наши сървъри, лаптопи и компютри в една мрежа. Всяка машина получава IP адрес от 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

Бързо присъединяване (1 команда)

Ако имаш 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>

Свали join.sh


Стъпка по стъпка

1 Генерирай auth key (на s13)

SSH до s13 и изпълни:

# Ключ за еднократна употреба (1 час валидност)
docker exec headscale headscale preauthkeys create --user 1 --expiration 1h

# Ключ за многократна употреба (за няколко машини наведнъж)
docker exec headscale headscale preauthkeys create --user 1 --reusable --expiration 24h

2 Инсталирай Tailscale на новата машина

# Linux (Debian/Ubuntu/Fedora/Arch/Alpine)
curl -fsSL https://tailscale.com/install.sh | sh

# macOS
brew install tailscale

# Windows - свали от https://tailscale.com/download/windows

3 Свържи се към мрежата

# Linux / macOS
sudo tailscale up \
    --login-server https://head.webfactor.com \
    --authkey <auth-key-от-стъпка-1> \
    --hostname <име-на-машината> \
    --accept-routes \
    --accept-dns
Важно за hostname: Избери кратко, уникално име (напр. s14, laptop-alex, office-pc). Машината ще бъде достъпна като <hostname>.webfactor.internal.

4 Провери връзката

tailscale status                          # списък на свързаните машини
ping s13.webfactor.internal               # пинг до s13
tailscale ping s13.webfactor.internal     # директен tailscale пинг

За Claude Code / автоматизация

Ако искаш 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

Платформи

Linux (сървъри)

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

macOS

# Вариант 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

Windows

  1. Свали Tailscale от tailscale.com/download/windows
  2. Инсталирай и стартирай
  3. В Registry или чрез команден ред задай login server:
    tailscale up --login-server https://head.webfactor.com --authkey KEY --hostname NAME

iOS / Android

Мобилните приложения на Tailscale поддържат custom login server от менюто. Отвори Settings > Use an alternate server и въведи:
https://head.webfactor.com


Управление

Web UI (Headplane)

Отвори headplane.s13.webfactor.com/admin/ и въведи API ключа.

CLI команди (на s13)

# Списък машини
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>

Проблеми и решения

DNS не работи / resolv.conf е заключен

# Махни immutable флага (често при VPS)
sudo chattr -i /etc/resolv.conf
sudo systemctl restart tailscaled
sudo tailscale up --login-server https://head.webfactor.com --accept-dns

Машината не може да се свърже

Провери:

Искам да сменя hostname

# На машината:
sudo tailscale set --hostname new-name

# Или от s13:
docker exec headscale headscale nodes rename <ID> new-name

Copy-Paste блок за бързо присъединяване

Копирай целия блок и го пусни на всяка 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
Пълна документация