GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Syncthing en un escritorio/servidor Debian

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.


Debian
  1. Cómo instalar el servidor de Minecraft en Debian 9

  2. Cómo instalar el servidor Redis en Debian 11

  3. Cómo instalar MySQL 8.0/5.7 en Debian 11/Debian 10

  4. Cómo instalar ProFTPD en Debian 8

  5. Cómo instalar el servidor MySQL en Debian 9

Cómo instalar Syncthing en Ubuntu Desktop/Server

Cómo instalar FastPanel en Debian 11

Cómo instalar I2P en el servidor Debian:

Cómo instalar el escritorio GNOME en Debian 8

Cómo instalar VNC en Debian 10

Cómo instalar el escritorio GNOME en Debian 10