Decomisión de openclaw
- Elimina manifests openclaw/ y argocd/application-openclaw.yaml - backup-system: fuera del backup diario, crown-jewels, expected y retain; fuera el mount hostPath del cronjob y la fila de RESTORE.md - monitoring: eliminado panel openclaw del dashboard homelab-overview - n8n: openclaw y polymarket fuera del health-check (espejo del workflow vivo) - cluster-wide/namespaces.yaml: fuera openclaw + añadidos separadores '---' que faltaban (el archivo era un único doc YAML donde ganaba el último ns) Cluster ya limpio: app ArgoCD, namespace, PVC/PV, RBAC cluster-scoped y monitor de Uptime Kuma. Backup final: ~/decommissioned/openclaw-final-2026-07-18.tar.gz Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -61,7 +61,6 @@ umami-pg, roswell-pg (la BD corre en n97) y `/opt/reddit-intel` + Docker.
|
||||
| Artefacto | Cómo restaurar |
|
||||
|---|---|
|
||||
| `n8n_*.tar.gz` | Extraer en `/data/n8n` (hostPath master), reiniciar deploy. Incluye encryptionKey. |
|
||||
| `openclaw_*.tar.gz` | Extraer en el PVC `openclaw-pvc` (pod parado). |
|
||||
| `homarr_*.tar.gz` | `db/db.sqlite` → PVC db; `redis/dump.rdb` → PVC redis. |
|
||||
| `authentik-pg_*.sql.gz` | `gunzip -c \| kubectl exec -i postgresql-0 -n authentik -- psql -U authentik authentik` (BD vacía primero). |
|
||||
| `grafana_*.tar.gz` | `grafana.db` → PVC de grafana, reiniciar pod. |
|
||||
|
||||
@@ -4,7 +4,7 @@ data:
|
||||
#!/bin/bash
|
||||
# Backup diario del homelab. Imagen: bitnami/kubectl (bash GNU, corre en chemavx-k8).
|
||||
# Regla: cada artefacto se valida (gzip -t + tamaño mínimo) — un tar vacío
|
||||
# como el bug histórico de openclaw (104 bytes) cuenta como FALLO y el job sale 1
|
||||
# (bug histórico: tar de 104 bytes de una app ya decomisada) cuenta como FALLO y el job sale 1
|
||||
# (→ alerta Grafana homelab-backup-job-failed → Telegram).
|
||||
set -u
|
||||
|
||||
@@ -59,12 +59,6 @@ data:
|
||||
tar -czf "$BACKUP_DIR/n8n_${DATE}.tar.gz" -C /data/n8n . 2>/dev/null
|
||||
check "$BACKUP_DIR/n8n_${DATE}.tar.gz" 10000000 n8n
|
||||
|
||||
# === openclaw (PVC local-path; el hostPath /data/openclaw era un stub vacío) ===
|
||||
log "Backing up openclaw..."
|
||||
OC=$(pvpath openclaw openclaw-pvc)
|
||||
tar -czf "$BACKUP_DIR/openclaw_${DATE}.tar.gz" -C "$OC" . 2>/dev/null
|
||||
check "$BACKUP_DIR/openclaw_${DATE}.tar.gz" 50000 openclaw
|
||||
|
||||
# === homarr ===
|
||||
log "Backing up homarr..."
|
||||
HOMARR_DB=$(pvpath homarr homarr-db-pvc)
|
||||
@@ -189,7 +183,7 @@ data:
|
||||
\( -name "${1}_*.tar.gz" -o -name "${1}_*.sql.gz" -o -name "${1}_*.db.gz" \) | \
|
||||
sort | head -n -"$2" | xargs -r rm -f
|
||||
}
|
||||
for p in n8n openclaw homarr authentik-pg grafana k3s-db gitea \
|
||||
for p in n8n homarr authentik-pg grafana k3s-db gitea \
|
||||
ghost-en-db ghost-en-content zona-exclusion-db zona-exclusion-content \
|
||||
researchowl roswell-pg umami-pg infisical-pg trilium vaultwarden filebrowser-db; do
|
||||
retain "$p" 7
|
||||
@@ -257,7 +251,7 @@ data:
|
||||
|
||||
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
|
||||
BACKUP_DIR=/data/backups/backups
|
||||
CROWN="n8n openclaw homarr authentik-pg grafana k3s-db gitea ghost-en-db ghost-en-content zona-exclusion-db zona-exclusion-content researchowl roswell-pg umami-pg infisical-pg trilium vaultwarden filebrowser-db home-master"
|
||||
CROWN="n8n homarr authentik-pg grafana k3s-db gitea ghost-en-db ghost-en-content zona-exclusion-db zona-exclusion-content researchowl roswell-pg umami-pg infisical-pg trilium vaultwarden filebrowser-db home-master"
|
||||
|
||||
KEEP=/tmp/crown-jewels
|
||||
rm -rf "$KEEP"; mkdir -p "$KEEP"
|
||||
@@ -303,7 +297,7 @@ data:
|
||||
|
||||
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
|
||||
|
||||
EXPECTED_SERVICES="n8n openclaw homarr authentik-pg grafana k3s-db gitea ghost-en-db ghost-en-content zona-exclusion-db zona-exclusion-content researchowl roswell-pg umami-pg infisical-pg trilium vaultwarden uptime-kuma filebrowser-db home-master"
|
||||
EXPECTED_SERVICES="n8n homarr authentik-pg grafana k3s-db gitea ghost-en-db ghost-en-content zona-exclusion-db zona-exclusion-content researchowl roswell-pg umami-pg infisical-pg trilium vaultwarden uptime-kuma filebrowser-db home-master"
|
||||
ERRORS=0
|
||||
|
||||
# Ventana de frescura: backup y sync son diarios → un backup es "reciente"
|
||||
@@ -356,7 +350,7 @@ data:
|
||||
|
||||
# === Segundo offsite: B2 crown-jewels (todo menos uptime-kuma) ===
|
||||
log "=== Verificación de crown-jewels en B2 ==="
|
||||
CROWN="n8n openclaw homarr authentik-pg grafana k3s-db gitea ghost-en-db ghost-en-content zona-exclusion-db zona-exclusion-content researchowl roswell-pg umami-pg infisical-pg trilium vaultwarden filebrowser-db home-master"
|
||||
CROWN="n8n homarr authentik-pg grafana k3s-db gitea ghost-en-db ghost-en-content zona-exclusion-db zona-exclusion-content researchowl roswell-pg umami-pg infisical-pg trilium vaultwarden filebrowser-db home-master"
|
||||
B2FILES=$(rclone ls b2:chemavx-k3s-backups/ --config /rclone/rclone.conf 2>&1)
|
||||
for svc in $CROWN; do
|
||||
FOUND=0
|
||||
|
||||
@@ -40,8 +40,6 @@ spec:
|
||||
mountPath: /data/backups/backups
|
||||
- name: n8n-data
|
||||
mountPath: /data/n8n
|
||||
- name: openclaw-data
|
||||
mountPath: /data/openclaw
|
||||
- name: scripts
|
||||
mountPath: /scripts
|
||||
- name: k3s-storage
|
||||
@@ -67,10 +65,6 @@ spec:
|
||||
hostPath:
|
||||
path: /data/n8n
|
||||
type: DirectoryOrCreate
|
||||
- name: openclaw-data
|
||||
hostPath:
|
||||
path: /data/openclaw
|
||||
type: DirectoryOrCreate
|
||||
- name: scripts
|
||||
configMap:
|
||||
name: backup-scripts
|
||||
|
||||
Reference in New Issue
Block a user