Cloudflare tunnel, как ngrock только Cloudflare
Не так давно я прикупил себе неттоп dell optiplex 3070 micro на авито и решил поставить его у себя на работе, что бы захостить на нем все свои пет проекты.
Если посчитать сумму которую я плачу за хостинг, то этот неттоп окупается за год, но по производительности на порядки мощнее всех vds за которые я плачу.
Проблема только в том, что на работе у меня нет белого ip и пробрасывать порты мне ни кто не будет, вот я и решил воспользоваться cloudflare tunnel.
Для начала необходимо создать аккаунт в cloudflare и привязать домен.
Моя структура папок.
~/docker
mysql
docker-compose.yml - compose файл
cloudflare
_conf - конфиги cloudflare
docker-compose.yml - compose файл
Авторизация
cd ~/docker/cloudflare
mkdir _conf
chmod 0777 _conf
docker run -v ./_conf/:/home/nonroot/.cloudflared/ cloudflare/cloudflared:latest tunnel login
Создание
docker run -v ./_conf/:/home/nonroot/.cloudflared/ cloudflare/cloudflared:latest tunnel create mytunnelname
Список
docker run -v ./_conf/:/home/nonroot/.cloudflared/ cloudflare/cloudflared:latest tunnel list
Создаем конфиг файл _conf/config.yml
url: http://phpmyadmin
tunnel: <Tunnel-UUID>
credentials-file: /root/.cloudflared/<Tunnel-UUID>.json
Добавление записи DNS
docker run -v ./_conf/:/home/nonroot/.cloudflared/ cloudflare/cloudflared:latest tunnel route dns mytunnelname mytunnelname.topsicretdomain.ru
Для тестирования запуска я создам контейнер с phpMyAdmin ~/docker/mysql/docker-compose.yml
version: '3.9'
services:
mysql:
container_name: "mysql"
image: "mysql:8-debian"
restart: unless-stopped
volumes:
- ./data:/var/lib/mysql
- ./sql:/app
environment:
- MYSQL_ROOT_PASSWORD=root
- TZ=Europe/Moscow
phpmyadmin:
image: phpmyadmin
restart: unless-stopped
environment:
- PMA_HOST=mysql
ports:
- "8080:80"
networks:
default:
name: web
Запуск phpMyAdmin
cd ~/docker/mysql/
docker compose up -d
Теперь можно запустить наш compose файл для cloudflare tunnel
version: '3.9'
services:
tunnel:
image: cloudflare/cloudflared:latest
container_name: cloudflare_tunnel
restart: unless-stopped
command: tunnel run mytunnelname
volumes:
- ./conf/:/home/nonroot/.cloudflared/
extra_hosts:
- "parent:host-gateway"
networks:
default:
name: web
cd ~/docker/cloudflare
docker compose up -d
Готово.
Важно. Что бы все корректно работало необходимо запускать phpMyAdmin и cloudflared в одной docker сети
networks:
default:
name: web
Web-технологии
526 постов5.8K подписчиков
Правила сообщества
1. Не оскорблять других пользователей
2. Не пытаться продвигать свои услуги под видом тематических постов
3. Не заниматься рекламой
4. Никакой табличной верстки
5. Тег сообщества(не обязателен) pikaweb