sadrix logoSadriX
Минцифры готовит обязательную регистрацию IMEI смартфонов, купленных за границей
Гайды

Как опубликовать локальный сайт через Cloudflare Tunnel: пошаговое руководство

Полный гайд по Cloudflare Tunnel: от установки cloudflared до публикации сайта с HTTPS

09 724 просмотров4 мин
0
Поделиться:TelegramVK

Введение

Cloudflare Tunnel (ранее Argo Tunnel) — это бесплатный сервис, который создаёт защищённый туннель между вашим локальным сервером и сетью Cloudflare. Он позволяет опубликовать сайт, работающий на домашнем компьютере или в закрытой сети, без необходимости покупать белый IP-адрес, настраивать проброс портов на роутере или открывать входящие порты в брандмауэре. Весь трафик идёт по исходящему соединению, а Cloudflare берёт на себя SSL-сертификаты, защиту от DDoS и кеширование.

В этом руководстве мы разберём, как установить и настроить Cloudflare Tunnel, подключить собственный домен и опубликовать локальный сайт так, чтобы он был доступен из интернета по HTTPS. Инструкция подойдёт для Windows, macOS и Linux.

Что потребуется

  • Аккаунт Cloudflare (бесплатный).

  • Домен, добавленный в Cloudflare (делегированный на серверы имён Cloudflare).

  • Локальный веб-сервер, работающий на компьютере или в локальной сети (например, http://localhost:8080 или http://192.168.1.100:3000).

  • Права администратора на машине, где будет запущен туннель.

  • Утилита cloudflared (скачаем и установим в процессе).

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

Cloudflared — это клиент, который создаёт туннель. Скачайте его с официального сайта Cloudflare или установите через пакетный менеджер.

Windows: 1. Скачайте установщик cloudflared.exe со страницы загрузок Cloudflare. 2. Переименуйте файл в cloudflared.exe и положите, например, в C:\Cloudflared. 3. Добавьте папку в переменную среды PATH, чтобы запускать команду из любого места.

macOS:

brew install cloudflared

Linux (Debian/Ubuntu):

wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

Проверьте установку:

cloudflared --version

Шаг 2. Авторизация в Cloudflare

Выполните команду:

cloudflared tunnel login

Откроется браузер, где нужно войти в аккаунт Cloudflare и выбрать домен, который вы хотите использовать для туннеля. После подтверждения в папке пользователя появится сертификат (обычно ~/.cloudflared/cert.pem), который позволяет управлять DNS-записями.

Шаг 3. Создание туннеля

Создайте именованный туннель:

cloudflared tunnel create my-tunnel

В ответ вы получите UUID туннеля и файл учётных данных (JSON) в папке ~/.cloudflared/. Запомните UUID — он понадобится для настройки.

Проверить список туннелей можно командой:

cloudflared tunnel list

Шаг 4. Настройка маршрутизации (конфигурационный файл)

Создайте файл конфигурации config.yml в папке ~/.cloudflared/ (Linux/macOS) или C:\Users\<Имя>\.cloudflared\ (Windows). Пример содержимого:

tunnel: <UUID туннеля>
credentials-file: /path/to/<UUID>.json

ingress:
  - hostname: site.example.com
    service: http://localhost:8080
  - service: http_status:404

Замените:

  • <UUID> на идентификатор вашего туннеля.

  • credentials-file на полный путь к JSON-файлу.

  • hostname на желаемый поддомен (например, blog.example.com).

  • service на адрес вашего локального сайта (например, http://localhost:3000 или http://192.168.1.50:80).

Последняя строка - service: http_status:404 обязательна — она обрабатывает все прочие запросы.

Шаг 5. Привязка домена (DNS-запись)

Выполните команду, чтобы Cloudflare создал CNAME-запись, указывающую на туннель:

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

Эта команда автоматически добавит DNS-запись в вашей зоне Cloudflare. Убедитесь, что домен уже управляется Cloudflare.

Шаг 6. Запуск туннеля

Запустите туннель вручную для проверки:

cloudflared tunnel run my-tunnel

Если всё настроено верно, в консоли появятся логи подключения, а сайт станет доступен по адресу https://site.example.com. Cloudflare автоматически выпустит SSL-сертификат.

Шаг 7. Установка как службы (автозапуск)

Чтобы туннель работал постоянно и запускался при загрузке системы, установите его как службу.

Linux (systemd):

sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

Windows (от имени администратора):

cloudflared.exe service install

Служба будет запущена автоматически.

macOS:

sudo cloudflared service install

Шаг 8. Проверка работы и отладка

Откройте браузер и перейдите по вашему домену. Если сайт не открывается, проверьте:

  • Логи туннеля: cloudflared tunnel run my-tunnel (в ручном режиме) или journalctl -u cloudflared (Linux).

  • Доступность локального сервера: откройте http://localhost:порт на той же машине.

  • Правильность config.yml: отступы в YAML, корректность путей.

  • DNS: запись CNAME должна указывать на <UUID>.cfargotunnel.com.

Шаг 9. Настройка дополнительных параметров (опционально)

В config.yml можно добавить:

  • originRequest для тонкой настройки: таймауты, заголовки, keep-alive.

  • Несколько ingress-правил для разных поддоменов или путей.

  • warp-routing для доступа к частным сетям.

Пример с двумя сайтами:

ingress:
  - hostname: app.example.com
    service: http://localhost:3000
  - hostname: api.example.com
    service: http://localhost:5000
  - service: http_status:404

Шаг 10. Безопасность и ограничения

  • Cloudflare Tunnel не требует открытых входящих портов — это безопасно.

  • Можно ограничить доступ через Cloudflare Access (бесплатно до 50 пользователей).

  • Трафик шифруется между сервером и Cloudflare.

  • Убедитесь, что локальный сервер не имеет уязвимостей, так как он становится доступен из интернета.

Типичные ошибки

1. Неверный путь к credentials-file — проверьте, что файл существует и указан полный путь. 2. Ошибка YAML — используйте пробелы, а не табы; проверьте отступы. 3. Домен не в Cloudflare — туннель работает только с доменами, делегированными Cloudflare. 4. Порт занят или сервер не запущен — убедитесь, что локальный сайт отвечает. 5. Конфликт DNS-записей — удалите старые A-записи для этого поддомена. 6. Брандмауэр блокирует исходящие соединения — cloudflared должен иметь доступ к интернету.

FAQ

Вопрос: Нужен ли белый IP? Ответ: Нет, Cloudflare Tunnel работает через исходящее соединение.

Вопрос: Это бесплатно? Ответ: Да, базовый функционал бесплатен.

Вопрос: Можно ли использовать свой SSL-сертификат? Ответ: Cloudflare управляет сертификатами автоматически; можно загрузить собственный в панели Cloudflare.

Вопрос: Как остановить туннель? Ответ: Если запущен вручную — Ctrl+C; если как служба — остановите службу командой sudo systemctl stop cloudflared (Linux) или через services.msc (Windows).

Вопрос: Поддерживается ли WebSocket? Ответ: Да, Cloudflare Tunnel поддерживает WebSocket из коробки.

Итог

Cloudflare Tunnel — это простой и безопасный способ опубликовать локальный сайт в интернете. Вы избегаете настройки проброса портов, получаете автоматический HTTPS и защиту от атак. Следуя шагам, вы сможете запустить туннель за несколько минут и сделать свой проект доступным по красивому домену.

Читайте также

Комментарии

Комментарии доступны только зарегистрированным пользователям. Войти

  • Пока нет комментариев. Будьте первым.