Один з сервісів (додаток на python) який запущений в локальній мережі (без статичного IP), повинен бути доступний для клієнта ззовні.
На роутері всі порти заблоковані (firewall) і відкрити я їх не зможу.
Але ми можемо ініціалізувати вихідні зєднання куди завгодно (якщо браузер працює , нам цього досить).
Для вхідних зєднань все заблоковано, вихідні дозволено.
Хочемо мати доступ через, наприклад, браузер до сервісу який крутиться на домашньому компі.
Вирішити це можна багатьма способами (наприклад VPS з nginx + wireguard).
Можна теж скористатися готовим рішенням від cloudflare під назвою cloudflare tunnel.
Демон cloudflared встановлює вихідний тунель з нашої мережі до cloudflare і постійно підтримує цей звязок.
Клієнт заходить на URL - Зєднання йде до cloudflare -> розшифровує - > повторно шифрує - > передає до агента (cloudflared).
Використовую Debian 12.13, працюю під root (знаю, що це погано).
Додаємо GPG-ключ:
1
2
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg \
| tee /usr/share/keyrings/cloudflare-main.gpg > /dev/null
Додаємо репозиторій:
1
2
3
echo"deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] \
https://pkg.cloudflare.com/cloudflared bookworm main"\
| tee /etc/apt/sources.list.d/cloudflared.list
Встановлюємо:
1
apt update && apt install cloudflared -y
Перевіряємо версію та логінимось:
1
2
cloudflared version
cloudflared tunnel login
Відкрийте URL з виводу команди у браузері та авторизуйтесь у Cloudflare-акаунті.
Сертифікат збережеться у /root/.cloudflared/cert.pem.
1
2
3
2026-03-28T12:39:22Z INF You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem
root@cloudflare-teleport-debian12:~# cloudflared tunnel create cft-tun-deb12
Tunnel credentials written to /root/.cloudflared/oowax6RaoX-dds3-4667-ac08-kai6wai2Shahnie.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.
Created tunnel cft-tun-deb12 with id oowax6RaoX-dds3-4667-ac08-kai6wai2Shahnie
Додаємо DNS-запис:
1
cloudflared tunnel route dns назва_тунелю app1.domain.com.ua
Output:
1
2
root@cloudflare-teleport-debian12:~# cloudflared tunnel route dns cft-tun-deb12 cft-tun.domain.com.ua
2026-03-28T12:43:36Z INF Added CNAME cft-tun.domain.com.ua which will route to this tunnel tunnelID=oowax6RaoX-dds3-4667-ac08-kai6wai2Shahnie
# Запускаємо веб-сервер на python3 для тестуpython3 -m http.server 8080# Змінюємо в /etc/cloudflared/config.yml на http://127.0.0.1:8080# Запускаємо tunnelcloudflared tunnel run назва_тунелю
# Заходимо в браузер і перевіряємо