Как да инсталирате и настроите 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 записи при вашия регистратор).
За да добавите нов домейн към съществуващ тунел:
- Редактирайте конфигурационния файл:
vi ~/.cloudflared/config.yml
- Добавете нов запис в секцията
ingress
:
ingress:
- hostname: новдомейн.com
service: http://localhost:8080
# Съществуващи записи...
- service: http_status:404
- Създайте DNS запис за новия домейн:
cloudflared tunnel route dns my-home-tunnel новдомейн.com
- Рестартирайте услугата:
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
- Влез в https://one.dash.cloudflare.com/
- От менюто избери Access → Applications
- Кликни Add an application
- Избери Self-hosted
- Въведи:
- Application name:bai
- Domain:
bai.urocibg.eu
- Натисни Next, избери Email login и въведи твоя имейл
- Потвърди и завърши настройката
📌 При достъп, ще се показва Cloudflare логин екран
📌Заключение
Cloudflare Tunnel предлага сигурен и елегантен начин за излагане на вашите локални услуги в интернет. С един тунел можете да управлявате множество домейни и поддомейни, което прави тази услуга изключително гъвкава и полезна за различни приложения.
Следвайки тези стъпки, вие успешно настроихте cloudflared на вашия Debian/Ubuntu сървър и сега можете безопасно да споделяте вашите уеб услуги с външния свят, защитени от инфраструктурата на Cloudflare.
Последно обновено: Май 2025 г.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut