Pular para o conteúdo principal

Cloudflare DNS - Automação

Guia para migração e automação de DNS via Cloudflare.

Por que Cloudflare?

  • Automação: API REST completa (Hostinger não tem)
  • Proteção DDoS: Inclusa (gratuito)
  • Proxy/CDN: Opcional
  • Custo: Gratuito

Migração

Passo 1: Criar Conta

  1. Acesse: https://dash.cloudflare.com/sign-up
  2. Adicione site: arboreolab.com.br
  3. Cloudflare importa registros automaticamente

Passo 2: Alterar Nameservers (Hostinger)

Cloudflare fornece nameservers como: ``` aria.ns.cloudflare.com chad.ns.cloudflare.com ```

No hPanel: Domínios → arboreolab.com.br → DNS → Nameservers personalizados

Passo 3: Obter Credenciais API

  1. Dashboard → API Tokens → Create Token
  2. Template: "Edit zone DNS"
  3. Copiar Zone ID e Token

Configuração no Servidor

```bash

Criar diretório de configuração

sudo mkdir -p /etc/arboreolab

Criar arquivo de credenciais

sudo nano /etc/arboreolab/cloudflare.conf ```

Conteúdo: ```ini CLOUDFLARE_ZONE_ID="seu_zone_id" CLOUDFLARE_API_TOKEN="seu_token" VPS_IP="212.85.22.243" ```

```bash

Proteger arquivo

sudo chmod 600 /etc/arboreolab/cloudflare.conf ```

Script de Automação

Instalar em /usr/local/bin/arboreo-dns:

```bash #!/bin/bash

arboreo-dns - Gerenciador DNS via Cloudflare

Exemplo de Script

#!/bin/bash
# dns-manager.sh - Script para gerenciar DNS via API Cloudflare

# Carregar variáveis de ambiente
set -o allexport
source /etc/profile.d/arboreolab.sh
set +o allexport

# Variáveis
ZONE_ID="sua_zone_id"
API_URL="https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records"
VPS_IP="seu_ip"

# Validação de subdomínio
if [[ "$1" == "add" || "$1" == "delete" ]] && [ -z "$2" ]; then
echo "Erro: O subdomínio é obrigatório para as ações 'add' e 'delete'."
echo "Uso: $0 {list|add <subdomain>|delete <subdomain>}"
exit 1
fi

case "$1" in
list)
curl -s "$API_URL" -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" | \
jq -r '.result[] | "\(.type)\t\(.name)\t\(.content)"'
;;
add)
curl -s -X POST "$API_URL" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"'$2'","content":"'$VPS_IP'","ttl":300}'
;;
delete)
RECORD_ID=$(curl -s "$API_URL?name=$2.arboreolab.com.br" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" | jq -r '.result[0].id')

if [ "$RECORD_ID" = "null" ]; then
echo "Erro: Registro DNS para $2.arboreolab.com.br não encontrado."
exit 1
fi

curl -s -X DELETE "$API_URL/$RECORD_ID" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
;;
*)
echo "Uso: $0 {list|add <subdomain>|delete <subdomain>}"
exit 1
;;
esac

```

Uso

```bash arboreo-dns list # Listar registros arboreo-dns add novo-projeto # Criar subdomínio arboreo-dns delete teste # Remover subdomínio ```

Conclusão

Automatizar a gestão de DNS com a API da Cloudflare e scripts shell é uma prática DevOps fundamental que economiza tempo e reduz erros. Integrar este processo com a configuração do Nginx e Certbot cria um pipeline de provisionamento de novos serviços de ponta a ponta.

Workflow Completo: DNS + Nginx + SSL

# 1. Criar DNS
# (Usando o alias configurado no .bashrc)
arboreo-dns add novo-cliente

# 2. Configurar Nginx
sudo bash -c "cat > /etc/nginx/sites-available/novo-cliente.arboreolab.com.br << EOF
server {
listen 80;
server_name novo-cliente.arboreolab.com.br;
location / {
proxy_pass http://127.0.0.1:3000; # Aponta para o Node.js
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
}
}
EOF"

# 3. Testar configuração Nginx
sudo nginx -t

# 4. Recarregar Nginx
sudo systemctl reload nginx

# 5. Obter certificado SSL
sudo certbot --nginx -d novo-cliente.arboreolab.com.br

Recursos Extras (Gratuitos)

  • Proxy (Orange Cloud): Esconde IP real
  • DDoS Protection: Mitigação automática
  • Analytics: Estatísticas de tráfego
  • Page Rules: 3 regras gratuitas

Referências