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
- Acesse: https://dash.cloudflare.com/sign-up
- Adicione site: arboreolab.com.br
- 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
- Dashboard → API Tokens → Create Token
- Template: "Edit zone DNS"
- 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