Einen Seafile-Server auf Linux Ubuntu 22.04 / Debian 11 installieren

Willkommen auf meiner Anleitung für die Installation von Seafile auf einem Hostsystem mit Linux Ubuntu oder alternativ Debian. Ich erkläre euch zuerst, welche Möglichkeiten wir mit der kostenlosen Open-Source-Cloud-Plattform Seafile erhalten und anschließend möchte ich auf die Grundvoraussetzung und auf die Installation selbst eingehen. Wie von mir gewohnt, werden dich Screenshots bei der Schritt-für-Schritt-Installation begleiten.

Was ist Seafile?

Seafile ist eine Open-Source-Software für die Cloud-Speicherung mit Dateisynchronisation und Online-Kollaboration für die gemeinsame Zusammenarbeit im Team. Seafile gilt als eine der schnellsten Cloudlösungen und ermöglicht die Erstellung von Team-Ordner. Die Plattform beherbergt ein Online-Office-System, welches die Verwendung und Bearbeiten von Dateien mittels spezifischen Benutzerberechtigungen ermöglicht. Aus diesem Grund finden wir die Software häufig im Unternehmensumfeld wieder.

Was für Alternativen gibt es zu Seafile?

Die bekanntesten Alternativen im Open-Source-Bereich sind vermutlich ownCloud und Nextcloud. Aber auch die kommerziellen Cloud-Speicherdienste wie Dropbox, Google Drive und Microsoft OneDrive können als direkte Konkurrenz zu Seafile betrachtet werden.

Inhaltsverzeichnis: Schritt-für-Schritt-Anleitung für die Installation eines Seafile-Servers für Ubuntu und Debian (Linux)

Funktionen und Features von Seafile

  • Einfach in der Administration: Seafile ist sehr robust, wartungsarm und leicht zu verwalten.
  • Gute Client-Software: Durch den Drive-Client werden die Datei-Synchronisierung und der Zugriff auf Daten zwischen dem Server und Client zum Kinderspiel.
  • AD/LDAP Unterstützung: Seafile lässt sich Dank der hervorragenden Integrationsmöglichkeiten sehr einfach in die bereits bestehende Unternehmensumgebung integrieren.
  • Ausgezeichnete Datei-Synchronisation: Seafile verfügt über eine sehr zuverlässige und effiziente Datei-Synchronisierung.
  • Integrierte Datenverschlüsselungen: Eine Verschlüsselung, die in das System integriert ist und die Daten automatisch und konstant verschlüsselt, macht Seafile sehr sicher.

Die Voraussetzungen für die Installation unter Linux Ubuntu / Debian

Die empfohlenen Anforderungen an die Hardware sollten erfüllt werden. Verwende eine aktuelle und gut gepflegte Linux Distribution, 2-Kerne, 2 GB Arbeitsspeicher, 15 GB Festplattenspeicher für das System und mindestens 100 GB für die Daten.

Seafile kann direkt auf einem Host (bare-Metal) installiert werden oder innerhalb einer virtuellen Maschine bzw. Container. Ob du Proxmox, VMware oder Hyper-V als Hypervisor verwendest, spielt für den späteren Betrieb keine Rolle.

Hinweis: Für den Zeitraum der Installation wechseln wir auf den Root-Benutzer. Das macht die Implementierung von Seafile auf dem Server komfortabler, da wir nicht jeden einzelnen Befehl mit sudo-Berechtigungen ausführen müssen und nicht ständig dazu aufgefordert werden, unser Passwort eingeben zu müssen.

Auf den Root-Benutzer wechseln:

sudo su root

Start der Schritt-für-Schritt-Installation von Seafile (Tutorial)

Start der Anleitung

In diesem Abschnitt installieren wir alle notwendigen Abhängigkeiten für den Betrieb eines Seafile Servers. Wir benötigen eine Datenbank und Python mit einigen Modulen. Zuerst bringen wir das System und die Paketquellen auf dem neusten Stand. Melde dich jetzt an deinem Hostsystem an und beginne jetzt mit der Installation von Seafile.

Führe zuerst eine Aktualisierung durch:

apt update && apt upgrade -y

MariaDB (Datenbank) für den Seafile-Server installieren (Schritt 1)

Zunächst installieren wir mit MariaDB eine Datenbank für unseren Seafile-Server. Verwende dafür die folgenden Befehle.

MariaDB-Datenbank installieren:

apt install mariadb-server -y

Das Installationsskript ausführen:

mysql_secure_installation

Während der Installation müssen einige Fragen beantwortet werden. Wir beantworten die Fragen wie folgt:

Remove anonymous users [Y/n]

Disallow root login remotely [Y/n]

Remove test database and access to it [Y/n]

Reload privilege tables now [Y/n]

Wir haben den Default-Benutzer entfernt, die Remote-Verbindung als Root-Benutzer verboten, die Test-Datenbank entfernt und die Privilegien neu geladen. Einige dieser Einstellungen sind sicherheitsrelevant. Jetzt, wo MariaDB erfolgreich auf dem Server installiert wurde, können wir uns der Konfiguration widmen.

Verbinde dich zunächst mit der MySQL-Datenbank:

mysql -u root -p

In diesem Schritt erstellen wir drei verschiedene Datenbanken. Führe die folgenden Befehle auf deinem Terminal der Reihe nach aus:

CREATE DATABASE seafile_server;
CREATE DATABASE ccnet_server;
CREATE DATABASE seahub_server;

Erstelle einen neuen Datenbankbenutzer und vergebe die notwendigen Berechtigungen:

CREATE USER 'seafile'@'localhost' IDENTIFIED BY 'einsicherespasswort';
GRANT ALL ON seafile_server.* TO 'seafile'@'localhost';
GRANT ALL ON ccnet_server.* TO 'seafile'@'localhost';
GRANT ALL ON seahub_server.* TO 'seafile'@'localhost';

Verlasse die Datenbank wieder:

QUIT;

Python und weitere Abhängigkeiten installieren (Schritt 2.)

Die Open-Source-Plattform Seafile ist auf Python und einigen Modulen angewiesen. In diesem Schritt meiner Installationsanleitung installieren wir alle für die Installation und den Betrieb notwendigen Abhängigkeiten. Führe die angegebenen Befehle der Reihe nach auf deinem Ubuntu/Debian Server aus.

Python und Module installieren:

apt install ffmpeg memcached libmemcached-dev python3 python3-{pip,pil,ldap,urllib3,setuptools,mysqldb,memcache,requests}

Wechsel auf den Benutzer ohne Root-Berechtigungen, da die Installation als Root-Benutzer zu Problemen führen kann:

su <user>
pip3 install --upgrade pip

pip3 install Pillow pylibmc captcha jinja2 sqlalchemy django-pylibmc django-simple-captcha python3-ldap mysqlclient

Seafile Server herunterladen und installieren (Schritt 3.)

In diesem Abschnitt installieren wir den Seafile Server. Alle Vorbereitungen und Abhängigkeiten für die Installation sollten jetzt erfüllt sein. Bevor wir die Software herunterladen, empfiehlt es sich zu überprüfen, ob es bereits eine neuere Version der Plattform gibt. Auch meine Anleitung wird altern! Wechsel für einen bequemeren Installationsprozess wieder auf den Root-Benutzer.

Rufe die offizielle Webseite des Herausgebers auf:

https://www.seafile.com/en/download/

Scrolle bis zu dem Bereich „Server für generic Linux“ und führe einen Rechtsklick auf die aktuelle 64bit Version aus. Kopiere den Link und verwendet den wget oder alternativ den curl Befehl in deinem Terminal, um die neuste Veröffentlichung von Seafile herunterzuladen.

Download:

wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_9.0.10_x86-64.tar.gz

Entpacke das Archiv nach dem erfolgreichen Download in das /srv Verzeichnis:

tar -xvf  seafile-server_9.0.10_x86-64.tar.gz -C /srv

mv /srv/seafile-server-9.0.10/ /srv/seafile

Der Seafile Server liefert nach dem Entpacken ein Set-up-Skript mit. Dieses müssen wir einmal ausführen, damit die Software auf unserem Host mit Ubuntu/Debian installiert wird.

Navigiere dafür zunächst in das Verzeichnis:

cd /srv/seafile/

Führe das Setup-Skript aus:

./setup-seafile-mysql.sh
Seafile Setup-Skript ausführen

Sobald das Skript mit dem Setup-Assistenten ausgeführt wird, müssen wir einige Fragen für die Konfiguration unseres Servers beantworten. 

Die folgende Tabelle kann als Hilfestellung verwendet werden:

  1. ENTER
  2. Wie soll der Server heißen? Seafile-Server
  3. IP-Adresse oder Domain eintragen: 168.178.23
  4. Port: 8082
  5. Wir haben bereits Datenbanken erstellt: 2
  6. Wie heißt der Host vom MySQL Server? localhost
  7. Wie lautet der Port vom MySQL Server? Enter
  8. Wie heißt der Datenbank-Benutzer? seafile
  9. Wie lautet das Passwort? einsicherespasswort
  10. Datenbank-Name ccnet eingeben: ccnet_server
  11. Datenbank-Name für seafile eingeben: seafile_server
  12. Datenbank-Name für seahub eingeben: seahub_server

Jetzt erhalten wir eine Ausgabe mit unseren Eingaben. Schließe die Einrichtung mit der ENTER-Taste ab. Der Seafile Server lauscht auf dem Port 8082 und die Weboberfläche (WebUI) auf den Port 8000. Aktuell kann der Dienst noch nicht aufgerufen werden, da die Dienste noch nicht gestartet wurden.

Konfigurationen Übersicht

Hinweis: Wird eine Firewall wie z. B. iptables oder UFW verwendet, müssen die Ports für ein und ausgehenden Verkehr freigeschaltet werden. Ansonsten ist nach der Installation kein Zugriff möglich.

Die Dienste für den Seafile-Server starten (Schritt 4.)

In dem Verzeichnis von unserem Seafile-Server liegt ein ausführbares Skript, welches den Server startet. Mit dem folgenden Befehl wird der Server auf dem Hostsystem ausgeführt.

In das Verzeichnis navigieren:

cd /srv/seafile

Den Seafile-Server starten:

./seafile.sh start

Das Web-Frontend von Seafile starten (Seahub):

./seahub.sh start

Jetzt muss ein Seafile-Admin-Account angelegt werden. Gib eine gültige E-Mail-Adresse und ein sicheres Passwort ein. Mit diesen Zugangsdaten melden wir uns nach der erfolgreichen Installation über die Weboberfläche des Servers an.

Einen systemd-Service für Seafile erstellen (Schritt 5.)

Damit der soeben installierte Seafile Server nach dem Bootvorgang z. B. nach einem Systemneustart automatisch wieder gestartet wird, ist es empfohlen, einen Service im systemd-Verzeichnis anzulegen. Dafür verwenden wir in dieser Anleitung den beliebten Editor nano.

Einen Service für Seafile (Server) erstellen:

nano /etc/systemd/system/seafile.service

Kopiere den folgenden Inhalt und füge ihn in die Datei ein:

[Unit]
Description=Seafile
After=mysql.service
After=network.target
[Service]
Type=forking
ExecStart=/srv/seafile/seafile.sh start
ExecStop=/srv/seafile/seafile.sh stop
[Install]
WantedBy=multi-user.target

Speichere die Änderungen ab (STRG +S) und verlasse den Editor wieder (STRG+ X).

Erstelle auch einen Service für den Seahub:

nano /etc/systemd/system/seahub.service

Kopiere den folgenden Inhalt und füge ihn in die Datei ein:

[Unit]
Description=Seafile
After=mysql.service
After=network.target
[Service]
Type=forking
ExecStart=/srv/seafile/seahub.sh start
ExecStop=/srv/seafile/seahub.sh stop
[Install]
WantedBy=multi-user.target

Jetzt müssen die Dienste noch aktiviert werden:

systemctl daemon-reload
systemctl start seafile && systemctl enable seafile
systemctl start seahub && systemctl enable seahub

Nginx installieren und einen Reverse-Proxy konfigurieren (Schritt 6.)

Die Installation und Einrichtung von Seafile unter Linux Ubuntu/Debian ist jetzt fast abgeschlossen. Wir installieren im letzten Schritt der Grundinstallation noch den Webserver Nginx für die Einrichtung eines Reverse-Proxys. Folglich wird der Server auch ohne die Eingabe eines spezifischen Ports erreichbar sein.

Nginx (Webserver) über das Terminal installieren:

apt install nginx -y

Erstelle eine neue Konfigurationsdatei mit dem folgenden Inhalt:

nano /etc/nginx/sites-available/seafile.conf

Kopieren und einfügen:

server {
listen 80;
server_name seafile.server.name;

proxy_set_header X-Forwarded-For $remote_addr;

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;

# used for view/edit office file via Office Online Server
client_max_body_size 0;

access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}

location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;

send_timeout 36000s;

access_log /var/log/nginx/seafhttp.access.log;
error_log /var/log/nginx/seafhttp.error.log;
}
location /media {
root /srv/seafile/seahub;
}
}

Entferne noch die Nginx-Default-Webseite:

rm /etc/nginx/sites-available/default 

Einen symbolischen Link anlegen:

ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf

Starte den Nginx Service jetzt neu:

nginx -s reload

Hinweis: Sollte es Probleme mit dem Zugriff auf die Weboberfläche von Seafile geben, muss die Syntax mit dem folgenden Befehl auf Fehler überprüft werden.

nginx -t

Installation von Seafile unter Linux abgeschlossen: Die Weboberfläche aufrufen

Herzlichen Glückwunsch. Die Installation von Seafile unter Linux Ubuntu/Debian ist an diesem Punkt erfolgreich abgeschlossen. Wir können jetzt einen beliebigen Webbrowser verwenden und uns mit dem zuvor erstellten Benutzerkonto über die Weboberfläche am Server anmelden. Verwende die IP-Adresse oder den Domainnamen.

In diesem Tutorial würden wir den Server jetzt wie folgt erreichen:

http://192.168.178.23

http://seafile.server.name
Seafile Installation für Linux Ubuntu und Debian erstes Login auf die Webseite

Tipp: Ich empfehle die Installation eines kostenfreien SSL-Zertifikats mit Certbot und Lets Encrypt. Ist kein Zugriff über das lokale Netzwerk heraus geplant, kann der Server ohne Probleme unverschlüsselt betrieben werden. Bei einer Verwendung über das Internet ist HTTPS zur Gewährleistung der Sicherheit zwischen den Clients und den Servern allerdings absolute Pflicht!

2 Kommentare on “Einen Seafile-Server auf Linux Ubuntu 22.04 / Debian 11 installieren

  1. Ich bekomme immer folgenden fehler :
    ginx: [alert] could not open error log file: open() „/var/log/nginx/error.log“ failed (13: Permission denied)
    2023/11/18 13:08:50 [warn] 1419#1419: the „user“ directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
    2023/11/18 13:08:50 [emerg] 1419#1419: open() „/etc/nginx/sites-enabled/default“ failed (2: No such file or directory) in /etc/nginx/nginx.conf:60
    nginx: configuration file /etc/nginx/nginx.conf test failed

    1. Hallo Peter, der von dir geschilderte Fehler weist auf ein Berechtigungsproblem hin. Stelle sicher, dass der Nginx-Benutzer (www-data) über die erforderlichen Berechtigungen verfügt. Erst dann ist ein Zugriff möglich! Führe die folgenden Befehle aus:

      sudo mkdir /var/log/nginx
      sudo chown -R www-data:www-data /var/log/nginx

      Überprüfe die Nginx-Konfiguration auf mögliche Syntax-Fehler:
      sudo nginx -t

      Starte den Dienst neu:
      sudo systemctl restart nginx

      Nachdem du diese Schritte ausgeführt hast, überprüfe die Nginx-Log-Dateien auf weitere Fehlermeldungen, um sicherzustellen, dass alle Probleme behoben wurden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert