Seafile ist eine kostenlose Datei-Hosting-Software mit einer Funktionalität wie Dropbox oder Google Drive, die auf Ihrem eigenen Server installiert werden kann. Seafile wird unter einer OpenSource-Lizenz veröffentlicht. Mit Seafile können Sie Ihren eigenen sicheren Dateisynchronisierungs- und Freigabeserver erstellen. Es handelt sich um eine zuverlässige Dateifreigabesoftware, mit der Benutzer ihre Daten auf dem Server verschlüsseln können. Seafile ist in C und Python geschrieben.
In diesem Tutorial zeige ich Ihnen, wie Sie Ihren eigenen Dateisynchronisierungs- und Freigabeserver mit Seafile auf openSUSE Leap 42.1 erstellen. Wir führen Sie durch die Installation von Seafile und konfigurieren dann die Web-GUI mit https-Verschlüsselung hinter einem Nginx-Reverse-Proxy-Server.
Voraussetzung
- OpenSUSE Leap 42.1 - 64bit
- Root-Rechte
- Zypper-Befehl verstehen
Schritt 1 - Konfigurieren Sie den Hostnamen
Melden Sie sich bei Ihrem openSUSE-Server an:
ssh [email protected]
Nachdem Sie sich beim Server angemeldet haben, bearbeiten Sie die Hosts-Datei mit vim:
vim /etc/hosts
Konfiguration einfügen (IP und Hostname durch eigene Werte ersetzen):
192.168.1.101 cloud.kuonseafile.co cloud
Speichern und beenden.
Hinweis:
192.168.1.101 =meine Server-IP-Adresse.
Cloud =mein Server-Hostname.
kuonseafile.co =mein Domainname.
Überprüfen Sie den Hostnamen und FQDN (Fully Qualified Domain Name):
hostname
hostname -f
Schritt 2 - Abhängigkeiten installieren
Seafile ist in Python geschrieben, daher benötigen wir für die Installation mehrere Python-Bibliotheken. Für die Datenbank unterstützt seafile SQLite und MySQL, in diesem Tutorial werde ich eine MySQL-Datenbank verwenden, die eine bessere Leistung als SQLite bietet.
Installieren Sie alle Pakete einschließlich MySQL/MariaDB-Server mit dem folgenden Zypper-Befehl:
zypper in python python-imaging python-MySQL-python python-setuptools mariadb mariadb-client
Fahren Sie nach Abschluss der Installation mit dem nächsten Schritt fort.
Schritt 3 - Datenbank konfigurieren
Es gibt eine Sache, die Sie wissen sollten, wenn Sie Seafile bereitstellen möchten. Seafile benötigt 3 Datenbanken:
- ccnet-Datenbank
- Seafile-Datenbank
- seahub-Datenbank
In Schritt 2 haben wir den MySQL/MariaDB-Server erfolgreich installiert, starten Sie ihn nun mit dem folgenden Befehl:
rcmysql start
Legen Sie mit dem mysqladmin-Befehl ein neues Passwort für den mysql-Root-Benutzer fest:
/usr/bin/mysqladmin -u root password 'aqwe123'
Melden Sie sich als Nächstes bei der MySQL-Shell an und erstellen Sie drei Datenbanken für Seafile und einen neuen Benutzer für diese drei Datenbanken.
Melden Sie sich bei der MySQL-Shell an:
mysql -u root -p
GEBEN SIE DAS PASSWORT "aqwe123"
EINErstellen Sie die drei Datenbanken für die Seafile-Installation – ccnet_db, seafile_db und seahub_db:
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
Und erstellen Sie einen neuen Benutzer seafilecloud mit dem Passwort „[email protected]“:
create user [email protected] identified by '[email protected]';
Gewähren Sie nun dem seafilecloud-Benutzer Zugriff auf alle Datenbanken:
grant all privileges on ccnet_db.* to [email protected] identified by '[email protected]';
grant all privileges on seafile_db.* to [email protected] identified by '[email protected]';
grant all privileges on seahub_db.* to [email protected] identified by '[email protected]';
flush privileges;
Alle Datenbanken sind bereit für die Seafile-Installation.
Schritt 4 – Seafile installieren und konfigurieren
In diesem Schritt werden wir Seafile installieren und konfigurieren. Wir werden Seafile unter dem Seafile-Benutzer- und Home-Verzeichnis installieren, also müssen wir einen neuen Linux-Benutzer mit dem Namen "seafile" erstellen.
Neuen Benutzer erstellen
Erstellen Sie für die Installation einen neuen Benutzer mit dem Namen seafile:
useradd -m -s /bin/bash seafile
Hinweis:
-m =Erstellen Sie ein neues Home-Verzeichnis für den Benutzer unter "/home/".
-s /bin/bash =Definieren Sie die Shell für den Benutzer.
Seafile herunterladen
Wechseln Sie mit dem folgenden su-Befehl zum Seafile-Benutzer:
su - seafile
Jetzt befinden Sie sich im Seafile-Home-Verzeichnis, laden Sie Seafile Server 5 mit dem wget-Befehl herunter:
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_5.1.3_x86-64.tar.gz
Extrahieren Sie das Seafile-Archiv und benennen Sie es um:
tar -xzvf seafile-server_5.1.3_x86-64.tar.gz
mv seafile-server-5.1.3/ seafile-server
Installieren Sie Seafile 5
Gehen Sie in das Seafile-Server-Verzeichnis und führen Sie die Setup-Datei aus, um Seafile zu installieren:
cd seafile-server/
Wir werden Seafile mit MySQL-Datenbank installieren, also führen Sie die Setup-Datei MySQL aus:
./setup-seafile-mysql.sh
Nun werden Sie nach den Serverdetails gefragt.
Servername =Verwenden Sie den Hostnamen des Servers.
Server-IP oder Domäne =Meine Server-IP-Adresse verwenden.
Seafile-Datenverzeichnis =einfach Enter drücken.
Port für Seafile-Dateiserver =einfach Enter drücken.
Als nächstes konfigurieren Sie die Datenbank. Wir haben für die Installation eine eigene Datenbank erstellt, also wählen Sie die Nummer "2" .
Nun werden Sie nach dem Datenbankprofil gefragt:
Host von mysql =Standard ist localhost.
Standardport =3306.
MySQL-Benutzer für Seafile =Verwendet den Benutzer, den wir in Schritt 3 erstellt haben - "seafilecloud".
MySQL-Passwort =Passwort für seafilecloud-Benutzer.
ccnet-Datenbank =Wir haben die Datenbank erstellt - ccnet_db.
seafile database =seafile_db.
seahub-Datenbank =seahub_db.
Wenn keine Fehler aufgetreten sind, können Sie die Installation mit "Enter" bestätigen.
Warten Sie, bis das Skript die Konfiguration und die Datenbank generiert hat.
Seafile und Seahub starten
Seafile ist installiert, jetzt können Sie es mit dem folgenden Befehl starten:
./seafile.sh start
./seahub.sh start
Sie werden aufgefordert, einen Admin-Benutzer für Seafile zu erstellen, geben Sie einfach Ihre Admin-E-Mail und Ihr Passwort ein.
In diesem Stadium können Sie über Port 8000 auf die Seafile-Web-GUI zugreifen.
Schritt 5 – Nginx installieren und konfigurieren
Nginx ist ein leichtgewichtiger Webserver mit geringer Speicherauslastung und CPU-Verbrauch. In diesem Schritt installieren wir nginx und erstellen dann einen neuen virtuellen Host für den Reverse-Proxy-Zugriff auf Seafile. Wir werden https für Verbindungen auf dem Server aktivieren.
Installieren Sie Nginx
Installieren Sie den nginx-Webserver mit dem zypper-Befehl:
zypper in nginx
Generieren Sie das SSL-Zertifikat
Wechseln Sie als Nächstes in das nginx-Verzeichnis und erstellen Sie ein neues Verzeichnis für das SSL-Zertifikat. Generieren Sie dann die Zertifikatsdatei mit dem OpenSSL-Befehl:
mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/
Generieren Sie nun die Zertifikatsdatei:
openssl genrsa -out privkey.pem 4096
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
Virtuellen Host konfigurieren
Erstellen Sie im nginx-Verzeichnis ein neues Verzeichnis mit dem Namen „vhosts.d“, um die virtuelle Hostdatei zu speichern. Erstellen Sie dieses Verzeichnis und dann eine neue virtuelle Hostdatei mit vim:
mkdir -p /etc/nginx/vhosts.d/
cd /etc/nginx/vhosts.d/
vim cloud.kuonseafile.conf
Fügen Sie die Konfiguration des virtuellen Hosts unten ein:
server {
listen 80;
server_name cloud.kuonseafile.co; #Domain Name
rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https
}
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/cacert.pem; # path to your cacert.pem
ssl_certificate_key /etc/nginx/ssl/privkey.pem; # path to your privkey.pem
server_name cloud.kuonseafile.co; #Domain Name
proxy_set_header X-Forwarded-For $remote_addr;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
server_tokens off;
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
location /media {
root /home/seafile/seafile-server/seahub;
}
}
Ersetzen Sie server_name durch Ihren eigenen Domänennamen – Zeile 3 und 11.
Ersetzen Sie für den Medienspeicherort Zeile 47 durch den Pfad der Seafile-Installation – '/home/seafile/seafile-server/seahub'.
Speichern Sie die Datei und beenden Sie den Editor. Testen Sie dann die Konfiguration mit dem Befehl:
nginx -t
Stellen Sie sicher, dass es keine Probleme oder Fehler in der Konfiguration gibt.
Konfigurieren Sie Seafile, um Ihre eigene Domain und HTTPS zu verwenden
Wechseln Sie zum Benutzer-Seafile und bearbeiten Sie die Konfiguration. Deaktivieren Sie vor dem Bearbeiten der Konfiguration den Seafile- und Seahub-Dienst.
su - seafile
cd seafile-server/
./seafile.sh stop
./seahub.sh stop
Gehen Sie zurück in das Heimatverzeichnis des Seafile-Benutzers, gehen Sie dann in das Verzeichnis conf und bearbeiten Sie die Dateien ccnet.conf und seahub_settings.py.
cd ~/
cd conf/
Bearbeiten Sie die ccnet.conf-Datei:
vim ccnet.conf
Zeile 5: 'SERVICE_URL' - ersetzen Sie die Domain durch Ihren eigenen Domainnamen durch https.
SERVICE_URL = https://cloud.kuonseafile.co/
Speichern und beenden.
Bearbeiten Sie nun seahub_settings.py
vim seahub_settings.py
Fügen Sie die neue Zeile unten hinzu, um das Stammverzeichnis des Dateiservers zu definieren.
FILE_SERVER_ROOT = 'https://cloud.kuonseafile.co/seafhttp'
Speichern und beenden.
Schritt 6 – Seafile starten und testen
Nginx ist installiert - MariaDB/MySQL sind installiert und der Seafile-Server ist installiert.
Lassen Sie Nginx und MySQL beim Booten starten:
systemctl enable nginx
systemctl enable mysql
Starten Sie die Dienste neu:
systemctl restart nginx
systemctl restart mysql
Als nächstes starten Sie Seafile und Seahub vom Seafile-Benutzer:
su - seafile
cd seafile-server/
./seafile start
./seahub start-fastcgi
Alle Dienste werden gestartet.
Jetzt können Sie mit der URL Ihres Servers auf den Seafile-Server zugreifen. Meine ist:
cloud.kuonseafile.co
Sie werden auf die Anmeldeseite der https-Verbindung von seafile umgeleitet.
Geben Sie die Admin-Benutzerdaten ein, die wir in Schritt 4 erstellt haben.
Jetzt können Sie den Seafile-Dateimanager sehen und mit dem Hochladen von Dateien auf Ihren Seafile-Server beginnen.