MAATRIX / Блог / Как установить и настроить Cloudflare Tunnel на VPS

Как установить и настроить Cloudflare Tunnel на VPS

Как установить и настроить Cloudflare Tunnel на VPS

MAATRIX

Открывать порты сервера в интернет — значит выставлять его сканерам и атакам. Cloudflare Tunnel на VPS позволяет публиковать сайт или сервис вообще без открытых входящих портов: сервер сам устанавливает исходящее соединение с сетью Cloudflare, и трафик к нему идёт через этот туннель. Разберём установку агента cloudflared и настройку туннеля по шагам, чтобы сервис стал доступен снаружи, а периметр остался закрытым.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что даёт Cloudflare Tunnel и когда он нужен

Обычная публикация сервиса выглядит так: вы открываете порт, направляете на него домен, и любой из интернета может к нему обратиться — включая ботов и сканеры. Cloudflare Tunnel меняет модель. На сервере работает лёгкий агент cloudflared, который устанавливает постоянное исходящее соединение с сетью Cloudflare. Входящие запросы приходят на Cloudflare, а оттуда по уже установленному туннелю доставляются вашему сервису. Открытых входящих портов на сервере при этом нет вовсе.

Преимущества такой схемы весомы. Реальный IP сервера скрыт за Cloudflare, что защищает от прямых атак и DDoS. Не нужно возиться с сертификатами на сервере — шифрование берёт на себя Cloudflare. И, что особенно ценно, туннель работает даже если у сервера нет белого IP или он за NAT: раз соединение исходящее, входящий адрес не требуется.

Когда это уместно. Cloudflare Tunnel хорош для публикации веб-приложений, внутренних панелей, API — всего, к чему нужен доступ снаружи, но не хочется открывать порты. Честно о границах: вы отдаёте трафик через инфраструктуру Cloudflare, а значит, доверяете ей и зависите от неё. Для сервисов, где такая зависимость нежелательна, остаются классические схемы с фаерволом и реверс-прокси. Для большинства же задач туннель заметно упрощает жизнь.

Отдельно стоит оценить, насколько эта схема снижает поверхность атаки. Когда у сервера нет ни одного открытого входящего порта, автоматические сканеры, которые круглосуточно прочёсывают весь интернет в поисках уязвимых сервисов, просто не видят его: стучаться некуда. Прямой IP скрыт, а значит, невозможны и целевые атаки на конкретный адрес, и объёмный флуд по нему. Для внутренних панелей и админок это особенно ценно — их не стоит выставлять в открытый интернет в принципе, а через туннель они доступны только тем, кого вы пустите, и без единого открытого порта. Такой подход хорошо сочетается с дополнительной проверкой личности на стороне Cloudflare, когда к сервису пускают лишь авторизованных пользователей, а не весь мир.

Шаг 1. Подготовка сервера и домена

Работаем на Ubuntu 24.04 с root-доступом. Понадобится домен, добавленный в аккаунт Cloudflare, — управление DNS должно быть на стороне Cloudflare, потому что именно там будет создаваться запись, указывающая на туннель. Сам сервис, который вы собираетесь публиковать, должен уже работать локально — например, веб-приложение на локальном порту.

Поскольку туннелю не нужны открытые входящие порты, фаервол можно и нужно держать максимально закрытым: наружу — ничего лишнего, только исходящие соединения. Это одна из причин, по которой схема так безопасна. У MAATRIX сервер выдаётся с root-доступом, а оплата идёт из России картой, по СБП, криптой или токеном MAAT — при этом даже сервер без белого IP отлично подходит под туннель, что расширяет выбор тарифов.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Шаг 2. Установка cloudflared

Агент cloudflared ставится из официального репозитория Cloudflare. Подключите его и установите пакет:

curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
apt update
apt install -y cloudflared
cloudflared --version

Последняя команда покажет версию — значит, агент установлен. cloudflared и есть тот самый лёгкий клиент, который будет держать исходящее соединение с Cloudflare и проксировать трафик к вашему локальному сервису. Он нетребователен к ресурсам, поэтому не создаёт заметной нагрузки даже на минимальном VPS.

Шаг 3. Авторизация и создание туннеля

Сначала свяжите агент со своим аккаунтом Cloudflare. Команда откроет ссылку для авторизации в браузере, где вы выберете нужный домен:

cloudflared tunnel login

После авторизации на сервер сохранится сертификат, дающий право создавать туннели для вашего домена. Теперь создайте сам туннель, задав ему понятное имя:

cloudflared tunnel create my-tunnel

Команда создаст туннель и файл с его учётными данными — уникальным идентификатором и ключом. Запомните имя туннеля и путь к файлу учётных данных: они понадобятся в конфигурации. Один туннель может обслуживать несколько сервисов, поэтому создавать отдельный туннель на каждый сайт не обязательно.

Шаг 4. Конфигурация маршрутов

Теперь опишем, какой домен ведёт на какой локальный сервис. Создайте конфигурационный файл cloudflared, где укажите идентификатор туннеля, путь к учётным данным и правила маршрутизации:

tunnel: my-tunnel
credentials-file: /root/.cloudflared/xxxxxxxx.json
ingress:
  - hostname: app.example.com
    service: http://localhost:8080
  - service: http_status:404

Здесь запросы к app.example.com направляются на локальный сервис, работающий на порту 8080, а всё остальное получает ответ 404. Правила разбираются сверху вниз, и последнее правило-заглушка обязательно — оно завершает список. Такой формат позволяет одним туннелем публиковать несколько разных сервисов, просто добавляя новые правила hostname.

Шаг 5. DNS-запись и проверка

Свяжите домен с туннелем — cloudflared сам создаст нужную DNS-запись в Cloudflare, указывающую на туннель:

cloudflared tunnel route dns my-tunnel app.example.com

Теперь запустите туннель, чтобы проверить работу до перевода в постоянный режим:

cloudflared tunnel run my-tunnel

Откройте app.example.com в браузере. Если ваш локальный сервис ответил через домен — цепочка собрана: запрос пришёл на Cloudflare, спустился по туннелю и дошёл до сервиса на локальном порту, при полностью закрытых входящих портах сервера. Это и есть цель настройки. Убедившись, что всё работает, переходите к автозапуску.

Шаг 6. Автозапуск и обслуживание

Запускать туннель вручную неудобно — оформите его как системный сервис, чтобы он поднимался автоматически при старте сервера и перезапускался при сбоях:

cloudflared service install
systemctl enable --now cloudflared

Проверьте, что сервис активен, и обязательно перезагрузите сервер, чтобы убедиться: туннель поднимается сам. Дальнейшее обслуживание минимально. Держите пакет cloudflared свежим — Cloudflare регулярно обновляет агент. Следите за состоянием туннеля в панели Cloudflare, где видно, онлайн ли он. Добавление новых сервисов сводится к правке ingress-правил и созданию DNS-маршрута. Поскольку туннель почти не нагружает сервер, ресурсы VPS вы тратите на само приложение, а не на публикацию, — и минимального тарифа часто достаточно, а наращивать конфигурацию имеет смысл под рост самого сервиса. Так Cloudflare Tunnel даёт безопасную публикацию без открытых портов и без забот о сертификатах.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Нужны ли открытые порты для Cloudflare Tunnel?

Нет. Сервер сам устанавливает исходящее соединение с Cloudflare, входящие порты открывать не требуется, а реальный IP сервера скрыт.

Работает ли туннель без белого IP?

Да. Соединение исходящее, поэтому туннель работает даже за NAT и без выделенного белого адреса, что расширяет выбор тарифов.

Нужен ли сертификат на сервере?

Нет. Шифрование берёт на себя Cloudflare, отдельные сертификаты на стороне сервера настраивать не нужно.

В чём минус схемы?

Трафик идёт через инфраструктуру Cloudflare, то есть вы зависите от неё. Где такая зависимость нежелательна, используют классические схемы с фаерволом и реверс-прокси.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.