10

Cloudflare tunnel, как ngrock только Cloudflare

Cloudflare tunnel, как ngrock только Cloudflare Гайд, Linux, Cloudflare, Веб-разработка, Длиннопост

Не так давно я прикупил себе неттоп dell optiplex 3070 micro на авито и решил поставить его у себя на работе, что бы захостить на нем все свои пет проекты.

Если посчитать сумму которую я плачу за хостинг, то этот неттоп окупается за год, но по производительности на порядки мощнее всех vds за которые я плачу.

Проблема только в том, что на работе у меня нет белого ip и пробрасывать порты мне ни кто не будет, вот я и решил воспользоваться cloudflare tunnel.

Для начала необходимо создать аккаунт в cloudflare и привязать домен.

Инструкция https://developers.cloudflare.com/cloudflare-one/connections...

Docker https://hub.docker.com/r/cloudflare/cloudflared

Моя структура папок.

~/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