TPTito Pinardo Gutiérrez
← Volver al rack
English
1U · BACKUPPBS · Git ×2 · reversión En producción

Posición 21 de 25 en el rack · En producción

Unidad 1U · Copias

Copias de verdad, y lo que aún no cubren

Copias cifradas cada noche · restauración probada

Durante meses, esta unidad decía «datos: pendiente». Ahora cada contenedor del servidor tiene copia cada noche en Proxmox Backup Server, cifrada antes de salir, con una retención que el propio servidor no puede tocar. Se verifica cada semana y la restauración está probada fichero a fichero. El código sigue con sus dos respaldos y cada cambio delicado, con su vuelta atrás. Lo que falta, una copia fuera de casa, sigue escrito como falta.

Qué se copia
Todos los contenedores, también los de documentos, y los mundos de los juegos aparte. Las películas y los juegos de Steam no: se vuelven a bajar.
Quién puede borrar
Nadie más que el propio servidor de copias, que poda según su calendario. Si el servidor principal cayera en malas manos, no podría borrar sus copias.
Lo que falta
Todo está en casa, en un disco enchufado al mismo servidor. Protege de borrados, corrupción y discos que mueren; no de un robo o un incendio.
  • 02:30cada noche, una copia de todos los contenedores
  • 7 · 4 · 6copias diarias, semanales y mensuales que se guardan
  • 1.381ficheros idénticos en la primera restauración de prueba; ahora se repite sola cada domingo
  • 0copias que el servidor principal puede borrar

Su código, en abierto Versión pública del repositorio: sin IPs ni secretos.

Las copias por dentro

Qué se copia cada noche, quién puede borrarlo, cómo se sabe que sirve y lo que aún no cubre. Elige un recorrido.

Fuera Copias · un servidor de copias y lo que lo rodea Proxmox Backup Server en su contenedor, con su disco aparte Código y documentación Cada cambio, con vuelta atrás Copias de los datos Comprobar que sirven Mi portátil Forgejo GitHub privado Gestor claves Yo Element Disco aparte Hook Repo de respaldo git-shell Documentación Vuelta atrás 5 minutos Copias fechadas Instantánea PBS Cifrado Sin borrar Mundos Verificación Último commit Restaurar Avisos
Hermesde visita en la unidad

Pulsa una pieza o elige un recorrido. Si vienes de una habilidad, ya están encendidas las piezas donde la uso.

      Cada noche
      1. Proxmox Backup Server — A las 2:30, Proxmox copia todos los contenedores al servidor de copias.
      2. Cifradas antes de salir — Cifrados antes de salir, con una clave que también guardo fuera del servidor.
      3. Proxmox Backup Server — Incremental: solo viaja lo que cambió desde la noche anterior.
      4. Quien copia no borra — El servidor principal puede copiar, pero no borrar. El servidor de copias poda solo: 7 diarias, 4 semanales y 6 mensuales.
      5. El disco de las copias — Todo va a un disco aparte, solo para esto.
      6. Verificación semanal — Los domingos, la verificación relee cada copia.
      7. Avisos de fallos — Si algo falla, sale un aviso.
      8. Element — Y llega a la sala de incidencias. Si no llega nada, ha ido bien.
      Los mundos de los juegos
      1. Los mundos de los juegos — Los mundos (158 GB) están montados desde fuera del contenedor de juegos: su copia no los incluye.
      2. Instantánea — A las 3:30, una instantánea del almacenamiento, para copiar un estado coherente aunque haya alguien jugando.
      3. Cifradas antes de salir — Cifrada igual que el resto.
      4. Proxmox Backup Server — Y al mismo servidor de copias, incremental.
      Cada domingo, una restauración de prueba
      1. Restaurar de verdad — Cada domingo se restaura un grupo de contenedores en contenedores nuevos, sin arrancarlos para que no choquen con los originales.
      2. Proxmox Backup Server — El servidor de copias entrega sus copias.
      3. Cifradas antes de salir — Se descifran con la clave.
      4. Mi gestor de contraseñas — La misma que guardo en mi gestor de contraseñas: si el servidor muriera, sin esa copia no habría nada que restaurar.
      5. Restaurar de verdad — Se comparan con los originales los ficheros que no han cambiado desde la copia, y los temporales se borran. La primera vez, 1.381 de 1.381 idénticos.
      6. Yo — El resumen llega al móvil; si algo falla, a la sala de incidencias. Ya no espero que sirva: lo sé cada semana.
      Hago un commit
      1. Mi portátil — Cambio algo en la infraestructura.
      2. Forgejo, el origen — Commit, y push a Forgejo, el origen.
      3. Hook post-commit — El hook se dispara solo.
      4. Repositorio de respaldo — Empuja al repositorio de respaldo, en otro disco.
      5. Usuario solo Git — Con un usuario que solo puede hacer Git.
      6. Repositorio de respaldo — Y el respaldo queda al día, sin que yo haga nada.
      Un cambio delicado
      1. Copias fechadas — Voy a cambiar el cortafuegos del hipervisor. Ansible guarda copia de lo que sustituye.
      2. Instantánea — Y una instantánea del contenedor, si es una actualización.
      3. Script de reversión — Se guarda el script que lo deja todo como estaba.
      4. Reversión programada — Arranca un temporizador de 5 minutos.
      5. Script de reversión — Si me quedo fuera, se revierte solo. Si todo va bien, lo cancelo.
      La documentación
      1. Copia de la documentación — Las notas se copian solas cada 10 minutos.
      2. Repositorio privado en GitHub — Al repositorio privado.
      3. Fecha del último commit — Pero un día el último commit tenía 13 días.
      4. Yo — Lo descubrí mirando la fecha, no porque avisara nada.
      5. Copia de la documentación — Ahora es lo primero que miro.
      1. Mi portátil

        Edito el repositorio desde aquí o desde el nodo de control.

      2. Forgejo, el origen

        Donde se trabaja: el origen del repositorio, con CI. Tiene su unidad.

        • Git
      3. Repositorio privado en GitHub

        Donde se empuja la documentación, fuera de casa.

        • Git
      4. Mi gestor de contraseñas

        Guarda una copia de la clave de cifrado de las copias. Sin ella no se restaura nada, y está fuera del servidor.

      5. Yo

        Quien decide qué entra, qué no y qué falta.

      6. Element

        La sala de incidencias: solo llegan los fallos.

      7. El disco de las copias

        Un disco de 4,5 TB solo para esto. Si no está montado, el servidor de copias no arranca: nunca escribe en el disco del sistema.

      8. Hook post-commit

        Versionado en el propio repositorio: cada commit se empuja solo al respaldo, en segundo plano.

        • Git
      9. Repositorio de respaldo

        Un repositorio desnudo en un contenedor diminuto, en otro disco que el de trabajo.

        • Git
        • Linux (Debian, Alpine, Arch)
      10. Usuario solo Git

        El usuario del respaldo solo puede hacer push y pull: ni una shell. Con su propia clave.

        • Linux / SSH hardening
        • Linux (Debian, Alpine, Arch)
      11. Copia de la documentación

        El vault de notas se empuja cada 10 minutos. Tiene su propia unidad.

        • Git
      12. Script de reversión

        Antes de un cambio delicado se guarda el estado y un script que lo deja todo como estaba.

        • Linux (Debian, Alpine, Arch)
      13. Reversión programada

        Si el cambio me deja fuera, a los 5 minutos se deshace solo. Si todo va bien, cancelo el temporizador.

        • Linux (Debian, Alpine, Arch)
      14. Copias fechadas

        Ansible deja una copia fechada de cada fichero que sustituye.

        • Ansible
      15. Instantánea

        Una foto fija del disco antes de un cambio o de una copia, para copiar un estado coherente. Se borra después.

        • Proxmox VE
      16. Proxmox Backup Server

        En su propio contenedor. Recibe cada noche la copia de todos los contenedores, incremental y con deduplicación: solo viaja lo que cambió.

        • Proxmox Backup Server
        • LXC
      17. Cifradas antes de salir

        El servidor principal las cifra antes de enviarlas. Quien se llevara el disco de copias no podría leer nada.

        • Proxmox Backup Server
        • Linux / SSH hardening
      18. Quien copia no borra

        El servidor principal entra con un permiso que deja copiar y restaurar, pero no borrar. Solo el servidor de copias poda: 7 diarias, 4 semanales y 6 mensuales.

        • Proxmox Backup Server
        • Linux / SSH hardening
      19. Los mundos de los juegos

        Viven fuera del contenedor del panel de juegos, así que no entran en su copia. Tienen la suya, a las 3:30.

        • ZFS
        • Proxmox Backup Server
      20. Verificación semanal

        Cada domingo, el servidor de copias relee cada copia y comprueba que está entera.

        • Proxmox Backup Server
      21. Fecha del último commit

        La forma más simple de saber si una copia de Git sigue viva.

        • Git
      22. Restaurar de verdad

        La única prueba de que una copia sirve, y es automática: cada domingo se restaura un grupo de contenedores aparte y se compara fichero a fichero. Cada contenedor pasa una vez al mes.

        • Proxmox VE
        • Proxmox Backup Server
      23. Avisos de fallos

        Si una copia falla, Proxmox avisa en la sala de incidencias. Si todo va bien, silencio.

        • Proxmox VE

      Lo que uso de mi árbol

      Pulsa una habilidad: se encienden en el mapa las piezas donde la uso y te cuento para qué.

      Ansible
      Los roles que montan el servidor de copias y el respaldo, y las copias fechadas que deja cada vez que sustituye un fichero.
      Proxmox VE
      La tarea nocturna, las instantáneas, la restauración y los avisos de fallos.
      LXC
      El servidor de copias y el respaldo del código viven cada uno en su contenedor.
      ZFS
      Instantáneas para copiar los mundos de los juegos en un estado coherente. Y el RAID, que aguanta un disco muerto, no es una copia.
      Proxmox Backup Server
      Copias nocturnas incrementales de todos los contenedores, cifradas en el origen, poda y verificación en el propio servidor de copias y un permiso que no deja borrar.
      Git
      Hook versionado que empuja cada commit a un segundo repositorio, y la documentación a un repositorio privado.
      Linux (Debian, Alpine, Arch)
      Usuario con git-shell, scripts de reversión con temporizador y una carpeta de copias que solo puede leer su servicio.
      Linux / SSH hardening
      Copias cifradas, un permiso que no deja borrar y un usuario de respaldo que solo puede hacer Git.

      Bitácora de incidencias

      Averías reales. Lee el síntoma, elige la causa que creas y mira cómo se arregló.

      1. #1

        Un permiso que no bastaba

        15-10-2026 · copias

        El token con el que el servidor principal entra en el de copias tenía su permiso de copia sobre el almacén. Aun así, Proxmox decía que el almacén no existía.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        En el servidor de copias, los permisos efectivos de un token son la intersección de los suyos y los de su usuario. El usuario no tenía ninguno, así que el token tampoco, y el error lo presentaba como un almacén inexistente.
        Solución
        Dar el mismo permiso, solo de copia, al usuario y al token. Sigue sin poder borrar.
        Lección
        Un «no existe» puede querer decir «no lo puedes ver». Ante un error de algo que sí existe, mirar primero los permisos.
      2. #2

        158 GB que no iban en ninguna copia

        15-10-2026 · copias

        Al repasar qué entraba en las copias, los mundos de los juegos no aparecían en la del contenedor de juegos, aunque desde dentro se ven como una carpeta más.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        Los mundos viven en el almacenamiento del servidor y se montan dentro del contenedor. Proxmox copia el disco del contenedor, no lo montado.
        Solución
        Una copia aparte de ese almacenamiento, con una instantánea para que el estado sea coherente, cifrada y al mismo servidor de copias. Y una regla escrita: si algún contenedor guarda algo irrecuperable en un montaje, se añade a esa lista.
        Lección
        «Está dentro del contenedor» no es lo mismo que «está en la copia del contenedor». Hay que mirar de dónde viene cada carpeta.
      3. #3

        Un respaldo en el mismo disco

        17-09-2026 · código

        La infraestructura tenía su «copia»: un repositorio desnudo al lado del de trabajo.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        Las dos copias vivían en el mismo disco del mismo PC. Y el portátil solo sincronizaba a mano y con VPN.
        Solución
        Un segundo repositorio en un contenedor propio del servidor, con un usuario que solo puede hacer Git, y un hook versionado que empuja cada commit solo.
        Lección
        Una copia en el mismo sitio que el original no protege de lo que más importa. Hay que preguntarse qué la destruiría junto al original.
      4. #4

        Ansible no podía crear el respaldo

        17-09-2026 · Alpine

        El rol del respaldo fallaba en el contenedor: primero al dar el grupo a la carpeta de claves, luego con «sudo: not found».

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        El contenedor es un Alpine mínimo: al crear un usuario no crea su grupo y no hay sudo para cambiar de usuario.
        Solución
        Crear el grupo de forma explícita y crear el repositorio como root, corrigiendo después el dueño con el módulo de ficheros.
        Lección
        Un rol escrito para Debian no es un rol para cualquier Linux. Las suposiciones del sistema hay que escribirlas.
      5. #5

        «Tengo RAID, tengo copia»

        06-09-2026 · decisión

        Todos los datos importantes están en espejo o en RAIDZ. ¿Para qué más?

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        El RAID protege de que muera un disco. Cualquier otra cosa (un comando equivocado, un fichero corrupto, un ransomware) llega a todos los discos a la vez.
        Solución
        Durante semanas quedó escrito como pendiente, sin esconderlo. El 15-10, copias cada noche en Proxmox Backup Server, cifradas, que el servidor principal no puede borrar, y una restauración de prueba.
        Lección
        Es mejor un hueco reconocido que una falsa sensación de seguridad. Y cuando se resolvió, la prueba fue una restauración, no un fichero.
      6. #6

        La prueba del domingo falló en todos los contenedores

        18-10-2026 · copias

        La restauración de prueba falló en los siete contenedores del grupo y en los mundos de los juegos, todos con «Permission denied». El día antes iba bien.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        Esa mañana, un despliegue del gestor de descargas cambió el dueño de todo lo que había en los discos de medios, como hace siempre. Las copias viven en una carpeta de uno de esos discos: sus 96.672 trozos pasaron a otro usuario y el servidor de copias ya no podía leerlos. Las copias estaban intactas.
        Solución
        Devolver el dueño a la carpeta de las copias y repetir la prueba. Para que no vuelva: el rol salta las carpetas que no son medios y solo toca los ficheros con otro dueño, que además es mucho más rápido.
        Lección
        La prueba semanal lo encontró el mismo día. Sin ella, lo habría descubierto el día que necesitara una copia.

      Contado entero en un artículo:

      Cómo se construyó

      1. Septiembre de 2026

        Reversiones

        • Cada cambio de seguridad con su script de vuelta atrás y un temporizador de 5 minutos.
        • Copias de las cuentas del panel de juegos, y su arreglo cuando resultaron vacías.
      2. 17-09-2026

        Respaldo del código

        • Segundo repositorio en un contenedor propio, con un usuario solo de Git.
        • Hook versionado que empuja cada commit solo.
      3. 15-10-2026

        Copias de verdad

        • Proxmox Backup Server en su contenedor, con un disco solo para él.
        • Todos los contenedores cada noche y los mundos de los juegos aparte, cifrados y con poda que solo hace el servidor de copias.
        • Verificación semanal, avisos solo de fallos y una restauración de prueba comparada fichero a fichero.
        • Las copias sueltas de antes y unas viejas sin cifrar, fuera.
      4. 15 al 18-10-2026

        Restaurar cada semana

        • Prueba de restauración automática cada domingo, con resumen en el móvil.
        • Su primer fallo de verdad, detectado el mismo día: lo contó la prueba, no una emergencia.
        • Los mundos de los juegos se comprueban montando la copia y leyendo solo lo necesario: segundos en vez de horas.

      Decisiones (y por qué)

      • Qué se copia

        Todo lo que no se puede volver a bajar

        Todos los contenedores, también los de documentos, y los mundos de los juegos. Fuera las películas, las series y los juegos de Steam (decenas de terabytes que se vuelven a bajar) y el clúster de laboratorio, que se reconstruye desde código.

      • Cifrar

        En el servidor, antes de que salgan

        El disco de copias puede perderse o llevárselo alguien. La clave tiene una copia en mi gestor de contraseñas: sin ella no se restaura nada, ni siquiera yo.

      • Quién puede borrar

        Solo el servidor de copias

        Si alguien se hiciera con el servidor principal, lo primero que intentaría sería borrar las copias. Con un permiso que solo deja copiar y restaurar, no puede.

      • Dónde

        En casa, de momento

        Un disco en el mismo servidor protege de borrados, corrupción y discos que mueren, que es lo que ha pasado de verdad. No protege de un robo o un incendio. Está escrito como el siguiente paso.

      • Cómo se cuenta lo que falta

        Por escrito

        Un estado en rojo en la documentación evitó durante semanas que nadie, yo incluido, creyera que había algo que no había. Ahora lo que está en rojo es la copia fuera de casa.

      Lo que aprendí

      • Una copia que no se ha restaurado nunca es una esperanza.
      • RAID no es copia, y lo montado desde fuera no va en la copia del contenedor.
      • Lo que falta se escribe como falta, también cuando ya casi no falta nada.

      Lo siguiente

      • Una copia fuera de casa: un disco que se rota o un segundo servidor de copias en otro sitio.
      • Un SAI, para que los cortes de luz dejen de ser la causa de la mitad de los problemas.

      ¿Hablamos?

      Puedo contar cualquiera de estas decisiones en detalle en una entrevista.

      Descargar CV Contactar ← Volver al rack

      Reconstrucción a partir de mi documentación: sin direcciones, rutas ni nombres internos. Lo que falta está escrito como falta.