Dateien synchronisieren, teilen & gemeinsam bearbeiten | Sync-In
Übersicht
Nextcloud ist für viele das Schweizer Taschenmesser im Homelab – E-Mail, Kalender, Kontakte, Office, Dateien und vieles mehr. Genau das ist aber auch der Kritikpunkt vieler Nutzer: Sie benötigen den Großteil dieser Funktionen gar nicht und wünschen sich eine deutlich schlankere Lösung.
Genau hier setzt Sync-In an. Statt eine komplette Groupware bereitzustellen, konzentriert sich Sync-In auf das Wesentliche: Dateien sicher speichern, Ordner zwischen Geräten synchronisieren, Dokumente gemeinsam bearbeiten und Inhalte unkompliziert mit anderen teilen. Trotz des schlanken Ansatzes müssen dabei weder Komfort noch moderne Funktionen wie Browser-Office, Benutzerverwaltung, LDAP oder OpenID Connect auf der Strecke bleiben.
In diesem Artikel schauen wir uns an, wie ihr Sync-In mit Docker installiert, für den Betrieb hinter einem Reverse Proxy konfiguriert und anschließend für eure eigene private Cloud einrichtet.
Video zum Artikel findet ihr Hier: https://youtu.be/T-rQXK5FIDI
Installation
Docker
Da wir Sync-In mit Docker betreiben möchten, installieren wir als Erstes natürlich erstmal Docker selbst, falls noch nicht geschehen. Das können wir ganz einfach mit dem offiziellen Convenience Script von Docker machen.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Docker Compose
Der Docker-Compose-Stack von Sync-In ist etwas größer und bereits weitgehend für uns konfiguriert. Wir erhalten alles, was wir brauchen, über den Befehl direkt von der offiziellen Webseite.
curl -L -o sync-in-docker.zip \
https://github.com/Sync-in/server/releases/latest/download/sync-in-docker.zip && \
unzip sync-in-docker.zip
Sollte kein unzip installiert sein, könnt ihr das mit
sudo apt install unzipinstallieren.
Da ich meine Docker-Stacks immer gerne unter /opt aufbewahre, verschiebe ich den entpackten Ordner entsprechend dorthin und navigiere anschließend in das neue Verzeichnis.
sudo mv ~/sync-in-docker /opt/
cd /opt/sync-in-docker
Konfiguration
Für Sync-In müssen wir im Vorfeld einige Anpassungen vornehmen.
environment.yml
Als Erstes passen wir die environment.yaml an. Wir tauschen die Platzhalter gegen sichere Secrets und aktivieren die Tools, die wir haben möchten, in meinem Fall Collabora für das Bearbeiten von Files.
Sichere Secrets können wir uns ganz einfach mit dem Befehl openssl rand -hex 32 generieren.
In dem File passen wir das Passwort für die Datenbank an.
mysql:
url: 'mysql://root:MySQLRootPassword@mariadb:3306/sync_in'
Tauschen die drei Secrets gegen sichere Zeichenfolgen, die wir mit dem Befehl generieren können.
auth:
encryptionKey: 'changeEncryptionKeyWithStrongKey'
token:
access:
secret: 'changeAccessWithStrongSecret'
refresh:
secret: 'changeRefreshWithStrongSecret'
Und aktivieren die Tools, die wir gerne nutzen möchten. In meinem Fall Collabora.
applications:
files:
dataPath: /app/data
editors:
collabora:
enabled: true
docker-compose.yml
Damit die zusätzlichen Tools funktionieren, müssen wir hier als Erstes oben den include-Block anpassen.
include:
- ./config/nginx/docker-compose.nginx.yaml
# - ./config/onlyoffice/docker-compose.onlyoffice.yaml
- ./config/collabora/docker-compose.collabora.yaml
# - ./config/eurooffice/docker-compose.eurooffice.yaml
# - ./config/sync-in-desktop-releases/docker-compose.sync-in-desktop-releases.yaml
Als Nächstes wird empfohlen, die Volumes auf Mount-Bind zu ändern, was mir sowieso lieber ist. Daher passen wir bei allen Containern unter Volumes die Verzeichnisse an, indem wir ein ./ davor setzen. Damit werden die Daten in Ordner direkt im Verzeichnis von Sync-In abgelegt.
Für den Service sync-in:
volumes:
- ./environment.yaml:/app/environment/environment.yaml
./data:/app/data
./desktop_releases:/app/static/releases:ro
Für den Service mariadb:
volumes:
- ./mariadb_data:/var/lib/mysql
Da wir die Verzeichnisse nun direkt auf dem Host haben, kann die volumes:-Sektion ganz am Ende von der docker-compose.yml entfernt werden.
volumes:
data:
mariadb_data:
desktop_releases:
Als Letztes muss noch das Passwort für den mariadb:-Service angepasst werden, auf dasselbe wie in der environment.yml.
environment:
MYSQL_ROOT_PASSWORD: 'MySQLRootPassword'
nginx.conf
Sobald wir zusätzliche Tools wie Collabora verwenden, kommt bei Sync-In ein mitgebrachter nginx als Reverse Proxy zum Einsatz. Dieser übernimmt für uns das Routing zwischen den Containern, daher ist dieser essenziell. Damit wir unseren eigenen Reverse-Proxy trotzdem davor benutzen können, müssen wir ein paar Einstellungen an der nginx.conf vornehmen.
sudo nano /opt/sync-in-docker/config/nginx/nginx.conf
Als Erstes fügen wir einen zusätzlichen map-Block hinzu. Damit wir später via https mit unserem Reverse Proxy arbeiten können und das Ganze richtig weitergegeben wird, ist das nötig.
map $http_x_forwarded_proto $real_proto {
default $http_x_forwarded_proto;
'' $scheme;
}
Das Gegenstück dazu finden wir weiter unten im server-Block. Hier müssen wir in der unten gezeigten Zeile von $scheme auf $real_proto ändern.
proxy_set_header X-Forwarded-Proto $real_proto;
Zuletzt müssen wir ganz unten in der nginx.conf noch include collabora.conf; ausklammern, damit hier das Routing auch aktiv ist und passt.
# NOTE: This is only needed when the Collabora Online Docker container is running locally
# and you are not using an external URL.
# Uncomment the line below to enable it:
include collabora.conf;
Collabora
Damit auch Collabora mit unserem https klarkommt, müssen wir noch eine Variable in der docker-compose.collabora.yaml anpassen.
sudo nano /opt/sync-in-docker/config/collabora/docker-compose.collabora.yaml
Hier stellen wir --o:ssl.termination auf true.
environment:
extra_params: >-
--o:ssl.enable=false
--o:ssl.termination=true
Wichtig: Wenn ihr eine Domain verwendet, die nicht öffentlich erreichbar ist, müsst ihr dem Collabora-Container mitteilen, wo er diese Domain erreicht, da hier eine Überprüfung stattfindet.
Entweder habt ihr eine DNS-Umschreibung und gebt dem Container den richtigen DNS-Server oder ihr gebt es entsprechend in der docker-compose.collabora.yaml mit an. Dafür fügt ihr das ganz am Ende mit ein.
Achtet auf die korrekte Einrückung auf Höhe von networks:.
extra_hosts:
- "sync.juseclab.de:10.30.40.1"
Reverse Proxy
Als Reverse Proxy verwende ich in diesem Setup einen Nginx Proxy Manager auf einem anderen Host. Ihr könnt aber auch jegliche andere Varianten nutzen.
Falls ihr das Ganze von überall erreichen wollt, könnt ihr bspw. auch unkompliziert die Reverse Proxy Funktion von NetBird verwenden. Beachtet hier, dass ihr in den Advanced Settings "Pass Host Header" einschalten müsst.

Start
Alles ist bereit und wir können Sync-In anstarten. Dafür gehen wir wieder in das Hauptverzeichnis von Sync-In und führen folgenden Befehl aus. Voran haben wir hier Variablen, mit denen wir unseren initialen User und das Passwort bestimmen können.
cd /opt/sync-in-docker
sudo INIT_ADMIN=true INIT_ADMIN_LOGIN='user' INIT_ADMIN_PASSWORD='password' docker compose up -d
Nach einer kurzen Boot-Phase erreichen wir nun über unsere Domain Sync-In. Mit den festgelegten Credentials können wir uns einloggen.

Erste Schritte
Persönlicher Bereich
In diesem Reiter können wir all unsere eigenen Dateien & Dokumente ablegen. Außerdem haben wir die Möglichkeit, Dateien zu erstellen, unter anderem auch Tabellen, Docs und PowerPoint-Files, die wir dann mit Collabora direkt im Browser bearbeiten können.
Hier ist eine Volltextsuche verfügbar, sodass wir unsere Dateien ganz einfach komplett durchsuchen können.


Bereiche
Im Reiter Bereiche gibt es die Möglichkeit, geteilte Bereiche anzulegen. Hier können wir dann Dateien und Co. mit unserer Familie oder Kollegen gemeinsam aufrufen und verwalten.

Geteilt
Eine der Hauptfunktionen ist natürlich das Teilen von Files. Wir können also Dateien für andere erreichbar machen, bspw. über Bereiche oder auch mit Links für Benutzer, die ggf. keinen Account haben.

Ein geteilter Link sieht dann für die Gegenseite bspw. so aus:\n 
Collaboration
Natürlich haben wir die Möglichkeit, Dateien gemeinsam und gleichzeitig zu bearbeiten.

Apps
Sein komplettes Können entfesselt Sync-In erst mit den zugehörigen Apps. Denn wir haben hier die Möglichkeiten, Ordner und Co. von unseren Geräten synchron mit Sync-In zu halten. Egal ob in einem Bereich, unser persönlicher Bereich etc.
Für Mobilgeräte gibt es aktuell keine offizielle App, aber es kann via WebDav zugegriffen werden. Mehr Infos hier.

Benutzer und Gruppen
Wir haben natürlich die Möglichkeit, weitere Benutzer und auch Gruppen anzulegen, um damit entsprechende Berechtigungen zu verwalten.


Auch auf Kontoebene können wir bspw. Gruppen und Gäste erstellen.

MFA & Anwendungskennwörter
Um unsere Accounts abzusichern, gibt es eine eingebaute Multi-Faktor-Authentifizierung.

Mit Anwendungskennwörtern können wir den Zugriff via Apps und WebDav zusätzlich absichern bzw. für alles verschiedene Passwörter generieren.

Open ID Connect & LDAP
Es ist auch möglich, die Authentifizierung bspw. via Authentik oder via LDAP vorzunehmen statt lokal.
Mehr Infos hier.
Fazit
Fazit
Sync-In hat mich vor allem durch seinen klaren Fokus überzeugt. Statt möglichst viele Funktionen unter einem Dach zu vereinen, konzentriert sich die Plattform auf Dateiverwaltung, Synchronisierung und Zusammenarbeit und macht genau das sehr gut. Wer weder Kalender, Mailserver noch die vielen zusätzlichen Apps einer kompletten Groupware benötigt, erhält hier eine moderne und angenehm schlanke Alternative.
Mit Desktop-Synchronisation, Freigaben, gemeinsamer Dokumentbearbeitung über Collabora sowie Unterstützung für LDAP und OpenID Connect eignet sich Sync-In sowohl für das Homelab als auch für kleinere Teams oder Familien. Für mich ist es definitiv ein Projekt, das man im Bereich Self-Hosting im Auge behalten sollte.