--- title: "Cómo instalar Syncthing en Ubuntu 24.04 como servicio" description: "Instala Syncthing en Ubuntu 24.04 desde su repositorio oficial, ejecútalo con systemd, protege la interfaz web y sincroniza carpetas con versionado y exclusión." category: "Herramientas de Servidor" language: es source: https://cubepath.com/es/docs/herramientas-de-servidor/instalacion-de-syncthing-sincronizacion-de-archivos updated: 2026-09-25 --- # Cómo instalar Syncthing en Ubuntu 24.04 como servicio Syncthing sincroniza carpetas entre dispositivos de forma directa, sin un servidor central: cada equipo se conecta con los demás mediante TLS y los datos nunca pasan por terceros salvo, cifrados, cuando hace falta un relay. En este tutorial instalarás Syncthing en un servidor Ubuntu 24.04 desde su repositorio oficial, lo ejecutarás como servicio de systemd con un usuario dedicado, accederás a su interfaz web de forma segura y sincronizarás una carpeta con tu equipo usando versionado de archivos y patrones de exclusión. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - Un segundo dispositivo con Syncthing instalado (tu portátil, otro servidor o un móvil) para emparejarlo. En Windows y macOS puedes instalarlo desde la web oficial de Syncthing. - UFW activo, o cualquier cortafuegos donde puedas abrir el puerto 22000. Sustituye `your_user` y `your_server_ip` por tus valores a lo largo de la guía. ## Paso 1: Instalar Syncthing desde el repositorio oficial Ubuntu 24.04 incluye Syncthing en sus repositorios, pero con una versión antigua. El repositorio oficial del proyecto ofrece la versión estable actual. Descarga su clave de firma: ```bash sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg ``` Añade el repositorio: ```bash echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | \ sudo tee /etc/apt/sources.list.d/syncthing.list ``` > Nota: el canal `stable-v2` corresponde a Syncthing 2.x. El canal `stable` se mantiene en la serie 1.x. Todos los dispositivos que sincronizas deberían usar la misma versión mayor. Instala el paquete: ```bash sudo apt update sudo apt install -y syncthing ``` Comprueba que la versión instalada procede del repositorio oficial: ```bash apt policy syncthing ``` ```output syncthing: Installed: 2.x.x Candidate: 2.x.x Version table: *** 2.x.x 500 500 https://apt.syncthing.net syncthing/stable-v2 amd64 Packages ``` ## Paso 2: Ejecutar Syncthing como servicio El paquete incluye la unidad de systemd `syncthing@.service`, que arranca Syncthing con el usuario indicado tras la `@`. Crea un usuario de sistema dedicado, de modo que Syncthing solo pueda leer y escribir en sus propias carpetas: ```bash sudo useradd --system --create-home --home-dir /var/lib/syncthing --shell /usr/sbin/nologin syncthing ``` Activa y arranca el servicio para ese usuario: ```bash sudo systemctl enable --now syncthing@syncthing.service ``` Comprueba que está en marcha: ```bash systemctl status syncthing@syncthing.service ``` ```output ● syncthing@syncthing.service - Syncthing - Open Source Continuous File Synchronization for syncthing Loaded: loaded (/usr/lib/systemd/system/syncthing@.service; enabled; preset: enabled) Active: active (running) since ... ``` En el primer arranque Syncthing genera su certificado, que define el identificador del dispositivo, y un archivo `config.xml`. Localiza el archivo: ```bash sudo find /var/lib/syncthing -name config.xml ``` ```output /var/lib/syncthing/.local/state/syncthing/config.xml ``` Las versiones recientes guardan la configuración en `~/.local/state/syncthing`; las instalaciones antiguas usaban `~/.config/syncthing`. Usa la ruta que devuelva el comando. Por defecto la interfaz web escucha solo en `127.0.0.1:8384`, así que no es accesible desde Internet. Compruébalo: ```bash sudo ss -tlnp | grep syncthing ``` ```output LISTEN 0 4096 127.0.0.1:8384 0.0.0.0:* users:(("syncthing",pid=4123,fd=12)) LISTEN 0 4096 *:22000 *:* users:(("syncthing",pid=4123,fd=10)) ``` El puerto 22000 es el de sincronización entre dispositivos y el 8384 el de la interfaz web. ## Paso 3: Abrir los puertos de sincronización Syncthing necesita el puerto 22000 en TCP y en UDP (conexiones QUIC) para recibir conexiones directas de otros dispositivos. El puerto 21027/UDP solo sirve para el descubrimiento en la red local; en un servidor en Internet no es necesario. ```bash sudo ufw allow 22000/tcp sudo ufw allow 22000/udp ``` Verifica las reglas: ```bash sudo ufw status ``` ```output To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22000/tcp ALLOW Anywhere 22000/udp ALLOW Anywhere ``` No abras el 8384. Sin el puerto 22000 abierto Syncthing sigue funcionando a través de relays, pero las transferencias serán más lentas. ## Paso 4: Acceder a la interfaz web por un túnel SSH La forma más segura de administrar Syncthing en un servidor es no exponer nunca la interfaz web y reenviarla por SSH. Desde tu equipo local, abre el túnel: ```bash ssh -L 8385:127.0.0.1:8384 your_user@your_server_ip ``` Se usa el puerto local 8385 para no chocar con el Syncthing de tu propio equipo, que ya ocupa el 8384. Con el túnel abierto, visita `http://127.0.0.1:8385` en el navegador. La primera vez, Syncthing muestra un aviso porque la interfaz no tiene contraseña. Configúrala aunque solo accedas por túnel, ya que cualquier usuario del servidor podría conectarse al puerto local: 1. Abre **Actions > Settings > GUI**. 2. Rellena **GUI Authentication User** y **GUI Authentication Password** con un usuario y una contraseña robusta. 3. Marca **Use HTTPS for GUI** y guarda. La página se recarga y pide las credenciales. A partir de ahora accede con `https://127.0.0.1:8385`; el navegador mostrará un aviso de certificado autofirmado que puedes aceptar. ## Paso 5: Emparejar el servidor con otro dispositivo Cada dispositivo se identifica por un ID derivado de su certificado, con el formato `XXXXXXX-XXXXXXX-...` en ocho bloques. Para emparejar dos dispositivos, cada uno debe aceptar al otro. En la interfaz web del servidor, abre **Actions > Show ID** y copia el identificador. Luego, en la interfaz de tu equipo local (`http://127.0.0.1:8384`): 1. Pulsa **Add Remote Device**. 2. Pega el ID del servidor en **Device ID** y ponle un nombre, por ejemplo `servidor`. 3. En la pestaña **Advanced**, sustituye `dynamic` en **Addresses** por `tcp://your_server_ip:22000`. Así tu equipo se conecta directamente al servidor sin depender del descubrimiento global. 4. Guarda. En unos segundos la interfaz del servidor muestra un aviso: `Device "tu-equipo" (ID...) wants to connect`. Pulsa **Add Device** y guarda. Ambos dispositivos aparecen como **Connected** en la sección **Remote Devices**. ## Paso 6: Compartir una carpeta Crea en el servidor la carpeta que recibirá los datos. Debe pertenecer al usuario `syncthing`: ```bash sudo install -d -o syncthing -g syncthing /srv/sync/documentos ``` En la interfaz de tu equipo local, pulsa **Add Folder**: 1. **General**: pon una etiqueta como `Documentos` y elige la ruta local. El **Folder ID** se genera solo; debe ser el mismo en todos los dispositivos que compartan esta carpeta. 2. **Sharing**: marca el dispositivo `servidor`. 3. Guarda. En el servidor aparece una notificación para aceptar la carpeta. Al aceptarla, cambia **Folder Path** a `/srv/sync/documentos` antes de guardar. Syncthing ofrece cuatro tipos de carpeta, configurables en **Edit > Advanced > Folder Type**: | Tipo | Comportamiento | |---|---| | Send & Receive | Sincronización bidireccional, el valor por defecto | | Send Only | Envía cambios pero ignora los que llegan de otros dispositivos | | Receive Only | Recibe cambios; las modificaciones locales no se envían | | Receive Encrypted | Guarda los datos cifrados; el dispositivo no puede leerlos | Para un servidor que actúa como copia de tu equipo, **Receive Only** evita que un cambio accidental en el servidor se propague a tus dispositivos. Si el servidor no es de total confianza, comparte la carpeta desde tu equipo con una contraseña de cifrado (en la pestaña **Sharing**, al marcar el dispositivo) y el servidor la guardará como **Receive Encrypted**, sin acceso a los contenidos. Comprueba que la sincronización funciona creando un archivo en tu equipo, dentro de la carpeta compartida, y listando la carpeta del servidor: ```bash sudo ls -l /srv/sync/documentos ``` ```output total 4 -rw-r--r-- 1 syncthing syncthing 12 Sep 25 10:31 prueba.txt ``` En la interfaz, la carpeta muestra el estado **Up to Date**. ## Paso 7: Activar el versionado de archivos Sin versionado, un archivo borrado o sobrescrito en un dispositivo se borra o sobrescribe en todos. El versionado guarda la versión anterior en la carpeta `.stversions` del dispositivo que recibe el cambio. Actívalo en el servidor, que es donde quieres conservar el historial: **Edit** en la carpeta, pestaña **File Versioning**. | Tipo | Qué conserva | |---|---| | Trash Can | La última versión de cada archivo borrado o sustituido, durante los días que indiques | | Simple | Un número fijo de versiones por archivo | | Staggered | Más versiones recientes y menos antiguas, hasta una edad máxima | | External | Delega en un comando propio | **Staggered** es el más útil para un servidor: conserva una versión cada 30 segundos durante la primera hora, una por hora durante el primer día, una por día durante 30 días y una por semana hasta la edad máxima. Selecciónalo y fija **Maximum Age** en `365` días. Para comprobarlo, modifica `prueba.txt` en tu equipo y lista las versiones en el servidor: ```bash sudo ls /srv/sync/documentos/.stversions ``` ```output prueba~20260925-103512.txt ``` > Nota: el versionado protege contra errores y borrados accidentales, pero no sustituye a una copia de seguridad. Un ransomware en tu equipo cifraría los archivos y Syncthing enviaría las versiones cifradas; el versionado del servidor conservaría las anteriores solo durante la edad máxima configurada. ## Paso 8: Excluir archivos con .stignore Los patrones de exclusión se escriben en un archivo `.stignore` en la raíz de la carpeta compartida. El archivo no se sincroniza, así que cada dispositivo tiene el suyo; lo más cómodo es editarlo desde la interfaz, en **Edit > Ignore Patterns**, en el dispositivo desde donde se envían los datos. Un ejemplo para una carpeta de trabajo: ```text // Dependencias y artefactos de compilación node_modules .venv __pycache__ dist build // Archivos temporales del sistema, borrables si bloquean un directorio (?d).DS_Store (?d)Thumbs.db *.tmp *.swp // Incluir los patrones de otro archivo de la carpeta #include .stignore-extra ``` Reglas de la sintaxis: - Las líneas que empiezan por `//` son comentarios. - Un patrón sin `/` inicial coincide en cualquier nivel; con `/` inicial, solo en la raíz de la carpeta. - `*` coincide dentro de un nivel de ruta y `**` en varios. - Un patrón precedido de `!` es una excepción: incluye lo que un patrón posterior excluiría. Syncthing aplica el primer patrón que coincide, así que las excepciones van antes. - `(?d)` permite a Syncthing borrar esos archivos si impiden eliminar un directorio, y `(?i)` hace el patrón insensible a mayúsculas. - `#include` añade los patrones de otro archivo; si el archivo no existe, la carpeta queda en error, así que créalo antes o elimina esa línea. Tras guardar, los archivos que ya se habían sincronizado no se borran del otro dispositivo; simplemente dejan de actualizarse. ## Solución de problemas **El dispositivo aparece como Disconnected.** Comprueba desde tu equipo que el puerto está accesible con `nc -zv your_server_ip 22000` y revisa que la regla de UFW existe. Si la conexión aparece como **Relay** en lugar de TCP o QUIC, el puerto 22000 no llega al servidor. **La carpeta queda en error con `permission denied`.** La ruta no pertenece al usuario `syncthing`. Corrígelo con `sudo chown -R syncthing:syncthing /srv/sync/documentos`. **Aparecen archivos `.sync-conflict-...`.** El mismo archivo se modificó en dos dispositivos antes de sincronizarse. Syncthing conserva ambas versiones: compara el archivo original con la copia en conflicto, quédate con la correcta y borra la otra. **Se pierde el acceso a la interfaz web por olvidar la contraseña.** Detén el servicio, edita `config.xml` en la ruta del paso 2, borra el contenido de los elementos `` y `` dentro de `` y vuelve a arrancarlo; después define una contraseña nueva desde la interfaz. **Ver los logs del servicio.** Usa `sudo journalctl -u syncthing@syncthing.service -n 100`. ## Conclusión Tienes Syncthing en un servidor Ubuntu 24.04 como servicio de systemd con un usuario dedicado, la interfaz web accesible solo por túnel SSH y con contraseña, una carpeta sincronizada con otro dispositivo, versionado escalonado y patrones de exclusión. Como siguientes pasos, añade más dispositivos a la misma carpeta (cada uno se conecta con todos los demás), incluye `/srv/sync` en tu sistema de copias de seguridad y considera la carpeta **Receive Encrypted** si el servidor almacena datos que no debe poder leer.