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 MySQL-Datenbank installieren und konfigurieren. Wir werden den Seafile-Server unter dem Nginx-Webserver mit aktiviertem HTTPS-SSL-Letsencrypt installieren und das neueste MySQL 5.8 auf dem Ubuntu 18.04-System verwenden.
Voraussetzungen
- Ubuntu 18.04
- Root-Rechte
Was werden wir tun?
- Seafile-Python-Abhängigkeiten installieren
- Installieren und konfigurieren Sie MySQL
- Seafile Server für Linux-System herunterladen
- Seafile-Server installieren
- Nginx und Letsencrypt installieren
- Nginx als Reverse-Proxy für Seafile-Server konfigurieren
- Seafile-Server konfigurieren
- Seafile-Server als Dienst ausführen
- UFW-Firewall konfigurieren
- 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 2.7, 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 2.7 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 python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y
Warten Sie, bis alle Abhängigkeiten installiert sind.
Schritt 2 – MySQL installieren und konfigurieren
Seafile bietet Unterstützung für SQLite und den MySQL-Datenbankserver. Für diese Anleitung verwenden wir den MySQL-Datenbankserver für unsere Installation. Wir werden den Seafile-Server mit der neuesten MySQL-Version 5.8 bereitstellen.
Installieren Sie den MySQL-Server mit dem folgenden apt-Befehl.
sudo apt install mysql-server mysql-client -y
Nachdem die Installation abgeschlossen ist, starten Sie den MySQL-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.
systemctl start mysql
systemctl enable mysql
Der MySQL-Server wird auf dem Ubuntu-System installiert.
Jetzt müssen wir das MySQL-Root-Passwort mit dem Befehl „mysql_secure_installation“ konfigurieren.
mysql_secure_installation
Jetzt werden Sie nach der MySQL-Passwortrichtlinie gefragt, 0 für NIEDRIG, 1 für MITTEL und 2 für STRONG. Geben Sie die Zahl „1“ für die MITTLERE Passwortrichtlinie ein, drücken Sie die Eingabetaste und geben Sie dann Ihr sicheres Passwort ein.
Geben Sie für andere einfach 'Y' ein, wie unten gezeigt.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Die Einrichtung des MySQL-Root-Passworts ist abgeschlossen.
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 MySQL-Client-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.
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;
Der MySQL-Server wurde installiert, das Root-Passwort eingerichtet und die Datenbank für die Seafile-Installation erstellt.
Schritt 3 – Seafile Server für Linux-System 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 „mohammad“.
useradd -m -s /bin/bash mohammad
Melden Sie sich jetzt als Benutzer ‚mohammad‘ an und laden Sie die neueste Version des Seafile-Servers mit wget herunter.
su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_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_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/
Der Quellcode des Seafile-Servers wurde in das Verzeichnis „/home/mohammad/seafile-server“ heruntergeladen.
Schritt 4 – Installieren Sie Seafile Server mit MySQL
In diesem Schritt installieren wir den Seafile-Server mit dem von Seafile bereitgestellten MySQL-Setup-Skript.
Melden Sie sich als Benutzer „mohammad“ an und gehen Sie in das Verzeichnis „seafile-server“.
su - mohammad
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 „mohammad“-Benutzer in das Verzeichnis „~/seafile-server-latest“.
su - mohammad
cd ~/seafile-server-latest/
Starten Sie nun den Seafile-Server, indem Sie den folgenden 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 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.
netstat -plntu
Und Sie werden sehen, dass der Seafile-Server und der Seahub-Server auf dem Ubuntu 18.04-System betriebsbereit sind.
Stoppen Sie jetzt Seafile und Seahub-Server.
./seafile.sh stop
./seahub.sh stop
Schritt 5 – Nginx mit Letsencrypt installieren und konfigurieren
Für diese Anleitung wird der Seafile-Server unter dem Nginx-Webserver mit aktiviertem HTTPS ausgeführt. Und in diesem Schritt installieren wir den Nginx-Webserver und das Letsencrypt-Tool und generieren dann den SSL-Letsencrypt- und DHPARAM-Schlüssel für den Domänennamen des Seafile-Servers.
Installieren Sie den Nginx-Webserver mit dem folgenden apt-Befehl.
sudo apt install nginx -y
Nachdem die Installation abgeschlossen ist, starten Sie den Nginx-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.
systemctl start nginx
systemctl enable nginx
Installieren Sie nun das letsencrypt-Tool zum Generieren von SSL-letsencrypt-Zertifikaten.
sudo apt install letsencrypt -y
Der Nginx-Webserver und das letsencrypt-Tool wurden installiert.
Gehen Sie als Nächstes in das Verzeichnis „/etc/nginx“ und erstellen Sie eine neue Konfigurationsdatei „certbot.conf“ für letsencrypt.
cd /etc/nginx/
vim snippets/certbot.conf
Fügen Sie dort die folgende Konfiguration ein.
location /.well-known { alias /var/www/html/.well-known; }
Speichern und beenden.
Bearbeiten Sie die standardmäßige virtuelle Hostdatei.
vim sites-available/default
Fügen Sie die folgende Include-Zeile unten in die 'Server {...}'-Klammer ein.
include snippets/certbot.conf;
Speichern und beenden.
Testen Sie die nginx-Konfiguration und starten Sie den Webserver neu.
nginx -t
systemctl restart nginx
Und wir sind bereit, ein neues letsencrypt-SSL-Zertifikat für den Domänennamen des Seafile-Servers zu generieren.
Generieren Sie die SSL-Zertifikatsdateien mit dem 'certbot'-Befehl wie unten gezeigt.
certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [email protected] -w /var/www/html -d cloud.hakase-labs.io
Hinweis:
- Wir generieren ein neues SSL-Zertifikat und geben die Schlüsselgröße auf „4096“ an.
Jetzt erhalten Sie alle SSL-Zertifikatsdateien, die sich im Verzeichnis „/etc/letsencrypt/live“ befinden.
Und für die zusätzliche Sicherheit generieren wir den Diffie-Hellman-Schlüssel mit der Größe 4096 mit dem OpenSSL-Befehl.
openssl dhparam -out /etc/nginx/dhparam.pem 4096
Alle benötigten Zertifikate wurden generiert.
Schritt 6 – Nginx als Reverse-Proxy für Seafile-Server konfigurieren
Gehen Sie in das Konfigurationsverzeichnis „/etc/nginx“ und erstellen Sie mit vim eine neue virtuelle Hostdatei „seafile“.
cd /etc/nginx/
vim sites-available/seafile
Fügen Sie dort die folgende Konfiguration ein.
server { listen 80; server_name cloud.hakase-labs.io; rewrite ^ https://$http_host$request_uri? permanent; server_tokens off; } server { listen 443 ssl http2; server_name cloud.hakase-labs.io; ssl on; ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/cloud.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 /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/mohammad/seafile-server-latest/seahub; } }
Speichern und beenden.
Aktivieren Sie den virtuellen Seafile-Host und testen Sie die Konfiguration.
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t
Stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie den Nginx-Dienst neu.
systemctl restart nginx
Die Nginx-Konfiguration als Reverse-Proxy für den Seafile-Server wurde abgeschlossen.
Schritt 7 - Seafile-Server konfigurieren
Um den Seafile-Server unter dem Domainnamen des Nginx-Webservers auszuführen, müssen wir die Standardkonfiguration „seafile“ für den „ccnet-Dienst“, „seafile-Server“ und „seahub-Server“ bearbeiten.
Melden Sie sich als Benutzer „mohammad“ an und gehen Sie in das Verzeichnis „conf/“.
su - mohammad
cd conf/
Bearbeiten Sie die Konfigurationsdatei des ccnet-Dienstes „ccnet.conf“.
vim ccnet.conf
Ändern Sie in der Zeile „SERVICE_URL“ den Wert wie unten gezeigt in den Domänennamen mit HTTPS.
SERVICE_URL = https://cloud.hakase-labs.io
Speichern und beenden.
Bearbeiten Sie nun die Datei ‚seafile.conf‘ für die Konfiguration des Seafile-Servers.
vim seafile.conf
Fügen Sie die Zeile „host“ mit dem Wert „127.0.0.1“ localhost wie unten beschrieben hinzu.
[fileserver] host = 127.0.0.1 port = 8082
Speichern und beenden.
Und schließlich werden wir die Datei ‚seahub_settings.py‘ bearbeiten.
vim seahub_settings.py
Ändern Sie in der Zeile „FILE_SERVER_ROOT“ den Wert in den Domänennamen mit HTTPS.
FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'
Speichern und beenden.
Schritt 8 – Ausführen von Seafile Server als Dienst
In diesem Tutorial führen wir den Seafile-Server als Dienst auf dem Ubuntu 18.04-System aus. Wir werden ein neues Dienstskript für Seafile und Seahub erstellen.
Gehen Sie in das Verzeichnis ‚/etc/systemd/system‘ und erstellen Sie eine neue Servicedatei ‚seafile.service‘.
cd /etc/systemd/system/
vim seafile.service
Fügen Sie dort das folgende Seafile-Dienstskript ein.
[Unit] Description=Seafile After=network.target mysql.service [Service] Type=forking ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop User=mohammad Group=mohammad [Install] WantedBy=multi-user.target
Speichern und beenden.
Erstellen Sie nun die Seahub-Dienstdatei ‚seahub.service‘.
vim seahub.service
Fügen Sie dort das folgende Seahub-Dienstskript ein.
[Unit] Description=Seafile hub After=network.target seafile.service [Service] Type=forking ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop User=mohammad Group=mohammad [Install] WantedBy=multi-user.target
Speichern und beenden.
Hinweis:
- Ändern Sie den Pfad der Skripte seafile.sh und seahub.sh.
Laden Sie nun das systemd-System neu.
systemctl daemon-reload
Und starten Sie den Seafile- und Seahub-Dienst.
systemctl start seafile
systemctl start seahub
Aktivieren Sie diese Dienste so, dass sie jedes Mal beim Systemstart gestartet werden.
systemctl enable seafile
systemctl enable seahub
Die Seafile- und Seahub-Dienste sind betriebsbereit - überprüfen Sie dies mit den folgenden Befehlen.
systemctl status seafile
systemctl status seahub
netstat -plntu
Schritt 8 – UFW-Firewall konfigurieren
Es wird empfohlen, die Firewall auf jedem System immer einzuschalten. Für Ubuntu-Systeme schalten wir die UFW-Firewall ein und fügen ihr die SSH-, HTTP- und HTTPS-Ports hinzu.
Fügen Sie den „ssh“-Port hinzu und aktivieren Sie die UFW-Firewall.
ufw allow ssh
ufw enable
Geben Sie 'y' ein, um die Firewall einzuschalten.
Fügen Sie nun HTTP- und HTTPS-Dienste hinzu.
ufw allow http
ufw allow https
Überprüfen Sie die Listenregeln auf der Firewall.
ufw status numbered
Und Sie erhalten drei Dienste SSH, HTTP und HTTPS auf der Liste.
Schritt 9 – Testen
Öffnen Sie Ihren Webbrowser und geben Sie die Seafile-Server-URL-Installation ein. Meine ist:
http://cloud.hakase-labs.io/
Und Sie werden auf die Anmeldeseite der sicheren HTTPS-Verbindung umgeleitet.
Geben Sie die Administrator-E-Mail-Adresse „[email protected]“ und das Passwort „mypassword“ ein und klicken Sie dann auf die Schaltfläche „Anmelden“.
Jetzt erhalten Sie das Seafile-Dashboard wie unten gezeigt.
Zusätzlich - ein Bild hochgeladen und auf dem Seafile-Dashboard angezeigt.
Die Installation und Konfiguration des Seafile-Servers mit Nginx-Webserver und Letsencrypt auf Ubuntu 18.04 wurde erfolgreich abgeschlossen.