Wie man Seafile Server mit Nginx und Letsencrypt unter FreeBSD 12.0 installiert
Seafile ist ein Open-Source-Dateihosting- und Cloud-Speichersystem mit fortschrittlichen Funktionen wie Synchronisierung von mehreren Plattformen (plattformübergreifendes System), Schutz der Privatsphäre durch integrierte Dateiverschlüsselung und Unterstützung für Zwei-Faktor-Authentifizierung (TFA), Versionskontrolle, Dateisperren, Online-Bearbeitung und vieles mehr. Seafile ist in der Programmiersprache Python geschrieben und bietet ähnliche Funktionen wie Dropbox, mega.co.nz und andere.
In diesem Lernprogramm zeigen wir dir Schritt für Schritt, wie du den Seafile-Server mit Nginx-Webserver, MySQL-Datenbank und SSL Letsencrypt installierst und konfigurierst. Wir installieren den Seafile-Server unter dem Nginx-Webserver mit aktiviertem HTTPS SSL Letsencrypt und verwenden MySQL 5.7 auf dem FreeBSD 12.0 System.
Für diese Anleitung installieren wir den Seafile Server auf einem FreeBSD 12.0 System mit 2 GB RAM und 2 CPUs.
Was wir tun werden:
- Pakete aktualisieren und aufrüsten
- Nginx Webserver installieren
- MySQL installieren und konfigurieren
- Installiere Seafile und Seahub Server
- Seafile und Seahub Server konfigurieren
- Certbot installieren und SSL Letsencrypt generieren
- Nginx Virtual Host für Seafile Server einrichten
- Testen von
Schritt 1 – Update und Upgrade der Pakete
Als Erstes aktualisieren wir das FreeBSD-Paket-Repository und bringen alle installierten Pakete auf den neuesten Stand.
Aktualisiere das FreeBSD Repository und aktualisiere alle Pakete mit dem unten stehenden pkg Befehl.
pkg update pkg upgrade
Sobald die Installation abgeschlossen ist, kannst du mit dem nächsten Schritt fortfahren.
Schritt 2 – Nginx Webserver installieren
Nachdem wir alle Pakete auf die neueste Version aktualisiert haben, installieren wir den Nginx-Webserver.
Installiere Nginx auf dem FreeBSD-System mit dem unten stehenden pkg-Befehl.
pkg install nginx
Sobald die Installation abgeschlossen ist, füge den nginx-Dienst zum Systemstart hinzu.
sysrc nginx_enable="YES"
Starte dann den nginx-Dienst.
service nginx start
Damit ist der Nginx-Webserver auf dem FreeBSD-System eingerichtet und läuft. Überprüfe ihn mit den folgenden Befehlen.
service nginx status sockstat -l4
Der Nginx-Dienst läuft mit dem Standard-HTTP-Port 80.
Schritt 3 – MySQL-Server installieren und konfigurieren
Jetzt werden wir die MySQL-Datenbank auf dem FreeBSD-System installieren. Wir installieren den MySQL 5.7 Server, setzen das Standardpasswort für root zurück und erstellen eine neue Datenbank und einen neuen Benutzer für die Seafile-Installation.
Installiere MySQL 5.7 mit dem unten stehenden pkg-Befehl.
pkg install mysql57-server mysql57-client
Sobald die Installation abgeschlossen ist, erhältst du das standardmäßig generierte MySQL-Root-Passwort in der Datei „~/.mysql-secret“.
Füge nun den MySQL-Dienst zum Systemstart hinzu und starte den Dienst.
sysrc mysql_enable="YES" service mysql-server start
Der MySQL-Dienst ist eingerichtet und läuft.
Als nächstes müssen wir das Standard-MySQL-Root-Passwort ändern, bevor wir eine neue Datenbank erstellen. Zeige das generierte Standard-MySQL-Root-Passwort mit dem Befehl cat an (siehe unten).
cat ~/.mysql-secret
Kopiere das generierte Root-Passwort und melde dich als Root-Benutzer in der MySQL-Shell an.
mysql -u root -p Paste the PASSWORD:
Ändere das MySQL-Root-Passwort mit der folgenden Abfrage.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newrootpassmysql';
Danach erstellst du einen neuen MySQL-Benutzer und neue Datenbanken für unsere Seafile-Installation, indem du die folgenden MySQL-Abfragen verwendest.
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 ’seafilepassdb@‘;
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;
flush privileges;
exit
Jetzt sind die MySQL-Datenbanken und -Benutzer für die Seafile-Installation erstellt und wir können den Seafile-Server installieren.
Schritt 4 – Seafile und Seahub Server installieren
In diesem Schritt installieren wir Seafile und Seahub aus dem FreeBSD-Repository und konfigurieren sie dann so, dass sie MySQL als Datenbank verwenden.
Installiere nun Seafile und Seahub mit dem unten stehenden pkg-Befehl.
pkg install seafile-server pkg install seahub
Sobald die Installation abgeschlossen ist, füge die Dienste seafile und seahub zum Startzeitpunkt hinzu.
sysrc seafile_enable="YES" sysrc seahub_enable="YES"
Als nächstes gehst du in das seafile-Installationsverzeichnis „/usr/local/www/haiwen/seafile-server“ und führst die Setup-Datei für das MySQL-Datenbanksystem aus.
cd /usr/local/www/haiwen/seafile-server ./setup-seafile-mysql.sh
Nun wirst du nach einigen Fragen zur seafile-Installation gefragt.
Gib deinen Servernamen, den Domänennamen oder die IP-Adresse des Servers, das seafile-Datenverzeichnis und den seafile-Serverport ein und wähle die Zahl „2“, um die vorhandene MySQL-Datenbank zu verwenden.
Nun gibst du die Details zu deiner Datenbank und dem Benutzer ein (siehe unten).
Sobald die Datenbankkonfiguration abgeschlossen ist, erhältst du das unten abgebildete Ergebnis.
Damit ist die Installation des seafile-Servers erfolgreich.
Starte nun die Dienste seafile und seahub mit dem unten stehenden Befehl.
service seafile start service seahub start
Der seafile-Dienst läuft auf dem Standard-Port „8082“ und der seahub-Dienst auf dem Standard-Port „8000“.
Schritt 5 – Seafile und Seahub Server konfigurieren
In diesem Lernprogramm werden wir die Seafile hinter dem nginx Reverse Proxy einrichten und den Domainnamen „files.mydomain.comf“ verwenden. Wir brauchen also eine zusätzliche Konfiguration für Seafile und Seahub.
Gehe nun in das Seafile-Installationsverzeichnis „/usr/local/www/haiwen/conf“.
cd /usr/local/www/haiwen/conf
Bearbeite die Konfigurationsdatei „ccnet.conf“.
vim ccnet.conf
Ändere die „SERVICE_URL“ mit deinem Domainnamen und ändere „http“ in „https“.
SERVICE_URL = https://files.mydomain.com/
Speichern und schließen.
Bearbeite nun die Datei „seafile.conf“ mit dem Editor vim.
vim seafile.conf
Füge die Option „host“ zu „127.0.0.1“ für die Konfiguration des „fileservers“ hinzu.
[fileserver] host = 127.0.0.1 port = 8082
Speichern und schließen.
Als Nächstes müssen wir die Konfiguration „FILE_SERVER_ROOT“ mit unserem Domainnamen definieren, indem wir die Konfiguration „seahub_settings.py“ bearbeiten.
vim seahub_settings.py
Ändere den Domänennamen mit deinem eigenen und füge ihn ein.
FILE_SERVER_ROOT = 'https://files.mydomain.com/seafhttp'
Speichern und schließen.
Bearbeite nun die Datei „gunicorn.conf“ mit dem Editor vim.
vim gunicorn.conf
Ändere die Option bind mit der lokalen IP „127.0.0.1“ wie unten dargestellt.
bind = "127.0.0.1:8000"
Speichere und schließe.
Als Nächstes müssen wir den Besitzer des seafile-Installationsverzeichnisses und des seahub-Cache-Verzeichnisses auf den Benutzer „seafile“ mit der Gruppe „www“ ändern.
chown -R seafile:www /usr/local/www/haiwen chown -R seafile:www /tmp/seahub_cache
Starte dann die Dienste seafile und seahub neu.
service seafile restart service seahub restart
Damit laufen der seafile- und der seahub-Dienst mit der benutzerdefinierten Konfiguration.
Jetzt müssen wir den Admin-Benutzer für unsere seafile-Installation erstellen. Gehe in das Verzeichnis „/usr/local/www/haiwen/seafile-server“ und führe das Skript „reset-admin.sh“ aus.
cd /usr/local/www/haiwen/seafile-server ./reset-admin.sh
Gib deine E-Mail-Adresse und das Passwort ein, und schon ist der Admin-Benutzer für den Seafile-Server erstellt worden.
Und die Konfiguration von Seafile und Seahub ist abgeschlossen.
Schritt 6 – SSL Letsencrypt auf FreeBSD generieren
In diesem Schritt generieren wir das SSL-Letsencrypt für unsere Seafile-Installation.
Installiere certbot und das nginx-Plugin mit dem unten stehenden pkg-Befehl.
pkg install py36-certbot py36-certbot-nginx
Sobald die Installation abgeschlossen ist, generierst du das SSL mit dem unten stehenden certbot-Befehl. Achte darauf, dass du den Domänennamen und die E-Mail-Adresse durch deine eigene ersetzt.
certbot --nginx -d files.mydomain.com --staple-ocsp -m myemail@gmail.com --agree-tos --no-eff-email
Jetzt ist das SSL letsencrypt erzeugt und befindet sich im Verzeichnis „/usr/local/etc/letsencrypt“.
Schritt 7 – Nginx Virtual Host für Seafile einrichten
In diesem Schritt werden wir den virtuellen Nginx-Host für Seafile konfigurieren. Bevor du weitermachst, musst du den virtuellen Nginx-Host mit Hilfe der folgenden Anleitung konfigurieren.
Virtuellen Nginx-Host unter FreeBSD 12.0 einrichten
Als nächstes gehst du in das Verzeichnis „/usr/local/etc/nginx“ und erstellst mit dem Editor vim eine neue Konfigurationsdatei für den virtuellen Host „vhost/seafile.conf“.
cd /usr/local/etc/nginx vim vhost/seafile.conf
Ändere den Domänennamen und den Pfad für die SSL-Zertifikate und füge sie ein.
server { listen 80; server_name files.mydomain.com; rewrite ^ https://$http_host$request_uri? permanent; server_tokens off; } server { listen 443 ssl http2; server_name files.mydomain.com; ssl_certificate /usr/local/etc/letsencrypt/live/files.mydomain.com/fullchain.pem; ssl_certificate_key /usr/local/etc/letsencrypt/live/files.mydomain.com/privkey.pem; ssl_session_timeout 5m; ssl_session_cache shared:SSL:5m; #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_redirect off; proxy_set_header X-Forwarded-Proto $scheme; 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 /usr/local/www/haiwen/seafile-server/seahub; } }
Speichern und schließen.
Teste danach die nginx-Konfiguration und stelle sicher, dass kein Fehler auftritt. Starte dann den nginx-Dienst neu.
nginx -t service nginx restart
Jetzt erhältst du das unten stehende Ergebnis.
Die Nginx-Konfiguration des virtuellen Hosts für Seafile wurde hinzugefügt. Überprüfe mit dem Befehl „sockstat“, ob der HTTPS-Port vom Nginx-Dienst verwendet wird.
sockstat -l4
Schritt 8 – Testen
Öffne deinen Webbrowser und gib die URL deiner Seafile-Installation in die Adressleiste ein.
http://files.mydomain.com/
Jetzt wirst du auf die sichere HTTPS-Verbindung umgeleitet und bekommst die Seafile-Anmeldeseite angezeigt (siehe unten).
Gib deine Admin-E-Mail und dein Passwort ein und klicke auf die Schaltfläche „Anmelden“.
Du erhältst das Seafile Dashboard wie unten abgebildet.
Jetzt kannst du eine neue Bibliothek erstellen und deine Dateien in diese hochladen. Unten siehst du das erfolgreiche Ergebnis nach dem Erstellen einer neuen Bibliothek und dem Hochladen von Dateien in diese Bibliothek.
Damit ist die Installation von Seafile Server mit Nginx und SSL Letsencrypt auf FreeBSD 12.0 erfolgreich abgeschlossen.