Respuesta rápida
Restic: ¿servidor REST o SFTP para hacer copias de seguridad en un VPS?
Para copias de seguridad de restic en un VPS, usa rest-server cuando los clientes no deban borrar snapshots: su modo --append-only rechaza las eliminaciones y --private-repos mantiene a cada usuario en su propia carpeta. Usa SFTP cuando haga copias de seguridad una sola máquina de confianza y no quieras nada más que SSH. En un VPS de almacenamiento Coffervale, 1 TB cuesta $1.66 al mes con 12 meses (2 November 2026).
¿Cuál es la diferencia entre el servidor REST de restic y los backends SFTP?
| Característica | SFTP | rest-server |
|---|---|---|
| Software en el VPS | OpenSSH, ya instalado | rest-server (paquete de Debian 13 restic-rest-server, o la imagen Docker restic/rest-server) |
| Transporte | SSH | HTTP o HTTPS, puerto 8000 por defecto |
| Inicio de sesión | Claves SSH por cuenta Unix | Usuario y contraseña HTTP desde un archivo htpasswd (bcrypt o SHA) |
| El cliente puede eliminar instantáneas antiguas | Sí | No, con --append-only |
| Usuarios separados | Cuentas Unix y permisos de carpetas | --private-repos: cada usuario solo bajo /<user>/ |
| Estructura del repositorio en disco | Igual que un repositorio local | Igual que un repositorio local |
| Cifrado del repositorio | restic, siempre activado | restic, siempre activado |
¿Es rest-server más rápido que SFTP?
El proyecto rest-server dice que sí: comparado con SFTP, el backend REST rinde mejor y escala más. Su README da la razón: SFTP mueve los datos en bloques de 32 KiB como máximo y el servidor confirma cada paquete, mientras que REST envía archivos completos por HTTP. HTTP sin cifrar también elimina la sobrecarga de TLS, ya que restic cifra todo lo que envía; el README añade que HTTPS entonces sirve sobre todo para proteger el inicio de sesión. Esa es la afirmación del propio proyecto, no un benchmark que hayamos ejecutado. En un VPS de almacenamiento con discos duros, a menudo los discos y tu enlace de subida marcan el ritmo antes que el protocolo.
Del lado del cliente, SFTP tiene una molestia conocida: la documentación de restic señala que los servidores SFTP cierran las conexiones cuando no reciben nada durante un tiempo, algo que pueden provocar los escaneos largos de archivos sin cambios.
¿Cuándo es SFTP sin cifrar la mejor opción?
Cuando una máquina de confianza hace copia de seguridad en su propia cuenta y no quieres ningún servicio extra, ningún puerto extra ni nada nuevo que parchear. restic solo necesita restic -r sftp:user@host:/path init y una clave SSH sin petición de contraseña, ya que una copia automática no puede detenerse a pedirla. La debilidad es la que más importa frente al ransomware: quien controla el cliente también puede ejecutar restic forget --prune y eliminar todas las instantáneas, porque SFTP no tiene modo append-only.
Para evitar que cada cuenta SFTP pueda navegar por el resto del servidor, OpenSSH puede encerrarla en su propia carpeta sin shell:
Match User restic-laptop
ForceCommand internal-sftp
ChrootDirectory /srv/restic-sftp/%u
AllowTcpForwarding no
X11Forwarding nouseradd --no-create-home --home-dir /srv/restic-sftp/restic-laptop --shell /usr/sbin/nologin restic-laptop
install -d -m 755 -o root -g root /srv/restic-sftp/restic-laptop
install -d -m 700 -o restic-laptop -g restic-laptop /srv/restic-sftp/restic-laptop/repo
install -d -m 700 -o restic-laptop -g restic-laptop /srv/restic-sftp/restic-laptop/.ssh
echo 'ssh-ed25519 AAAA...client-key... laptop' > /srv/restic-sftp/restic-laptop/.ssh/authorized_keys
chown restic-laptop:restic-laptop /srv/restic-sftp/restic-laptop/.ssh/authorized_keys
chmod 600 /srv/restic-sftp/restic-laptop/.ssh/authorized_keys¿Cómo ejecuto rest-server con repositorios append-only y privados?
En Debian 13, instala restic-rest-server, apúntalo a una carpeta de datos fuera de /home y pasa --append-only --private-repos más TLS en su archivo de valores predeterminados. El servicio empaquetado se ejecuta como el usuario restic-rest-server, lee BACKUP_DIR, LISTEN y ARGS de /etc/default/restic-rest-server, se niega a arrancar hasta que BACKUP_DIR esté definido y oculta /home al demonio. Con --private-repos, el usuario laptop solo puede abrir repositorios bajo /laptop/, así varias personas pueden compartir un VPS de almacenamiento sin ver las instantáneas de los demás. Un certificado autofirmado basta, porque el cliente lo fija con --cacert.
apt install restic-rest-server apache2-utils openssl
install -d -m 750 -o restic-rest-server -g restic-rest-server /srv/restic
openssl req -x509 -newkey rsa:3072 -nodes -days 3650 \
-keyout /etc/restic-rest-server/key.pem -out /etc/restic-rest-server/cert.pem \
-subj '/CN=coffer-backup' -addext 'subjectAltName=IP:203.0.113.10'
chown root:restic-rest-server /etc/restic-rest-server/key.pem
chmod 640 /etc/restic-rest-server/key.pem
cat > /etc/default/restic-rest-server <<'EOF'
BACKUP_DIR=/srv/restic
LISTEN=:8000
ARGS="--htpasswd-file /etc/restic-rest-server/users.htpasswd --append-only --private-repos --tls --tls-cert /etc/restic-rest-server/cert.pem --tls-key /etc/restic-rest-server/key.pem"
EOF
htpasswd -B /etc/restic-rest-server/users.htpasswd laptop
chown root:restic-rest-server /etc/restic-rest-server/users.htpasswd
chmod 640 /etc/restic-rest-server/users.htpasswd
systemctl enable restic-rest-server
systemctl restart restic-rest-servermkdir -p ~/.config/restic
scp [email protected]:/etc/restic-rest-server/cert.pem ~/.config/restic/coffer.pem
cat > ~/.config/restic/coffer.env <<'EOF'
RESTIC_REPOSITORY=rest:https://203.0.113.10:8000/laptop/
RESTIC_REST_USERNAME=laptop
RESTIC_REST_PASSWORD=the-htpasswd-password
RESTIC_PASSWORD_FILE=/home/me/.config/restic/repo-password
RESTIC_CACERT=/home/me/.config/restic/coffer.pem
EOF
chmod 600 ~/.config/restic/coffer.env
set -a; . ~/.config/restic/coffer.env; set +a
restic init
restic backup ~/Documents ~/Pictures¿Cómo hago pruning de las instantáneas cuando rest-server es append-only?
Ejecuta forget --prune desde una máquina de administración de confianza sobre una ruta que no sea append-only, y escribe la política con --keep-within. rest-server guarda el repositorio con la misma estructura que un repositorio local, así que SFTP como root llega a esa misma carpeta y la contraseña del repositorio nunca tiene que teclearse en el VPS.
La parte de --keep-within importa. La documentación de restic describe a un atacante que añade instantáneas vacías a un repositorio append-only para que una política como una instantánea por semana descarte las reales; una política basada en el tiempo conserva tanto la basura como las instantáneas genuinas. Solo ayuda mientras el reloj del sistema sea correcto cuando se ejecuta forget, y no es motivo para saltarse antes un vistazo a restic snapshots.
restic -r sftp:[email protected]:/srv/restic/laptop snapshots
restic -r sftp:[email protected]:/srv/restic/laptop forget --keep-within 90d --prune
restic -r sftp:[email protected]:/srv/restic/laptop check --read-data-subset=5%¿Qué backend debería elegir?
Elige rest-server siempre que la máquina de la que haces copia de seguridad esté expuesta a internet; elige SFTP para una única máquina bien cuidada donde gane la simplicidad. Un destino append-only no puede ser vaciado por el atacante que cifra tu servidor, y esa sola propiedad pesa más que el demonio extra.
| Tu situación | Backend | Por qué |
|---|---|---|
| Un portátil o sobremesa, una cuenta | SFTP | Nada que instalar, ningún puerto nuevo |
| Servidores públicos que podrían ser hackeados | rest-server --append-only | Un cliente robado no puede eliminar el historial |
| Varias personas o máquinas en un mismo VPS | rest-server --private-repos | Cada inicio de sesión ve solo su propia carpeta |
| Solo HTTP o HTTPS permitidos hacia fuera de la red | rest-server | Funciona donde SSH está bloqueado |
| Ambos: clientes append-only, el admin hace pruning | rest-server para los clientes, SFTP como root para el admin | Misma carpeta, dos niveles de acceso |
¿Cuánto cuesta un destino de restic por TB?
Según la encuesta de Coffervale del 2 de noviembre de 2026, Backblaze B2, un object store que restic admite de forma nativa, costaba $6.95 por TB al mes, mientras que los planes de VPS de almacenamiento de proveedores que aceptan criptomonedas sin documento de identidad tenían una mediana de $4.00 por TB. Un object store no necesita ningún servidor que mantener, pero no ofrece ninguno de los dos backends que se tratan aquí; un VPS de almacenamiento ejecuta ambos. No hacemos copias de seguridad de tu servidor ni guardamos ninguna copia de tus datos en otro lugar, así que lo que está en un VPS de almacenamiento de Coffervale debe ser una de tus copias, nunca la única: el VPS es tu copia externa, como explica ¿Cómo uso un VPS para copias de seguridad externas?. Si prefieres usar Borg, sigue ¿Cómo configuro un servidor de copias de seguridad Borg en un VPS?; para cifrar el disco por debajo, consulta ¿Cómo monto y formateo el disco de almacenamiento en un VPS Linux?. Los planes y las condiciones están en ¿Cuánto cuesta un VPS de almacenamiento al mes?.
Preguntas sobre restic en un VPS
¿Está cifrado restic por SFTP?
Dos veces. restic cifra cada archivo que almacena con AES-256 y lo autentica con Poly1305-AES antes de subirlo, y SSH cifra la conexión. El VPS solo contiene texto cifrado.
¿rest-server necesita HTTPS si restic ya cifra los datos?
Sí, para el inicio de sesión. Sin TLS, el usuario y la contraseña de HTTP viajan por la red en texto claro, y cualquiera que los capture puede escribir en tu repositorio. Usa --tls, o mantén rest-server en localhost y accede a él mediante un túnel SSH.
¿Pueden rest-server y SFTP servir el mismo repositorio?
Sí. Ambos usan la misma estructura de carpetas que un repositorio local, así que los clientes pueden escribir a través de un rest-server en modo append-only mientras un administrador purga esa misma carpeta por SFTP.
¿En qué puerto escucha rest-server?
En el puerto 8000 en todas las direcciones por defecto. Ábrelo en el firewall solo a las direcciones que hacen copias de seguridad, o vincúlalo a una dirección privada como una interfaz WireGuard.
¿Qué versión de restic debería ejecutar?
La última versión el 2 de noviembre de 2026 era restic 0.19.1, del 5 de julio de 2026; Debian 13 incluye 0.18.0. El formato de repositorio versión 2, el predeterminado actual, necesita restic 0.14.0 o posterior en todas las máquinas que lo abran.
Fuentes (10)
- Rest Server README: por qué usarlo, modo append-only, repositorios privados, htpasswd, TLS — restic project (read 2026-11-02)
- Documentación de restic: Preparar un repositorio nuevo (SFTP, REST Server, B2) — restic project (read 2026-11-02)
- Documentación de restic: Eliminar snapshots de copia de seguridad, consideraciones de seguridad en modo append-only — restic project (read 2026-11-02)
- Documentación de restic: Scripting, variables de entorno — restic project (read 2026-11-02)
- Documentación de restic: referencias, cifrado del repositorio — restic project (read 2026-11-02)
- Versiones de restic (0.19.1 del 5 de julio de 2026) — restic project on GitHub (read 2026-11-02)
- Paquete de Debian trixie restic-rest-server 0.13.0-2: unidad de servicio y valores predeterminados — Debian (read 2026-11-02)
- Búsqueda de paquetes de Debian trixie: restic 0.18.0 — Debian (read 2026-11-02)
- sshd_config(5): Match, ChrootDirectory, ForceCommand — OpenBSD project (OpenSSH) (read 2026-11-02)
- Precios de B2 Cloud Storage backblaze.com/cloud-storage/pricing — Backblaze (read 2026-11-02)