inicio repositorio gitea trackeo de ip con API cloudflare
This commit is contained in:
commit
130313cfb6
35
README.md
Normal file
35
README.md
Normal 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
30
cloudflare_script.sh
Normal 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
|
Loading…
x
Reference in New Issue
Block a user