Seafile ist eine private Cloud-Software, die ähnliche Funktionen wie Dropbox, mega.co.nz und andere bietet, nur auf Ihrem eigenen Server gehostet. Seafile basiert auf der Python-Programmiersprache und wird unter einer Open-Source-Lizenz veröffentlicht, sodass Sie Ihre eigene private Cloud erstellen können, die viel sicherer ist.
Seafile unterstützt die Verschlüsselung, um Ihre Daten sicher zu speichern. Um Dateien in einer Speicherbibliothek zu verschlüsseln, müssen Sie beim Erstellen der Bibliothek ein Kennwort festlegen. Das Passwort wird nicht in der Seafile-Cloud gespeichert. So kann selbst der Administrator der Server Ihre verschlüsselten Daten ohne das Passwort nicht einsehen.
In diesem Tutorial werde ich Seafile auf CentOS 7 mit Nginx-Webserver und MariaDB als Datenbankserver installieren.
Voraussetzungen
- CentOS 7-Server
- Root-Rechte
Schritt 1 – CentOS für Seafile vorbereiten
Melden Sie sich mit Ihrem ssh-Root-Passwort beim centOS-Server an.
ssh [email protected]
TYPE YOUR PASSWORD
Bearbeiten Sie die SELinux-Konfigurationsdatei mit vim.
vim /etc/sysconfig/selinux
Ersetzen Sie den Wert „enforcing“ durch „disabled“.
SELINUX=disabled
Speichern Sie die Datei und verlassen Sie den Editor.
Starten Sie den Server neu, um die Änderung der SELinux-Richtlinie anzuwenden.
reboot
Warten Sie auf den Neustart des Servers und melden Sie sich dann erneut als Root-Benutzer bei Ihrem Server an.
Überprüfen Sie Selinux mit dem folgenden Befehl:
getenforce
Sie sollten „Deaktiviert sehen ' als Ergebnis.
Schritt 2 – Seafile-Abhängigkeiten installieren
Seafile basiert auf Python, daher müssen wir für die Installation zuerst Python installieren. Seafile unterstützt SQLite- und MySQL/MariaDB-Datenbanken. Ich werde hier MariaDB als Datenbank für Seafile verwenden, da es eine bessere Leistung als SQLite bietet. Nginx wird als Reverse-Proxy für Seafile und Seahub verwendet.
In diesem Schritt werden wir mehrere Python-Pakete, MariaDB und Nginx installieren. Wir beginnen mit der Installation des EPEL-Repositorys auf unserem CentOS-Server.
yum -y install epel-release
Installieren Sie als Nächstes die Python-Pakete MariaDB und Nginx.
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
Warten Sie, bis alle Pakete installiert sind.
Schritt 3 – MariaDB konfigurieren
In Schritt 2 haben wir den MariaDB-Server bereits installiert, wir müssen jetzt nur noch den Dienst starten und das Root-Passwort konfigurieren.
Starten Sie MariaDB und konfigurieren Sie das Root-Passwort mit den folgenden Befehlen:
systemctl start mariadb
mysql_secure_installation
Geben Sie Ihr Root-Passwort ein.
Set root password? [Y/n] Y
New password:
Re-enter new password:
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
Das MariaDB-Root-Passwort ist konfiguriert und wir können uns jetzt bei der MySQL-Shell anmelden.
Hinweis:Die MariaDB-Befehlszeilen-Shell heißt mysql.
Wir werden 3 Datenbanken für Seafile erstellen:
- ccnet_db
- seafile_db
- seahub_db
Und wir werden einen neuen Benutzer 'seacloud erstellen ' mit dem Passwort 'deinpasswort '. Ersetzen Sie Ihr Passwort durch ein sicheres Passwort!
Melden Sie sich mit dem Mysql-Client bei der MySQL-Shell an.
mysql -u root -p
TYPE YOUR PASSWORD
Führen Sie die Mysql-Abfragen unten aus, um die Datenbanken und den Benutzer für die Seafile-Installation zu erstellen.
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
create user [email protected] identified by 'yourpassword';
grant all privileges on ccnet_db.* to [email protected] identified by 'yourpassword';
grant all privileges on seafile_db.* to [email protected] identified by 'yourpassword';
grant all privileges on seahub_db.* to [email protected] identified by 'yourpassword';
flush privileges;
exit
Ersetzen Sie Ihr Passwort in den obigen Befehlen durch Ihr eigenes Passwort.
Schritt 4 - Seafile installieren
In diesem Schritt werden wir Seafile installieren. Seafile wird unter dem nginx-Benutzer ausgeführt, sodass wir nginx als Reverse-Proxy für die Seafile- und Seahub-Dienste verwenden können.
Wir werden seafile unter dem nginx-Benutzer im Verzeichnis ‚/var/www/seafile‘ installieren, dieses Verzeichnis erstellen und es mit cd betreten.
mkdir -p /var/www/seafile
cd /var/www/seafile
Laden Sie Seafile mit dem Befehl wget herunter und extrahieren Sie das heruntergeladene Archiv.
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64.tar.gz
Benennen Sie das Verzeichnis in 'seafile-server' um und wechseln Sie in dieses Verzeichnis.
mv seafile-server-6.0.5 seafile-server
cd seafile-server/
Führen Sie die Datei „setup-seafile-mysql.sh“ aus, um die Datenbank zu konfigurieren.
./setup-seafile-mysql.sh
Drücken Sie die Eingabetaste und Sie werden nach folgenden Informationen gefragt:
- Servername - Ich werde den Server-Hostnamen 'natsume verwenden '
- IP oder Domain des Servers - IP-Adresse des Servers, in meinem Fall '192.168.1.115 '
- Standarddatenverzeichnis - drücken Sie einfach die Eingabetaste
- Standardport - drücken Sie die Eingabetaste
- Wählen Sie nun für die Datenbankkonfiguration die Nummer 2
Für die MySQL-Konfiguration:
- Standardhost verwenden - localhost
- Standardport - 3306
- der mysql-Benutzer - 'seacloud '
- und das Passwort ist 'IhrPasswort '
- ccnet-Datenbank ist 'ccnet_db '
- Seafile-Datenbank ist 'seafile_db '
- Seahub-Datenbank ist 'seahub_db '
Drücken Sie die Eingabetaste und das Skript erstellt die Datenbanktabellen für die Seedatei.
Jetzt können wir die Seafile- und Seahub-Dienste starten.
./seafile.sh start
./seahub.sh start
Wenn die Datei seahub.sh ausgeführt wird, werden wir nach der Admin-Konfiguration gefragt.
Geben Sie Ihre Admin-E-Mail und Ihr Passwort ein, dann wird der Seahub-Dienst ausgeführt.
Seafile ist installiert und läuft jetzt, wir können von einem Webbrowser mit der Server-IP auf Port 8000 (in meinem Fall - 192.168.1.115:8000) auf Seafile zugreifen, aber wir werden es jetzt nicht tun, weil wir einen Reverse-Proxy dafür verwenden werden Seafile-Server und wir werden Seafile mit einer systemd-Dienstdatei ausführen.
Daher müssen wir den Seafile- und Seahub-Dienst vorerst stoppen.
./seafile.sh stop
./seahub.sh stop
Schritt 5 – Seafile und Seahub-Dienst konfigurieren
Wir werden seafile als nginx-Benutzer ausführen, also müssen wir den Eigentümer des seafile-Installationsverzeichnisses und des seahub_cache-Verzeichnisses in nginx-Benutzer ändern:
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
Gehen Sie als Nächstes in das systemd-Verzeichnis und erstellen Sie eine Datei seafile.service mit vim:
cd /etc/systemd/system/
vim seafile.service
Fügen Sie die Seafile-Dienstkonfiguration unten ein:
[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Speichern und beenden.
Erstellen Sie nun eine neue Datei seahub.service.
vim seahub.service
Und fügen Sie die Konfiguration unten ein.
[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Speichern und beenden.
Laden Sie den systemd-Dienst neu und starten Sie seafile und seahub mit systemctl.
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
Stellen Sie sicher, dass kein Fehler vorliegt, und prüfen Sie, ob der Seafile- und Seahub-Dienst auf den Ports 8082 und 8000 ausgeführt wird.
netstat -plntu
Schritt 6 – Generieren Sie SSL-Zertifikatsdateien
Für dieses Tutorial führen wir Seafile über einen Nginx-Proxy aus, und Nginx stellt sichere (HTTPS) Verbindungen für die Datensicherheit bereit. Wir können eine kostenlose SSL-Zertifikatsdatei oder das kostenpflichtige SSL-Zertifikat verwenden, dies spielt für die Konfiguration keine Rolle. In diesem Schritt erzeuge ich eine selbstsignierte SSL-Zertifikatsdatei mit OpenSSL im Verzeichnis „/etc/nginx/ssl“.
Erstellen Sie das SSL-Verzeichnis.
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Generieren Sie selbstsignierte Zertifikatsdateien und eine dhparam-Datei mit dem folgenden Befehl:
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt
Beantworten Sie die von OpenSSL angeforderten Zertifikatsdetails wie Ihren Namen, Ihr Bundesland, Ihre E-Mail-Adresse, Ihren Domänennamen usw. Ändern Sie dann die Berechtigungen des Verzeichnisses und der Zertifikatsdateien.
chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem
Die SSL-Zertifikatsdateien wurden generiert.
Schritt 7 – Konfigurieren Sie Nginx als Reverse-Proxy
In diesem Schritt konfigurieren wir Nginx als Reverse-Proxy für den Seafile-Server auf Port 8000 und 8002.
Gehen Sie in das nginx-Konfigurationsverzeichnis und erstellen Sie eine neue virtuelle Hostdatei für seafile.
cd /etc/nginx/
vim conf.d/seafile.conf
Fügen Sie die Konfiguration des virtuellen Hosts unten ein:
server {
listen 80;
server_name cloud.natsume.co;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.natsume.co;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
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 REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Reverse Proxy for seahub
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;
}
#CHANGE THIS PATH WITH YOUR OWN DIRECTORY
location /media {
root /var/www/seafile/seafile-server/seahub;
}
}
Speichern und beenden.
Ich werde „cloud.natsume.co“ als Domainnamen verwenden. Bitte ersetzen Sie diesen in der obigen Konfiguration durch Ihren eigenen Domainnamen.
Testen Sie nun die Nginx-Konfiguration und stellen Sie sicher, dass keine Fehler vorliegen.
nginx -t
Starten Sie Nginx mit dem systemctl-Befehl:
systemctl start nginx
Stellen Sie sicher, dass Port 80 und 443 in der von netstat bereitgestellten Liste verfügbar sind:
netstat -plntu
Als nächstes müssen wir den Domänennamen zur Seafile-Konfiguration hinzufügen. Gehen Sie in das Seafile-Verzeichnis und bearbeiten Sie die Konfigurationsdatei.
cd /var/www/seafile/
vim conf/ccnet.conf
Ändern Sie die Dienst-URL in Ihren Domänennamen.
SERVICE_URL = https://cloud.natsume.co
Speichern und beenden.
Bearbeiten Sie die Seahub-Konfigurationsdatei.
vim conf/seahub_settings.py
Fügen Sie in der zweiten Zeile die folgende Konfiguration hinzu:
HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'
Ersetzen Sie hier wieder den Domainnamen durch Ihre Domain. Speichern und beenden.
Starten Sie Seafile neu und fügen Sie alle Dienste hinzu, die beim Booten gestartet werden sollen:
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub
Schritt 8 – FirewallD konfigurieren
In Schritt 7 haben wir Nginx so konfiguriert, dass es den HTTP- und den HTTPS-Port verwendet. Jetzt müssen wir diese Ports in der Firewall öffnen, indem wir sie zu firewalld hinzufügen.
Firewalld starten.
systemctl start firewalld
systemctl enable firewalld
Fügen Sie den HTTP- und HTTPS-Port mit dem folgenden Befehl firewall-cmd zur Firewall-Konfiguration hinzu:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
Laden Sie die Firewall-Konfiguration neu und überprüfen Sie die Portliste.
firewall-cmd --reload
firewall-cmd --list-all
Schritt 9 - Seafile testen
Öffnen Sie Ihren Browser, geben Sie den Seafile-Domainnamen ein, in meinem Fall cloud.natsume.co, und Sie werden zur https-Verbindung weitergeleitet.
Geben Sie Ihre Admin-E-Mail-Adresse und Ihr Passwort ein und klicken Sie auf „Anmelden“.
Seafile-Admin-Dashboard:
Seafile-Dateiansicht.
Seafile mit Nginx als Reverse Proxy und SSL wurde erfolgreich auf dem CentOS 7-Server installiert.
Schlussfolgerung
Bei der großen Vielfalt an Cloud-Anwendungen von heute ist Seafile eine private Cloud-Lösung, die für den Einsatz in der heutigen Zeit gut geeignet ist. Mit der Verschlüsselungsfunktion auf Bibliotheks-/Ordnerebene können Sie Ihre Daten sicher auf einem Seacloud-Server speichern. Außerdem ist Seafile einfach zu konfigurieren und auf Ihrem eigenen Server zu implementieren.