До основного вмісту

Cloudflare Tunnel: доступ до сервера без публічної IP

Cloudflare · 19.04.2026 · 5 хв читання
Ілюстрація до статті «Cloudflare Tunnel: доступ до сервера без публічної IP»

Cloudflare Tunnel дозволяє опублікувати локальний сервер в інтернеті без білої IP-адреси і без відкритих вхідних портів. З'єднання ініціюється зсередини мережі — сервер недоступний напряму.

Як працює Cloudflare Tunnel

  1. Демон cloudflared на вашому сервері створює вихідне зашифроване з'єднання з Cloudflare
  2. Cloudflare приймає трафік на своєму edge для вашого домену
  3. Трафік передається через тунель на ваш сервер
  4. Немає відкритих портів 80/443 на сервері

Встановлення cloudflared

# Ubuntu/Debian
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb

# Авторизуватися
cloudflared tunnel login

Створення тунелю

# Створити тунель
cloudflared tunnel create my-server

# Створити конфіг ~/.cloudflared/config.yml
tunnel: your-tunnel-id
credentials-file: /root/.cloudflared/your-tunnel-id.json

ingress:
  - hostname: mysite.example.com
    service: http://localhost:80
  - hostname: api.example.com
    service: http://localhost:3000
  - service: http_status:404

Прив'язка домену і запуск

# Створити DNS-запис
cloudflared tunnel route dns my-server mysite.example.com

# Запустити тунель
cloudflared tunnel run my-server

# Додати в автозапуск
sudo cloudflared service install
sudo systemctl enable cloudflared
✅ Cloudflare Tunnel безкоштовний і працює на безкоштовному плані Cloudflare. Чудово підходить для Raspberry Pi, домашнього сервера або dev-середовища.

Випадки використання

  • Публікація dev-сервера для демонстрації клієнту
  • Хостинг сайту на домашньому інтернеті без білої IP
  • Захист сервера: немає відкритих портів = немає прямих атак
  • Self-hosted сервіси (Gitea, NextCloud, Home Assistant) з HTTPS
⚠️ Cloudflare Tunnel не підходить для високонавантажених production-сайтів з великим трафіком — використовуйте повноцінний VPS з прямим підключенням до CDN.

Що таке Cloudflare Tunnel

Cloudflare Tunnel створює зашифрований вихідний тунель від вашого сервера до Cloudflare. Не потрібно відкривати порти 80/443 — усе йде через тунель.

💡 Cloudflare Tunnel безкоштовний для особистого використання. Ідеальний для домашніх серверів і Raspberry Pi без білої IP.

Конфігураційний файл

# ~/.cloudflared/config.yml
tunnel: TUNNEL_ID
credentials-file: /root/.cloudflared/TUNNEL_ID.json

ingress:
  - hostname: myapp.yourdomain.com
    service: http://localhost:3000
  - hostname: api.yourdomain.com
    service: http://localhost:8080
  - service: http_status:404

Запуск як сервіс

cloudflared service install
systemctl enable --now cloudflared
⚠️ Cloudflare Tunnel проксує трафік через Cloudflare — усі дані проходять через їхню мережу. Не використовуйте для конфіденційних даних без вивчення умов.

Типові помилки Cloudflare Tunnel

ПомилкаПричинаЩо робити
failed to connect to the edge: context deadline exceededВихідний трафік із сервера заблокований файрволом — cloudflared не може достукатися до edge CloudflareДозвольте вихідні з'єднання на портах 443 та 7844 (QUIC) у файрволі
Unauthorized: Failed to get tunnelФайл credentials-file вказує на неправильний tunnel ID, або токен тунелю відкликано в дашбордіПерестворіть тунель: cloudflared tunnel create my-server і оновіть config.yml
Error 502 Bad Gateway під час заходу на сайтСервіс, вказаний в ingress (наприклад http://localhost:80), не запущений або слухає інший портПеревірте, що локальний сервіс справді працює: curl http://localhost:80
no ingress rules were definedУ config.yml немає обов'язкового завершального правила за замовчуваннямДодайте останнім рядком в ingress: - service: http_status:404

Порівняння Cloudflare Tunnel і прямого підключення

КритерійCloudflare TunnelПряме підключення з відкритим портом
Публічна IP-адресаНе потрібнаОбов'язкова
Відкриті вхідні портиЖодного80/443 відкриті для всього інтернету
ЗатримкаТрохи вища — додатковий перехід через edge CloudflareМінімальна, прямий шлях до сервера
DDoS-захистУвімкнено автоматичноПотрібно налаштовувати окремо

Коли Cloudflare Tunnel не підходить

  • Високонавантажений production з великим постійним трафіком — додатковий хоп через edge помітний у затримці та вартості
  • Клієнтам потрібен mTLS із власним сертифікатом напряму до сервера — тунель термінує TLS на боці Cloudflare
  • Застосунок використовує протоколи поза межами HTTP/TCP з нестандартною маршрутизацією — підтримка через ingress не завжди однакова для всіх типів трафіку
  • Критична незалежність від аптайму стороннього провайдера — тунель додає Cloudflare як єдину точку відмови між клієнтом і сервером

Для захисту саме вебадмінки за моделлю Zero Trust, а не просто приховування IP, є окрема стаття «Cloudflare Access: захист адмінки за моделлю Zero Trust». Загальний устрій мережі Cloudflare розібрано у статті «Cloudflare: що це таке і навіщо потрібен безкоштовний план».

Перевірка результату

Переконайтеся, що тунель піднято і трафік справді йде через нього:

# Статус тунелю і підключені edge-з'єднання
cloudflared tunnel info my-server

# Тунель працює як systemd-сервіс без збоїв
systemctl status cloudflared

# Домен відповідає через тунель, а не напряму
curl -sI https://mysite.example.com | head -5

# Логи демона в реальному часі під час діагностики
journalctl -u cloudflared -f

Якщо пізніше знадобиться порівняти тунель зі звичайним VPN-доступом, ось стаття про WireGuard VPN на VPS: швидке встановлення та налаштування.

Часті питання

Що відбувається з сайтом, якщо процес cloudflared на сервері зупиняється?

Якщо служба cloudflared зупиняється, вихідне з'єднання з edge Cloudflare зникає, і сайт чи сервіс, опублікований через тунель, стає недосяжним ззовні — альтернативного маршруту до сервера просто не існує. Тому демон запускають як системну службу з автозапуском, щоб він піднімався знову після перезавантаження чи збою, а не залишався вимкненим.

Чи потрібен платний тариф Cloudflare для використання Tunnel?

Ні, Cloudflare Tunnel повністю працює на безкоштовному плані Cloudflare без додаткової оплати. Платні функції Cloudflare стосуються інших можливостей мережі — розширеного захисту, аналітики чи правил Zero Trust, а сам тунель і демон cloudflared лишаються безкоштовними незалежно від обраного тарифу облікового запису.

Чи можна опублікувати через один тунель кілька різних сервісів на різних піддоменах?

Так, один і той самий тунель здатен обслуговувати кілька сервісів одразу — для цього у конфігураційному файлі просто перелічують кілька правил ingress, кожне зі своїм доменним іменем і адресою локального сервісу. Єдина вимога — обов'язкове завершальне правило за замовчуванням наприкінці списку, інакше конфігурація не завантажиться.

Чи потрібно відкривати порт на домашньому роутері, щоб Tunnel запрацював?

Ні, саме в цьому полягає суть Tunnel — з'єднання завжди ініціюється зсередини мережі самим сервером, тому вхідні порти на роутері не відкриваються взагалі. Домашній інтернет без публічної IP-адреси і без доступу до налаштувань NAT продовжує працювати точнісінько так само, як зі звичайним провайдером.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці