docs: documentacion extensiva de infraestructura CAS - Junio 2026
- README principal actualizado con indice completo - Documentacion detallada de 4 servidores fisicos - Topologia de red completa con diagramas ASCII - Asignacion de IPs y conflictos identificados - Documentacion DNS para 3 dominios - Servicios: Caddy, Jellyfin Stack, Multimedia - Proyectos: Afterlife, Nexus, Horux - Seguridad: politica y riesgos identificados - Automatizacion: n8n workflows y scripts - Scripts utilitarios: backup, update-dns, check-ip - Roadmap 2026 Q2-Q4 - Documentacion Hermes AI server (actualizada)
This commit is contained in:
26
scripts/backup-vms.sh
Executable file
26
scripts/backup-vms.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# Script de backup para VMs Proxmox
|
||||
# Uso: ./backup-vms.sh [storage]
|
||||
|
||||
STORAGE=${1:-"/mnt/pve/Multimedia/backup"}
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
LOG="/var/log/proxmox-backup-${DATE}.log"
|
||||
|
||||
# VMs a respaldar
|
||||
VMS=(100 102 104 105 106 108 109 110 111 112)
|
||||
|
||||
mkdir -p "$STORAGE"
|
||||
|
||||
echo "Iniciando backup: $DATE" | tee -a "$LOG"
|
||||
|
||||
for VM in "${VMS[@]}"; do
|
||||
echo "Backup VM $VM..." | tee -a "$LOG"
|
||||
vzdump "$VM" --dumpdir "$STORAGE" --mode snapshot --compress zstd 2>&1 | tee -a "$LOG"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ VM $VM backup OK" | tee -a "$LOG"
|
||||
else
|
||||
echo "❌ VM $VM backup FAILED" | tee -a "$LOG"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Backup completado: $(date)" | tee -a "$LOG"
|
||||
17
scripts/check-ip.sh
Executable file
17
scripts/check-ip.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
# Script para monitorear cambios de IP pública y notificar
|
||||
|
||||
LAST_IP_FILE="/var/run/last_public_ip"
|
||||
CURRENT_IP=$(curl -s https://api.ipify.org)
|
||||
|
||||
if [ -f "$LAST_IP_FILE" ]; then
|
||||
LAST_IP=$(cat "$LAST_IP_FILE")
|
||||
if [ "$CURRENT_IP" != "$LAST_IP" ]; then
|
||||
echo "IP cambiada: $LAST_IP -> $CURRENT_IP"
|
||||
# Notificar vía n8n webhook, telegram, etc.
|
||||
# curl -X POST https://n8n.consultoria-as.com/webhook/ip-change ...
|
||||
echo "$CURRENT_IP" > "$LAST_IP_FILE"
|
||||
fi
|
||||
else
|
||||
echo "$CURRENT_IP" > "$LAST_IP_FILE"
|
||||
fi
|
||||
26
scripts/update-dns.sh
Executable file
26
scripts/update-dns.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# Script para actualizar DNS en Cloudflare cuando cambia la IP pública
|
||||
# Requiere: CF_API_TOKEN, CF_ZONE_ID
|
||||
|
||||
CF_API_TOKEN="tu_token_aqui"
|
||||
CF_ZONE_ID="tu_zone_id_aqui"
|
||||
DOMAINS=("jellyfin" "immich" "odoo" "n8n" "git" "status")
|
||||
|
||||
CURRENT_IP=$(curl -s https://api.ipify.org)
|
||||
|
||||
echo "IP actual: $CURRENT_IP"
|
||||
|
||||
for DOMAIN in "${DOMAINS[@]}"; do
|
||||
# Obtener record ID
|
||||
RECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?name=${DOMAIN}.consultoria-as.com" \
|
||||
-H "Authorization: Bearer $CF_API_TOKEN" \
|
||||
-H "Content-Type: application/json" | jq -r '.result[0].id')
|
||||
|
||||
# Actualizar
|
||||
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$RECORD_ID" \
|
||||
-H "Authorization: Bearer $CF_API_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"type\":\"A\",\"name\":\"${DOMAIN}\",\"content\":\"$CURRENT_IP\",\"ttl\":120,\"proxied\":true}"
|
||||
|
||||
echo "Actualizado: ${DOMAIN}.consultoria-as.com -> $CURRENT_IP"
|
||||
done
|
||||
Reference in New Issue
Block a user