Инсталиране и конфигуриране на Cloudflare Tunnel

Cloudflare Tunnel (преди известен като Argo Tunnel) е мощен инструмент, който позволява сигурно свързване на локални услуги с Cloudflare, без да се налага да отваряте портове във файръула. Това е идеално решение за хостване на уеб приложения, SSH сървъри или други услуги зад NAT или строг файръул.
В тази статия ще ви преведем стъпка по стъпка през:
- Инсталирането на Cloudflare Tunnel в Linux.
- Създаването на tunnel и свързването му с вашия акаунт.
- Конфигурирането на tunnel за публикуване на локален сървър.
- Управлението на tunnel и основните команди.
📋 Предварителни изисквания
Преди да започнете, уверете се, че имате:
- Linux сървър или машина (Ubuntu/Debian/CentOS).
- Cloudflare акаунт с добавени домейни.
- Доступ до
sudo
или root права. - Инсталиран
curl
иsystemd
(за управление на услуги).
🔧 Стъпка 1: Инсталиране на cloudflared
Cloudflare Tunnel се управлява от официалния клиент cloudflared
. Инсталирайте го чрез следните команди:
За Debian/Ubuntu:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
За RHEL/CentOS:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm -o cloudflared.rpm
sudo rpm -i cloudflared.rpm
Проверка на версията:
cloudflared –version
🔑 Стъпка 2: Аутентикация с Cloudflare
- Вход в Cloudflare акаунта:
cloudflared tunnel login
- Ще се отвори браузър, където трябва да изберете домейна, към който ще се свържете.
- След успешен вход,
cloudflared
ще запише сертификата в~/.cloudflared/cert.pem
.
🏗️ Стъпка 3: Създаване на Tunnel
- Създайте нов tunnel:
cloudflared tunnel create ИМЕ_НА_TUNNEL
- Заменете
ИМЕ_НА_TUNNEL
с желаното име (напр.my-tunnel
). - Командата ще върне Tunnel ID, който ще ви трябва за конфигурацията.
Запишете конфигурационния файл:
- Отидете в директорията
~/.cloudflared
и създайте файлconfig.yml
:
nano ~/.cloudflared/config.yml
Добавете следното съдържание (адаптирано за вашия сървър):
tunnel: ТУНЕЛ_ID credentials-file: /home/ПОТРЕБИТЕЛ/.cloudflared/ТУНЕЛ_ID.json ingress: - hostname: поддомейн.вашиятдомейн.com service: http://localhost:80 - service: http_status:404
- Заменете:
ТУНЕЛ_ID
с вашия tunnel ID.ПОТРЕБИТЕЛ
с вашето потребителско име.поддомейн.вашиятдомейн.com
с желания поддомейн.
🌐 Стъпка 4: Публикуване на DNS запис
- Създайте DNS запис за поддомейна:
cloudflared tunnel route dns ИМЕ_НА_TUNNEL поддомейн.вашиятдомейн.com
- Това автоматично ще добави CNAME запис в Cloudflare DNS.
⚙️ Стъпка 5: Стартиране на Tunnel
- Тестване на конфигурацията:
cloudflared tunnel –config ~/.cloudflared/config.yml run ИМЕ_НА_TUNNEL
- Ако всичко е наред, ще видите съобщение за успешно свързване.
Стартиране като услуга (systemd):
- Създайте systemd услуга за автоматично стартиране:
sudo nano /etc/systemd/system/cloudflared.service
Добавете следното:
[Unit] Description=Cloudflare Tunnel After=network.target [Service] ExecStart=/usr/local/bin/cloudflared tunnel --config /home/ПОТРЕБИТЕЛ/.cloudflared/config.yml run ИМЕ_НА_TUNNEL Restart=always User=ПОТРЕБИТЕЛ [Install] WantedBy=multi-user.target
- Активирайте и стартирайте услугата:
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared
🔍 Стъпка 6: Проверка и управление
Основни команди:
Команда | Описание |
---|---|
cloudflared tunnel list | Показва всички tunnels |
cloudflared tunnel delete ИМЕ_НА_TUNNEL | Изтрива tunnel |
cloudflared tunnel info ИМЕ_НА_TUNNEL | Показва информация за tunnel |
Логове:
journalctl -u cloudflared -f
🛠️ Често срещани проблеми
❌ „Failed to connect“
- Проверете дали
config.yml
е правилен. - Уверете се, че локалният сървър работи (
curl http://localhost:80
).
❌ „Permission denied“
- Проверете правата на
cert.pem
иconfig.yml
.
🎯 Заключение
Cloudflare Tunnel предоставя сигурен, лесен и ефективен начин за публикуване на локални услуги без отваряне на портове. След тази инструкция вече можете да:
✅ Инсталирате cloudflared
.
✅ Създадете и конфигурирате tunnel.
✅ Пуснете го като услуга за автоматично стартиране.