DNS en Cloudflare para un stack self-hosted: todos los registros que necesitas

admin · 2 min

Con un stack self-hosted en un único servidor, todos los subdominios apuntan a la misma IP. Cloudflare actúa solo como DNS; el proxy naranja (Proxied) está desactivado para dejar que Traefik gestione TLS directamente con Let’s Encrypt.

Registros necesarios

SubdominioTipoDestino
d4r.esA212.227.144.215
api.d4r.esA212.227.144.215
auth.d4r.esA212.227.144.215
blog.d4r.esA212.227.144.215
db.d4r.esA212.227.144.215
kanban.d4r.esA212.227.144.215
bi.d4r.esA212.227.144.215
logs.d4r.esA212.227.144.215
minio.d4r.esA212.227.144.215
n8n.d4r.esA212.227.144.215
status.d4r.esA212.227.144.215
studio.d4r.esA212.227.144.215
traefik.d4r.esA212.227.144.215

Actualizar vía API

Con el Zone ID y un token API de Cloudflare, se pueden actualizar todos los registros en un loop:

ZONE_ID="6fba9c40bd9b483634d08ee1566d5bf9"
CF_TOKEN="tu_token"
IP="212.227.144.215"

for sub in "" api auth blog db kanban bi logs minio n8n status studio traefik; do
  HOST="${sub:+$sub.}d4r.es"
  # obtener ID del registro existente
  RECORD_ID=$(curl -s "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$HOST&type=A"     -H "Authorization: Bearer $CF_TOKEN" | jq -r '.result[0].id')
  # actualizar
  curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID"     -H "Authorization: Bearer $CF_TOKEN"     -H "Content-Type: application/json"     -d "{"type":"A","name":"$HOST","content":"$IP","proxied":false}"
done

proxied: false es clave. Con el proxy naranja activado, Cloudflare actúa de intermediario HTTPS y Traefik no puede completar el challenge ACME para emitir certificados propios.

admin

Editor en D4R.