Guia Completo para Configuração do Cloudflare Tunnel com HAProxy e WordPress

O Cloudflare Tunnel oferece uma solução robusta para conectar a sua infraestrutura ao Cloudflare sem a necessidade de um IP público e sem abrir portas de rede. A seguir, encontrará um guia detalhado para configurar o Cloudflare Tunnel usando o HAProxy e WordPress, incluindo a instalação do WordPress-cli e a configuração do Nginx.

Como Funciona

O cloudflared estabelece túneis de saída entre os seus recursos e a rede global do Cloudflare. Estes túneis são persistentes e encaminham o tráfego para registros DNS. Dentro de um túnel, podem correr múltiplos processos ‘cloudflared’ (conectores) que estabelecem conexões com o Cloudflare e encaminham o tráfego para o data center mais próximo.

Pré-requisitos

  • Conta Cloudflare: Conta ativa no Cloudflare.
  • Infraestrutura: Servidor ou container que suporte cloudflared.
  • Proxmox: Hypervisor para gerenciar containers.
  • HAProxy: Container configurado para intermediar conexões.
  • WordPress: Container com o site que deseja expor.
  • Configuração de Rede: Conhecimento básico sobre redes para configurar IPs.

Passos a Seguir

Criar o Container HAProxy no Proxmox com Debian 11 ou 12

  • Aceda ao Proxmox e crie um novo container com Debian 11 ou 12.

Instalar e Configurar o HAProxy no Container

  • Configure o HAProxy editando o ficheiro /etc/haproxy/haproxy.cfg e adicione a seguinte configuração:
Bash
frontend http_front 
  bind *:80
  default_backend http_back 
  
backend http_back
  server wordpress 10.0.10.20:80
  • Configure o encaminhamento de IPv4: Edite o ficheiro /etc/sysctl.conf e adicione ou descomente a seguinte linha:
Bash
net.ipv4.ip_forward=1
  • Aplique as alterações:
Bash
sysctl -p

Criar o Container WordPress no Proxmox com Debian 11 ou 12

  • Aceda ao Proxmox e crie um novo container com Debian 11 ou 12.

Descarregar e Instalar o WordPress no Container

  • Aceda o container e navegue para o diretório onde deseja instalar o WordPress:
Bash
cd /var/www/html/
  • Descarregue a última versão do WordPress:
Bash
wget https://wordpress.org/latest.tar.gz
  • Extraia o arquivo:
Bash
tar xzvf latest.tar.gz
  • Ajuste as permissões:
Bash
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;

Instalar e Configurar o WordPress-cli no Container

  • Primeiro, atualize o sistema e instale as dependências necessárias:
Bash
sudo apt update sudo apt install wget curl php-cli php-mbstring git unzip
  • Faça o download do WordPress-cli:
Bash
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  • Torne o arquivo executável:
Bash
chmod +x wp-cli.phar
  • Mova o arquivo para um diretório no PATH:
Bash
sudo mv wp-cli.phar /usr/local/bin/wp
  • Verifique a instalação:
Bash
wp --info

Instalar e Configurar o Nginx no Container WordPress

  • Instale o Nginx:
Bash
sudo apt update sudo apt install nginx
  • Configure o Nginx editando o ficheiro de configuração:
Bash
sudo nano /etc/nginx/sites-available/wordpress
  • Adicione a seguinte configuração para o WordPress:
Nginx
server {
    listen 80;
    server_name example.com;  # Substitua com o seu domínio

    root /var/www/html/wordpress;  # Caminho para a pasta onde o WordPress está instalado
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  # Ajuste conforme a versão do PHP
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}
  • Crie um link simbólico para ativar a configuração:
Bash
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
  • Teste a configuração do Nginx e reinicie o serviço:
Bash
sudo nginx -t sudo systemctl restart nginx

Configurar o Túnel no Cloudflare

  • No painel do Cloudflare, vá para Zero Trust > Networks > Tunnels.
  • Crie um novo túnel e escolha Cloudflared.
  • Nomeie o túnel e selecione Debian como o sistema operativo.
  • Instale o túnel copiando o comando fornecido pela Cloudflare e cole-o no container HAProxy: sudo cloudflared service install id_do_tunel
  • Configure o túnel no Cloudflare, adicionando o subdomínio necessário e associando-o ao seu website, com o IP do container WordPress (10.0.10.20).
  • Salve o túnel.

Verificação

Após criar o túnel, o Cloudflare adicionará automaticamente um registro DNS ao domínio com as informações do túnel que configurou.

Com estas instruções, deve conseguir configurar o Cloudflare Tunnel de forma segura e eficiente. Se precisar de assistência adicional, não hesite em consultar a documentação oficial do Cloudflare ou procurar ajuda em comunidades especializadas.

Disponibilidade e Failover do Tunnel

O conector cloudflared foi desenvolvido para garantir alta disponibilidade sem necessidade de configurações adicionais. Quando executa um túnel, o cloudflared estabelece quatro conexões apenas de saída entre o servidor de origem e a rede Cloudflare. Estas quatro conexões são feitas para quatro servidores diferentes espalhados por pelo menos dois centros de dados distintos. Este modelo assegura alta disponibilidade e reduz o risco de falhas de conexão individuais. Assim, se uma única conexão, servidor ou centro de dados ficar offline, os recursos continuarão disponíveis.

Réplicas do Cloudflared

O Cloudflare Tunnel também permite a implantação de instâncias adicionais do conector cloudflared, chamadas réplicas, para cenários de disponibilidade e failover. Cada réplica estabelece quatro novas conexões, servindo como pontos de entrada adicionais para a origem, se necessário. Todas as réplicas apontam para o mesmo túnel, garantindo que a rede se mantenha operacional se um único host com cloudflared falhar.

Por defeito, as réplicas não oferecem direcionamento de tráfego (aleatório, hash ou round-robin). Quando um pedido chega ao Cloudflare, é encaminhado para a réplica geograficamente mais próxima. Se o cálculo de distância falhar ou a conexão falhar, outras réplicas serão tentadas, mas não há garantia sobre qual conexão será a escolhida.

Quando Utilizar Réplicas do Cloudflared

  • Para fornecer pontos adicionais de disponibilidade para um único túnel.
  • Para alocar nós de failover dentro da rede.
  • Para atualizar a configuração de um túnel sem tempo de inatividade.

Implantação de Réplicas do Cloudflared

Para implantar múltiplas instâncias do cloudflared, é possível criar e configurar um túnel e executá-lo em vários hosts. Se o túnel funcionar como um serviço, é permitida apenas uma instância do cloudflared por host.

Balanceadores de Carga Cloudflare: Distribuição Eficiente de Tráfego

Os Balanceadores de Carga da Cloudflare permitem distribuir o tráfego de forma inteligente entre múltiplas origens ou pontos de extremidade. Isso ajuda a garantir alta disponibilidade e desempenho, direcionando o tráfego com base em diversos fatores e assegurando que os usuários finais não enfrentem erros.

Quando Utilizar Balanceadores de Carga

  1. Direcionamento Inteligente: Direcione o tráfego com base em latência, geolocalização ou outros sinais para melhorar a experiência do usuário.
  2. Failover Automático: Redirecione o tráfego automaticamente para túneis ativos caso algum túnel falhe.
  3. Alertas de Inatividade: Receba notificações quando um túnel estiver inativo para tomar ações corretivas rapidamente.
  4. Distribuição Equitativa: Balanceie o tráfego de forma uniforme entre os túneis para evitar sobrecarga em qualquer origem.

Configuração

  1. Crie Vários Túneis: Configure múltiplos túneis com as mesmas definições para redundância.
  2. Defina Registos DNS: Utilize registos DNS para cada túnel no balanceador de carga.
  3. Configure Políticas de Tráfego: Estabeleça regras para direcionar o tráfego para os túneis conforme necessário.

Conclusão

Com a configuração do Cloudflare Tunnel, HAProxy, WordPress e Nginx, é possível estabelecer uma infraestrutura segura e eficiente para o seu site WordPress. O túnel Cloudflare protege a origem contra ataques e simplifica o acesso ao seu site através de uma conexão segura. Após seguir todos os passos, o seu ambiente estará pronto para oferecer uma experiência segura e otimizada aos utilizadores.

Artigos Relacionados