Por qué autoalojar Syncthing en un VPS
Syncthing es una herramienta de sincronización de archivos descentralizada: cada dispositivo habla directamente con los demás, sin servidor central ni copia en casa de un proveedor. El problema del peer-to-peer puro es que sus máquinas no siempre están encendidas a la vez: su portátil está apagado cuando el equipo de la oficina quiere sincronizar. Un VPS resuelve exactamente eso: hace de nodo permanente disponible 24/7, presente en Internet con una IP pública estable, hacia el que convergen todos sus dispositivos. Los archivos viajan cifrados (TLS) y el VPS guarda una copia sincronizada que sirve además de copia de seguridad remota. A diferencia de un alojamiento compartido, un VPS permite abrir los puertos de transferencia y mantener un demonio Syncthing activo de forma permanente.
Beneficios concretos de Syncthing en un VPS
- Nodo relé permanente: sus dispositivos ya no necesitan estar encendidos a la vez para sincronizarse.
- Cifrado de extremo a extremo (TLS) entre todos los nodos, sin confiar en ninguna nube.
- Copia de seguridad remota natural: el VPS conserva una copia actualizada de sus carpetas compartidas.
- Versionado de archivos (staggered/simple) configurable carpeta por carpeta para recuperar una versión anterior.
- Ningún coste de almacenamiento por gigabyte: solo cuenta el espacio en disco del VPS.
- Descubrimiento por IP estática: conexión directa y rápida sin depender de los servidores de descubrimiento públicos.
Requisitos técnicos
Syncthing es notablemente frugal en CPU y en RAM, pero es el disco lo que dimensiona el servidor: necesita tanto espacio como volumen de datos vaya a sincronizar. Cuente con 1 vCPU y 1 GB de RAM, más el almacenamiento adaptado a sus carpetas (20, 50 GB o más según sus necesidades). En cuanto a la red, dos puertos deben ser accesibles: 22000 (TCP/UDP, transferencia de datos) y 21027 (UDP, descubrimiento local, opcional en un VPS remoto). La interfaz de administración funciona en el puerto 8384 y debe permanecer protegida sin excepción. Bastan Docker y Docker Compose; un subdominio sync.sudominio.com resulta útil para acceder a la interfaz por HTTPS a través de un reverse proxy.
Desplegar Syncthing paso a paso
Preparar el contenedor
En el VPS, cree
/opt/syncthingy undocker-compose.ymlbasado en la imagensyncthing/syncthing:latest. Monte un volumen de configuración y un volumen de datos, y fije las variablesPUID/PGIDpara los permisos de archivos.Abrir los puertos de transferencia
Mapee el puerto 22000 en TCP y UDP hacia el contenedor y ábralo en el cortafuegos del VPS:
ufw allow 22000. Por ese puerto circulan los datos entre nodos. No publique el puerto 8384 en Internet.Arrancar Syncthing y recuperar el ID
Arranque con
docker compose up -d. Recupere el identificador del nodo (Device ID) en los logs o desde la interfaz: es la huella única que servirá para emparejar sus demás dispositivos.Proteger la interfaz de administración
Exponga el puerto 8384 únicamente detrás de un reverse proxy HTTPS con autenticación. Con Caddy:
sync.sudominio.com { reverse_proxy syncthing:8384 }. Defina además un usuario y una contraseña de interfaz en los ajustes GUI de Syncthing.Emparejar sus dispositivos
En cada dispositivo (escritorio, portátil, móvil), añada el VPS como nuevo dispositivo mediante su Device ID y acepte después la solicitud recíproca en el servidor. Defina una carpeta compartida y elija el modo (solo envío, solo recepción o bidireccional).
Activar el versionado
Para las carpetas importantes, active el versionado «staggered» en el VPS: Syncthing conserva allí las versiones sucesivas de los archivos modificados o eliminados, y convierte su nodo en una red de seguridad frente a los errores de manipulación.
Configuración avanzada de carpetas compartidas
Una vez que el despliegue básico funcione, abra la GUI (via sync.sudominio.com) para afinar cada carpeta. Para cada carpeta compartida, establezca el tipo: Envío-Recepción (bidireccional), Solo envío (el VPS no puede modificar sus archivos) o Solo recepción (el VPS archiva sin sobrescribir). El campo Folder ID en la configuración — visible en config.xml bajo /opt/syncthing/config/ — debe ser idéntico en todos los dispositivos que comparten la misma carpeta: es lo que une los nodos. Para el cifrado en el almacenamiento, Syncthing soporta desde la versión 1.15 el modo Encrypted: el VPS nunca ve sus datos en claro, solo almacena blobs cifrados. Actívelo en la pestaña Sharing de una carpeta, opción Encrypted para el dispositivo VPS. Las ACLs de compartición se gestionan por dispositivo: en cada carpeta, seleccione qué dispositivos tienen acceso — un dispositivo no listado no recibe nada aunque conozca su Device ID.
Conectar varios dispositivos: Android, laptop, NAS
La potencia del VPS como hub central se aprecia al conectar un ecosistema completo. En Android, instale Syncthing desde F-Droid (la aplicación oficial, gratuita, sin telemetría de Google) — la versión de Play Store está deprecada desde 2024. Abra Syncthing en el teléfono, copie su Device ID y añádalo en el VPS mediante «Añadir dispositivo». Recíprocamente, añada el VPS en el teléfono con su Device ID y la dirección explícita tcp://IP_VPS:22000 en el campo Direcciones. En un laptop, el proceso es idéntico: instale syncthing desde el gestor de paquetes (apt install syncthing o el binario oficial), inícielo con systemctl --user enable --now syncthing y emparéjelo con el VPS. Para un NAS Synology o TrueNAS, Syncthing está disponible como paquete oficial o contenedor Docker. Desactive los servidores de relay públicos en preferencias avanzadas (relays disabled) y declare tcp://IP_VPS:22000 como dirección estática en cada nodo para conexiones directas y rápidas.
Proteger la interfaz web con nginx
Exponer el puerto 8384 directamente en Internet es un error crítico. La buena práctica es enlazar Syncthing a 127.0.0.1:8384 en la config (Ajustes GUI > Dirección GUI: 127.0.0.1:8384) y poner nginx o Caddy en HTTPS delante. Con nginx, cree un vhost en /etc/nginx/sites-available/sync: defina un bloque server en el puerto 443 con su certificado Let's Encrypt, un location / con proxy_pass http://127.0.0.1:8384 y las cabeceras X-Real-IP, X-Forwarded-For. Añada autenticación HTTP básica (auth_basic, htpasswd) como capa adicional. En config.xml, asegúrese de que <insecureAdminAccess>false</insecureAdminAccess>. Haga copias de seguridad regulares de /opt/syncthing/config/ — contiene las claves TLS del nodo, la configuración de carpetas y los Device IDs emparejados.
Monitorizar la salud con la API REST
Syncthing expone una API REST completa en http://127.0.0.1:8384/rest/. El token de API se encuentra en la GUI bajo Ajustes > GUI > Clave API. Algunas consultas útiles desde el VPS: curl -H 'X-API-Key: SU_CLAVE' http://127.0.0.1:8384/rest/db/status?folder=ID_CARPETA devuelve el estado de sincronización de una carpeta (claves: globalFiles, localFiles, needFiles, state). El estado idle confirma que todo está sincronizado; syncing indica una sincronización en curso; error señala un problema a investigar en los logs. Para monitorización mínima en producción, añada un check que consulte /rest/noauth/health — este endpoint no requiere clave API y devuelve {"status":"OK"} si Syncthing está en marcha.
Resolver los errores más frecuentes
Puerto 22000 inaccesible. Los dispositivos remotos aparecen como «Desconectado» aunque Syncthing esté en marcha. Verifique que se aplicaron ufw allow 22000/tcp y ufw allow 22000/udp (ufw status). Compruebe también que el compose mapea 22000:22000/tcp y 22000:22000/udp — olvidar el mapeo UDP bloquea el descubrimiento. Confirme con nc -zv IP_VPS 22000 desde una máquina remota. Dispositivo no encontrado. Si el autodescubrimiento falla, declare la dirección del VPS manualmente en la config de cada cliente: pestaña Dispositivos > Direcciones > tcp://IP_VPS:22000. Conflicto de versión. Dos dispositivos modificaron el mismo archivo sin conexión. Syncthing crea un archivo .sync-conflict-YYYYMMDD-HHMMSS-DEVICEID junto al original — no hay pérdida de datos. Revise ambas versiones y elimine la que no necesite. Espacio en disco insuficiente. Syncthing deja de sincronizar y entra en estado error si el espacio disponible baja del umbral configurado (por defecto: 1% del disco). Libere espacio o amplíe el disco del VPS; compruebe también que el versionado staggered no conserve años de revisiones — limite el período de retención en los ajustes de la carpeta.
Configure el nodo VPS en modo «Solo recepción» (Receive Only) para las carpetas que solo quiera respaldar: así el servidor nunca sobrescribirá sus dispositivos, se limita a archivar lo que se le envía. Y dado que dispone de una IP estática, desactive los servidores de descubrimiento globales y declare la dirección del VPS de forma fija (tcp://IP:22000) en la configuración de los demás nodos: las conexiones se establecen más rápido y no dependen de ningún servicio externo.
Syncthing, Nextcloud Files o rclone: cuándo elegir cada uno
Desplace la tabla
| Herramienta | Cuándo usarla |
|---|---|
| Syncthing | Sincronización peer-to-peer pura. Ideal si solo quiere sincronizar carpetas entre dispositivos sin interfaz web ni compartir enlaces. Consumo mínimo, configuración simple, sin lenguaje de servidor. |
| Nextcloud Files | Suite completa (compartir enlaces, calendario, contactos, Office en línea). Elija Nextcloud si necesita colaborar o compartir archivos con otras personas. Más pesado: PHP, base de datos, Redis. |
| rclone | Herramienta de copia/sincronización hacia más de 70 backends (S3, B2, SFTP…). Elija rclone para copias de seguridad programadas hacia almacenamiento de objetos o para migrar datos entre nubes, no para sincronización en tiempo real entre múltiples dispositivos. |