GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Syncthing en Ubuntu Desktop/Server

Este tutorial le mostrará cómo instalar Syncthing en Ubuntu. Syncthing es un programa gratuito de sincronización continua de archivos punto a punto que le permite sincronizar sus archivos en múltiples dispositivos, disponible para Linux, BSD, macOS, Windows, Android y Solaris.

Es una alternativa de código abierto al popular Resilio Sync (anteriormente conocido como BitTorrent Sync ) solicitud. La creación, modificación o eliminación de archivos en una máquina se replicará automáticamente en sus otros dispositivos. Syncthing no sube tus archivos a un servidor central como Nextcloud , pero intercambie sus datos directamente entre sus dispositivos. Todos sus datos están encriptados con TLS al transmitir entre sus dispositivos.

Características de sincronización

  • Gratis y de código abierto.
  • Velocidad de sincronización rápida.
  • Admite sincronización unidireccional.
  • Sincronización selectiva (ignorar patrones).
  • Puede usar servidores de retransmisión si dos pares no pueden conectarse entre sí.
  • Admite autenticación LDAP.

Instalar Syncthing en Ubuntu a través del repositorio oficial de Deb

Syncthing está incluido en el repositorio predeterminado de Ubuntu desde 18.04 Bionic Beaver. Sin embargo, se recomienda instalar Syncthing desde el repositorio oficial original para obtener la última versión.

Usar curl para descargar la clave GPG, luego importe la clave con apt-key .

sudo apt-get install curl

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

Si ve OK en la terminal, eso significa que la clave GPG se importó con éxito. Luego agregue el repositorio deb oficial con el siguiente comando.

echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

Debido a que este repositorio usa https, necesitamos instalar apt-transport-https paquete, por lo que el administrador de paquetes APT puede establecer una conexión https con este repositorio.

sudo apt-get install apt-transport-https

Actualice el índice de paquetes locales e instale Syncthing en Ubuntu.

sudo apt-get update

sudo apt-get install syncthing

Uso de Systemd para configurar la sincronización como un servicio del sistema

El paquete deb oficial de Syncthing se envía con el archivo de servicio systemd necesario. En /lib/systemd/system/ directorio, encontrará un [email protected] expediente. Habilite la sincronización para que se inicie automáticamente en el momento del arranque ejecutando el siguiente comando. Reemplazar username con su nombre de usuario real.

sudo systemctl enable [email protected]username.service

El comando anterior creará un enlace simbólico que apunta al [email protected] archivo.

Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /lib/systemd/system/[email protected]

Ahora podemos iniciar el servicio Syncthing con el siguiente comando.

sudo systemctl start [email protected]username.service

Comprobar estado

systemctl status [email protected]username.service

Salida:

Sugerencia:si el comando anterior no se cierra de inmediato, presione Q para recuperar el control de la terminal.

Podemos ver que el inicio automático de Syncthing está habilitado y se está ejecutando.

El servicio syncthing systemd crea archivos de configuración en /home/username/.config/syncthing/ y una carpeta /home/username/Sync como la carpeta de sincronización predeterminada. El archivo de configuración principal es /home/username/.config/syncthing/config.xml .

Instalar Syncthing en otro sistema operativo

Vaya a la página de descarga de Syncthing e instale Syncthing en otros sistemas operativos como Windows, macOS, BSD, Android.

Puerto abierto 22000 en el cortafuegos

Syncthing usa el puerto 22000 para comunicarse con sus pares. Si su computadora o servidor habilitó el firewall UFW, entonces debe habilitar el puerto 22000 con el siguiente comando.

sudo ufw allow 22000/tcp

Acceso a la interfaz web de Ubuntu Syncthing

De forma predeterminada, el servicio Syncthing escucha en 127.0.0.1:8384. Ahora, en la barra de direcciones de su navegador web, escriba 127.0.0.1:8384 para acceder a la interfaz web de Syncthing. Puede agregar otros dispositivos Syncthing y compartir carpetas con ellos.

Si instala Syncthing en un servidor Ubuntu remoto, debe configurar un proxy inverso con Nginx o Apache para acceder a la interfaz de usuario web, que se explica más adelante en este tutorial.

Comience a sincronizar archivos entre sus dispositivos

Una vez que tengamos dos dispositivos ejecutando Syncthing, podemos comenzar a sincronizar archivos entre ellos.

En la interfaz web de Syncthing, haga clic en Acciones> Mostrar identificación en la esquina superior derecha. Verá la identificación del dispositivo, que es una larga cadena de letras y números. El código QR, que también es la identificación del dispositivo, se usa para configurar Syncthing en teléfonos inteligentes.

Copie la identificación del dispositivo, luego abra la interfaz web de sincronización del segundo dispositivo, haga clic en Agregar dispositivo remoto en la esquina inferior derecha. Luego pegue la ID del dispositivo y asigne un nombre al dispositivo. Haga clic en el botón Guardar.

Ahora el segundo dispositivo intentará conectarse al primer dispositivo. Actualice la interfaz web en el primer dispositivo, verá el siguiente mensaje. Haga clic en Agregar dispositivo para agregar el segundo dispositivo a la lista de dispositivos del primer dispositivo.

Ahora los dos dispositivos están conectados.

En el panel izquierdo de la interfaz web se encuentra la carpeta de sincronización predeterminada (/home/username/Sync ). Haga clic en Add Folder botón para agregar una nueva carpeta. Proporcione una etiqueta descriptiva para esta carpeta y establezca la ruta de la carpeta.

Syncthing se ejecuta como su propia cuenta de usuario, por lo que debe tener permiso de escritura en la carpeta compartida. Si ve el siguiente mensaje de error mientras comparte una carpeta, significa que no tiene permiso de escritura en esa carpeta.

2020-06-21 20:05:49: Failed to create folder marker: mkdir .stfolder: read-only file system

Puede otorgar permiso de escritura con setfacl .

sudo apt install acl
sudo setfacl -R -m u:username:rwx /folder/path/

Nota :Si el problema persiste, consulte los consejos para la resolución de problemas al final de este artículo.

En el Sharing pestaña, seleccione su otro dispositivo Syncthing.

En Ignore Pattens pestaña, puede ingresar los patrones de nombre para los archivos que no deben sincronizarse.

En el Advanced pestaña, puede elegir el tipo de carpeta, el intervalo de reescaneo, etc.

Haga clic en el botón Guardar para comenzar a sincronizar. Aparecerá un mensaje en la interfaz web del otro dispositivo. Haz clic en Agregar para recibir archivos.

Ahora los dos dispositivos están sincronizando archivos. En el lado derecho, puede ver la velocidad de descarga, la velocidad de carga, el tamaño de la carpeta local, etc.

Configurar proxy inverso

Dado que escucha en 127.0.0.1:8384, la interfaz web de Syncthing solo está disponible para conexiones desde la misma computadora. Para poder acceder a la interfaz web de Syncthing desde una computadora remota, podemos configurar un proxy inverso para Syncthing con Nginx o Apache.

Nginx

Nginx es un servidor web muy popular y un proxy inverso. Si prefiere usar Nginx, ejecute el siguiente comando para instalarlo.

sudo apt install nginx

Luego cree un archivo de configuración del servidor.

sudo nano /etc/nginx/conf.d/syncthing.conf

Agregue el siguiente contenido a este archivo. Reemplace syncthing.example.com con su nombre de dominio preferido. También debe agregar un registro DNS A para este subdominio. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.

server {
  listen 80;
  server_name syncthing.example.com;

  access_log /var/log/nginx/syncthing.access.log;
  error_log /var/log/nginx/syncthing.error.log;
  location / {
    proxy_pass http://127.0.0.1:8384;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Guarde y cierre el archivo. Pruebe la configuración de Nginx y vuelva a cargar Nginx.

sudo nginx -t

sudo systemctl reload nginx

Después de apuntar su nombre de dominio a la dirección IP de Ubuntu, escriba su nombre de dominio en la barra de direcciones del navegador y debería ver la interfaz web de sincronización.

Si su navegador no puede conectarse a la interfaz web de Syncthing, tal vez necesite abrir el puerto 80 en el firewall. Por ejemplo, si usa UFW, ejecute el siguiente comando.

sudo ufw allow 80/tcp

Apache

Apache es un servidor web muy conocido que también se puede utilizar como proxy inverso. Si prefiere Apache a Nginx, instálelo con:

sudo apt install apache2

Inicie Apache y habilite el inicio automático.

sudo systemctl start apache2

sudo systemctl enable apache2

Para usar Apache como proxy inverso, debemos habilitar el proxy módulos y el módulo de cabecera.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Ahora cree un archivo de host virtual para Syncthing.

sudo nano /etc/apache2/sites-available/syncthing.conf

Copie y pegue las siguientes líneas en el archivo. Reemplace syncthing.example.com con su verdadero nombre de dominio. También debe agregar un registro DNS A para este subdominio. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.

<VirtualHost *:80>
   ServerName syncthing.example.com
   ErrorDocument 404 /404.html

   ProxyPass / http://127.0.0.1:8384/
   ProxyPassReverse / http://127.0.0.1:8384/

   ErrorLog ${APACHE_LOG_DIR}/syncthing_error.log
   CustomLog ${APACHE_LOG_DIR}/syncthing_access.log combined

</VirtualHost>

Guarde y cierre el archivo. Luego habilite este servidor virtual.

sudo a2ensite syncthing.conf

Reiniciar Apache

sudo systemctl restart apache2

Ahora puede acceder a la interfaz de usuario web a través de syncthing.example.com .

Si su navegador no puede conectarse a la interfaz web de Syncthing, tal vez necesite abrir el puerto 80 en el firewall. Por ejemplo, si usa UFW, ejecute el siguiente comando.

sudo ufw allow 80/tcp

Proteja la interfaz de usuario web de Syncthing con HTTPS

Para cifrar el tráfico HTTP cuando visita la interfaz de usuario web de Syncthing a través de un nombre de dominio, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let's Encrypt. Primero, abra el puerto 443 en el firewall.

sudo ufw allow 443/tcp

Luego ejecute el siguiente comando para instalar el cliente Let's Encrypt (certbot).

sudo apt install certbot

Si usa Nginx, también necesita instalar el complemento Certbot Nginx.

sudo apt install python3-certbot-nginx

A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

Si usa Apache, instale el complemento Certbot Apache.

sudo apt install python3-certbot-apache

Y ejecute este comando para obtener e instalar el certificado TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

donde

  • --nginx :use el complemento nginx.
  • --apache :Utilice el complemento de Apache.
  • --agree-tos :Acepto los términos del servicio.
  • --redirect :Forzar HTTPS por redirección 301.
  • --hsts :agregue el encabezado Strict-Transport-Security a cada respuesta HTTP. Obligar al navegador a usar siempre TLS para el dominio. Protege contra la eliminación de SSL/TLS.
  • --staple-ocsp :activa el grapado OCSP. Se grapa una respuesta OCSP válida al certificado que ofrece el servidor durante TLS.

Ahora se debe obtener el certificado e instalarlo automáticamente.

Actualice su GUI web de Syncthing, encontrará que la conexión HTTP se redirige automáticamente a la conexión segura HTTPS.

Habilitar autenticación de usuario

De manera predeterminada, cualquiera puede acceder a su interfaz web de Syncthing después de configurar el proxy inverso. Podemos habilitar la autenticación de usuario para restringir el acceso. Haga clic en Acciones en la esquina superior derecha, luego seleccione Configuración -> GUI.

Ingrese un nombre de usuario en Usuario de autenticación GUI ingrese una contraseña en campo de contraseña de autenticación de GUI . Luego guarde su configuración.

Tenga en cuenta que no necesita marcar Usar HTTPS para GUI box, que permite que Syncthing utilice un certificado autofirmado. Ya hemos instalado un certificado válido en Apache/Nginx en el que confían los principales navegadores web.

Una vez que guarde los cambios, reinicie el servicio Syncthing systemd o es posible que vea un error de puerta de enlace incorrecta 502 al recargar la página.

sudo systemctl restart [email protected]username.service

Ahora inicie sesión en la interfaz web de Syncthing con su nuevo nombre de usuario y contraseña.

Cómo usar un certificado TLS autofirmado

Si no desea utilizar un nombre de dominio y un certificado TLS válido para acceder a la interfaz web de Syncthing. Puede utilizar un certificado autofirmado. Edite el archivo de configuración de Syncthing.

nano ~/.config/syncthing/config.xml

Encuentra las siguientes líneas.

    <gui enabled="true" tls="false" debugging="false">
        <address>127.0.0.1:8384</address>
        <apikey>P4sYoeq2CNQRdfq33dq823dakE2</apikey>
        <theme>default</theme>

Para usar un certificado autofirmado, simplemente cambie tls="false" a tls="true" . Y si va a acceder a la interfaz web de Syncthing desde una computadora remota, cambie 127.0.0.1 a 0.0.0.0 .

Guarde y cierre el archivo. Luego reinicie Syncthing para que los cambios surtan efecto.

sudo systemctl restart [email protected]username.service

Carpetas de solo envío y solo recepción

Al compartir una carpeta en Syncthing, puede ir a la pestaña Avanzado y elegir uno de los tres tipos de carpeta:

  • Enviar y recibir (predeterminado)
  • Solo enviar
  • Solo recibir

Es posible que desee elegir solo enviar o solo recibir. Por ejemplo, si tiene 3 computadoras:A, B y C, y desea agregar carpetas en la computadora A y B a una sola carpeta en la computadora C. Entonces puede configurar el tipo de carpeta para recibir solo en la computadora C. De esta forma, la computadora C tendrá todos los archivos en una sola carpeta. Las computadoras A y B todavía tienen los archivos originales. Ni más ni menos.

Cuando usa la misma ruta de carpeta en la computadora C, Syncthing puede advertirle que "esta ruta es un subdirectorio de una carpeta existente". Puede ignorar esta advertencia porque tiene una carpeta de solo recepción. Los archivos existentes en la carpeta no se eliminarán.

Sincronización a través de servidores de retransmisión

Si dos instancias de Syncthing no pueden conectarse entre sí, Syncthing intentará usar un servidor de retransmisión para transferir archivos.

Una razón común por la que no pueden conectarse entre sí es que uno de ellos está detrás de un dispositivo NAT y no configuró el reenvío de puertos. Una vez que configure el reenvío de puertos, puede deshabilitar los servidores de retransmisión. Así es cómo. Haga clic en Edit y seleccione el botón Advanced pestaña, Cambiar la dirección de dynamic a tcp://ip-address:22000 . Por supuesto, debe usar su dirección IP real.

Sincronización de grandes cantidades de archivos pequeños

Syncthing no es adecuado para sincronizar grandes cantidades de archivos pequeños como los archivos de mosaicos de osm, ya que alcanzará rápidamente los límites de notificación del sistema de archivos de Linux. Si los dos dispositivos ejecutan Linux, entonces puede usar el rsync (sincronización remota) para sincronizar grandes cantidades de archivos pequeños, como este:

rsync -aP /path/to/source/folder/  [email protected]:/path/to/destination/folder

Ejecución de varias instancias de sincronización

Si tiene varias carpetas compartidas que pertenecen a diferentes usuarios, es una buena idea ejecutar varias instancias de Syncthing para cada usuario.

sudo systemctl start [email protected]
sudo systemctl start [email protected]

Si ejecuta Syncthing como usuario1 y comparte carpetas que pertenecen al usuario2, tendrá problemas de falta de sincronización/permiso denegado, porque Syncthing creará los archivos con el usuario con el que se ejecuta.

Cada instancia debe tener un puerto GUI y un puerto de sincronización únicos, que se pueden configurar en el archivo de configuración de sincronización del usuario en el directorio de inicio.

nano ~/.config/syncthing/config.xml

La configuración del puerto GUI es

<address>127.0.0.1:8384</address>

La configuración del puerto de sincronización predeterminado es

<listenAddress>default</listenAddress>

Puedes cambiarlo a

<listenAddress>tcp://0.0.0.0:22001</listenAddress>

Si no desea crear un subdominio para cada instancia de Syncthing, puede crear un subdirectorio en su nombre de dominio. Por ejemplo, la configuración del subdirectorio Nginx para Syncthing es la siguiente.

 location /user2/ {
    proxy_pass http://127.0.0.1:8385/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }

Uso user2 como subdirectorio. Puedes elegir el nombre que quieras. Tenga en cuenta que en proxy_pass http://127.0.0.1:8385/; , la barra diagonal final / se necesita Si lo elimina, no funcionará.

Consejos para solucionar problemas

No se puede conectar

Si sus instancias de Syncthing no pueden conectarse entre sí, puede usar el ss (Socket stats) utilidad para verificar si Syncthing está escuchando en el puerto TCP 22000.

sudo ss -lnpt | grep syncthing

Como puede ver en la captura de pantalla a continuación, mi Syncthing está escuchando en el puerto 8384 (interfaz web) y 22000 (conexión punto a punto).

Si no, puede editar el archivo de configuración.

nano ~/.config/syncthing/config.xml

Busque la siguiente línea.

<listenAddress>default</listenAddress>

Cambiar default a tcp://your-IP-address .

<listenAddress>tcp://12.34.56.78</listenAddress>

Guarde y cierre el archivo. Luego reinicie Syncthing.

sudo systemctl restart [email protected]username.service

Error al crear el marcador de carpeta

Si desea sincronizar una carpeta del sistema como /etc/ , probablemente verá el siguiente mensaje de error:

Failed to create folder marker, read-only file system

Esto se debe a que el servicio syncthing systemd (/lib/systemd/system/[email protected] ) tiene el siguiente ProtectSystem variable que prohíbe la operación de escritura en carpetas systemd (/usr/, /boot/, /etc/).

ProtectSystem=full

Podemos agregar exclusiones, para que Syncthing pueda escribir en la carpeta. Cree una carpeta para almacenar nuestras configuraciones systemd personalizadas.

sudo mkdir /etc/systemd/system/[email protected]username.service.d/

Luego cree un archivo en este directorio.

sudo nano /etc/systemd/system/[email protected]username.service.d/permission.conf

Agregue las siguientes líneas en este archivo.

[Service]
ReadWritePaths=/shared/foler/one/  /shared/foler/two/

Las carpetas están separadas por un espacio vacío. Puede agregar tantas carpetas como desee. La carpeta debe existir en su sistema, o Syncthing no podrá reiniciarse.

Guarde y cierre el archivo. Luego recarga systemd.

sudo systemctl daemon-reload

Y reinicie Syncthing.

sudo systemctl restart [email protected]username.service

El tamaño de la carpeta en Estado global no es preciso

Esto puede suceder si comparte carpetas con varios dispositivos. Supongamos que comparte una carpeta del dispositivo 1 con el dispositivo 2. Si el dispositivo 2 no ha terminado de sincronizar archivos y comparte la carpeta del dispositivo 2 con el dispositivo 3, entonces el tamaño de la carpeta global que se muestra en el dispositivo 3 será más pequeño que el tamaño real .

Se detiene la sincronización de carpetas

Consulte los registros de sincronización para averiguar por qué dejó de sincronizarse.

sudo journalctl -eu [email protected]

Solicitudes de procesamiento de problemas

Si ve el siguiente error, puede consultar el registro de errores de Nginx (/var/log/nginx/syncthing.error.log ) o el registro de errores de Apache (/var/log/apache/syncthing_error.log ) para averiguar qué causó este problema.

Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.

En mi caso, es porque habilité el firewall de la aplicación web ModSecurity.

Replicación asíncrona

Tenga en cuenta que Syncthing utiliza el método asincrónico, por lo que los cambios realizados en un nodo tardarán algún tiempo en replicarse en otros nodos. Si su aplicación es sensible a la demora de sincronización, se recomienda designar un nodo como el nodo principal. Realice cambios solo en el nodo maestro y use los nodos esclavos como respaldo.


Ubuntu
  1. Cómo instalar un escritorio (GUI) en un servidor Ubuntu

  2. Cómo instalar MySQL en Ubuntu 18.04

  3. Cómo instalar el servidor de Minecraft en Ubuntu 18.04

  4. Cómo instalar el servidor Xrdp (escritorio remoto) en Ubuntu 18.04

  5. Cómo instalar Nginx en Ubuntu 20.04

Cómo instalar Jellyfin Media Server en Ubuntu 20.04 LTS Server/Desktop

Cómo instalar qBittorrent en Ubuntu 19.04 Desktop o Server

Cómo instalar Plex Media Server en Ubuntu 20.04 LTS Server/Desktop

Cómo instalar FluxBox Desktop Ubuntu 20.04 LTS Servidor o PC

Cómo instalar el escritorio Ubuntu 20.04

Cómo instalar el servidor Xrdp (escritorio remoto) en Ubuntu 22.04