L↗LinkLANСкачать ↗
ДОКУМЕНТАЦИЯ / 0.2.0

Ваш сервер.
Ваша сеть.

Проект содержит API, UDP relay, STUN, Windows-клиент, лендинг и мониторинг. Нужны Docker Engine и Compose v2 с Linux-контейнерами. Сборка клиента в Linux Docker создаёт Windows x64 .exe. Go-зависимости уже включены в vendor: компиляция не скачивает модули. Интернет нужен для Docker-образов, системных пакетов и Wintun.

1. Подготовьте сервер

Для новой установки распакуйте исходники и выполните в каталоге проекта:

python3 scripts/init-env.py
# Отредактируйте .env:
# RELAY_PUBLIC_ADDRESS=ваш-домен:51820
# STUN_PUBLIC_ADDRESS=ваш-домен:3478
# После сборки клиента:
python3 scripts/publish-downloads.py
docker compose up -d --build

Локальная страница: http://localhost:8191. API: /api, администрирование: /admin. Для HTTPS на 8191 положите сертификаты в deploy/certs и включите TLS:

docker compose -f compose.yml -f compose.tls.yml up -d --build

Если 443 уже обслуживает ваш Caddy, подключите контейнер web к его Docker-сети с alias linklan-web и направьте ваш домен на linklan-web:80. В клиенте достаточно домена, а внешний порт LinkLAN остаётся 8191. Пример для существующего стека — в docs/UPGRADE-0.2.0.md.

ПортНазначение
8191 / TCPЛендинг, скачивание, API, WebSocket
3478 / UDPSTUN
51820 / UDPЗашифрованный relay

Если 3478/UDP занят другим сервисом, задайте в .env STUN_HOST_PORT=13478 и STUN_PUBLIC_ADDRESS=ваш-домен:13478. Внутренний порт остаётся 3478. Для внешнего Caddy используйте ваш compose.caddy.yml, для TLS внутри LinkLAN — compose.tls.yml. Выбранные внешние UDP-порты должны быть доступны клиентам.

2. Подключите компьютеры

  1. Распакуйте ZIP клиента целиком: LinkLAN.exe и wintun.dll должны лежать рядом.
  2. Запустите клиент от администратора. Введите только домен, например linklan.lknet.ru, и нажмите «Подключиться». Для HTTPS на другом порту укажите домен:порт.
  3. Первый участник нажимает «Создать сеть», задаёт имя и пароль сети.
  4. Остальные нажимают «Присоединиться» и вводят то же имя и пароль или код приглашения. Регистрации и входа в аккаунт нет.
  5. VPN включается автоматически. Раскройте сеть, выберите компьютер и нажмите «Ping» или «Копировать IP». Для переключения сети используйте двойной щелчок; ON/OFF отключает или включает VPN.

В меню «Система» меняются имя ПК, домен, тема и подключение при запуске. Windows Firewall должен разрешать ваши игры и локальные сервисы на виртуальном интерфейсе. Клиент добавляет ограниченное правило ICMP своей подсети. Broadcast-поиск пока не поддерживается.

3. Обновите работающий linklan.lknet.ru

Скачайте архив обновления в /root/LinkLAN. Ваш .env, compose.caddy.yml и тома базы сохраняются:

cd /root/LinkLAN
unzip -o LinkLAN-update-v0.2.0.zip -d .
cp LinkLAN-update-v0.2.0.zip web/downloads/
docker compose -f compose.yml -f compose.caddy.yml up -d --build api web
curl -fsS --max-time 15 https://linklan.lknet.ru/api/health

Health должен показать версию 0.2.0. После этого замените клиент файлами нового ZIP. Сохраните %APPDATA%\LinkLAN\profile.dpapi и запускайте от того же Windows-пользователя: старое устройство, сети и права владельца переносятся автоматически для того же сервера.

Скачать обновление сервера ↓

4. Соберите клиент в Docker

docker build -f Dockerfile.client --target artifacts \
  --output type=local,dest=./releases .
python3 scripts/publish-downloads.py
docker compose restart web

Сборка создаёт portable ZIP, .exe и NSIS-установщик. Для подписанных обновлений задайте свой закрытый ключ Ed25519 и закрепите публичный ключ в клиенте. В предоставленном ZIP обновление выполняется вручную. Команды приведены в README исходников.

5. Панель администратора

Обычным пользователям аккаунт не нужен. Для /admin сохраняется отдельный email/password вход. Используйте существующий аккаунт или создайте его через POST /api/auth/register с полями email, name, password (12–256 байт), затем назначьте права:

docker compose exec api /app/linklan-server \
  --make-admin admin@example.com

Откройте /admin и войдите в этот аккаунт. При использовании Caddy добавляйте к compose-командам -f compose.yml -f compose.caddy.yml перед exec.

Статус версии 0.2.0

Это тестовый MVP. Одновременно активна одна сеть. Испытания на реальных Windows, разных NAT и целевых нагрузках ещё необходимы. Отдельная Windows-служба, LAN-обнаружение и macOS/Linux — дальнейшее развитие.

Скачать исходный проект ↓