¿Qué es Syncthing?

Syncthing es un programa de código abierto que mantiene sincronizadas las carpetas entre tus dispositivos, directamente y sin un servidor central. El proyecto proporciona una imagen oficial, syncthing/syncthing, cuya GUI web escucha en el puerto 8384 y cuyo protocolo de sincronización usa el puerto 22000 para TCP y QUIC. Los dispositivos de la misma red se encuentran mediante broadcasts en el puerto 21027.

Descripción de la herramienta

Esta herramienta crea un archivo compose.yaml para Syncthing que sigue el Docker README del proyecto. De forma predeterminada, utiliza la red del host, tal como recomienda el README, porque así Syncthing puede ver los dispositivos de tu red local. En este modo, la herramienta elimina STGUIADDRESS, por lo que la GUI escucha en la dirección configurada en los ajustes de Syncthing, que de forma predeterminada es 127.0.0.1:8384. También puedes elegir el modo bridge. En ese caso, la herramienta publica el puerto de la GUI, el puerto de sincronización para TCP y UDP y el puerto de descubrimiento, y muestra una advertencia sobre las limitaciones del modo bridge. Puedes establecer el hostname, el usuario y el grupo mediante PUID y PGID, un UMASK y un PCAP opcionales, la carpeta de datos y más carpetas del host. Se añade una comprobación de estado que sigue la dirección de la GUI. Todo se crea en tu navegador.

Características

  • Red del host, como se recomienda, o modo bridge con los puertos 8384, 22000/tcp, 22000/udp y 21027/udp publicados
  • Dirección de escucha de la GUI en el modo host, con una advertencia cuando se puede acceder a ella desde otros equipos
  • Una dirección de enlace para el puerto de la GUI en modo bridge, como 127.0.0.1
  • PUID, PGID, UMASK y PCAP, además de un hostname para el nombre del dispositivo
  • Una carpeta de datos en el host o un volumen de Docker con nombre, que se declara automáticamente
  • Más carpetas para sincronizar, cada una opcionalmente en modo de solo lectura
  • La comprobación de estado del README, ajustada al puerto y la dirección de la GUI
  • Cualquier otra variable de entorno, comentarios que explican el archivo y una descarga como compose.yaml

Ejemplos

La configuración predeterminada proporciona el ejemplo del Docker README de Syncthing:

services:
  syncthing:
    image: syncthing/syncthing
    container_name: syncthing
    hostname: syncthing
    network_mode: host
    environment:
      PUID: "1000"
      PGID: "1000"
      STGUIADDRESS: ""
    volumes:
      - ./st-sync:/var/syncthing
    healthcheck:
      test: curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
      interval: 1m
      timeout: 10s
      retries: 3
    restart: unless-stopped

Consejos

  • Guarda el resultado como compose.yaml e inícialo con docker compose up -d. Después, abre http://127.0.0.1:8384
  • El modo bridge predeterminado de Docker oculta las direcciones locales de tus dispositivos, por lo que se conectan lentamente o mediante relays. Usa el modo host cuando sea posible
  • La imagen escucha en 0.0.0.0:8384 de forma predeterminada. Por eso el modo host elimina STGUIADDRESS y el modo bridge debería enlazar el puerto publicado de la GUI con 127.0.0.1, a menos que quieras acceder a ella desde otros equipos
  • Cuando se pueda acceder a la GUI desde otros equipos, establece una contraseña para la GUI y activa TLS en los ajustes de Syncthing
  • La carpeta de datos y las carpetas que añadas deben tener permisos de escritura para PUID y PGID
  • Las carpetas que añadas aquí aparecen en Syncthing con la ruta del contenedor, así que elige esa ruta al añadir la carpeta en la GUI
  • El puerto de sincronización sigue siendo 22000, porque Syncthing indica a los demás dispositivos que se conecten a ese puerto