Noticia Sincronización P2P de archivos en Android con Syncthing

cómo sincronizar P2P de archivos en Android con Syncthing


Si estás harto de depender de Google Drive, Dropbox o similares para mover archivos entre tus dispositivos, Syncthing en Android es probablemente justo lo que estabas buscando. Permite una sincronización de archivos P2P (peer-to-peer) real, sin nubes de por medio, con tus datos siempre bajo tu control y viajando cifrados de extremo a extremo.

En este artículo vas a ver cómo funciona Syncthing, cómo usarlo en Android y cómo integrarlo con ordenadores, servidores, Raspberry Pi, incluso con iOS mediante clientes compatibles como Sync Train. Todo con un enfoque práctico, explicando paso a paso el flujo real de sincronización, los tipos de carpetas, el modelo de seguridad, y varios trucos para sacarle partido sin liarla con conflictos o pérdidas de datos.

¿Qué es Syncthing y por qué es distinto a la “nube” clásica?​


Syncthing es un sistema de sincronización continua de archivos P2P que conecta dispositivos directamente entre sí, sin un servidor central donde se almacenen tus datos. Se distribuye como software libre bajo licencia MPL 2.0, está desarrollado en Go y usa su propio protocolo de intercambio de bloques, conocido como Block Exchange Protocol, diseñado para ser eficiente y seguro.

En lugar de subir tus ficheros a servidores de terceros, Syncthing funciona con un modelo tipo “BYO cloud” (Bring Your Own): tú pones las máquinas, tú decides dónde se guardan los archivos y con quién se comparten. Puede correr en Windows, macOS, GNU/Linux, FreeBSD, Solaris, OpenBSD, Android, contenedores Docker, e incluso en dispositivos pequeños como una Raspberry Pi.

La idea principal es muy sencilla: sincronizar una o más carpetas entre varios dispositivos en tiempo real. Cada dispositivo tiene un identificador único, y tú decides qué dispositivos se conectan, qué carpetas comparten, y en qué dirección se sincronizan (enviar y recibir, solo enviar o solo recibir).

Ventajas clave de Syncthing para Android y otros dispositivos​


Cuando lo usas en Android junto con tu PC, servidor o NAS, Syncthing resuelve varios problemas habituales que tienen las soluciones de “nube” tradicionales. Entre otros, destacan estas ventajas:

  • Privacidad real: los archivos se guardan solo en tus dispositivos o en los de personas de confianza, sin copias en servidores ajenos.
  • Código abierto y auditable: cualquiera puede revisar el código, comprobar que no hay puertas traseras y contribuir al proyecto.
  • Multiplataforma total: funciona en casi cualquier sistema actual, desde ordenadores de sobremesa hasta móviles Android o contenedores Docker.
  • Sin límites de espacio impuestos por terceros: el único tope es el tamaño de los discos de tus máquinas.
  • Sincronización en tiempo real: los cambios se propagan enseguida en cuanto los dispositivos están conectados.
  • Alto nivel de control: eliges qué carpetas se comparten, con quién, en qué sentido se sincronizan y qué patrones de archivos se ignoran.

En Android en concreto, Syncthing es perfecto para automatizar copias de fotos, documentos o descargas hacia tu PC o servidor local, y evitar así depender de Google Photos, Google Drive o similares. También permite sincronizar notas (Obsidian, Joplin, etc.) o cualquier carpeta de tu almacenamiento interno.


Syncthing-Fork (Free, Google Play) →

Cifrado, seguridad y privacidad en la sincronización P2P​


La parte de seguridad no es un detalle menor: todas las conexiones en Syncthing van cifradas punto a punto mediante TLS. Cada dispositivo genera su propio certificado y clave privada la primera vez que arranca, y el identificador de dispositivo se deriva de esos datos.

Esto tiene varias consecuencias importantes que conviene entender bien para usar Syncthing con cabeza:

  • Los dispositivos deben aprobarse mutuamente: aunque alguien tenga tu ID de dispositivo, no podrá conectarse si tú no aceptas esa relación desde tu interfaz de Syncthing.
  • Los datos viajan cifrados: ni los posibles servidores de relay ni los de descubrimiento pueden leer el contenido de tus archivos.
  • Se exponen algunos metadatos: cada dispositivo conectado ve la IP, sistema operativo y versión de Syncthing de los demás, además de su estado (conectado, desconectado, sincronizando).
  • Se pueden usar servidores propios: si quieres máxima privacidad, es posible montar tu propio servidor de descubrimiento global y tus propios repetidores.

Aunque Syncthing no requiere un “servidor central” para almacenar archivos, sí recurre a varios servicios auxiliares para funcionar bien a través de Internet:

  • Servidor de descubrimiento global: ayuda a que dos dispositivos se encuentren por su ID aunque cambie su IP.
  • Repetidores (relays): sirven de puente cuando no es posible abrir puertos o usar UPnP en el router.
  • Servidor de lista de relays: catálogo de repetidores disponibles.
  • Servidor de actualizaciones: donde el programa comprueba nuevas versiones.
  • Servidor de estadísticas anónimas: opcional, para enviar datos de uso y ayudar a mejorar el proyecto.

Todos estos componentes se pueden desactivar o reemplazar por instancias propias, pero para la mayoría de usuarios domésticos Android + PC no es necesario complicarse: la configuración por defecto es segura y suficiente.

Instalar y arrancar Syncthing en Android​


Sincronización P2P de archivos en Android con Syncthing


En Android tienes varias opciones para obtener el cliente. Lo más habitual es instalar Syncthing para Android desde Google Play o F-Droid, que actúa como envoltorio nativo alrededor del núcleo de Syncthing y ofrece una interfaz pensada específicamente para móviles.

Tras instalar la app, lo primero que aparecerá es un asistente de configuración inicial donde se crean el ID del dispositivo, las carpetas por defecto y algunos permisos. Aquí es donde Android empieza a “molestar” con los clásicos cuadros de permiso:

  • Acceso al almacenamiento: imprescindible para poder leer y escribir en las carpetas que quieras sincronizar. Tendrás un botón tipo “Grant permission” que debes aceptar.
  • Permiso de ubicación: no es que Syncthing rastree tu localización, pero Android obliga a pedir este permiso cuando una app quiere detectar la red WiFi en la que estás. Syncthing lo necesita si quieres limitar la sincronización a determinadas redes (por ejemplo, solo en tu WiFi de casa).

Una vez pasados estos pasos, la aplicación te mostrará su pantalla principal, que suele organizarse en pestañas: carpetas (“Folders” o similar), dispositivos, y acceso a la interfaz web. Desde aquí puedes arrancar o detener el servicio, revisar el estado de sincronización y acceder a los ajustes.

Uso de la interfaz web en Android y en el resto de dispositivos​


Aunque la app de Android tiene su propia interfaz gráfica, la forma más potente y consistente de gestionar Syncthing sigue siendo la interfaz web, que es la misma en todos los sistemas (PC, servidor, Raspberry Pi, Android, etc.).

Desde la app de Android puedes abrir esa interfaz web con una opción del menú. En muchos casos funciona dentro de la propia aplicación, pero si ves que algo va raro o no responde bien, puedes abrir Syncthing en el navegador del móvil apuntando a la dirección local que te indique la app (normalmente 127.0.0.1:8384).

La interfaz web de Syncthing se estructura en varias zonas claramente diferenciadas, que verás igual tanto en tu smartphone como en tu ordenador:

  • Menú superior con acciones generales (Ajustes, Mostrar ID, etc.).
  • Zona de notificaciones con avisos y mensajes importantes.
  • Listado de Carpetas con su estado de sincronización, tamaño, progreso y tipo.
  • Sección “Este dispositivo” con resumen de uso de CPU, RAM, velocidades de subida/bajada y más.
  • Listado de Otros dispositivos conectados o conocidos.
  • Diálogos emergentes al fondo de la página cuando creas o editas algo (carpetas, dispositivos…).

La experiencia es responsiva, así que en móvil se adapta bien a pantallas pequeñas. Y lo mejor: una vez te acostumbras a esta interfaz, la usarás exactamente igual en tu Android, tu PC o tu Raspberry Pi.

Vincular Android con tu PC, servidor o Raspberry Pi​


La esencia de Syncthing es conectar dispositivos entre sí. Cada dispositivo tiene un ID único, que es una cadena alfanumérica relativamente larga. No depende directamente de la máquina física, sino del certificado y la configuración que usa Syncthing, por lo que se puede migrar de un equipo a otro si mueves sus datos internos (sin ejecutar dos veces la misma instancia).

Para añadir dispositivos y poder sincronizar carpetas entre tu Android y, por ejemplo, tu PC o una Raspberry Pi, toca seguir un ritual bastante sencillo:

  1. Obtener el ID de tu Android: en la interfaz web o en la app, ve a “Acciones” > “Mostrar ID”. Verás el texto del identificador y un código QR.
  2. Obtener el ID del otro dispositivo: en tu PC, servidor o Raspberry Pi, entra también en “Mostrar ID” en su interfaz web.
  3. Añadir el dispositivo remoto en Android: desde la pestaña de dispositivos, elige “Añadir” y escanea el código QR del PC, o copia su ID manualmente. Asigna un nombre fácil de reconocer (por ejemplo, “Raspberry Sala” o “PC Oficina”).
  4. Añadir el Android en el PC/servidor: en el ordenador, crea un nuevo dispositivo y pega el ID de tu móvil (o escanea el QR si tienes un lector de códigos). Deja la dirección en “dynamic” salvo que quieras algo muy específico.
  5. Aceptar la conexión en ambos lados: cuando un dispositivo se añade al otro, aparecerá una notificación para confirmar que quieres vincularlo. Hasta que los dos lados aceptan, no se establecerá la relación.

Este sistema de “solicitud y aceptación mutua” puede parecer un poco pesado al principio, pero es clave para evitar que alguien con tu ID se conecte sin tu permiso, por ejemplo si has apuntado tu identificador en un papel y este acaba en manos ajenas.

Sincronizar carpetas entre Android y otros dispositivos​


Una vez los dispositivos se conocen, llega el punto interesante: decidir qué carpetas quieres sincronizar y cómo. Syncthing trabaja siempre sobre carpetas, y cada una de ellas se identifica por:

  • Una Etiqueta (nombre legible para humanos).
  • Una Ruta absoluta (directorio real en el sistema de archivos).
  • Un ID de carpeta interno que se usa para vincular la misma carpeta entre dispositivos.

En Android verás, por ejemplo, una carpeta predefinida llamada “Camera” o “Fotos”, pensada para sincronizar las fotos del teléfono. En una Raspberry Pi o en un PC quizá tengas una carpeta por defecto llamada “Default Folder” que apunta a alguna ruta del sistema.

Para crear o ajustar una carpeta compartida típica, como sincronizar la carpeta de descargas del móvil con un servidor, haz algo como esto:

  1. En tu Android, pulsa en “Añadir carpeta”.
  2. Elige una etiqueta reconocible, como “Descargas Móvil”.
  3. Indica la ruta local (por ejemplo, /storage/emulated/0/Download).
  4. Marca los dispositivos con los que quieras compartirla en la pestaña de compartición (PC de casa, Raspberry Pi, etc.).
  5. Guarda los cambios. Verás la nueva carpeta listada en la pantalla principal.

En el otro dispositivo (PC, Raspberry Pi, etc.) aparecerá un aviso de que tu móvil quiere compartir una carpeta llamada “Descargas Móvil”. Al aceptarlo, tendrás que:

  • Elegir un nombre local (puede ser distinto, por ejemplo “Descargas Nexus”).
  • Seleccionar la ruta de destino donde se guardarán los archivos en ese dispositivo.
  • Asegurarte de que esa ruta tiene permisos de escritura suficientes.

Cuando aceptes, Syncthing creará (si no existe) el árbol de directorios correspondiente y empezará a sincronizarse el contenido. El progreso se mostrará con barras que pasan a azul y el estado “Sincronizando…”, hasta que todos los archivos estén transferidos.

Tipos de carpetas: enviar y recibir, solo enviar, solo recibir​


No todas las sincronizaciones son iguales. Syncthing permite definir el tipo de carpeta que quieres en cada dispositivo para ajustar el flujo de cambios:

  • Enviar y recibir: es el modo por defecto. Cualquier cambio (crear, modificar o borrar archivos) que hagas en esa carpeta se propagará al resto de dispositivos, y viceversa.
  • Solo enviar (Send Only): el dispositivo actúa como “origen” de datos. Los demás reciben los cambios, pero lo que hagan ellos no se devuelve hacia este equipo.
  • Solo recibir (Receive Only): la máquina solo acepta cambios desde fuera, pero las modificaciones locales no se difunden. Syncthing detectará diferencias y te ofrecerá revertirlas para mantener el contenido “clavado” a la fuente.

En cada carpeta puedes elegir este comportamiento desde el diálogo de edición, normalmente entrando en la sección de opciones avanzadas. Esto es muy útil, por ejemplo, para:

  • Usar tu Android como origen de fotos (carpeta de cámara en solo enviar) hacia un servidor de copias.
  • Tener un servidor web que solo reciba cambios de tu PC de desarrollo, sin devolverle ficheros temporales o generados.
  • Montar copias de seguridad unidireccionales hacia un NAS o un disco externo conectado a una Raspberry Pi.

La clave está en que la configuración de tipo de carpeta se define de forma independiente en cada dispositivo, así que puedes combinar modos según el rol que tenga cada máquina en tu arquitectura.

Clústeres, presentadores e introducers: escalando la red P2P​


Cuando superas el escenario básico de “Android + PC” y empiezas a tener varios ordenadores, móviles y servidores sincronizados, es útil entender cómo organiza Syncthing los dispositivos en un clúster. Un clúster no es más que un grupo de máquinas que comparten una o varias carpetas entre sí.

Si, por ejemplo, tienes los dispositivos A (tu PC), B (tu portátil) y C (tu servidor), al principio es probable que A sea el nexo común que los conoce a todos. Eso implica que cualquier transferencia entre B y C tendría que pasar por A si este no está configurado para “presentar” unos dispositivos a otros.

Para solucionar esto Syncthing dispone de la figura del “Introducer” o presentador. Cuando marcas un dispositivo como presentador, le estás diciendo:

  • “Todo dispositivo que este equipo añada, me lo introduces a mí automáticamente” para que aparezca también en mi lista.
  • “Y lo mismo con las carpetas que vaya compartiendo con esos nuevos dispositivos”.

Este mecanismo hace que:

  • Si un dispositivo con rol de presentador apaga sus equipos, los demás sigan pudiendo hablar entre sí porque ya se conocen directamente.
  • Las transferencias se repartan mejor: cada nodo puede enviar datos a varios, sin que haya un único “embudo”.

Existe también la posibilidad de crear lo que se llama un clúster en malla, donde todos los dispositivos son presentadores y se “presentan” mutuamente. Aunque es posible, no se recomienda en la mayoría de casos, porque cuando un dispositivo se elimina de la red la información sobre él puede seguir circulando y terminar con listas llenas de “fantasmas” difíciles de borrar. Syncthing incluso avisa cuando detecta un presentador en ambos extremos de una relación.

Conflictos de archivos, versiones y buenas prácticas​


Como en cualquier sistema de sincronización, es posible que se produzcan conflictos si dos dispositivos modifican el mismo archivo casi a la vez. Syncthing intenta minimizar estas situaciones gracias a su protocolo de bloques y a un escaneado eficiente que detecta solo los cambios reales, pero no puede obrar milagros.

Cuando hay un conflicto, el comportamiento típico es renombrar el archivo más antiguo añadiendo un sufijo del tipo “sync-conflict” con fecha y hora. De ese modo no se pierde información y tú puedes decidir qué versión conservar. Eso sí: si trabajas con muchas ediciones simultáneas de un mismo fichero, te puedes encontrar con varias copias conflictivas.

Por este motivo es recomendable evitar ciertos usos en Syncthing:

  • No sincronizar bases de datos monolíticas de varios usuarios (Access, SQLite…) que se abren al mismo tiempo desde varios equipos.
  • No usarlo como sistema de edición colaborativa en tiempo real de documentos (para eso es mejor algo tipo OnlyOffice, Google Docs, etc.).
  • No intentar usarlo como sistema de mensajería o chat improvisado guardando archivos como mensajes.

En Windows existe un cliente de terceros muy útil, SyncTrayzor, que se encarga de arrancar Syncthing en segundo plano, integrarse en la bandeja del sistema, mostrar notificaciones y facilitar la resolución de conflictos de archivos con una interfaz más amigable.

En Android, la app oficial ya se encarga de manejar el servicio, pero conviene que tengas en mente que si editas el mismo documento en varios sitios a la vez te puedes encontrar con versiones duplicadas marcadas como conflicto y tendrás que limpiar a mano.

Syncthing en Android e iOS: integración con Sync Train​


Aunque Syncthing para iOS puro no existe como aplicación oficial, sí hay proyectos que actúan como clientes frontend sobre el núcleo de Syncthing, como Sync Train. Esta app está diseñada específicamente para iPhones y iPads y ofrece una interfaz cómoda para gestionar dispositivos, carpetas y sincronización selectiva.

Un escenario habitual interesante es combinar:

  • Syncthing en Android como motor principal de sincronización en tu móvil.
  • Sync Train en iOS como interfaz y cliente para tu iPhone o iPad.
  • Tu PC o servidor como nodo central o “siempre encendido” donde se guardan las copias completas.

Con esta arquitectura es posible tener sincronización bidireccional y cifrada entre Android e iOS, sin pagar cuotas de servicios en la nube ni ceder tus datos a proveedores externos. Además, Sync Train permite reproducir contenido multimedia bajo demanda desde tu dispositivo iOS sin tener que almacenar necesariamente todo el contenido localmente.

Una vez superada la curva inicial de configuración, la experiencia que cuentan muchos usuarios es parecida: sincronización rápida, estable y totalmente privada para fotos, vídeos, documentos y otros archivos entre ambos ecosistemas móviles.

Syncthing en Raspberry Pi, NAS y servidores: nodo permanente​


Otra pieza muy potente del ecosistema Syncthing es el uso de Raspberry Pi, NAS o VPS como “nodo permanente”. Esto quiere decir que ese dispositivo permanece encendido la mayor parte del tiempo y actúa como:

  • Repositorio central de copias de seguridad.
  • Punto de encuentro entre dispositivos que no están conectados al mismo tiempo.
  • Equipo que descarga o procesa ficheros para luego servirlos a otros.

En sistemas GNU/Linux, por ejemplo, puedes instalar Syncthing desde su repositorio propio (en Debian, Ubuntu y derivados, añadiendo el repositorio con distribución “syncthing” y sección “stable”) y habilitarlo como servicio con:

  • systemctl enable syncthing@usuario
  • systemctl start syncthing@usuario

En una Raspberry Pi orientada a hacer de servidor de ficheros es muy habitual editar el archivo de configuración config.xml para abrir la interfaz web a otras máquinas de la red local. Se suele cambiar la dirección de la sección <gui> de 127.0.0.1:8384 a 0.0.0.0:8384, de forma que puedas administrar Syncthing desde el navegador de tu PC.

Este tipo de nodo permanente encaja muy bien cuando usas Android como origen de fotos y documentos. Por ejemplo, puedes hacer que la carpeta “Camera” del móvil se sincronice siempre hacia un disco externo conectado a la Raspberry Pi, y de ahí al resto de ordenadores de la red.

Escenarios prácticos de uso con Android y más​


Con todo lo anterior, es fácil imaginar casos de uso muy concretos donde Syncthing brilla especialmente cuando uno de los dispositivos es Android:

  • Sincronización personal entre dispositivos: tienes una carpeta de trabajo compartida entre tu Android, tu PC de escritorio y tu portátil. Cualquier cambio en uno se refleja en los demás sin pasar por la nube.
  • Copia de seguridad local de fotos: el móvil manda en solo enviar la carpeta de cámara a un servidor o NAS que actúa como solo recibir. Cada foto que haces queda almacenada automáticamente en casa.
  • Compartir archivos con colaboradores de confianza: montas una carpeta compartida entre tu equipo y el de otras personas (familia, compañeros) para intercambio de documentos pesados sin depender de wetransfer o Dropbox.
  • Sincronización de notas y proyectos: sincronizas directorios completos de aplicaciones como Obsidian o Joplin entre tu Android y tu ordenador, manteniendo tus notas siempre actualizadas sin servicios privativos.

En todos estos escenarios, la clave está en la configuración fina de los tipos de carpeta y los dispositivos con los que compartes, aprovechando la flexibilidad de Syncthing para adaptarse a tu forma de trabajar.

Combinando la app de Android con PCs, servidores y hasta iOS mediante clientes compatibles, Syncthing termina convirtiéndose en una especie de “nube propia” distribuida, donde tus archivos viajan de punto a punto cifrados, sin cuotas, sin cajas negras y con un control sobre tus datos que difícilmente vas a conseguir con servicios comerciales tradicionales. Comparte esta información para que más usuarios conozcan del tema.

Continúar leyendo...