Перейти к основному содержимому

Развёртывание с Caddy

Это руководство реализует схему TunGo через HTTPS с помощью Caddy. Подготовьте домен и DNS по обзору, затем замените example.com в примерах своим доменом.

Подготовка​

  • Linux-сервер, на котором TunGo и Caddy установлены непосредственно на хосте.
  • Caddy, запущенный как служба systemd.
  • TCP-порты 80 и 443, доступные Caddy и открытые из интернета для HTTPS и управления сертификатами.

1. Настройка Caddy​

Сохраните любой лендинг как /srv/tungo-site/index.html, а его ресурсы поместите в тот же каталог. Можно выбрать другой каталог, но его путь должен совпадать с root в конфиге Caddy ниже.

Пользователю службы caddy нужны права на чтение файлов и проход по содержащим их каталогам.

Сохраните этот полный конфиг в /etc/caddy/Caddyfile:

/etc/caddy/Caddyfile
example.com {
handle /ws {
reverse_proxy 127.0.0.1:1010
}

handle {
root * /srv/tungo-site
file_server
}
}

handle сохраняет путь /ws, который ожидает TunGo. Не используйте здесь handle_path: он удаляет совпавший префикс. Директива Caddy reverse_proxy автоматически обрабатывает переход на WebSocket.

Проверьте конфигурацию, затем перезагрузите настройки запущенной службы:

sudo caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
sudo systemctl reload caddy

Перезагружайте настройки только после успешной проверки. Caddy автоматически получает и продлевает TLS-сертификат.

2. Настройка сервера TunGo​

Настройте сервер TunGo и сгенерируйте клиентскую конфигурацию. Рекомендуем запускать сервер как демон для работы в фоне и автозапуска.

В /etc/tungo/server_configuration.json отключите транспорты TCP и UDP, оставьте только WS и привяжите его к loopback (127.0.0.1). После перезапуска TunGo перестанет слушать внешние сетевые интерфейсы. Из интернета TunGo будет доступен только через Caddy на HTTPS-порту 443.

Измените поля ниже и полностью замените объект WSSettings.Server. Остальные настройки сохраните:

{
"EnableTCP": false,
"EnableUDP": false,
"EnableWS": true,
"WSSettings": {
"Protocol": "WS",
"Server": {
"IPv4": "127.0.0.1"
},
"Port": 1010
}
}

Перезапустите TunGo, чтобы применить изменения.

3. Настройка клиента​

Клиент будет подключаться по домену через стандартный HTTPS-порт 443. В конфигурации клиента укажите домен и порт в WSSettings, а верхнеуровневый Protocol установите в WSS.

Полностью замените WSSettings.Server, удалив прежние IP-адреса. Остальные настройки сохраните:

{
"WSSettings": {
"Server": {
"Domain": "example.com"
},
"Port": 443
},
"Protocol": "WSS"
}

В Domain указывается только доменное имя, без https:// и /ws; TunGo добавляет путь WebSocket самостоятельно. Сервер продолжает использовать WS, поскольку TLS завершается на Caddy.

Сохраните конфигурацию и запустите или перезапустите клиент согласно разделу «Настройка клиента».

4. Проверка подключения​

  1. Откройте https://example.com в браузере. Должен загрузиться ваш лендинг с действительным сертификатом.
  2. Подключитесь клиентом TunGo и проверьте, что трафик проходит через туннель. Загрузка сайта сама по себе не проверяет VPN-подключение.