Este tutorial le mostrará cómo instalar Syncthing en Debian. 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.
Instalar Syncthing en Debian a través del repositorio oficial de Deb
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 el 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 Debian.
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 sincronización de Debian
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 Debian remoto, puede habilitar el acceso remoto a la interfaz web de Syncthing editando el archivo de configuración.
nano /home/username/.config/syncthing/config.xml
Encuentra las siguientes dos líneas.
<gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address>
Cambiar tls="false"
a tls="true"
, por lo que el tráfico HTTP se cifrará. Y cambia 127.0.0.1
a la dirección IP pública del servidor Debian. Guarde y cierre el archivo. Reinicie Syncthing para que los cambios surtan efecto.
sudo systemctl start [email protected]username.service
Ahora escriba server-ip-address:8384
en el navegador web para acceder a la interfaz web de Syncthing. Obviamente, necesita usar la dirección IP real del servidor Debian. Se le pedirá que establezca un nombre de usuario y una contraseña para proteger la interfaz web de Syncthing.
También puede 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 asígnele un nombre. 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.
Uno en el panel izquierdo de la interfaz web es 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:rx /folder/path/
En el Sharing
pestaña, seleccione su otro dispositivo Syncthing.
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 Debian, 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, verá 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.
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.
Resolución de problemas
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
Falta el archivo .stfoler
El .stfoler
El archivo es requerido por Syncthing para funcionar. Este es un archivo vacío. No necesitas agregarle nada. Si la carpeta .stfolder
falta un archivo en su carpeta de sincronización, entonces la sincronización se detendrá. Puede crear el siguiente trabajo Cron para crear automáticamente el archivo.
@hourly touch /path/to/sync/folder/.stfolder
El comando táctil creará el archivo si falta. Si el archivo ya existe, actualizará la marca de tiempo del archivo.