[{"data":1,"prerenderedAt":190},["ShallowReactive",2],{"seo-verification":3,"blog-copias-de-seguridad-vps-con-restic-ma-es":6,"promo-bar-likely":189},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-copias-de-seguridad-vps-con-restic-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":130,"ctaBody":131,"ctaButton":132,"ctaUrl":133,"relatedPosts":134},113,"copias-de-seguridad-vps-con-restic",{"fr":12,"en":13,"ar":14,"es":10},"sauvegardes-restic-vps","automate-your-vps-backups-with-restic","أتمتة-نسخ-خادمك-vps-الاحتياطية-باستخدام-restic","Automatizar las copias de seguridad de su VPS con Restic","Automatice las copias de seguridad de su VPS con Restic: snapshots cifrados, deduplicación y envío a S3 o a cualquier backend de objetos.",11,0,false,"2026-02-27T00:00:00+00:00","2026-11-08T01:13:12+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fsauvegardes-restic-vps-poster.svg","Una copia de seguridad que no se prueba ni se cifra no vale nada el día de un incidente. Restic combina snapshots incrementales, deduplicación y cifrado de extremo a extremo en un único binario. En su VPS se convierte en la red de seguridad automatizada de sus datos, enviados a un almacenamiento de objetos remoto a bajo costo.",[35,39,49,52,59,62,90,118,122,125,128],{"type":36,"title":37,"body":38},"h2","Por qué automatizar sus copias de seguridad con Restic","Un VPS aloja a menudo datos irreemplazables: bases de datos, volúmenes Docker, ficheros de configuración. Restic responde a tres exigencias clave de una buena estrategia: el cifrado (AES-256, el repositorio es inutilizable sin la contraseña), la deduplicación (los bloques idénticos solo se almacenan una vez, lo que reduce drásticamente el volumen y el costo) y el soporte de backends variados (S3, Backblaze B2, SFTP, almacenamiento local). Autoalojar Restic en el VPS en lugar de depender de un servicio de backup gestionado le da el control total del cifrado: la clave permanece en su poder y el proveedor de almacenamiento solo ve blobs opacos. Es la base de una estrategia 3-2-1 seria.",{"type":40,"title":41,"items":42},"ul","Lo que Restic le aporta",[43,44,45,46,47,48],"Cifrado AES-256 del lado del cliente: el backend de almacenamiento solo ve datos ilegibles.","Deduplicación por bloques que reduce mucho el tamaño y el costo de las copias sucesivas.","Snapshots incrementales rápidos: solo se transfieren los bloques nuevos en cada ejecución.","Múltiples backends (S3, Backblaze B2, SFTP, rest-server, local) sin cambiar de flujo de trabajo.","Restauración granular: un fichero, una carpeta o un snapshot completo mediante `restic restore`.","Política de retención automatizada con `forget --prune` (conservar N diarios, M semanales...).",{"type":36,"title":50,"body":51},"La regla 3-2-1: por qué un snapshot del proveedor no basta","Activar los snapshots de su proveedor de VPS es útil, pero no es una estrategia de copias de seguridad: es una única copia adicional, en el mismo proveedor, que comparte la suerte de su VM. Tres escenarios lo demuestran. Si la VM se elimina (un error de manipulación, un impago, una rescisión), sus snapshots suelen desaparecer con ella. Si un atacante toma el control de su cuenta en el proveedor, borra VM y snapshots en unos clics o mediante la API. Y un snapshot nunca se restaura a modo de prueba: una base de datos congelada en plena escritura puede resultar inservible el día en que la necesite.\n\nLa regla 3-2-1 responde a estos tres riesgos: **tres** copias de los datos, en **dos** soportes distintos, **una** de ellas fuera del proveedor y cifrada antes de salir del servidor. Restic construye precisamente ese último eslabón, el único que sobrevive a la pérdida completa de la cuenta del proveedor.",{"type":40,"title":53,"items":54},"Las tres copias de una estrategia 3-2-1 en un VPS",[55,56,57,58],"**Copia 1, los datos vivos** en el disco del VPS: es el original y la fuente de las restauraciones más rápidas.","**Copia 2, los snapshots del proveedor**: cubren una actualización fallida o un error de configuración, devolviendo toda la máquina a un estado anterior.","**Copia 3, el repositorio Restic en otro proveedor** de almacenamiento de objetos: cifrado del lado del cliente, queda fuera del alcance del panel de su proveedor.","**Dos soportes realmente separados**: el disco del VPS por un lado, el almacenamiento de objetos de un tercero por otro, con credenciales distintas.",{"type":36,"title":60,"body":61},"Requisitos previos para este despliegue","Restic es frugal: funciona en cualquier VPS, incluso con 1 vCPU y 1 GB de RAM, ya que la deduplicación consume un poco de memoria en proporción al tamaño del repositorio. Necesita el binario `restic`, un backend de destino remoto (un bucket compatible con S3 en un proveedor, u otro servidor por SFTP) y sus credenciales. Aquí no hace falta Docker: Restic es una herramienta de línea de comandos.\n\nCompruebe la versión que ofrece su distribución: Debian 13 y Ubuntu 26.04 incluyen la 0.18, pero Ubuntu 24.04 va por la 0.16.4 y Debian 12 por la 0.14.0, demasiado antigua para la opción `--stdin-from-command` que se usa más abajo (aparecida en la 0.17.0). En ese caso, instale el binario oficial desde la \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frestic\u002Frestic\u002Freleases\">página de releases\u003C\u002Fa> (0.19.1, publicada el 5 de julio de 2026): solo estos binarios oficiales incluyen el comando `restic self-update`, mientras que un paquete de distribución se actualiza con `apt`. Prevea por último un timer de systemd (o `cron`) para la automatización y un lugar seguro fuera del VPS para guardar la contraseña del repositorio.",{"type":63,"title":64,"headers":65,"rows":69},"comparison","Backblaze B2 o Cloudflare R2: elegir el backend S3",[66,67,68],"Criterio","Backblaze B2","Cloudflare R2",[70,74,78,82,86],[71,72,73],"Almacenamiento gratuito","Los primeros 10 GB","10 GB-mes al mes (clase Standard)",[75,76,77],"Salida de datos (egress)","Gratuita hasta 3 veces el volumen almacenado de media en el mes, y sin límite hacia las CDN asociadas (Cloudflare, Fastly)","Gratuita, sin tope",[79,80,81],"Endpoint S3","Propio de la región de la cuenta, por ejemplo `s3.us-west-004.backblazeb2.com`","`\u003Caccount-id>.r2.cloudflarestorage.com`, región `auto`",[83,84,85],"Claves de acceso","Una Application Key dedicada: la API S3 rechaza la clave maestra","Un token de API de R2 con permisos de lectura y escritura sobre los objetos",[87,88,89],"Punto de atención","Una restauración completa y frecuente puede superar la cuota de salida gratuita","Las pruebas de restauración periódicas no añaden coste de salida",{"type":91,"title":92,"steps":93},"steps","Configurar copias de seguridad Restic automatizadas",[94,97,100,103,106,109,112,115],{"title":95,"body":96},"Instalar Restic y preparar el archivo de entorno","Instale `restic` (paquete reciente o binario oficial, vea los requisitos) y cree después `\u002Froot\u002F.restic-env`. Escríbalo en líneas simples `CLAVE=valor`, **sin** `export`: es el formato que lee la directiva `EnvironmentFile=` de systemd, y también se carga en un shell. Con Restic, B2 se usa preferentemente a través de su API compatible con S3:\n\n```bash\n# \u002Froot\u002F.restic-env  (Backblaze B2, S3 API)\nRESTIC_REPOSITORY=s3:https:\u002F\u002Fs3.us-west-004.backblazeb2.com\u002Fmy-bucket\nRESTIC_PASSWORD=change-me\nAWS_ACCESS_KEY_ID=b2-key-id\nAWS_SECRET_ACCESS_KEY=b2-application-key\n\n# Cloudflare R2\n# RESTIC_REPOSITORY=s3:https:\u002F\u002F\u003Caccount-id>.r2.cloudflarestorage.com\u002Fmy-bucket\n```\n\nRestrinja los permisos del archivo y cárguelo en su sesión:\n\n```bash\nchmod 600 \u002Froot\u002F.restic-env\nset -a; . \u002Froot\u002F.restic-env; set +a\n```",{"title":98,"body":99},"Inicializar el repositorio cifrado","```bash\nrestic init\n```\n\nEste comando crea la estructura del repositorio y sella el cifrado con su contraseña; los repositorios recientes (formato 2, desde Restic 0.14.0) también comprimen los datos. Guarde esa contraseña **fuera del VPS**, en un gestor de contraseñas o en una bóveda en otra máquina: sin ella no es posible ninguna restauración, aunque disponga del bucket completo.",{"title":101,"body":102},"Lanzar una primera copia de seguridad","Respalde sus directorios críticos y después sus bases de datos. Para un volcado, prefiera `--stdin-from-command` a una tubería `pg_dump | restic backup --stdin`: Restic no puede saber si un flujo leído por la entrada estándar está completo, y un volcado que falle a mitad produciría un snapshot truncado sin ningún error. Con `--stdin-from-command`, un código de salida distinto de cero del comando cancela la copia y no se crea ningún snapshot.\n\n```bash\nrestic backup \u002Fetc \u002Fvar\u002Fwww \u002Fopt\u002Fdocker-data\nrestic backup --stdin-filename mydb.sql --stdin-from-command -- pg_dump -U postgres mydb\nrestic snapshots\n```",{"title":104,"body":105},"Definir una política de retención","```bash\nrestic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune\n```\n\nSiete diarias cubren una semana entera, lo suficiente para detectar una corrupción que solo se manifiesta al cabo de unos días. Cuatro semanales abren una ventana de un mes para un problema de aplicación lento, como datos que desaparecen poco a poco. Seis mensuales permiten volver a un estado anterior a una migración fallida. La pasada `--prune` es imprescindible: `forget` por sí solo retira los snapshots de la lista sin liberar espacio, y la factura de almacenamiento sigue creciendo.",{"title":107,"body":108},"Verificar la integridad: check y después read-data","Estos comandos no comprueban lo mismo:\n\n```bash\nrestic check\nrestic check --read-data-subset=10%\nrestic check --read-data\n```\n\n`restic check` valida la estructura del repositorio (snapshots, árboles, índices, packs) sin leer el contenido de los archivos de datos: es rápido y se lanza tras cada `forget --prune`. `--read-data` descarga y verifica todos los packs, lo que lleva tiempo y consume ancho de banda de salida. Entre ambos, `--read-data-subset` comprueba una parte aleatoria (`10%`, o un tamaño como `5G`) o un tramo fijo (de `1\u002F5` a `5\u002F5`, para cubrirlo todo en cinco pasadas). Una verificación parcial cada semana y una completa una vez al mes es un buen compromiso.",{"title":110,"body":111},"Escribir el script de copia y su servicio systemd","Agrupe los pasos en un script. Primero escribe un archivo centinela con marca de tiempo, que servirá para la prueba de restauración, y se detiene en el primer error gracias a `set -eu`:\n\n```bash\n#!\u002Fbin\u002Fsh\n# \u002Fusr\u002Flocal\u002Fbin\u002Frestic-backup.sh\nset -eu\ndate +%s > \u002Fopt\u002Frestic-sentinel.txt\nrestic backup \u002Fetc \u002Fvar\u002Fwww \u002Fopt\u002Fdocker-data \u002Fopt\u002Frestic-sentinel.txt\nrestic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune\nrestic check\n```\n\nEl servicio lo ejecuta con las variables del archivo de entorno, sin que ningún secreto aparezca en la definición de la unidad:\n\n```bash\n# \u002Fetc\u002Fsystemd\u002Fsystem\u002Frestic-backup.service\n[Unit]\nDescription=Restic backup\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=oneshot\nEnvironmentFile=\u002Froot\u002F.restic-env\nExecStart=\u002Fusr\u002Flocal\u002Fbin\u002Frestic-backup.sh\n```",{"title":113,"body":114},"Planificar con un timer de systemd","El timer lanza el servicio cada noche. `Persistent=true` recupera una ejecución perdida si el VPS estaba apagado a la hora prevista, y `RandomizedDelaySec=900` reparte el arranque en quince minutos, algo útil cuando varios servidores apuntan al mismo bucket:\n\n```bash\n# \u002Fetc\u002Fsystemd\u002Fsystem\u002Frestic-backup.timer\n[Unit]\nDescription=Daily restic backup\n\n[Timer]\nOnCalendar=*-*-* 03:00:00\nPersistent=true\nRandomizedDelaySec=900\n\n[Install]\nWantedBy=timers.target\n```\n\nActívelo y compruebe después la próxima ejecución y los registros de la última:\n\n```bash\nchmod 700 \u002Fusr\u002Flocal\u002Fbin\u002Frestic-backup.sh\nsystemctl daemon-reload\nsystemctl enable --now restic-backup.timer\nsystemctl list-timers restic-backup.timer\njournalctl -u restic-backup.service --since today\n```\n\nSi prefiere `cron`, una línea `0 3 * * *` que cargue el archivo de entorno y llame al mismo script cumple la función, sin la recuperación que ofrece `Persistent=`.",{"title":116,"body":117},"Automatizar la prueba de restauración","Una copia que nunca se ha restaurado sigue siendo una hipótesis. Este segundo script restaura únicamente el archivo centinela del último snapshot y lo compara con el original: si la copia de la noche falló o si el repositorio ya no devuelve nada, `cmp` falla y el servicio pasa al estado `failed`. La prueba apunta al snapshot más reciente: si añade volcados `--stdin-from-command` al script de copia, colóquelos antes de la copia de los archivos, que debe seguir siendo la última.\n\n```bash\n#!\u002Fbin\u002Fsh\n# \u002Fusr\u002Flocal\u002Fbin\u002Frestic-restore-test.sh\nset -eu\nrm -rf \u002Ftmp\u002Frestic-test-restore\nrestic restore latest --target \u002Ftmp\u002Frestic-test-restore --include \u002Fopt\u002Frestic-sentinel.txt\ncmp \u002Ftmp\u002Frestic-test-restore\u002Fopt\u002Frestic-sentinel.txt \u002Fopt\u002Frestic-sentinel.txt\n```\n\nPlanifíquelo cada semana, después de la copia nocturna:\n\n```bash\n# \u002Fetc\u002Fsystemd\u002Fsystem\u002Frestic-restore-test.service\n[Service]\nType=oneshot\nEnvironmentFile=\u002Froot\u002F.restic-env\nExecStart=\u002Fusr\u002Flocal\u002Fbin\u002Frestic-restore-test.sh\n\n# \u002Fetc\u002Fsystemd\u002Fsystem\u002Frestic-restore-test.timer\n[Timer]\nOnCalendar=Sun 05:00:00\nPersistent=true\n\n[Install]\nWantedBy=timers.target\n```\n\nActive el timer con `systemctl enable --now restic-restore-test.timer` y conecte el estado `failed` de ambos servicios a su supervisión. Una vez por trimestre, restaure además un directorio real, base de datos incluida, en una máquina de pruebas.",{"type":119,"title":120,"body":121},"tip","Secretos de Restic: un archivo aislado, nunca escritos en la unidad","No coloque nunca `RESTIC_PASSWORD` ni las claves S3 en una línea `Environment=` de una unidad systemd, en un script versionado o en un Dockerfile: las variables declaradas en la unidad pueden leerse con `systemctl show`. El archivo `\u002Froot\u002F.restic-env` con `chmod 600`, cargado por `EnvironmentFile=`, mantiene los secretos fuera de la definición de la unidad. Para ir más lejos, la directiva `LoadCredential=` de systemd expone un secreto en un directorio reservado al servicio (`$CREDENTIALS_DIRECTORY`): Restic lee entonces su contraseña mediante `RESTIC_PASSWORD_FILE`.",{"type":36,"title":123,"body":124},"Solución de problemas: errores frecuentes","**`restic init` o el primer `backup` falla sobre el bucket.** Compruebe primero que las variables están cargadas (`echo $RESTIC_REPOSITORY`) y después el endpoint: en B2 debe corresponder a la región de su cuenta, y el endpoint de AWS (`s3.amazonaws.com`) es un error frecuente. Una Application Key de B2 restringida a un solo bucket también necesita el permiso `listAllBucketNames` para funcionar con las herramientas S3, y la clave maestra de la cuenta no sirve con la API S3. En R2, el token debe tener permisos de lectura y escritura sobre los objetos del bucket.\n\n**El timer no se dispara.** Bastan tres comandos: `systemctl status restic-backup.timer` (activo o no), `systemctl list-timers --all | grep restic` (próxima ejecución), `journalctl -u restic-backup.service --since today` (registro de la última ejecución). Para validar una expresión `OnCalendar`, `systemd-analyze calendar '*-*-* 03:00:00'` debe mostrar la próxima fecha de disparo.\n\n**El repositorio sigue bloqueado.** Una copia interrumpida (reinicio, corte de red) puede dejar un bloqueo: `restic list locks` lo muestra y `restic unlock` elimina los bloqueos caducados. Asegúrese antes de que no haya ninguna otra operación de Restic en curso.\n\n**`restic check --read-data` demasiado largo.** En un repositorio de varias decenas de GB, la lectura completa tarda horas y pesa sobre la cuota de salida. Pase a `--read-data-subset=10%` o a un tramo `1\u002F4` cada semana, y reserve la lectura completa para un mantenimiento mensual.",{"type":36,"title":126,"body":127},"Plan de recuperación: ¿cuánto se tarda en restaurarlo todo?","La duración de una restauración completa depende del volumen del repositorio, del ancho de banda entre el VPS y el bucket y de la política de salida del proveedor. En R2 la salida es gratuita: nada obliga a escalonar una restauración. En B2 es gratuita hasta tres veces el volumen almacenado de media en el mes; por encima, una restauración completa de un repositorio grande se factura.\n\nNo adivine ese tiempo: mídalo. `restic stats` da el tamaño del repositorio; restaure después un directorio significativo (`restic restore latest --target \u002Ftmp\u002Ftest --include \u002Fetc`) y cronometre la operación para extrapolar. Dos prácticas acortan la recuperación: respaldar solo lo que importa (ni cachés, ni registros, ni `\u002Ftmp`, ni volúmenes Docker abandonados) y anotar en su procedimiento el orden de puesta en servicio, primero las bases de datos y después las aplicaciones que dependen de ellas.",{"type":119,"body":129},"Proteja sus copias de seguridad frente al ransomware activando el modo «append-only» del lado del backend: despliegue un `rest-server` remoto con la opción `--append-only`, o utilice un bucket S3 con una política IAM que prohíba las eliminaciones. Así, aunque su VPS quede comprometido y el atacante obtenga las credenciales, no podrá borrar ni cifrar sus snapshots existentes. Combine esto con una ejecución de `restic forget --prune` desde una máquina distinta que sí disponga de permisos de eliminación.","Proteja sus datos desde el primer día","En un VPS Cloud ServOrbit con plantilla preconfigurada, instala Restic en unos pocos comandos y programa copias de seguridad cifradas hacia el almacenamiento de objetos que elija.","Desplegar mi VPS de copias de seguridad","\u002Fvps-cloud",[135,153,171],{"id":136,"slug":137,"slugs":138,"title":142,"excerpt":143,"readTime":23,"views":18,"isPinned":19,"noindex":19,"publishedAt":144,"updatedAt":145,"category":146,"categories":147,"featuredImage":30,"bgImage":31,"posterImage":149,"relatedSolution":150},105,"supervisar-vps-con-uptime-kuma",{"fr":139,"en":140,"ar":141,"es":137},"superviser-vps-uptime-kuma","monitoring-your-vps-with-uptime-kuma","مراقبة-خادمك-الافتراضي-vps-باستخدام-uptime-kuma","Supervisar su VPS con Uptime Kuma","Despliegue Uptime Kuma en su VPS para supervisar sus sitios y servicios en self-hosted, con alertas y página de estado pública.","2026-03-07T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[148],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsuperviser-vps-uptime-kuma-poster.svg",{"categorySlug":151,"appSlug":152},"monitorizacion-observabilidad","uptime-kuma",{"id":154,"slug":155,"slugs":156,"title":160,"excerpt":161,"readTime":17,"views":162,"isPinned":19,"noindex":19,"publishedAt":163,"updatedAt":164,"category":165,"categories":166,"featuredImage":30,"bgImage":31,"posterImage":168,"relatedSolution":169},106,"monitorizacion-vps-grafana-prometheus",{"fr":157,"en":158,"ar":159,"es":155},"monitoring-vps-grafana-prometheus","vps-monitoring-with-grafana-and-prometheus","مراقبة-الخادم-الافتراضي-vps-باستخدام-grafana-و-prometheus","Monitorización de VPS con Grafana y Prometheus","Despliegue Prometheus 3.x, Grafana 13.x, Node Exporter y Alertmanager en su VPS con Docker Compose. Paneles, alertas y bastionado.",1,"2026-03-06T00:00:00+00:00","2026-10-05T14:05:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[167],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fmonitoring-vps-grafana-prometheus-poster.svg",{"categorySlug":151,"appSlug":170},"grafana",{"id":172,"slug":173,"slugs":174,"title":178,"excerpt":179,"readTime":180,"views":162,"isPinned":19,"noindex":19,"publishedAt":181,"updatedAt":182,"category":183,"categories":184,"featuredImage":30,"bgImage":31,"posterImage":186,"relatedSolution":187},107,"monitorizar-vps-en-tiempo-real-con-netdata",{"fr":175,"en":176,"ar":177,"es":173},"monitorer-vps-netdata","monitor-your-vps-in-real-time-with-netdata","راقب-خادمك-الافتراضي-vps-في-الوقت-الفعلي-باستخدام-netdata","Monitorizar su VPS en tiempo real con Netdata","Instale Netdata en su VPS para una monitorización en tiempo real por segundo: miles de métricas, cero configuración y alertas incluidas.",3,"2026-03-05T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[185],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fmonitorer-vps-netdata-poster.svg",{"categorySlug":151,"appSlug":188},"netdata",true,1794270577974]