Serie Syncthing
- Cómo usar Syncthing: notas prácticas desde el emparejamiento de dispositivos hasta la sincronización de archivos
- Desplegar Syncthing con Docker: Compose, puertos y mapeo de directorios
- Cómo configurar Syncthing con varios dispositivos: red entre pares, topología en estrella e introducers
- Cómo usar Syncthing en Android: configuración de Syncthing-Fork y copia de fotos
- Cómo gestionar varios dispositivos y carpetas en Syncthing: topología, nombres y versionado
- Cómo sincronizar fotos de iPhone con un ordenador o NAS usando Syncthing
Desplegar Syncthing en Docker encaja muy bien en un NAS, un servidor doméstico o un VPS. Puede actuar como un nodo de sincronización siempre encendido para fotos, documentos, notas Markdown o carpetas de descargas.
Lo importante al desplegar Syncthing con Docker no es solo que el contenedor arranque. Hay tres puntos que conviene resolver desde el principio:
- persistir el directorio de configuración;
- mapear en el contenedor las carpetas de datos que se quieren sincronizar;
- preparar puertos y permisos antes de empezar.
Si estos detalles quedan mal, una actualización del contenedor puede hacerte perder la configuración, la ruta que escribas en el Web UI puede no apuntar a la carpeta real del host, o la sincronización puede fallar con Permission denied.
Planificación de directorios
Primero crea un directorio dedicado en el servidor o NAS, por ejemplo:
|
|
Coloca docker-compose.yml en ese directorio y guarda la configuración de Syncthing en un subdirectorio:
|
|
Los datos reales que se van a sincronizar pueden estar en rutas existentes del host, por ejemplo:
|
|
Separa el directorio de configuración de los directorios de datos. config guarda la configuración propia de Syncthing, sus claves y la base de datos de índices. Carpetas como downloads y photos son los datos reales que quieres sincronizar.
Opción 1: Docker Compose
Para uso permanente es mejor Docker Compose, porque las actualizaciones, reinicios y migraciones quedan mucho más claros.
Escribe esto en ~/syncthing/docker-compose.yml:
|
|
Arranca el servicio:
|
|
Comprueba el estado:
|
|
Abre el Web UI:
|
|
La primera vez que entres, configura antes que nada un usuario y una contraseña para la GUI.
Opción 2: docker run
Para una prueba rápida, también puedes usar directamente docker run:
|
|
Sustituye /path/to/config y /path/to/data1 por rutas reales del host.
Por ejemplo:
|
|
Para uso a largo plazo, conviene convertirlo en un archivo Compose y evitar reconstruir el comando completo cada vez que recrees el contenedor.
Rutas del contenedor y rutas del host
El punto que más confunde al empezar con Docker son las rutas.
Por ejemplo, en Compose puedes tener:
|
|
La parte izquierda, /volume1/photos, es la ruta del host. La parte derecha, /var/syncthing/photos, es la ruta dentro del contenedor.
Cuando añadas una carpeta de sincronización en el Web UI de Syncthing, la ruta de carpeta debe ser la ruta dentro del contenedor:
|
|
Así Syncthing operará realmente sobre esta ruta del host:
|
|
Si escribes /volume1/photos en el Web UI, esa ruta normalmente no existe dentro del contenedor. Syncthing puede mostrar un error o crear una carpeta nueva dentro del sistema de archivos del contenedor, que no es lo que querías.
La configuración debe ser persistente
Esta línea es crítica:
|
|
Syncthing guarda sus archivos de configuración, claves de dispositivo y base de datos de índices en el directorio de configuración. Si no lo montas en el host, al borrar o recrear el contenedor puede cambiar el device ID y dejar sin efecto los emparejamientos existentes.
Usa una ruta estable, por ejemplo:
|
|
No pongas la configuración en un directorio temporal, ni la mezcles con los directorios de datos sincronizados.
Puertos y firewall
Los puertos habituales son:
|
|
Si Syncthing está desplegado en un NAS doméstico, normalmente debes revisar:
- si el firewall del NAS permite estos puertos;
- si el mapeo de puertos del puente Docker es correcto;
- si el router separa la red Wi-Fi de la red cableada;
- si el teléfono y el ordenador están en la misma subred.
Si está desplegado en un servidor cloud, revisa también el grupo de seguridad del proveedor. En especial, si 22000/TCP y 22000/UDP no están abiertos, otros dispositivos quizá solo puedan conectar mediante relay, con una velocidad mucho menor.
8384 es el puerto de administración. No lo expongas directamente a Internet. Si necesitas administración remota, usa al menos una contraseña fuerte y, mejor aún, combínalo con proxy inverso, HTTPS, control de acceso o VPN.
Problemas de permisos: PUID y PGID
Si Syncthing arranca y puedes abrir el Web UI, pero una carpeta de sincronización muestra:
|
|
normalmente el proceso del contenedor no tiene permisos de lectura y escritura sobre la carpeta del host.
Primero comprueba el UID y GID del usuario actual en el host:
|
|
La salida puede ser similar a:
|
|
Luego ajusta las variables de entorno en Compose:
|
|
Confirma también que la propia carpeta del host permite leer y escribir a ese usuario:
|
|
Si hace falta, ajusta propietario o permisos:
|
|
En un NAS, no cambies de forma recursiva los permisos de toda una carpeta compartida sin pensarlo, sobre todo si la usan varias personas. Es más seguro preparar una carpeta de sincronización dedicada para Syncthing, o conceder permisos al usuario correspondiente desde la interfaz de permisos del NAS.
Seguridad inicial del Web UI
Después de arrancar el contenedor, visita:
|
|
En la primera entrada, Syncthing normalmente te pedirá configurar usuario y contraseña para la GUI. No omitas este paso.
Recomendaciones:
- configura de inmediato un usuario GUI y una contraseña fuerte;
- no expongas
8384a Internet; - para acceso remoto, prioriza VPN, túnel SSH o un proxy inverso controlado;
- si usas proxy inverso, asegúrate de exponer solo el Web UI y no otros puertos innecesarios.
Si alguien controla el panel de administración, podría añadir dispositivos, modificar carpetas compartidas y cambiar relaciones de sincronización. Syncthing cifra la transferencia de datos, pero el punto de administración también necesita protección.
Añadir carpetas de sincronización en el Web UI
Tomemos una carpeta de fotos como ejemplo. En Compose ya está montada así:
|
|
Al añadir la carpeta en el Web UI:
- Folder Label: puedes usar
Photos; - Folder ID: usa un ID estable en inglés, por ejemplo
photos; - Folder Path: escribe
/var/syncthing/photos; - Sharing: elige los dispositivos con los que compartirla;
- Folder Type: elige
Send & Receive,Send OnlyoReceive Onlysegún el flujo de datos.
Si este nodo Docker es el nodo central del NAS, algunas configuraciones comunes son:
- documentos normales:
Send & Receive; - recopilación de fotos del teléfono:
Receive Onlyen el NAS; - carpeta de distribución hacia otros dispositivos:
Send Onlyen el NAS.
La elección depende de la dirección real de los datos. No conviertas todas las carpetas en sincronización bidireccional por inercia.
Actualizar el contenedor
Con Compose, una actualización suele ser:
|
|
Mientras el directorio de configuración y los directorios de datos estén bien montados, actualizar el contenedor no hará que se pierdan el device ID, los emparejamientos ni la configuración de carpetas.
Antes de actualizar, puedes hacer una copia del directorio de configuración:
|
|
El directorio de configuración contiene claves privadas del dispositivo. No subas esa copia a ubicaciones públicas sin cuidado.
Problemas frecuentes
El Web UI no abre
Primero comprueba que el contenedor esté ejecutándose:
|
|
Después revisa el mapeo de puertos:
|
|
Si el contenedor está bien pero la página no abre, revisa el firewall del host, el firewall del NAS o el grupo de seguridad del servidor cloud.
La carpeta añadida dice que no existe
Comprueba si la ruta que escribiste en el Web UI es la ruta dentro del contenedor.
Por ejemplo, si la ruta del host es:
|
|
y la ruta dentro del contenedor es:
|
|
en el Web UI debes escribir la segunda.
Solo conecta por Relay y va muy lento
Revisa primero:
- si
22000/TCPestá permitido; - si
22000/UDPestá permitido; - si el reenvío de puertos del router es correcto;
- si el grupo de seguridad cloud permite TCP y UDP;
- si el firewall local bloquea los puertos mapeados por Docker.
Relay mejora la conectividad, pero no es adecuado para soportar grandes volúmenes de sincronización de forma permanente.
Los permisos de archivos quedan mal después de sincronizar
Primero confirma que el usuario de ejecución del contenedor sea correcto, y luego revisa los permisos de la carpeta del host. Linux, NAS y carpetas compartidas de Windows usan modelos de permisos distintos. No uses Syncthing como herramienta para reparar permisos.
Para sincronización entre sistemas, intenta sincronizar archivos y directorios normales. Evita carpetas del sistema que dependan de ACL complejas, propietarios o atributos extendidos.
Una forma más estable de usarlo
Si tu objetivo es usar un NAS o servidor como nodo central, puedes diseñarlo así:
- Ejecuta Syncthing con Docker en el NAS.
- Monta el directorio de configuración en
/volume1/docker/syncthing/config. - Monta cada tipo de dato por separado, por ejemplo
/volume1/photosy/volume1/notes. - Añade el device ID del NAS desde teléfonos y ordenadores.
- Activa el versionado de archivos en carpetas importantes del lado del NAS.
- Accede al Web UI solo desde la LAN o mediante VPN.
- Haz también una copia de seguridad independiente del NAS. No trates la sincronización como la única copia.
Con este diseño, Syncthing se encarga de la sincronización entre dispositivos, el NAS aporta disponibilidad permanente y una capa de versionado, y la copia de seguridad real queda en snapshots, discos externos o backups fuera del sitio.
Resumen
La clave para desplegar Syncthing con Docker es separar el ciclo de vida del contenedor del ciclo de vida de los datos sincronizados.
El contenedor puede actualizarse, recrearse o migrarse en cualquier momento. Pero el directorio de configuración y los directorios de datos deben permanecer estables en el host. En el Web UI se introducen rutas internas del contenedor; los permisos del host se gestionan con PUID, PGID y permisos de directorio; y los puertos deben abrirse según el entorno de red real.
Cuando estas piezas están claras, Syncthing funciona muy bien como una capa ligera de sincronización entre un NAS, un servidor y dispositivos personales.