Wie man Seafile mit Nginx auf Ubuntu 20.04 LTS installiert

Seafile ist ein Open-Source File-Hosting- und Cloud-Speichersystem mit erweiterten Funktionen wie Synchronisierung von mehreren Plattformen (plattformübergreifendes System), Schutz der Privatsphäre mit integrierter Dateiverschlüsselung und Unterstützung für Zwei-Faktor-Authentifizierung (TFA), Versionskontrolle, Dateisperre, Online-Bearbeitung und vieles mehr. Seafile ist in der Programmiersprache C und Python geschrieben und bietet ähnliche Funktionen wie Dropbox, mega.co.nz und andere.

In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie einen Seafile-Server mit Nginx-Webserver und der MariaDB-Datenbank installieren und konfigurieren. Wir werden den Seafile-Server unter dem Nginx-Webserver mit aktiviertem HTTPS SSL Letsencrypt unter Verwendung der neuesten MariaDB auf dem Ubuntu 20.04-System installieren.

Voraussetzungen

  • Ubuntu 20.04
  • Root-Privilegien

Was werden wir tun?

  • Seafile-Python-Abhängigkeiten installieren
  • Installieren und Konfigurieren von MariaDB
  • Seafile-Server für Linux-Server herunterladen
  • Seafile Server mit MariaDB installieren
  • Seafile mit Domänenname konfigurieren
  • Ausführen von Seafile als Systemdienst
  • Erzeugen Sie SSL Letsencrypt und DHPARAM
  • Installieren und Konfigurieren von Nginx als Reverse-Proxy
  • Firewall einrichten
  • Testen

Schritt 1 – Seafile-Python-Abhängigkeiten installieren

Der erste Schritt, den wir vor der Installation von seafile server auf dem System machen müssen, ist die Installation seiner Abhängigkeiten. Seafile ist eine Python-basierte Anwendung, und sie benötigt Python 3.x, um auf dem Server zu laufen.

Bevor wir irgendwelche Pakete installieren, müssen wir das Ubuntu-Repository aktualisieren.

sudo apt update

Installieren Sie nun python 3.x mit allen Abhängigkeiten, die für die Installation von seafile server benötigt werden, mit den untenstehenden apt-Befehlen.

sudo apt install python3 libpython3.8 python3-setuptools python3-pil python3-ldap python3-urllib3 ffmpeg python3-pip python3-mysqldb python3-memcache python3-requests libmemcached-dev

Installieren Sie danach weitere Python-Pakete aus dem PyPI-Repository mit dem Befehl pip (siehe unten).

pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap

Infolgedessen wurden alle Paketabhängigkeiten für Seafile installiert.

Schritt 2 – Installieren und Konfigurieren von MariaDB

Seafile bietet Unterstützung für SQLite und den MariaDB-Datenbankserver. Für diesen Leitfaden werden wir den MariaDB-Datenbankserver für unsere Installation verwenden. Wir werden den Seafile-Server mit der neuesten MariaDB-Version einsetzen.

Installieren Sie den MariaDB-Server mit dem untenstehenden apt-Befehl.

sudo apt install mariadb-server -y

Nachdem die Installation abgeschlossen ist, starten Sie den MariaDB-Dienst und ermöglichen es ihm, jederzeit beim Systemstart zu starten.

systemctl start mariadb
systemctl enable mariadb

Der MariaDB-Server ist auf dem Ubuntu-System installiert, überprüfen Sie ihn mit dem folgenden Befehl.

systemctl status mariadb

Der MariaDB-Dienst ist eingerichtet und in Betrieb.

MariaDB-Datenbankserver installieren

Als nächstes müssen wir das MariaDB-Root-Passwort mit dem Befehl ‚mysql_secure_installation‘ konfigurieren.

mysql_secure_installation

Nun werden Sie nach der MariaDB-Konfiguration gefragt, und geben Sie Ihr strong root-Passwort für MariaDB ein.

Enter current password for root (enter for none): Press Enter
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y  
Reload privilege tables now? [Y/n] Y

Als nächstes werden wir eine neue Datenbank für den Seafile-Server erstellen. Wir werden 3 Datenbanken für jede Seafile-Komponente erstellen und einen neuen Datenbankbenutzer anlegen. Wir werden einen neuen Benutzer mit dem Namen „seafile“ erstellen, der alle Privilegien für alle 3 Datenbanken „ccnet-db“, „seafile-db“ und „seahub-db“ haben wird.

Melden Sie sich mit dem folgenden Befehl an der MySQL-Shell an.

mysql -u root -p

Erstellen Sie jetzt neue Datenbanken ‚ccnet-db‘, ’seafile-db‘, ’seahub-db‘ und erstellen Sie einen neuen Benutzer ’seafile‘. Dann gewähren Sie dem Benutzer ’seafile‘ alle 3 Datenbank-Privilegien.

Führen Sie MySQL-Abfragen unten aus.

create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';
create user 'seafile'@'localhost' identified by '[email protected]';

GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;

Erstellen Sie eine neue Datenbank und einen neuen Benutzer für Seafile

Der MariaDB-Server wurde installiert, das Root-Passwort wurde eingerichtet und die Datenbank für die Seedatei-Installation wurde erstellt.

Schritt 3 – Seafile Server für Linux-Server herunterladen

In diesem Tutorial läuft der seafile-Server als Dienst auf dem systemd-System, und zwar unter einem Nicht-Root-Benutzer.

Erstellen Sie einen neuen Benutzer namens ‚ryujin‘.

useradd -m -s /bin/bash ryujin

Melden Sie nun den Benutzer ‚ryujin‘ an und laden Sie die neueste Version des seafile server mit wget herunter.

su - ryujin
wget -q https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_7.1.3_x86-64.tar.gz

Entpacken Sie die Datei ’seafile-server.tar.gz‘ und benennen Sie das Hauptverzeichnis in ’seafile-server‘ um.

tar -xf seafile-server_7.1.3_x86-64.tar.gz
mv seafile-server-*/ seafile-server/

Der Quellcode des Seedatei-Servers wurde in das Verzeichnis ‚/home/ryujin/seafile-server‘ heruntergeladen.

Seedatei 7.1 herunterladen

Schritt 4 – Seedatei-Server mit MariaDB installieren

In diesem Schritt installieren wir den Seafile-Server mit dem von Seafile bereitgestellten MariaDB-Setup-Skript.

Melden Sie sich als Benutzer ‚ryujin‘ an und gehen Sie in das Verzeichnis ’seafile-server‘.

su - ryujin
cd seafile-server/

Führen Sie nun das Skript ’setup-seafile-mysql.sh‘ aus.

./setup-seafile-mysql.sh

Das Installationsskript führt die Überprüfung des Python-Moduls durch. Stellen Sie sicher, dass alle Abhängigkeiten installiert sind, und drücken Sie dann die Eingabetaste.

Nun sind Sie bei der Seafile-Konfiguration angelangt.

  • Servername: Geben Sie den Namen Ihres Seefile-Servers ein, z.B. ‚Hakase-Wolke‘.
  • Server-Domänenname: Geben Sie den Domänennamen für Ihren Seafile-Server ‚cloud.hakase-labs.io‘ ein.
  • seafile data directory: belassen Sie die Standardkonfiguration und drücken Sie Enter.
  • Seafile Fileserver-Port: belassen Sie es auf dem Standard-Port ‚8082‘.

Konfiguration der Seedatei-Installation

Nun zur Datenbankkonfiguration. Sie werden nach 2 Optionen gefragt: Lassen Sie das Skript die Datenbank für Sie erstellen, oder verwenden Sie eine bestehende Datenbank.

Wählen Sie Option ‚2‘, um bestehende Datenbankeinstellungen zu verwenden.

  • Datenbank-Host: Standard-Localhost
  • Datenbank-Port: Standard auf dem normalen mysql-Port ‚3306‘.
  • Datenbankbenutzer ist ’seafile‘ mit dem Passwort ‚[email protected]‘.
  • ccnet-Datenbank: ‚ccnet-db‘.
  • Seedatei-Datenbank: seedatei-db‘.
  • seahub-Datenbank: seahub-db‘.

Datenbankkonfiguration für Seedatei

Drücken Sie nun erneut die Eingabetaste, um die Konfiguration des Seafile-Servers zu bestätigen.

Zusammenfassung der Seedatei-Konfiguration

Und wenn die Installation abgeschlossen ist, erhalten Sie das Ergebnis wie unten dargestellt.

Installation von Seafile auf Ubuntu 20.04

Die Installation und Konfiguration des Seedateiservers wurde erfolgreich abgeschlossen. Und der Seefile Fileserver wird unter Port ‚8082‘ laufen, der Seahub-Dienst unter Port ‚8000‘.

Als nächstes testen wir die Ausführung des Seedatei-Servers und des Seahub-Servers unter Verwendung des Startskripts.

Gehen Sie als Benutzer von ‚ryujin‘ in das Verzeichnis ‚~/seafile-server-latest‘.

su - ryujin
cd ~/seafile-server-latest/

Starten Sie nun den seafile-Server, indem Sie den nachstehenden Befehl ausführen.

./seafile.sh start

Führen Sie dann den Seahub-Server aus.

./seahub.sh start

Wenn Sie das Startskript ’seahub.sh‘ zum ersten Mal ausführen, werden Sie aufgefordert, einen Admin-Benutzer und ein Passwort für den Seedatei-Server zu erstellen.

Geben Sie Ihre Administrator-E-Mail und Ihr Passwort ein und drücken Sie Enter.

Seafile Admin-Benutzer anlegen

Und der Admin-Benutzer und das Passwort wurden erstellt – überprüfen Sie nun die Seedatei- und Seahub-Serviceports ‚8082‘ und ‚8080‘ mit dem Befehl netstat.

ss -plnt4

Und Sie werden sehen, dass der Seedatei-Server und der Seahub-Server auf dem Ubuntu 20.04-System laufen.

Stoppen Sie nun seafile und seahub Server.

./seafile.sh stop
./seahub.sh stop

Stop Seedatei und Seahub-Dienst

Schritt 5 – Seedatei mit Domänennamen konfigurieren

Für dieses Tutorial werden wir die Seafile mit unserem Domain-Namen ’seafile.hakase-labs.io‘ ausführen. Dazu müssen wir einige der Seafile-Konfigurationen bearbeiten.

Melden Sie sich bei dem Benutzer ‚ryujin‘ an und gehen Sie in das Verzeichnis ‚conf‘.

su - ryujin
cd conf/

Bearbeiten Sie die Konfiguration ‚ccnet.conf‘ mit dem Editor vim.

vim ccnet.conf

Ändern Sie bei der Option ‚SERVICE_URL‘ den Wert mit dem Domänennamen und stellen Sie sicher, dass Sie das Standard-HTTP-Protokoll mit dem sicheren HTTPS-Protokoll wie unten beschrieben ändern.

SERVICE_URL = https://seafile.hakase-labs.io

Speichern und schließen.

Als nächstes bearbeiten Sie die Konfiguration ’seafile.conf‘.

vim seafile.conf

Geben Sie im Abschnitt ‚[Fileserver]‘ die ‚Host‘-IP-Adresse für den Seedatei-Dienst an. Der Seedateidienst wird unter der unten angegebenen lokalen Adresse laufen.

[fileserver]
host = 127.0.0.1
port = 8082

Speichern und schliessen.

Als nächstes editieren Sie die ’seahub_settings.py‘ mit dem vim-Editor.

vim seahub_settings.py

Fügen Sie unten in der Zeile die Option ‚FILE_SERVER_ROOT‘ wie unten beschrieben hinzu.

FILE_SERVER_ROOT = 'https://seafile.hakase-labs.io/seafhttp'

Speichern und schließen.

Seafile-Domain-Name konfigurieren

Und die Seafile-Konfiguration ist abgeschlossen, sie wird unter dem Domain-Namen ’seafile.hakase-labs.io‘ laufen.

Schritt 6 – Ausführen von Seafile als Systemdienst

Nachdem wir Seafile mit dem Domainnamen konfiguriert haben, richten wir Seafile und Seahub als Systemdienst ein.

Gehen Sie in das Verzeichnis ‚/etc/systemd/system‘ und erstellen Sie eine neue Servicedatei für seafile mit dem Namen ’seafile.service‘.

cd /etc/systemd/system/
vim seafile.service

Fügen Sie die folgende Konfiguration darin ein.

[Unit]
Description=Seafile
After=network.target mysql.service nginx.service
[Service]
Type=forking
ExecStart=/home/ryujin/seafile-server-latest/seafile.sh start
ExecStop=/home/ryujin/seafile-server-latest/seafile.sh stop
User=ryujin
Group=ryujin

[Install]
WantedBy=multi-user.target

Speichern und schließen.

Erstellen Sie als Nächstes die seahub-Servicedatei mit dem Namen ’seahub.service‘.

vim seahub.service

Fügen Sie dort die folgende Konfiguration ein.

[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
ExecStart=/home/ryujin/seafile-server-latest/seahub.sh start
ExecStop=/home/ryujin/seafile-server-latest/seahub.sh stop
User=ryujin
Group=ryujin

[Install]
WantedBy=multi-user.target

Speichern und schließen.

Und die Seedatei und die Seehub-Servicedateien wurden erstellt.

Laden Sie als nächstes den Systemmanager neu und vergewissern Sie sich, dass kein Fehler vorliegt.

systemctl daemon-reload

Starten Sie nun den Seedatei-Dienst und fügen Sie ihn zum Systemstart hinzu.

systemctl start seafile
systemctl enable seafile

Danach starten und aktivieren Sie den Seahub-Dienst.

systemctl start seahub
systemctl enable seahub

Konfigurieren von Seafile und Seahub als Systemdienst

Der Seafile- und Seahub-Dienst ist eingerichtet und läuft, überprüfen Sie ihn mit dem folgenden Befehl.

systemctl status seafile seahub

Unten sehen Sie das Ergebnis, das Sie erhalten werden.

Konfigurieren von Seafile und Seahub als Systemdienst

Damit ist die Konfiguration von Seafile und Seahub als Systemdienst abgeschlossen.

Schritt 7 – SSL Letsencrypt und DHPARAM erzeugen

In diesem Schritt werden wir das SSL Letsencrypt- und das DHPARAM-Zertifikat generieren. Wir werden das Werkzeug certbot zur Erzeugung von SSL Letsencrypt und den Befehl openssl zur Erzeugung des dhparam-Zertifikats verwenden.

Um SSL Letsencrypt zu generieren, stellen Sie sicher, dass Sie den echten Domainnamen erhalten haben und auf die IP-Adresse Ihres Servers verweisen.

Installieren Sie das certbot-Tool auf dem Ubuntu-System mit dem folgenden apt-Befehl.

sudo apt install certbot

Danach generieren Sie SSL Letsencrypt für den Seedatei-Domainnamen ’seafile.hakase-labs.io‘ mit dem certbot-Befehl wie unten beschrieben.

certbot certonly --agree-tos --no-eff-email --email [email protected] -d seafile.hakase-labs.io

Sobald der gesamte Prozess abgeschlossen ist, wird Ihr Zertifikat im Verzeichnis ‚/etc/letsencrypt/live/seafile.hakase-labs.io‘ verfügbar sein.

Als nächstes erzeugen Sie das DHPARAM-Zertifikat mit dem openssl-Befehl wie unten beschrieben.

openssl dhparam -out /etc/nginx/dhparam.pem 2048

Das DHAPRAM-Zertifikat wird generiert und ist auf der ‚/etc/nginx/dhparam.pem‘ verfügbar.

Als Ergebnis wurde das SSL Letsencrypt für den Seafile-Domain-Namen und das DHPARAM-Zertifikat generiert.

Schritt 8 – Installieren und Konfigurieren von Nginx als Reverse-Proxy

In diesem Schritt werden wir Nginx als Reverse-Proxy für den Seafile-Dienst installieren und konfigurieren. Der Nginx-Webserver läuft unter dem sicheren HTTPS-Protokoll mit dem SSL Letsencrypt- und dem DHPARAM-Zertifikat, die oben generiert werden.

Installieren Sie Nginx mit dem folgenden apt-Befehl auf dem Ubuntu 20.04-Server.

sudo apt install nginx -y

Wenn die gesamte Installation abgeschlossen ist, starten Sie den Nginx-Dienst und fügen ihn dem Systemstart hinzu.

systemctl start nginx
systemctl enable nginx

Und der Nginx-Dienst ist auf dem Ubuntu-System einsatzbereit.

Als nächstes gehen Sie in das Verzeichnis ‚/etc/nginx/sites-available‘ und erstellen eine neue Virtualhost-Konfiguration ’seafile‘ mit dem vim-Editor.

cd /etc/nginx/sites-available/
vim seafile

Fügen Sie die folgende Konfiguration darin ein.

server {
        listen       80;
        server_name  seafile.hakase-labs.io;
        rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
    }
    server {
        listen 443 ssl http2;
        server_name seafile.hakase-labs.io;
        
        ssl_certificate /etc/letsencrypt/live/seafile.hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/seafile.hakase-labs.io/privkey.pem;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:5m;
ssl_dhparam /etc/nginx/dhparam.pem;

#SSL Security
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
server_tokens off;
ssl_session_tickets off;

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 /seafdav {
proxy_pass         http://127.0.0.1:8080/seafdav;
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_set_header   X-Forwarded-Proto $scheme;
proxy_read_timeout  1200s;
client_max_body_size 0;

access_log      /var/log/nginx/seafdav.access.log;
error_log       /var/log/nginx/seafdav.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;
}
location /media {
root /home/ryujin/seafile-server-latest/seahub;
}
}

Speichern und schließen.

Als nächstes aktivieren Sie die Virtualhost-Konfiguration für seafile und testen die Nginx-Konfiguration.

ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t

Stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann den Nginx-Dienst neu.

systemctl restart nginx

Als Ergebnis wurde die Installation und Konfiguration von Nginx als Reverse-Proxy für Seafile erfolgreich abgeschlossen.

Installieren und Konfigurieren von Nginx als Reverse-Proxy für Seafile

Schritt 9 – Einrichten der Firewall

In diesem Tutorial werden wir Seafile mit aktivierter UFW-Firewall ausführen. Und wir müssen die SSH-, HTTP- und HTTPS-Dienste zur UFW-Firewall-Konfiguration hinzufügen.

Fügen Sie die SSH-, HTTP- und HTTPS-Dienste mit dem folgenden Befehl zur UFW-Firewall hinzu.

for svc in ssh http https
do
ufw allow $svc
done

Aktivieren Sie nun die UFW-Firewall und überprüfen Sie den Status der Konfiguration.

ufw enable
ufw status numbered

Und Sie erhalten das Ergebnis wie unten dargestellt.

UFW erlaubt SSH-HTTP und HTTPS

Die UFW-Firewall ist aktiviert, und der SSH-, HTTP- und HTTPS-Dienst wurde hinzugefügt.

Jetzt sind wir bereit, die Seafile zu verwenden.

Schritt 10 – Prüfung

Öffnen Sie Ihren Webbrowser und geben Sie den Domain-Namen der Seafile-Installation in die Adressleiste ein.

https://seafile.hakase-labs.io/

Nun werden Sie auf die sichere HTTPS-Verbindung umgeleitet und erhalten die Seafile-Login-Seite wie unten angegeben.

Seafile Login Page

Geben Sie oben das Passwort für den Benutzer der Seedatei ein, das Sie gerade erstellt haben, und klicken Sie auf die Schaltfläche ‚Anmelden‘.

Nun erhalten Sie das Seafile-Dashboard wie unten dargestellt.

Seafile-Armaturenbrett

Unten sehen Sie das Ergebnis nach der Erstellung eines neuen Ordners und dem Hochladen der Datei auf den Seafile-Server.

Seafile Datei erfolgreich hochgeladen

Die Installation und Konfiguration von Seafile mit Nginx-Webserver und MariaDB-Datenbank auf Ubuntu 20.04 wurde erfolgreich abgeschlossen.

Referenz

Das könnte Dich auch interessieren …