inicio repositorio gitea trackeo de ip con API cloudflare

This commit is contained in:
David Itehua Xalamihua 2025-06-15 17:38:07 -06:00
commit 130313cfb6
2 changed files with 65 additions and 0 deletions

35
README.md Normal file
View File

@ -0,0 +1,35 @@
1.- **Guarda el script cloudflare_script.sh**, por ejemplo en `/home/usuario/scripts/cloudflare_script.sh`
2.- Dar permisos de ejecución:
```bash
chmod +x /home/usuario/scripts/cloudflare_script.sh
```
3.- Programar la tarea con `cron` para que el script se ejecute automáticamente (por ejemplo, cada 4 minutos), primero ejecutamos crontab:
```bash
crontab -e
```
4.- Añade la siguiente línea al final al final del archivo (esto ejecutará el script cada 4 minutos.):
```bash
# actualizar ip pública a cloudflare en algun subdominio que hayas creado
*/4 * * * * /home/usuario/scripts/cloudflare_script.sh >/dev/null 2>&1
```
## 🔐 Seguridad
NO PUBLIQUES ESTE SCRIPT EN REPOSITORIOS PÚBLICOS, MANTENLO EN TU SERVIDOR DE GITEA
---
## Notas adicionales
- El script solo notifica y actualiza si detecta un cambio real de IP.
- La TTL del registro DNS se establece `AUTOMÁTICO`.
- El registro es proxied (`"proxied": false`).

30
cloudflare_script.sh Normal file
View File

@ -0,0 +1,30 @@
#!/bin/bash
# echo "[$(date '+%Y-%m-%d %H:%M:%S')] Ejecutando actualización de IP..."
# Configuración
ZONE_ID="e70540b388ab9d20bfe27d9a31cd474b"
RECORD_ID="5d05a48c9d76c7767302442fffa096bd"
API_TOKEN="9BD-GB7PtGd5pgXTEBxnv3k1eJlJYJoIWx9HgLLs"
DOMAIN="ip.xala.dev"
# Obtener IP pública actual
IP=$(curl -s https://api.ipify.org)
# Obtener IP registrada en Cloudflare
DNS_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" | jq -r '.result.content')
# Comparar IPs
if [ "$IP" != "$DNS_IP" ]; then
echo "La IP cambió: $DNS_IP$IP. Actualizando en Cloudflare..."
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"$DOMAIN\",\"content\":\"$IP\",\"ttl\":120,\"proxied\":true}" | jq
# Notificación vía ntfy
curl -d "🌎 [$(date '+%Y-%m-%d %H:%M:%S')] IP actualizada: $DNS_IP$IP" ntfy.xala.dev/alerts
fi