Dmitriy Petrov b389664824
All checks were successful
Build and Deploy Gateway / build-and-push (push) Successful in 12s
Build and Deploy Gateway / deploy (push) Successful in 1s
Refine client accent styling with dynamic harbor colors
2026-07-11 15:39:30 +03:00

Harbor

Один компактный VPN-продукт в двух режимах:

  • Harbor Gateway — отдельная Linux-машина принимает трафик устройств как системный Gateway или Gateway HTTP/SOCKS5 Proxy;
  • Harbor Connect — локальный proxy-клиент для macOS.

В обоих режимах пользователь добавляет подписку, выбирает сервер и включает VPN на одном экране.

Gateway

cp .env.example .env
docker compose -f docker-compose.gateway.yml up -d --build

Интерфейс: http://<gateway-ip>:3456.

После подключения экран показывает:

  • Gateway — адрес, который можно назначить устройству как основной шлюз;
  • Gateway Proxy — один адрес на порту 8080, доступный как HTTP и SOCKS5.

Когда VPN включён, публичный трафик Gateway и Gateway Proxy идёт через выбранный sing-box outbound. Когда VPN выключен, TProxy-перехват снимается и Gateway продолжает работать напрямую через kernel forwarding/NAT без прохода через sing-box.

Proxy по умолчанию разрешён только из приватных сетей. Диапазоны задаются через PROXY_ALLOWED_CIDRS.

macOS client

./scripts/install-macos-client.sh

По умолчанию интерфейс доступен на http://127.0.0.1:3456, локальный HTTP/SOCKS5 proxy — на 127.0.0.1:8082.

Установщик также добавляет пользовательский LaunchAgent. Он раз в 5 секунд передаёт Connect текущий default gateway macOS. Если этот адрес отвечает как Harbor Gateway и подтверждает ту же подписку, Connect автоматически оставляет локальный proxy на 127.0.0.1, но переключает его outbound на direct: дальнейший трафик обрабатывает системный Harbor Gateway. При смене сети или трёх ошибках проверки Connect возвращается к выбранному локальному VPN.

Автоопределение не требует выбора домашней Wi-Fi сети. На Connect и Gateway должна быть настроена ссылка с одним и тем же секретным token длиной не менее 24 символов; token используется только для проверки presence-ответа и не передаётся между устройствами.

Проверка

npm test
npm run build
docker compose -f docker-compose.gateway.yml config
docker compose -f docker-compose.client.yml config
Description
No description provided
Readme 5.4 MiB
Server + Mac Latest
2026-05-19 14:48:00 +03:00
Languages
JavaScript 71.3%
CSS 21.1%
Shell 7.1%
Dockerfile 0.4%
HTML 0.1%