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:
Haz clic en la Configuración para definir el usuario y la contraseña de administrador, como se muestra a continuación:
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:
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:
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:
En el primer servidor, haz clic en Añadir dispositivo remoto. Deberías ver la siguiente pantalla:
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:
Proporciona el ID del dispositivo del primer servidor y haz clic en el botón Guardar. Deberías ver la siguiente pantalla:
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:
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:
Marca el segundo servidor y haz clic en el botón Guardar. Deberías ver la siguiente pantalla:
A continuación, ve al segundo servidor y haz clic en el botón Reexaminar todo. Deberías ver la siguiente pantalla:
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:
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.