Как да инсталирате и настроите Cloudflare Tunnel на Ubuntu

Как да инсталирате и настроите Cloudflare Tunnel на Ubuntu

Въведение

Cloudflare Tunnel (cloudflared) е мощен инструмент, който позволява сигурно и лесно да изложите вашите локални уеб услуги в интернет без необходимост от отваряне на портове в защитната стена или конфигуриране на сложни правила за препращане на портове. Това е идеално решение за:

  • Домашни сървъри
  • Разработчици, които искат да споделят своите проекти
  • Малки организации без статичен IP адрес
  • Безопасно свързване на вътрешни услуги с Интернет

Този наръчник ще ви преведе през всички стъпки за инсталиране, конфигуриране и стартиране на cloudflared тунел на Debian или Ubuntu сървър.

Предимства на използването на Cloudflare Tunnel

  • Повишена сигурност: Няма отворени портове към вашия сървър
  • SSL/TLS защита: Автоматично получавате SSL/TLS сертификат
  • Защита от DDoS атаки: Cloudflare поема и филтрира трафика
  • Лесна настройка: Не са необходими сложни конфигурации на мрежата
  • Поддръжка на множество домейни: Един тунел може да обслужва няколко домейна и поддомейна

Стъпки за инсталиране на cloudflared

1. Добавяне на хранилището на Cloudflare

Първо трябва да добавим официалното хранилище на Cloudflare към вашата система, за да инсталираме cloudflared. Изпълнете следните команди:

# Актуализирайте списъка с пакети и инсталирайте необходимите инструменти
sudo apt update
sudo apt install -y curl gnupg lsb-release

# Добавете GPG ключа на Cloudflare
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloudflare-main.gpg

# Добавете хранилището на Cloudflare
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list

2. Инсталиране на cloudflared

След добавяне на хранилището, можете да инсталирате cloudflared:

sudo apt update
sudo apt install cloudflared

3. Автентикация с вашия Cloudflare акаунт

За да свържете cloudflared с вашия Cloudflare акаунт, изпълнете:

cloudflared tunnel login

📌Тази команда ще отвори браузър, където трябва да се впишете във вашия Cloudflare акаунт и да изберете домейн, който искате да използвате с тунела. Важно е да знаете, че можете да избирате само измежду домейните, които вече сте добавили и конфигурирали в Cloudflare. След успешна автентикация, ще бъде създаден сертификат (cert.pem) в директорията ~/.cloudflared/.

4. Създаване на тунел

Създайте нов тунел с уникално име (заменете my-home-tunnel с име по ваш избор):

cloudflared tunnel create my-home-tunnel

Тази команда ще създаде файл с криптографски данни за тунела: ~/.cloudflared/my-home-tunnel.json

5. Създаване на конфигурационен файл

Създайте и редактирайте конфигурационен файл за вашия тунел:

vi ~/.cloudflared/config.yml

Добавете следната основна конфигурация, която ще препраща трафика към вашите локални уеб услуги:

tunnel: my-home-tunnel
credentials-file: /root/.cloudflared/my-home-tunnel.json

ingress:
  - hostname: test.urocibg.eu
    service: https://10.20.20.20:8181
  - hostname: bai.urocibg.eu
    service: http://10.20.20.21:8182
  - service: http_status:404

Забележка: Не забравяйте да промените:

  • my-home-tunnel с името на вашия тунел
  • Пътя до credentials-file според вашата система
  • Домейните (test.urocibg.eu и bai.urocibg.eu) с вашите собствени домейни
  • Портовете (2222, 3000) със съответните портове, на които работят вашите услуги

📌Тъй като тунелът действа като reverse proxy, не трябва публично IP. Просто укажете локалния адрес (или вътрешното IP в LAN/Proxmox):

ingress:
  - hostname: baihui.eu
    service: http://10.20.20.10:80

6. Добавяне на DNS записи

Свържете вашите домейни с тунела чрез DNS записи:

cloudflared tunnel route dns my-home-tunnel test.urocibg.eu
cloudflared tunnel route dns my-home-tunnel bai.urocibg.eu

Тези команди ще създадат CNAME записи в DNS конфигурацията на Cloudflare, насочващи вашите домейни към тунела.

7. Тестване на тунела

Преди да настроите тунела като постоянна услуга, тествайте го, за да се уверите, че работи правилно:

cloudflared tunnel run my-home-tunnel

Проверете дали вашите домейни са достъпни през интернет. Отворете браузър и въведете вашите домейни (например https://test.urocibg.eu).

8. Настройване на cloudflared като системна услуга

За да работи тунелът непрекъснато и да се стартира автоматично при рестартиране на системата, създайте systemd услуга:

sudo vi /etc/systemd/system/cloudflared.service

Добавете следното съдържание:

[Unit]
Description=Cloudflare Tunnel
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/cloudflared tunnel --config /root/.cloudflared/config.yml run
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

Важно! Проверете следните детайли:

  • Уверете се, че пътят към конфигурационния файл е правилен
  • Проверете дали пътят към cloudflared е правилен (може да го проверите с which cloudflared)
  • Променете User=root с друг потребител, ако не използвате root

9. Активиране и стартиране на услугата

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

10. Проверка на статуса на услугата

sudo systemctl status cloudflared

Ако всичко е наред, ще видите, че службата е активна и работи.

Добавяне на допълнителни домейни към съществуващ тунел

Едно от големите предимства на Cloudflare Tunnel е, че можете да използвате един тунел за множество домейни и поддомейни.

📌Важно! Имайте предвид, че можете да използвате само домейни, които вече са добавени и управлявани чрез Cloudflare. Преди да създадете тунел за даден домейн, трябва първо да конфигурирате този домейн в Cloudflare панела (да прехвърлите управлението на DNS записите към Cloudflare и да настроите правилните NS записи при вашия регистратор).

За да добавите нов домейн към съществуващ тунел:

  1. Редактирайте конфигурационния файл:
vi ~/.cloudflared/config.yml
  1. Добавете нов запис в секцията ingress:
ingress:
  - hostname: новдомейн.com
    service: http://localhost:8080
  # Съществуващи записи...
  - service: http_status:404
  1. Създайте DNS запис за новия домейн:
cloudflared tunnel route dns my-home-tunnel новдомейн.com
  1. Рестартирайте услугата:
sudo systemctl restart cloudflared

Отстраняване на проблеми

Проблем: Тунелът не се стартира

  • Проверете логовете: sudo journalctl -u cloudflared.service
  • Уверете се, че пътищата в конфигурационния файл са правилни
  • Проверете дали файлът с идентификационни данни за тунела съществува

Проблем: Домейнът не е достъпен

  • Проверете дали DNS записът е създаден правилно
  • Уверете се, че локалната услуга работи на посочения порт
  • Проверете конфигурацията за правописни грешки в имената на домейните

Проблем: Грешки при автентикация

  • Опитайте отново с командата cloudflared tunnel login
  • Проверете дали сертификатът cert.pem е създаден

🔐 Допълнително: Защити достъпа с Cloudflare Access (Zero Trust Login)

Можеш да защитиш даден поддомейн с логин чрез Cloudflare Zero Trust, например само ти да имаш достъп.

Пример: Защити bai.urocibg.eu

  1. Влез в https://one.dash.cloudflare.com/
  2. От менюто избери Access → Applications
  3. Кликни Add an application
  4. Избери Self-hosted
  5. Въведи:
    • Application name:bai
    • Domain: bai.urocibg.eu
  6. Натисни Next, избери Email login и въведи твоя имейл
  7. Потвърди и завърши настройката

📌 При достъп, ще се показва Cloudflare логин екран

📌Заключение

Cloudflare Tunnel предлага сигурен и елегантен начин за излагане на вашите локални услуги в интернет. С един тунел можете да управлявате множество домейни и поддомейни, което прави тази услуга изключително гъвкава и полезна за различни приложения.

Следвайки тези стъпки, вие успешно настроихте cloudflared на вашия Debian/Ubuntu сървър и сега можете безопасно да споделяте вашите уеб услуги с външния свят, защитени от инфраструктурата на Cloudflare.


Последно обновено: Май 2025 г.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:

×