Seafile ist ein Open-Source-Dateihosting- und Cloud-Speichersystem mit erweiterten Funktionen wie Synchronisierung von mehreren Plattformen (plattformübergreifendes System), Datenschutz mit integrierter Dateiverschlüsselung und Unterstützung für Zwei-Faktor-Authentifizierung (TFA), Versionskontrolle, Dateisperrung, 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 installieren und die neueste MariaDB auf dem Ubuntu 20.04-System verwenden.
Voraussetzungen
- Ubuntu 20.04
- Root-Rechte
Was werden wir tun?
- Seafile-Python-Abhängigkeiten installieren
- MariaDB installieren und konfigurieren
- Seafile Server für Linux-Server herunterladen
- Seafile Server mit MariaDB installieren
- Seafile mit Domainnamen konfigurieren
- Seafile als Systemdienst ausführen
- SSL Letsencrypt und DHPARAM generieren
- Installieren und konfigurieren Sie Nginx als Reverse-Proxy
- Firewall einrichten
- Testen
Schritt 1 – Seafile-Python-Abhängigkeiten installieren
Der erste Schritt, den wir unternehmen müssen, bevor wir den Seafile-Server auf dem System installieren, ist die Installation seiner Abhängigkeiten. Seafile ist eine Python-basierte Anwendung und erfordert Python 3.x, um auf dem Server ausgeführt zu werden.
Vor der Installation von Paketen müssen wir das Ubuntu-Repository aktualisieren.
sudo-apt-Update
Installieren Sie jetzt Python 3.x mit allen Abhängigkeiten, die für die Installation des Seafile-Servers benötigt werden, indem Sie die folgenden apt-Befehle verwenden.
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 zusätzliche Python-Pakete aus dem PyPI-Repository mit dem folgenden pip-Befehl.
pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap
Als Ergebnis wurden alle Paketabhängigkeiten für Seafile installiert.
Schritt 2 – MariaDB installieren und konfigurieren
Seafile bietet Unterstützung für SQLite und den Datenbankserver MariaDB. Für diese Anleitung verwenden wir den MariaDB-Datenbankserver für unsere Installation. Wir werden den Seafile-Server mit der neuesten MariaDB-Version bereitstellen.
Installieren Sie den MariaDB-Server mit dem folgenden apt-Befehl.
sudo apt install mariadb-server -y
Nachdem die Installation abgeschlossen ist, starten Sie den MariaDB-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.
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 läuft.
Als nächstes müssen wir das MariaDB-Root-Passwort mit dem Befehl „mysql_secure_installation“ konfigurieren.
mysql_secure_installation
Jetzt werden Sie nach der MariaDB-Konfiguration gefragt und geben Ihr starkes Root-Passwort für MariaDB ein.
Aktuelles Passwort für Root eingeben (Eingabe für keins):Enter drücken
Root-Passwort festlegen? [Y/n] Y
Anonyme Benutzer entfernen? [Y/n] Y
Root-Anmeldung aus der Ferne nicht zulassen? [Y/n] Y
Testdatenbank und Zugriff darauf entfernen? [Y/n] Y
Berechtigungstabellen jetzt neu laden? [J/n] Ja
Als nächstes erstellen wir eine neue Datenbank für den Seafile-Server. Wir werden 3 Datenbanken für jede Seafile-Komponente erstellen und einen neuen Datenbankbenutzer erstellen. Wir werden einen neuen Benutzer namens „seafile“ erstellen und er wird alle Privilegien für alle drei Datenbanken „ccnet-db“, „seafile-db“ und „seahub-db“ haben.
Melden Sie sich mit dem folgenden Befehl bei der MySQL-Shell an.
mysql -u root -p
Erstellen Sie nun neue Datenbanken „ccnet-db“, „seafile-db“, „seahub-db“ und erstellen Sie einen neuen Benutzer „seafile“. Gewähren Sie dann dem 'seafile'-Benutzer alle 3 Datenbankrechte.
Führen Sie unten die MySQL-Abfragen aus.
Datenbank „ccnet-db“ erstellen Zeichensatz =„utf8“;
Datenbank „seafile-db“ erstellen Zeichensatz =„utf8“;
Datenbank „seahub-db“ erstellen Zeichensatz =„ utf8';
erstellen Sie den Benutzer 'seafile'@'localhost', identifiziert durch '[email protected]';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF `ccnet-db`.* an ` seafile`@localhost;
GEWÄHREN SIE ALLE PRIVILEGIEN AUF `seafile-db`.* an `seafile`@localhost;
GEWÄHREN SIE ALLE PRIVILEGIEN AUF `seahub-db`.* an `seafile`@localhost;
Der MariaDB-Server wurde installiert, das Root-Passwort eingerichtet und die Datenbank für die Seafile-Installation erstellt.
Schritt 3 – Seafile Server für Linux-Server herunterladen
In diesem Tutorial wird der Seafile-Server als Dienst auf dem systemd-System ausgeführt, und er wird unter einem Nicht-Root-Benutzer ausgeführt.
Erstellen Sie einen neuen Benutzer namens „ryujin“.
useradd -m -s /bin/bash ryujin
Melden Sie sich jetzt als Benutzer ‚ryujin‘ an und laden Sie die neueste Version des Seafile-Servers 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
Extrahieren 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 Seafile-Servers wurde in das Verzeichnis „/home/ryujin/seafile-server“ heruntergeladen.
Schritt 4 – Installieren Sie Seafile Server mit MariaDB
In diesem Schritt installieren wir den Seafile-Server mit dem von Seafile bereitgestellten MariaDB-Setup-Skript.
Melden Sie sich als 'ryujin'-Benutzer an und gehen Sie zum 'seafile-server'-Verzeichnis.
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.
Jetzt kommen Sie zur Seafile-Konfiguration.
- Servername:Geben Sie Ihren Seafile-Servernamen ein, z. B. „hakase-cloud“.
- Server-Domänenname:Geben Sie den Domänennamen für Ihren Seafile-Server „cloud.hakase-labs.io“ ein.
- Seafile-Datenverzeichnis:Belassen Sie die Standardkonfiguration und drücken Sie die Eingabetaste.
- Seafile-Dateiserver-Port:Lassen Sie ihn 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 vorhandene Datenbank.
Wählen Sie Option '2', um vorhandene Datenbankeinstellungen zu verwenden.
- Datenbankhost:Standard-Localhost
- Datenbankport:standardmäßig auf mysql normaler Port '3306'
- Datenbankbenutzer ist 'seafile' mit dem Passwort '[email protected]'
- ccnet-Datenbank:'ccnet-db'
- Seafile-Datenbank:'seafile-db'
- seahub-Datenbank:'seahub-db'
Drücken Sie nun erneut die Eingabetaste, um unsere Seafile-Serverkonfiguration zu bestätigen.
Und wenn die Installation abgeschlossen ist, erhalten Sie das unten gezeigte Ergebnis.
Die Installation und Konfiguration des Seafile-Servers wurde erfolgreich abgeschlossen. Und der Seafile-Dateiserver wird unter Port '8082' laufen, der Seahub-Dienst wird unter Port '8000' laufen.
Als Nächstes werden wir testen, ob der Seafile-Server und der Seahub-Server mit dem Startskript ausgeführt werden.
Gehen Sie als 'ryujin'-Benutzer in das Verzeichnis '~/seafile-server-latest'.
su - ryujin
cd ~/seafile-server-latest/
Starten Sie nun den Seafile-Server, indem Sie den folgenden Befehl ausführen.
./seafile.sh starten
Führen Sie dann den Seahub-Server aus.
./seahub.sh starten
Wenn Sie das Startskript „seahub.sh“ zum ersten Mal ausführen, werden Sie aufgefordert, einen Administratorbenutzer und ein Kennwort für den Seafile-Server zu erstellen.
Geben Sie Ihre Administrator-E-Mail-Adresse und Ihr Passwort ein und drücken Sie dann die Eingabetaste.
Und der Admin-Benutzer und das Passwort wurden erstellt – überprüfen Sie nun die Seafile- und Seahub-Service-Ports ‚8082‘ und ‚8080‘ mit dem Befehl netstat.
ss -plnt4
Und Sie werden sehen, dass der Seafile-Server und der Seahub-Server auf dem Ubuntu 20.04-System betriebsbereit sind.
Stoppen Sie jetzt Seafile und Seahub-Server.
./seafile.sh stoppen
./seahub.sh stoppen
Schritt 5 – Seafile mit Domainnamen konfigurieren
Für dieses Tutorial führen wir die Seafile mit unserem Domainnamen ‚seafile.hakase-labs.io‘ aus. Dazu müssen wir einige der Seafile-Konfigurationen bearbeiten.
Melden Sie sich beim Benutzer „ryujin“ an und gehen Sie in das Verzeichnis „conf“.
su - ryujin
cd conf/
Bearbeiten Sie die Konfiguration „ccnet.conf“ mit dem vim-Editor.
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 wie unten beschrieben durch das sichere HTTPS-Protokoll ä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 Seafile-Dienst an. Der Seafile-Dienst wird unter der unten angegebenen lokalen Adresse ausgeführt.
[Dateiserver]
Host =127.0.0.1
Port =8082
Speichern und schließen.
Bearbeiten Sie als Nächstes die Datei „seahub_settings.py“ mit dem vim-Editor.
vim seahub_settings.py
Fügen Sie unten in der Zeile die Option „FILE_SERVER_ROOT“ hinzu.
FILE_SERVER_ROOT ='https://seafile.hakase-labs.io/seafhttp'
Speichern und schließen.
Und die Seafile-Konfiguration ist abgeschlossen, sie wird unter dem Domainnamen „seafile.hakase-labs.io“ ausgeführt.
Schritt 6 – Ausführen von Seafile als Systemd-Dienst
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 Dienstdatei für Seafile mit dem Namen „seafile.service“.
cd /etc/systemd/system/
vim seafile.service
Fügen Sie die folgende Konfiguration 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
Gruppe =ryujin
[Installieren]
WantedBy=multi-user.target
Speichern und schließen.
Erstellen Sie als Nächstes die Seahub-Dienstdatei mit dem Namen „seahub.service“.
vim seahub.service
Fügen Sie 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
[Installieren]
WantedBy=multi-user.target
Speichern und schließen.
Und die Seafile- und Seahub-Servicedateien wurden erstellt.
Laden Sie als Nächstes den systemd-Manager neu und vergewissern Sie sich, dass kein Fehler vorliegt.
systemctl daemon-reload
Starten Sie nun den Seafile-Dienst und fügen Sie ihn dem Systemstart hinzu.
systemctl start seafile
systemctl enable seafile
Starten und aktivieren Sie danach den Seahub-Dienst.
systemctl start seahub
systemctl enable seahub
Die Seafile- und Seahub-Dienste sind betriebsbereit, überprüfen Sie dies mit dem folgenden Befehl.
Systemctl-Status Seafile Seahub
Unten sehen Sie das Ergebnis, das Sie erhalten.
Damit ist die Konfiguration von Seafile und Seahub als Systemdienst abgeschlossen.
Schritt 7 – SSL Letsencrypt und DHPARAM generieren
In diesem Schritt generieren wir das SSL Letsencrypt- und DHPARAM-Zertifikat. Wir verwenden das certbot-Tool zum Generieren des SSL-Letsencrypt und den Befehl openssl zum Generieren des dhparam-Zertifikats.
Stellen Sie zum Generieren des SSL-Letsencrypt sicher, dass Sie den echten Domainnamen haben und auf Ihre Server-IP-Adresse verweisen.
Installieren Sie das certbot-Tool mit dem folgenden apt-Befehl auf dem Ubuntu-System.
sudo apt install certbot
Generieren Sie danach SSL Letsencrypt für den Seafile-Domänennamen ‚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 Vorgang abgeschlossen ist, ist Ihr Zertifikat im Verzeichnis „/etc/letsencrypt/live/seafile.hakase-labs.io“ verfügbar.
Generieren Sie als Nächstes das DHPARAM-Zertifikat mit dem Befehl openssl wie unten beschrieben.
openssl dhparam -out /etc/nginx/dhparam.pem 2048
Das DHAPRAM-Zertifikat wird generiert und ist unter „/etc/nginx/dhparam.pem“ verfügbar.
Als Ergebnis wurde das SSL Letsencrypt für den Seafile-Domainnamen und das DHPARAM-Zertifikat generiert.
Schritt 8 – Nginx als Reverse-Proxy installieren und konfigurieren
In diesem Schritt installieren und konfigurieren wir Nginx als Reverse-Proxy für den Seafile-Dienst. Der Nginx-Webserver wird unter dem sicheren HTTPS-Protokoll ausgeführt, wobei das SSL-Letsencrypt- und DHPARAM-Zertifikat oben generiert wird.
Installieren Sie Nginx mit dem folgenden apt-Befehl auf dem Ubuntu 20.04-Server.
sudo apt install nginx -y
Sobald die gesamte Installation abgeschlossen ist, starten Sie den Nginx-Dienst und fügen Sie ihn zum Systemstart hinzu.
systemctl start nginx
systemctl enable nginx
Und der Nginx-Dienst läuft auf dem Ubuntu-System.
Gehen Sie als Nächstes in das Verzeichnis „/etc/nginx/sites-available“ und erstellen Sie mit dem vim-Editor eine neue Virtualhost-Konfiguration „seafile“.
cd /etc/nginx/sites-available/
vim seafile
Fügen Sie die folgende Konfiguration ein.
server {
listen 80;
server_name seafile.hakase-labs.io;
umschreiben ^ 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-Sicherheit
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 aus;
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-forward-for $ proxy_add_x_forwarded_for;;
# verwendet zum Anzeigen/Bearbeiten von Office-Dateien über 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_he Ader 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; br />
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;
_head Proxy_set X -Fored-for $ proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s; /> root /home/ryujin/seafile-server-latest/seahub;
}
}Speichern und schließen.
Aktivieren Sie als nächstes die Virtualhost-Konfiguration für Seafile und testen Sie die Nginx-Konfiguration.
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -tStellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann den Nginx-Dienst neu.
systemctl startet nginx neuAls Ergebnis wurde die Installation und Konfiguration von Nginx als Reverse-Proxy für Seafile erfolgreich abgeschlossen.
Schritt 9 – Firewall einrichten
Für dieses Tutorial führen wir Seafile mit aktivierter UFW-Firewall aus. Und wir müssen die SSH-, HTTP- und HTTPS-Dienste zur UFW-Firewallkonfiguration hinzufügen.
Fügen Sie die SSH-, HTTP- und HTTPS-Dienste mit dem folgenden Befehl zur UFW-Firewall hinzu.
für svc in ssh http https
lassen Sie
ufw $svc zu
fertigAktivieren Sie nun die UFW-Firewall und überprüfen Sie den Status der Konfiguration.
ufw enable
ufw-Status nummeriertUnd Sie erhalten das Ergebnis wie folgt.
Die UFW-Firewall ist aktiviert und der SSH-, HTTP- und HTTPS-Dienst wurde hinzugefügt.
Jetzt können wir Seafile verwenden.
Schritt 10 – Testen
Öffnen Sie Ihren Webbrowser und geben Sie den Domänennamen der Seafile-Installation in die Adressleiste ein.
https://seafile.hakase-labs.io/
Jetzt werden Sie auf die sichere HTTPS-Verbindung umgeleitet und erhalten die Seafile-Anmeldeseite wie unten gezeigt.
Geben Sie oben das soeben erstellte Seafile-Benutzerpasswort ein und klicken Sie auf die Schaltfläche „Anmelden“.
Jetzt erhalten Sie das Seafile-Dashboard wie unten gezeigt.
Unten sehen Sie das Ergebnis, nachdem Sie einen neuen Ordner erstellt und die Datei auf den Seafile-Server hochgeladen haben.
Als Ergebnis wurde die Installation und Konfiguration von Seafile mit Nginx-Webserver und MariaDB-Datenbank auf Ubuntu 20.04 erfolgreich abgeschlossen.