Aktionen

Ubuntu Syncthing installieren

Aus znilwiki

Nach der Anleitung für den Raspberry Pi hier nun die Ubuntu Variante für eine Installation von Syncthing ohne GUI unter dem Benutzer root auf eine, Ubuntu Server 14.04.2 LTS



1 Zum root wechseln

Egal was Ihr denkt und meint - ich arbeite als dauerhaft als root. Wenn Ihr als ein anderer Benutzer angemeldet seit so wechselt mit

sudo -i

zum root - ansonsten müsst Ihr vor jede der nachfolgenden Zeilen immer ein sudo stellen.



2 Quellen hinzufügen und Syncthing installieren

Für Ubuntu wird eine Paketquelle zur Verfügung gestellt, siehe http://apt.syncthing.net/

curl -s https://syncthing.net/release-key.txt | apt-key add -
echo deb http://apt.syncthing.net/ syncthing release | tee /etc/apt/sources.list.d/syncthing-release.list
apt-get update
apt-get install syncthing

Das Programm ist nun unter

/usr/bin/syncthing

installiert ... warum auch immer gibt es aber kein Start-Skript ... das kommt wieder unten


3 Erster Start und Konfiguration

Wir starten das Programm einfach über den Aufruf

syncthing

Das dauert nun beim ersten mal einige Zeit da er erst noch einige Dateien und Zertifikate erzeugt.

Beispielausgabe:

[monitor] 23:59:28 INFO: Starting syncthing
[start] 23:59:28 INFO: Generating RSA key and certificate for syncthing...
[ABCDE] 00:00:47 INFO: syncthing v0.11.16 (go1.4.2 linux-arm default) unknown-user@syncthing-builder 2015-07-19 11:34:11 UTC
[ABCDE] 00:00:47 INFO: My ID: 3YTRG4L-LYF32BL-5WGIN5K-N3LQ4RJ-CIRN3LE-YIJKHTY-HTW6MWR-4FECVAC
[ABCDE] 00:00:47 INFO: No config file; starting with empty defaults
[ABCDE] 00:00:47 INFO: Edit /root/.config/syncthing/config.xml to taste or use the GUI
[ABCDE] 00:00:47 INFO: Database block cache capacity 8192 KiB
[ABCDE] 00:00:47 OK: Ready to synchronize default (read-write)
[ABCDE] 00:00:47 INFO: Starting web GUI on http://127.0.0.1:8384/
[ABCDE] 00:00:47 INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or directory
[ABCDE] 00:00:47 INFO: Creating new HTTPS certificate
[ABCDE] 00:00:47 INFO: Generating RSA key and certificate for bananapi...
[ABCDE] 00:00:47 INFO: Completed initial scan (rw) of folder default
[ABCDE] 00:01:08 INFO: Starting local discovery announcements
[ABCDE] 00:01:08 INFO: Starting global discovery announcements
[ABCDE] 00:01:08 INFO: Device ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG-ABCDEFG is "webserver" at [dynamic]
[ABCDE] 00:01:08 INFO: API listening on 127.0.0.1:8384
[ABCDE] 00:01:18 INFO: New UPnP port mapping: external port 26917 to local port 22000.

Er hat nun die initialen Konfigurationsdateien erzeugt und unter

/root/.config/syncthing/

gespeichert:

ls -l /root/.config/syncthing/

Ausgabe:

root@bananapi ~ # ls -l /root/.config/syncthing/
insgesamt 28
-rw-r--r-- 1 root root 1411 Jul 25 00:00 cert.pem
-rw------- 1 root root 2209 Jul 25 00:00 config.xml
-rw-r--r-- 1 root root   33 Jul 25 00:01 csrftokens.txt
-rw-r--r-- 1 root root 1407 Jul 25 00:00 https-cert.pem
-rw------- 1 root root 2455 Jul 25 00:00 https-key.pem
drwxr-xr-x 2 root root 4096 Jul 25 00:00 index-v0.11.0.db
-rw------- 1 root root 2459 Jul 25 00:00 key.pem



Im Moment lauscht die Konfigurations-Webseite leider nur lokal auf der IP 127.0.0.1 - weshalb wir nur lokal über einen Webbrowser an diesen Dialog kämen.
Mein Ubuntu Server läuft ohne GUI und ich möchte von extern an den Dialog.

Zunächst beenden wir syncthing per STRG + C bzw. mit CTRL + C
Dann bearbeiten wir die Konfigurationsdatei:

nano /root/.config/syncthing/config.xml

sucht den folgenden Abschnitt:

<gui enabled="true" tls="false">
    <address>127.0.0.1:8384</address>
    <apikey>xu2Y-Ian-jVkADUWCPZxgVfBd0mQ7TDX</apikey>
</gui>

und ändert die 127.0.0.1 zu 0.0.0.0 ab:

 <gui enabled="true" tls="false">
    <address>0.0.0.0:8384</address>
    <apikey>xu2Y-Ian-jVkADUWCPZxgVfBd0mQ7TDX</apikey>
</gui>

Wenn Ihr tls="false" auf tls="true" setzt müsst ihr die Verbindung über https:// statt http:// erstellen.
Nach dem Speichern starten wir das Programm noch einmal:

syncthing

Nun könnt Ihr von einem anderem Rechner aus per Webbrowser auf die Weboberfläche zugreifen:

http://1.2.3.4:8384
https://1.2.3.4:8384

die 1.2.3.4 müsst Ihr natürlich über eure Adresse ersetzen.

RaspberryPi-Syncthing-001.png

Über Aktionen --> Einstellungen könnt Ihr nun Bequem einen Benutzernamen und Passwort angeben damit nicht jeder im internen Netzwerk auf die Oberfläche zugreifen kann.



4 Syncthing als Dienst starten

Wenn das mit dem Zugriff geklappt hat ist es Zeit das wir das ganze als Dienst starten.
Hierzu brauchen wir ein init-Skript

nano /etc/init.d/syncthing

mit folgendem Inhalt:

#!/bin/sh
### BEGIN INIT INFO
# Provides: syncthing
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Single-user daemonized version of syncthing.
# Description: Starts the syncthing daemon
### END INIT INFO

DAEMON=/usr/bin/syncthing
PID=/tmp/syncthing.pid

case "$1" in
  start)
        echo "Starting syncthing ..."
        ## start-stop-daemon --start --oknodo --pidfile $PID --exec $DAEMON
        start-stop-daemon --start --background --oknodo --pidfile $PID --make-pidfile --chuid root --user root --exec $DAEMON
        sleep 6
        ;;
  stop)
        echo "Stopping syncthing ..."
        start-stop-daemon --stop --pidfile $PID --chuid root --user root --retry=TERM/10/KILL/5 && exit 0
        start-stop-daemon --stop --oknodo --exec $DAEMON --name syncthing --retry=TERM/10/KILL/5
        ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: syncthing {start|stop|restart|force-reload}" >&2
        exit 1
        ;;

esac

exit 0

Jetzt noch Ausführbar machen und zum Autostart hinzufügen:

chmod +x /etc/init.d/syncthing
update-rc.d syncthing defaults


Ab jetzt könnt Ihr per

service syncthing start
service syncthing stop
service syncthing reload

den Dienst beenden und starten.
Beim Starten ist eine künstliche Pause von 6 Sekunden eingebaut - syncthing braucht nach dem Aufruf ein paar Sekunden bis es wirklich erreichbar ist.

Es gibt kein Logfile! Falls Ihr Fehlersuche betreiben wollt müsst Ihr den Dienst beenden un Syncthing einfach per

syncthing

wieder starten. Er gibt die Daten nur direkt in die Konsole aus.



5 Firewall

Ab Werk versucht der Client über UPnP sich "ein Loch in die Firewall zu bohren" über das er von extern zu erreichen ist:

[ABCDE] 13:09:05 INFO: New UPnP port mapping: external port 48521 to local port 22000.

Port 22000 ist hierbei der Standard-Port.
Wenn der Client eine Zeile wie zuvor ausspuckt ist alles ok.
Steht da aber so etwas wie:

[ABCDE] 13:13:11 INFO: UPnP parse: unrecognized UPnP device of type uuid:F07D687D44FC-4190-170B-7508-F9C79521
[ABCDE] 13:30:20 INFO: No UPnP device detected

kann es sein das die Firewall dies nicht zuläst.
In diesem Fall empfehle ich folgendes:

Unter Aktionen -> Einstellungen deaktiviert Ihr das UPnP:

RaspberryPi-Syncthing-002.png

In der Firewall macht Ihr für

  • IPv4 ein Portforwarding / NAT von extern 22000 auf intern 22000 auf die IPv4 eures Clients für TCP und UDP
  • IPv6 eine Firewall regel für TCP und UDP auf Port 22000 für den Client

habt Ihr mehrere Clients im Netzwerk so müsst Ihr jeden eine anderen Port nehmen und auch an den Clients einstellen:

RaspberryPi-Syncthing-003.png

Ersetzt die 22000 durch einen anderen Wert und leitet von extern wiederum auf diesen um.


Bei einer Fritz!Box etc. müsst ihr das alles nicht, hinter einer Watchguard und einer pfSense war es notwendig.



6 Kommentare


eric@epe.at

24 Monaten zuvor
Punktzahl 0++

Du sollst niemals einen Server als Root ausführen. Gerade syncthing, denn wenn das mal als root läuft kann syncthing alle files im system lesen und schreiben.

Eigentlich ist die Idee, dass jeder user seinen eigenen Prozess ausführt. Bei Multiuser Umgebung wäre denkbar mit einem syncthing user zu arbeiten, der jedoch entsprechende Rechte bräuchte - daher eher nicht empfehlenswert.

BLinz

24 Monaten zuvor
Punktzahl 0++

Wie schon am Anfang geschrieben - ich tue es trotzdem :-)

Syncthing setze ich übrigens nicht mehr ein - es hat sich als zu Instabil bei großen Datenmengen und vielen Dateien erwiesen (800GB, 300.000 Dateien), zudem waren die Updates oft grausam und es gab hinterher einen mehrere Stunden dauernden Neuabgleich.
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.