So synchronisieren und teilen Sie Ihre Dateien mit Seafile unter Debian 10

Einführung

Seafile ist eine selbst gehostete Open-Source-Plattform für die Dateisynchronisierung und -freigabe. Benutzer können Daten auf ihren eigenen Servern speichern und optional verschlüsseln, wobei Speicherplatz die einzige Einschränkung darstellt. Mit Seafile können Sie Dateien und Ordner mithilfe plattformübergreifender Synchronisierung und kennwortgeschützter Links zu Dateien mit Ablaufdatum freigeben. Eine Dateiversionsfunktion bedeutet, dass Benutzer gelöschte und geänderte Dateien oder Ordner wiederherstellen können.

In diesem Tutorial installieren und konfigurieren Sie Seafile auf einem Debian 10-Server. Sie werden MariaDB (die Standard-MySQL-Variante unter Debian 10) verwenden, um Daten für die verschiedenen Komponenten von Seafile zu speichern, und Apache als Proxy-Server, um den Web-Verkehr zu verarbeiten. Nach Abschluss dieses Lernprogramms können Sie über die Weboberfläche von Desktop- oder Mobilclients aus auf Seafile zugreifen und Ihre Dateien mit anderen Benutzern oder Gruppen auf dem Server oder mit der Öffentlichkeit synchronisieren und teilen.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:

Schritt 1 - Erstellen von Datenbanken für die Seafile-Komponenten

Seafile benötigt drei Komponenten, um richtig zu funktionieren:

  • * Seahub *: Das in Python geschriebene Web-Frontend von Seafile unter Verwendung des Web-Frameworks Django. Von Seahub aus können Sie über einen Webbrowser auf Ihre Dateien zugreifen, diese verwalten und freigeben.

  • * Seafile-Server *: Der Datenservice-Daemon, der das Hochladen, Herunterladen und Synchronisieren von Rohdateien verwaltet. Sie interagieren nicht direkt mit dem Server, sondern verwenden ein Client-Programm oder die Seahub-Weboberfläche.

  • * Ccnet-Server *: Der RPC-Service-Daemon, um die interne Kommunikation zwischen den verschiedenen Komponenten von Seafile zu ermöglichen. Wenn Sie beispielsweise Seahub verwenden, kann es mithilfe des Ccnet-RPC-Dienstes auf Daten vom Seafile-Server zugreifen.

Jede dieser Komponenten speichert ihre Daten separat in einer eigenen Datenbank. In diesem Schritt erstellen Sie die drei MariaDB-Datenbanken und einen Benutzer, bevor Sie den Server einrichten.

Melden Sie sich zunächst mit SSH und Ihrem Benutzernamen und Ihrer IP-Adresse beim Server an:

ssh @

Stellen Sie als Administrator (root) eine Verbindung zum MariaDB-Datenbankserver her:

sudo mysql

Verwenden Sie an der Eingabeaufforderung von MariaDB den folgenden SQL-Befehl, um den Datenbankbenutzer zu erstellen:

CREATE USER ''@'localhost' IDENTIFIED BY '';

Als Nächstes erstellen Sie die folgenden Datenbanken, um die Daten der drei Seafile-Komponenten zu speichern:

  • ++ für den Ccnet-Server.

  • ++ für das Seahub-Web-Frontend.

  • ++ für den Seafile-Dateiserver.

Erstellen Sie an der Eingabeaufforderung von MariaDB Ihre Datenbanken:

CREATE DATABASE '' CHARACTER SET = 'utf8';
CREATE DATABASE '' CHARACTER SET = 'utf8';
CREATE DATABASE '' CHARACTER SET = 'utf8';

Gewähren Sie dann Ihrem Datenbankbenutzer alle Berechtigungen, um auf diese Datenbanken zuzugreifen und Änderungen daran vorzunehmen:

GRANT ALL PRIVILEGES ON ''.* to ''@localhost;
GRANT ALL PRIVILEGES ON ''.* to ''@localhost;
GRANT ALL PRIVILEGES ON ''.* to ''@localhost;

Verlassen Sie die MariaDB-Eingabeaufforderung, indem Sie "+ exit +" eingeben:

exit

Nachdem Sie einen Benutzer und die Datenbanken erstellt haben, die zum Speichern der Daten für die einzelnen Seafile-Komponenten erforderlich sind, installieren Sie Abhängigkeiten, um das Seafile-Serverpaket herunterzuladen.

Schritt 2 - Abhängigkeiten installieren und Seafile herunterladen

Einige Teile von Seafile sind in Python geschrieben und erfordern daher zusätzliche Python-Module und -Programme. In diesem Schritt installieren Sie diese erforderlichen Abhängigkeiten, bevor Sie das Seafile-Serverpaket herunterladen und extrahieren.

Um die Abhängigkeiten mit + apt + zu installieren, führen Sie den folgenden Befehl aus:

sudo apt install python-setuptools python-pip python-urllib3 python-requests python-mysqldb ffmpeg

Die Abhängigkeiten "+ python-setuptools " und " python-pip " überwachen die Installation und Verwaltung von Python-Paketen. Die Pakete " python-urllib3 " und " python-request " stellen Anfragen an Websites. Schließlich ist " python-mysqldb " eine Bibliothek zur Verwendung von MariaDB aus Python, und " ffmpeg +" verarbeitet Multimediadateien.

Seafile benötigt "+ Pillow ", eine Python-Bibliothek für die Bildverarbeitung, und " moviepy ", um Miniaturansichten von Filmdateien zu verarbeiten. Diese Module sind nicht im Debian-Paket-Repository verfügbar. Installieren Sie sie stattdessen mit ` pip +`:

sudo pip install Pillow moviepy

Nachdem Sie die erforderlichen Abhängigkeiten installiert haben, können Sie das Seafile-Serverpaket herunterladen.

Seafile erstellt während des Setups zusätzliche Verzeichnisse. Um sie alle zu organisieren, erstellen Sie ein neues Verzeichnis und wechseln Sie in dieses:

mkdir seafile
cd seafile

Sie können jetzt die neueste Version (++ zum jetzigen Zeitpunkt) des Seafile-Servers von the project website herunterladen, indem Sie den folgenden Befehl ausführen:

wget https://download.seadrive.org/seafile-server__x86-64.tar.gz

Seafile verteilt den Download als komprimiertes Tar-Archiv, dh Sie müssen ihn extrahieren, bevor Sie fortfahren können. Extrahieren Sie das Archiv mit + tar:

tar -zxvf seafile-server__x86-64.tar.gz

Wechseln Sie nun in das extrahierte Verzeichnis:

cd seafile-server-

In dieser Phase haben Sie das Seafile-Serverpaket heruntergeladen und extrahiert sowie die erforderlichen Abhängigkeiten installiert. Sie können jetzt den Seafile-Server konfigurieren.

Schritt 3 - Konfigurieren des Seafile-Servers

Seafile benötigt einige Informationen zu Ihrem Setup, bevor Sie die Dienste zum ersten Mal starten. Dazu gehören Details wie der Domänenname, die Datenbankkonfiguration und der Pfad, in dem die Daten gespeichert werden. Um die Reihe von Fragenaufforderungen zur Bereitstellung dieser Informationen auszulösen, können Sie das Skript "+ setup_seafile_mysql.sh +" ausführen, das in dem Archiv enthalten ist, das Sie im vorherigen Schritt extrahiert haben.

Führen Sie das Skript mit + bash aus:

bash setup-seafile-mysql.sh

Drücken Sie "+ ENTER", um fortzufahren, wenn Sie dazu aufgefordert werden.

Das Skript fordert Sie nun mit einer Reihe von Fragen auf. Wo immer Standardeinstellungen erwähnt werden, wird dieser Wert durch Drücken der Taste "+ ENTER +" verwendet.

In diesem Lernprogramm wird "++" als Servername verwendet. Sie können ihn jedoch ändern, wenn Sie möchten:

Question 1

What is the name of the server?
It will be displayed on the client. 3 - 15 letters or digits
[ server name ]

Geben Sie für "+ Frage 2 +" den Domänennamen für diese Seafile-Instanz ein.

Question 2

What is the ip or domain of the server?.
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ]

Drücken Sie + ENTER +, um den Standardwert für + Frage 3 + zu übernehmen. Wenn Sie externen Speicher eingerichtet haben, z. B. mit NFS oder Blockspeicher, müssen Sie hier stattdessen den Pfad zu diesem Speicherort angeben.

Question 3

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/home//seafile/seafile-data" ]

Für "+ Frage 4 " drücken Sie " ENTER +", um die Standardportnummer zu akzeptieren.

Question 4

Which port do you want to use for the seafile fileserver?
[ default "8082" ]

Bei der nächsten Eingabeaufforderung können Sie die Datenbankkonfiguration bestätigen. Sie können neue Datenbanken erstellen oder vorhandene Datenbanken für die Einrichtung verwenden. Für dieses Tutorial haben Sie in Schritt 1 die erforderlichen Datenbanken erstellt, wählen Sie also hier die Option + 2 +.

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ]

Die Fragen 6–9 beziehen sich auf den MariaDB-Datenbankserver. Sie müssen den Benutzernamen und das Kennwort des MySQL-Benutzers angeben, den Sie in Schritt 1 erstellt haben. Sie können jedoch die Eingabetaste drücken, um die Standardwerte für "+ host " und " port +" zu akzeptieren.

What is the host of mysql server?

[ default "localhost" ]

What is the port of mysql server?

[ default "3306" ]

Which mysql user to use for seafile?

[ mysql user for seafile ]

What is the password for mysql user "seafile"?

[ password for seafile ]

Nach Eingabe des Kennworts fordert das Skript die Namen der Seafile-Datenbanken an. Verwenden Sie für dieses Tutorial "", "" und "++". Das Skript überprüft dann, ob eine erfolgreiche Verbindung zu den Datenbanken besteht, bevor eine Zusammenfassung der Erstkonfiguration angezeigt wird.

Enter the existing database name for ccnet:
[ ccnet database ]

verifying user "sammy" access to database  ...  done

Enter the existing database name for seafile:
[ seafile database ]

verifying user "sammy" access to database  ...  done

Enter the existing database name for seahub:
[ seahub database ]

verifying user "For this tutorial you have" access to database  ...  done

---------------------------------
This is your configuration
---------------------------------

   server name:            Seafile
   server ip/domain:

   seafile data dir:       /home//seafile/seafile-data
   fileserver port:        8082

   database:               use existing
   ccnet database:
   seafile database:
   seahub database:
   database user:

--------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Drücken Sie + ENTER zur Bestätigung.

OutputGenerating ccnet configuration ...
done
Successly create configuration dir /home/sammy/seafile/ccnet.

Generating seafile configuration ...
done

Generating seahub configuration ...
----------------------------------------
Now creating seahub database tables ...
----------------------------------------
creating seafile-server-latest symbolic link ...  done

-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------
run seafile server:     ./seafile.sh { start | stop | restart }
run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }
-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------
port of seafile fileserver:   8082
port of seahub:               8000

When problems occur, Refer to
       https://github.com/haiwen/seafile/wiki
for information.

Sie führen Seafile hinter Apache aus, das Sie bereits durch die Firewall Ihres Servers gelassen haben. Sie müssen sich also nicht um das Öffnen der Ports "+ 8082 " und " 8000 +" kümmern und können diesen Teil der Ausgabe ignorieren.

Sie haben die Erstkonfiguration des Servers abgeschlossen. Im nächsten Schritt konfigurieren Sie den Apache-Webserver, bevor Sie die Seafile-Dienste starten.

Schritt 4 - Konfigurieren des Apache-Webservers

In diesem Schritt konfigurieren Sie den Apache-Webserver so, dass alle Anforderungen an Seafile weitergeleitet werden. Wenn Sie Apache auf diese Weise verwenden, können Sie eine URL ohne Portnummer verwenden, HTTPS-Verbindungen zu Seafile aktivieren und die Caching-Funktionalität von Apache für eine bessere Leistung nutzen.

Um mit der Weiterleitung von Anfragen zu beginnen, müssen Sie das + proxy_http + - Modul in der Apache-Konfiguration aktivieren. Dieses Modul bietet Funktionen zum Proxy von HTTP- und HTTPS-Anforderungen. Der folgende Befehl aktiviert das Modul:

sudo a2enmod proxy_http

Aktualisieren Sie anschließend die Konfiguration des virtuellen Hosts von "++", um Anforderungen an den Seafile-Dateiserver und an die Seahub-Weboberfläche weiterzuleiten.

Öffnen Sie die Konfigurationsdatei in einem Texteditor:

sudo nano /etc/apache2/sites-enabled/-le-ssl.conf

Die Zeilen von "+ ServerAdmin " bis " SSLCertificateKeyFile " sind Teil der ursprünglichen Apache- und Let's Encrypt-Konfiguration, die Sie in den vorausgesetzten Lernprogrammen eingerichtet haben. Fügen Sie den markierten Inhalt hinzu, beginnend mit " Alias ​​" und endend mit der Anweisung " ProxyPassReverse +":

/etc/apache2/sites-enabled/your_domain-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
   ServerAdmin
   ServerName
   ServerAlias www.
   DocumentRoot /var/www//html
   ErrorLog ${APACHE_LOG_DIR}/-error.log
   CustomLog ${APACHE_LOG_DIR}/-access.log combined

   Include /etc/letsencrypt/options-ssl-apache.conf
   SSLCertificateFile /etc/letsencrypt/live//fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live//privkey.pem

   sammy














</VirtualHost>
</IfModule>

Die Alias-Direktive ordnet den URL-Pfad "+ / media " einem lokalen Pfad im Dateisystem zu, das Seafile verwendet. Die folgende Anweisung ` Location ` ermöglicht den Zugriff auf Inhalte in diesem Verzeichnis. Die Direktiven " ProxyPass " und " ProxyPassReverse " bewirken, dass Apache als Reverse-Proxy für diesen Host fungiert und Anforderungen an " / " und " / seafhttp " an die Seafile-Webschnittstelle und den Dateiserver weiterleitet, die auf lokalen Host-Ports ausgeführt werden + 8000 + `und` + 8082 + `. Die Direktive " RewriteRule " übergibt alle Anforderungen unverändert an " / seafhttp " und beendet die Verarbeitung weiterer Regeln (" [QSA, L] +").

Speichern und schließen Sie die Datei.

Testen Sie, ob die Konfiguration des virtuellen Hosts Syntaxfehler enthält:

sudo apache2ctl configtest

Wenn "+ Syntax OK +" angezeigt wird, gibt es keine Probleme mit Ihrer Konfiguration. Starten Sie Apache neu, damit die Änderungen wirksam werden:

sudo systemctl restart apache2

Sie haben Apache jetzt so konfiguriert, dass es als Reverse-Proxy für den Seafile-Dateiserver und Seahub fungiert. Als Nächstes aktualisieren Sie die URLs in der Seafile-Konfiguration, bevor Sie die Dienste starten.

Schritt 5 - Aktualisierung der Seafile-Konfiguration und Starten der Dienste

Da Sie jetzt Apache verwenden, um alle Anfragen an Seafile zu übermitteln, müssen Sie die URLs in den Seafile-Konfigurationsdateien im Verzeichnis "+ conf +" mit einem Texteditor aktualisieren, bevor Sie den Seafile-Dienst starten.

Öffne + ccnet.conf + in einem Texteditor:

nano /home//seafile/conf/ccnet.conf

Ganz oben in der Datei befindet sich innerhalb des Blocks "+ [General] " die Direktive " SERVICE_URL +". Es wird so aussehen:

Aktualisieren Sie /home/sammy/seafile/conf/ccnet.conf

. . .
SERVICE_URL=http://www.example.com:8000
. . .

Ändern Sie diese Einstellung, um auf Ihre Domain zu verweisen. Stellen Sie sicher, dass die von Ihnen angegebene URL das HTTPS-Protokoll verwendet und keine Portnummer enthält:

Aktualisieren Sie /home/sammy/seafile/conf/ccnet.conf

. . .
SERVICE_URL = ://
. . .

Speichern und schließen Sie die Datei, sobald Sie den Inhalt hinzugefügt haben.

Öffne nun + seahub_settings.py + in einem Texteditor:

nano /home//seafile/conf/seahub_settings.py

Fügen Sie der Datei die Einstellung "+ FILE_SERVER_ROOT +" hinzu, um den Pfad anzugeben, unter dem der Dateiserver auf Datei-Uploads und -Downloads wartet:

Aktualisieren Sie /home/sammy/seafile/conf/seahub_settings.py

# -*- coding: utf-8 -*-
SECRET_KEY = "..."
your_domain
# ...

Speichern und beenden Sie + seahub_settings.py +.

Jetzt können Sie den Seafile-Dienst und die Seahub-Oberfläche starten:

cd /home//seafile/seafile-server-
./seafile.sh start
./seahub.sh start

Da Sie den Seahub-Dienst zum ersten Mal gestartet haben, werden Sie aufgefordert, ein Administratorkonto zu erstellen. Geben Sie eine gültige E-Mail-Adresse und ein Passwort für diesen Administrator ein:

OutputWhat is the email for the admin account?
[ admin email ]

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]

----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started

Done.

Öffnen Sie "+ https: // +" in einem Webbrowser und melden Sie sich mit Ihrer Seafile-Administrator-E-Mail-Adresse und Ihrem Kennwort an.

Bild: https://assets.digitalocean.com/articles/seafile_1804/step5a.png [Anmeldebildschirm der Seafile-Weboberfläche]

Nach erfolgreicher Anmeldung können Sie auf die Administrationsoberfläche zugreifen oder neue Benutzer erstellen.

Nachdem Sie sichergestellt haben, dass die Webschnittstelle ordnungsgemäß funktioniert, können Sie diese Dienste im nächsten Schritt beim Systemstart automatisch starten lassen.

Schritt 6 - Aktivieren des Seafile-Servers für den Start beim Systemstart

Damit der Dateiserver und das Webinterface beim Booten automatisch gestartet werden, können Sie die entsprechenden Dienstdateien "+ systemd +" erstellen und aktivieren.

Erstellen Sie eine + systemd + - Servicedatei für den Seafile-Dateiserver:

sudo nano /etc/systemd/system/seafile.service

Fügen Sie der Datei den folgenden Inhalt hinzu:

Erstellen Sie /etc/systemd/system/seafile.service

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=forking
ExecStart=/home//seafile/seafile-server-latest/seafile.sh start
ExecStop=/home//seafile/seafile-server-latest/seafile.sh stop
User=
Group=

[Install]
WantedBy=multi-user.target

Hier geben die Zeilen "+ ExectStart " und " ExecStop " die Befehle an, die ausgeführt werden, um den Seafile-Dienst zu starten und zu stoppen. Der Dienst wird mit "+" als "+ Benutzer" und "+ Gruppe" ausgeführt. Die Zeile + After + gibt an, dass der Seafile-Dienst gestartet wird, nachdem das Netzwerk und der MariaDB-Dienst gestartet wurden.

Speichern Sie + seafile.service + und beenden Sie das Programm.

Erstellen Sie eine "+ systemd +" - Servicedatei für die Seahub-Weboberfläche:

sudo nano /etc/systemd/system/seahub.service

Dies ähnelt dem Seafile-Dienst. Der einzige Unterschied besteht darin, dass das Webinterface nach dem Seafile-Dienst gestartet wird. Fügen Sie dieser Datei den folgenden Inhalt hinzu:

Erstellen Sie /etc/systemd/system/seahub.service

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/home//seafile/seafile-server-latest/seahub.sh start
ExecStop=/home//seafile/seafile-server-latest/seahub.sh stop
User=
Group=

[Install]
WantedBy=multi-user.target

Speichern Sie + seahub.service + und beenden Sie das Programm.

Weitere Informationen zu Systemd-Einheitendateien finden Sie im Lernprogramm Understanding Systemd Units and Unit Files.

Führen Sie die folgenden Befehle aus, um zu ermöglichen, dass der Seafile- und der Seahub-Dienst beim Booten automatisch gestartet werden:

sudo systemctl enable seafile.service
sudo systemctl enable seahub.service

Nach dem Neustart des Servers wird Seafile automatisch gestartet.

Zu diesem Zeitpunkt haben Sie die Einrichtung des Servers abgeschlossen und können nun jeden der Dienste testen.

Schritt 7 - Testen der Funktion zum Synchronisieren und Freigeben von Dateien

In diesem Schritt testen Sie die Dateisynchronisierungs- und Freigabefunktionen des von Ihnen eingerichteten Servers und stellen sicher, dass diese ordnungsgemäß funktionieren. Dazu müssen Sie das Seafile-Client-Programm auf einem separaten Computer und / oder einem mobilen Gerät installieren.

Besuchen Sie die Seite download auf der Seafile-Website und folgen Sie den Anweisungen, um die neueste Version des Client-Programms auf Ihrem Computer zu installieren. Seafile-Clients sind für die verschiedenen Linux-Distributionen (Ubuntu, Debian, Fedora, Centos / RHEL, Arch Linux), MacOS und Windows verfügbar. Mobile Clients sind für Android- und iPhone / iPad-Geräte im jeweiligen App Store erhältlich.

Sobald Sie den Seafile-Client installiert haben, können Sie die Dateisynchronisierungs- und Freigabefunktionen testen.

Öffnen Sie das Seafile-Client-Programm auf Ihrem Computer oder Gerät. Akzeptieren Sie den Standardspeicherort für den Seafile-Ordner und klicken Sie auf * Weiter *.

Geben Sie im nächsten Fenster die Serveradresse, den Benutzernamen und das Passwort ein und klicken Sie auf "Anmelden".

Klicken Sie auf der Startseite mit der rechten Maustaste auf "Meine Bibliothek" und klicken Sie auf "Diese Bibliothek synchronisieren". Akzeptieren Sie den Standardwert für den Speicherort auf Ihrem Computer oder Gerät.

image: https://assets.digitalocean.com/articles/seafile_1804/step7a.png [Seafile-Client - Standardbibliothek synchronisieren]

Fügen Sie eine Datei, beispielsweise ein Dokument oder ein Foto, in den Ordner * My Library * ein. Nach einiger Zeit wird die Datei auf den Server hochgeladen. Der folgende Screenshot zeigt die Datei * photo.jpg *, die in den Ordner * My Library * kopiert wurde.

image: https://assets.digitalocean.com/articles/seafile_1804/step7b.png [Eine Datei vom Computer zur Standardbibliothek hinzufügen]

Melden Sie sich jetzt bei der Weboberfläche unter "+ https: // +" an und vergewissern Sie sich, dass Ihre Datei auf dem Server vorhanden ist.

image: https://assets.digitalocean.com/articles/seafile_1804/step7c.png [Seite "Meine Bibliothek" zur Überprüfung der Dateisynchronisierung]

Klicken Sie neben der Datei auf * Freigeben *, um einen Download-Link für diese Datei zu erstellen, den Sie freigeben können.

Sie haben überprüft, ob die Dateisynchronisierung ordnungsgemäß funktioniert und ob Sie mit Seafile Dateien und Ordner von mehreren Geräten synchronisieren und freigeben können.

Fazit

In diesem Tutorial richten Sie eine private Instanz eines Seafile-Servers ein. Jetzt können Sie den Server verwenden, um Dateien zu synchronisieren, Benutzer und Gruppen hinzuzufügen und Dateien zwischen ihnen oder der Öffentlichkeit freizugeben, ohne auf einen externen Dienst angewiesen zu sein.

Wenn eine neue Version des Servers verfügbar ist, lesen Sie den Abschnitt upgrade des Handbuchs, um Informationen zu Schritten zum Ausführen eines Upgrades zu erhalten.