Cómo instalar Syncthing en Ubuntu 20.04

Syncthing es una herramienta de código abierto que sirve para sincronizar archivos entre dos o más ordenadores de una red. Utiliza una arquitectura peer-to-peer e intercambia tus datos directamente entre tus dispositivos. Todos los datos transmitidos entre varios dispositivos están encriptados con TLS. Cada vez que crees, modifiques o elimines algún dato en un equipo de Syncthing, se replicará automáticamente en otros servidores. Se puede instalar en los principales sistemas operativos, incluyendo Linux, Windows, Mac OS X, etc.

En esta guía, te mostraremos cómo instalar y configurar el servidor Syncthing en Ubuntu 20.04.

Requisitos previos

  • Dos servidores con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en ambos servidores.

Cómo empezar

En primer lugar, actualiza los paquetes del sistema a la versión actualizada ejecutando el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, puedes pasar al siguiente paso.

Instalar el servidor Syncthing en ambos servidores

Por defecto, el paquete Syncthing no está incluido en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que añadir el repositorio de Syncthing al APT.

Primero, instala todas las dependencias necesarias en ambos servidores con el siguiente comando:

apt-get install gnupg2 curl apt-transport-https -y

A continuación, descarga y añade la clave de lanzamiento con el siguiente comando:

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

A continuación, añade el repositorio de Syncthing al APT con el siguiente comando:

echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list

A continuación, actualiza el repositorio e instala el servidor de Syncthing con el siguiente comando:

apt-get update -y
apt-get install syncthing -y

Una vez completada la instalación, verifica la versión de Syncthing con el siguiente comando:

syncthing --version

Deberías obtener la siguiente salida:

syncthing v1.18.0 "Fermium Flea" (go1.16.5 linux-amd64) [email protected] 2021-06-21 20:53:50 UTC [noupgrade]

En este punto, Syncthing está instalado en ambos servidores. Ahora puedes pasar al siguiente paso.

Crear un archivo de unidad Systemd en ambos servidores

A continuación, tendrás que crear un archivo de unidad systemd para gestionar el servicio Syncthing. Puedes crearlo en ambos servidores con el siguiente comando:

nano /etc/systemd/system/[email protected]

Añade las siguientes líneas:

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo cuando hayas terminado. A continuación, recarga el demonio systemd para aplicar la configuración:

systemctl daemon-reload

A continuación, inicia el servicio Syncthing con el siguiente comando:

systemctl start syncthing@root

Para verificar el estado del servicio Syncthing, ejecuta el siguiente comando:

systemctl status syncthing@root

Deberías ver la siguiente salida:

? [email protected] - Syncthing - Open Source Continuous File Synchronization for root
     Loaded: loaded (/etc/systemd/system/[email protected]; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 04:40:12 UTC; 5s ago
       Docs: man:syncthing(1)
   Main PID: 2878 (syncthing)
      Tasks: 14 (limit: 2353)
     Memory: 44.2M
     CGroup: /system.slice/system-syncthing.slice/[email protected]
             ??2878 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0
             ??2889 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0

Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: QUIC listener ([::]:22000) starting
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or d>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Creating new HTTPS certificate
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: GUI and API listening on [::]:8384
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: My name is "node1"
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] WARNING: Syncthing should not run as a privileged or system user. Please consider using a norma>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 detected NAT type: Not behind a NAT
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 resolved external address quic://45.58.35.6:22000 (via stun.syncthin>

En este punto, el servicio Syncthing está iniciado y escuchando en el puerto 8384. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep 8384

Deberías ver la siguiente salida:

LISTEN    0         4096                     *:8384                   *:*        users:(("syncthing",pid=2889,fd=12))    

Accede a la interfaz web de Syncthing

A continuación, abre tu navegador web y accede a la interfaz web de Syncthing utilizando las URLs http://first-server-ip:8384 y http://first-server-ip:8384.

Deberías ver la siguiente pantalla:

Interfaz de administración de Syncthing

Haz clic en la Configuración para definir el usuario y la contraseña de administrador, como se muestra a continuación:

Establecer una contraseña

Proporciona tu nombre de usuario, contraseña y haz clic en el botón Guardar para aplicar los cambios. Serás redirigido a la página de inicio de sesión de Syncthing:

Regístrate en

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver la siguiente pantalla:

Carpetas

A continuación, tendrás que añadir el ID del dispositivo de cada servidor a otro servidor para poder sincronizar los archivos entre ambos servidores. Para ello, haz clic en el botón Acciones > Mostrar ID en ambos servidores. Deberías ver la siguiente pantalla:

Identificación del dispositivo

identificar el nodo 2

En el primer servidor, haz clic en Añadir dispositivo remoto. Deberías ver la siguiente pantalla:

Añade un dispositivo

Proporciona el ID del dispositivo del segundo servidor y haz clic en el botón Guardar.

En el segundo servidor, haz clic en Añadir Dispositivo Remoto. Deberías ver la siguiente pantalla:

ID del dispositivo

Proporciona el ID del dispositivo del primer servidor y haz clic en el botón Guardar. Deberías ver la siguiente pantalla:

Carpetas y dispositivos

Ahora, tendrás que añadir y compartir la carpeta que quieres sincronizar con el segundo servidor. Haz clic en el botón Añadir Carpeta. Deberías ver la siguiente pantalla:

Añadir una carpeta

Proporciona la etiqueta de tu carpeta, la ruta de la carpeta y haz clic en la pestaña Compartir. Deberías ver la siguiente pantalla:

Compartir carpetas

Marca el segundo servidor y haz clic en el botón Guardar. Deberías ver la siguiente pantalla:

Carpetas y dispositivos en Syncthing

A continuación, ve al segundo servidor y haz clic en el botón Reexaminar todo. Deberías ver la siguiente pantalla:

Volver a escanear todo

Haz clic en Añadir para añadir la carpeta de copia de seguridad compartida en el primer servidor. Deberías ver la siguiente pantalla:

Sincronización de carpetas

Ahora, cada vez que crees o modifiques algún archivo en la carpeta Backup del primer servidor, se sincronizará automáticamente con el segundo servidor.

Configurar Nginx como proxy inverso para la sincronización

También puedes configurar Nginx como proxy inverso para acceder al servidor de Syncthing a través del puerto 80.

Primero, instala el servidor Nginx con el siguiente comando:

apt-get install nginx -y

A continuación, crea un archivo de configuración del host virtual Nginx con el siguiente comando:

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

Añade las siguientes líneas:

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;
  }
}

Guarda y cierra el archivo y luego verifica que el Nginx no tenga ningún error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, recarga el Nginx para aplicar los cambios.

systemctl reload nginx

También puedes comprobar el estado del Nginx con el siguiente comando:

systemctl status nginx

Deberías ver la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 05:01:36 UTC; 21s ago
       Docs: man:nginx(8)
   Main PID: 3394 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 6.2M
     CGroup: /system.slice/nginx.service
             ??3394 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3395 nginx: worker process

Jul 09 05:01:36 node1 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 09 05:01:36 node1 systemd[1]: Started A high performance web server and a reverse proxy server.

Ahora, puedes acceder al servidor de Syncthing utilizando la URL http://syncthing.example.com.

Conclusión

Enhorabuena! has instalado y configurado con éxito Syncthing en dos servidores Ubuntu 20.04 y has configurado la sincronización entre ambos servidores. Espero que este tutorial te ayude a hacer una copia de seguridad de tu servidor.

También te podría gustar...