Ваш сервер.
Ваша сеть.
Проект содержит 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 / UDP | STUN |
| 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. Подключите компьютеры
- Распакуйте ZIP клиента целиком: LinkLAN.exe и wintun.dll должны лежать рядом.
- Запустите клиент от администратора. Введите только домен, например
linklan.lknet.ru, и нажмите «Подключиться». Для HTTPS на другом порту укажите домен:порт. - Первый участник нажимает «Создать сеть», задаёт имя и пароль сети.
- Остальные нажимают «Присоединиться» и вводят то же имя и пароль или код приглашения. Регистрации и входа в аккаунт нет.
- 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 — дальнейшее развитие.