Etapa 8: Operar
Objetivo: el sitio sobrevive a una laptop perdida, un servidor caído, una actualización fallida y un cambio de máquina, y nadie tiene que recordar cómo.
Pasos
- Copias de seguridad.
- Ejecuta
scripts/backup.shsemanalmente, y antes de trabajos riesgosos. Empaqueta la base de datos, las subidas, cada rama de git y stash, y la memoria de Claude. - Usa
--encryptantes de que el zip salga de la máquina, y mantén una copia fuera de ella. - En vivo: las copias diarias del servidor, más los volcados que toman los scripts de despliegue y contenido.
- Ejecuta
- Anota dónde vive todo en el
docs/reference/DISASTER_RECOVERY.mddel proyecto, sección 0. Incluye la carpeta de fotos originales: no está en git. - Simulacro de restauración. Restaura una vez por trimestre en una máquina de repuesto o en un proyecto DDEV nuevo, cronometra el tiempo, y regístralo en §5. Una copia de seguridad que nunca has restaurado es una esperanza, no una copia.
- Credenciales: cada secreto tiene una fila en
CREDENTIALS_INVENTORY.md(nombre, dónde reside, quién lo tiene, cuándo se rotó). Rota cualquier cosa que un agente haya visto. - Rutinas: comprobaciones semanales, mensuales y anuales, la política de actualizaciones y alertas en
docs/reference/OPERATIONS.md. Las actualizaciones de plugins van primero a staging. - ¿Más de una máquina? Sigue
references/multi-machine.md:docs/team/BRIDGE.mdcontiene roles, reglas y el registro de traspaso;scripts/workstation-doctor.shverifica la paridad;scripts/make-state-bundle.shtraslada la configuración ignorada por git, cifrada.
Puerta (marca en SITE_STATUS.md)
- Copias de seguridad programadas, con una copia fuera de la máquina
- Simulacro de restauración realizado (fecha, minutos)
- Rutinas de actualización y alertas escritas en
OPERATIONS.md
Lecciones
- El script de copia de seguridad apuntó una vez a la carpeta de memoria de Claude incorrecta. Las sesiones se ejecutaban desde la carpeta principal, por lo que la
memoria residía bajo una ruta diferente. El script deduce la ruta, pero acepta
CLAUDE_MEM=para este caso. - Un servidor de compilación en la nube tenía una rama y stashes que no existían en ningún otro lugar, y el servidor no podía hacer push. Sácalos con
git bundlepor ssh antes de que el servidor se detenga o sea eliminado. - Las líneas base visuales hechas en un sistema operativo fallan en otro. Mantenlas en la imagen Docker fijada.
- Un plan o crédito gratuito que caduca en una fecha es una fecha límite para un simulacro de salida: una semana antes, demuestra que puedes reconstruir en la siguiente máquina desde git + el paquete de estado + una copia de seguridad.