O Pinguim Criativo

Acesse seus serviços com segurança: Guia completo do Cloudflare Tunnel no OMV com Docker e NPM

Neste tutorial, vamos mostrar como expor serviços do seu homelab rodando em OpenMediaVault (OMV) de forma segura, sem abrir portas no roteador, usando o Cloudflare Tunnel e o Nginx Proxy Manager (NPM). Ao final, você poderá acessar seus serviços internos (OMV, Jellyfin, qBittorrent, WeTTY, etc.) via HTTPS válido, protegidos pelo Cloudflare.

Por que utilizar?

  • Sem exposição direta: evita abrir portas no seu roteador ou firewall.
  • TLS de ponta a ponta: HTTPS garantido pelo Cloudflare e Let’s Encrypt.
  • Gerenciamento unificado: todos os serviços passam por um único proxy (NPM).
  • Políticas de segurança: WAF, DDoS, autenticação Cloudflare Access.

Como configurar

1. Ambiente base

  • Servidor: OMV 6 instalado em Debian 11.
  • Rede local: 192.168.1.100 é o IP do OMV.
  • OMV Extras: plugin instalado para suporte a Docker.

2. Docker Compose no OMV

Crie em /srv/docker/nginx-proxy-manager/docker-compose.yml:

version: '3'
services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: npm
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    environment:
      DB_MYSQL_HOST: db
      DB_MYSQL_USER: npm
      DB_MYSQL_PASSWORD: P4ssw0rd123
      DB_MYSQL_NAME: npm
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: jc21/mariadb-aria:latest
    container_name: npm-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: rootP4ss
      MYSQL_DATABASE: npm
      MYSQL_USER: npm
      MYSQL_PASSWORD: P4ssw0rd123
    volumes:
      - ./mysql:/var/lib/mysql

Suba com:

docker-compose up -d

3. Criar API Token no Cloudflare

  1. Acesse https://dash.cloudflare.com → Perfil → Tokens de API.
  2. Clique em Create TokenUse template: Edit DNS.
  3. Zone Resources → specific zone → selecione seudominio.com.
  4. Permissions → Zone:DNS:Edit.
  5. Gere e copie o API Token.

4. Instalar o Cloudflare Tunnel no OMV

# Adicionar repositório
echo 'deb [signed-by=/usr/share/keyrings/cloudflare.gpg] https://pkg.cloudflare.com/cloudflared any main' \
  | tee /etc/apt/sources.list.d/cloudflared.list
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | tee /usr/share/keyrings/cloudflare.gpg

# Instalar
apt update && apt install cloudflared

5. Criar o túnel via terminal

# Autenticar no Cloudflare (abre o browser)
cloudflared tunnel login

# Criar o túnel homelab\ ncloudflared tunnel create homelab

Anote o ID (ex: ebf3fcbd-...).

6. Criar o arquivo config.yml

Em /etc/cloudflared/config.yml:

tunnel: homelab
credentials-file: /root/.cloudflared/ebf3fcbd-f15c-46be-a38f-fc4dce3b5c36.json
ingress:
  - hostname: omv.seudominio.com
    service: http://127.0.0.1:80
  - hostname: jellyfin.seudominio.com
    service: http://127.0.0.1:8096
  - hostname: qbittorrent.seudominio.com
    service: http://127.0.0.1:8080
  - hostname: wetty.seudominio.com
    service: http://127.0.0.1:2222
  - service: http_status:404

7. Criar o serviço systemd

# /etc/systemd/system/cloudflared.service
[Unit]
Description=Cloudflare Tunnel
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/cloudflared --config /etc/cloudflared/config.yml tunnel run
Restart=on-failure

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
enable --now cloudflared

8. Criar registros DNS automáticos

Para cada subdomínio, rode:

cloudflared tunnel route dns homelab omv.seudominio.com
cloudflared tunnel route dns homelab jellyfin.seudominio.com
cloudflared tunnel route dns homelab qbittorrent.seudominio.com
cloudflared tunnel route dns homelab wetty.seudominio.com

9. Criar Proxy Host no NPM

Para cada serviço:

  1. Acesse http://192.168.1.100:81.
  2. Proxy Hosts → Add Proxy Host.
  3. Domain Names: ex. wetty.seudominio.com.
  4. Scheme: http, Host/IP: 192.168.1.100, Port: 2222.
  5. SSL: Request new Let’s Encrypt cert, marque Use DNS Challenge, escolha Cloudflare, cole o API Token.
  6. Salve.

Conclusão

Seguindo esses passos, você expõe qualquer serviço do seu OMV de forma segura, sem abrir portas, com HTTPS válido e gerenciado automaticamente. Você ganha simplicidade e segurança para seu homelab!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *