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.
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 'Hakase-Seafile01@'; 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;
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.
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‘.
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 ‚Hakase-Seafile01@‘.
- ccnet-Datenbank: ‚ccnet-db‘.
- Seedatei-Datenbank: seedatei-db‘.
- seahub-Datenbank: seahub-db‘.
Drücken Sie nun erneut die Eingabetaste, um die Konfiguration des Seafile-Servers zu bestätigen.
Und wenn die Installation abgeschlossen ist, erhalten Sie das Ergebnis wie unten dargestellt.
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.
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
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.
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
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.
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 hakase@gmail.com -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.
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.
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.
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.
Unten sehen Sie das Ergebnis nach der Erstellung eines neuen Ordners und dem Hochladen der Datei auf den Seafile-Server.
Die Installation und Konfiguration von Seafile mit Nginx-Webserver und MariaDB-Datenbank auf Ubuntu 20.04 wurde erfolgreich abgeschlossen.