Skip to main content

Seafile Server Professional Edition – mit HTTPS, MariaDB und nginx unter Debian 9 installieren

Bei Seafile handelt es sich um einen Cloud Server zum Speichern von Daten. Der Vorteil gegenüber von zum Beispiel Nextcloud ist, dass sich hier direkt verschlüsselte Bereiche erstellen lassen, in die alle Daten gespeichert werden können.

Von Seafile gibt es eine kostenlose Version (Community Edition) und eine kostenpflichtige Version. Diese erlaubt es jedoch  3 Benutzeraccounts zu erstellen und kostenlos zu nutzen. Die Unterschiede zwischen den beiden Versionen könnt ihr hier vergleichen.

Nun zeige ich euch, wie ihr unter Debian 9 euch schnell einen Seafile Server (Professional-Edition) installiert und diesen per HTTPS absichert.

Wenn ihr lieber die kostenlose Community Edition installieren wollt, dann schaut euch diesen Beitrag an.

In der Anleitung müsst ihr natürlich die Platzhalter „eureDomain“ ersetzen. Ich habe die Anleitung so erstellt, dass Seafile sich später über die Subdomain „cloud.eureDomain“ öffnen lässt.

1. Vorbereitung

Als erstes müsst ihr eine Datenbank wie MySQL oder MariaDB installieren. Eine einfache Anleitung dazu gibts hier, falls ihr noch keine installiert habt.

Danach installiert ihr folgende Programme:

apt-get update
apt-get install python-setuptools python-imaging python-mysqldb default-jre poppler-utils libpython2.7

Danach legen wir noch einen neuen Benutzer an. Dieser startet später die Anwendung.

adduser seafile

2. Download von Seafile

Wir wechseln in das Installationsverzeichnis. Bei mir ist dies „/home/seafile“.

cd /home/seafile

Nun erstellen wir bei Seafile einen kostenlosen Account. Mit diesem können wir dann Seafile Pro herunterladen. Hier könnt ihr den Account erstellen und downloaden: https://customer.seafile.com

Wir kopieren uns nun den Downloadlink und laden das Programm runter:

wget https://download.seadrive.org/....

Nun entpacken wir den Download mit folgendem Befehl:

tar -xzf seafile-pro-*

3. Datenbank initialisieren

Nun legen wir die Datenbankeinträge an. Dazu wechseln wir in unseren Seafile Ordner.

cd /home/seafile/seafile-pro-server-....

Nun führen wir ein Skript aus, was uns die Datenbank einrichtet:

./setup-seafile-mysql.sh

Nun bekommt ihr nachfolgendes angezeigt. Hier müsst ihr:

  • einen Namen vergeben
  • eure Domain angeben
  • das root Passwort eurer Datenbank
  • ein neues Passwort für den Seafile Datenbank Benutzer

angeben. Die restlichen Eingaben könnt ihr einfach mit „ENTER“ bestätigen.

Checking python on this machine ...
Checking python module: setuptools ... Done.
Checking python module: python-imaging ... Done.
Checking python module: python-mysqldb ... Done.

Checking for java ...Done.

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

https://github.com/haiwen/seafile/wiki

Press ENTER to continue
-----------------------------------------------------------------

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

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

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

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

-------------------------------------------------------
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 ] 1

What is the host of mysql server?
[ default "localhost" ]

What is the port of mysql server?
[ default "3306" ]

What is the password of the mysql root user?
[ root password ]

verifying password of user root ...
verifying password of user root ... done

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "seafile" ]

Enter the password for mysql user "seafile":
[ password for seafile ]

Enter the database name for ccnet-server:
[ default "ccnet-db" ]

Enter the database name for seafile-server:
[ default "seafile-db" ]

Enter the database name for seahub:
[ default "seahub-db" ]

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

server name: goNeuland
server ip/domain: cloud.euredomain.de

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

database: create new
ccnet database: ccnet-db
seafile database: seafile-db
seahub database: seahub-db
database user: seafile

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

Generating ccnet configuration ...

done
Successly create configuration dir /home/seafile/ccnet.
Generating seafile configuration ...

Done.
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.

4. SSL/TLS Zertifikat erzeugen

Um den Datenverkehr abzusichern, erstellen wir uns nun noch ein SSL/TLS Zertifikat. Dies könnt ihr euch kostenlos mittels certbot erstellen lassen. Eine Anleitung dazu findet ihr hier. Mittels dieser Anleitung installiert ihr nun cerbot und erstellt nachfolgend ein Zertifikat für folgende Domain „cloud.eureDomain.de“.

certbot certonly --rsa-key-size 4096 --webroot -w /var/www/letsencrypt -d eureDomain.de -d cloud.eureDomain.de

5. Seafile per HTTPS ansprechen

Um Seafile sicher anzusprechen, müssen wir den Webserver nginx konfigurieren. Dazu kopiert ihr folgende Befehle als ganzes in die Konsole:

echo '
server {
        listen 80;
        server_name cloud.eureDomain.de;
        rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https
        server_tokens off;
}
server {
        listen 443 http2;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/eureDomain.de/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/eureDomain.de/privkey.pem;
        server_name cloud.eureDomain.de;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;

        ssl_dhparam /etc/nginx/dhparam.pem;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS';
        ssl_prefer_server_ciphers on;

        proxy_set_header X-Forwarded-For $remote_addr;

        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
        server_tokens off;

        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_set_header   X-Forwarded-Proto https;

            client_max_body_size 0;

            access_log      /var/log/nginx/seahub.access.log;
            error_log       /var/log/nginx/seahub.error.log;

            proxy_read_timeout  1200s;

        }

        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;
            proxy_request_buffering off;
            send_timeout  36000s;
        }

        location /media {
        root /home/seafile/seafile-server-latest/seahub;
        }
}' >> /etc/nginx/sites-available/seafile.conf

Die markierten Zeilen müsst ihr nun anpassen. Dazu öffnet ihr die Datei:

nano /etc/nginx/sites-available/seafile.conf

Nun erstellen wir noch eine logische Verknüpfung zu der neu erstellten Datei:

ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf

Als nächstes führt ihr folgenden Befehl aus:

openssl dhparam 2048 > /etc/nginx/dhparam.pem

Nun starten wir nginx neu, damit alle Änderungen übernommen werden:

service nginx reload

6. Seafile Server starten

Nun könnt ihr euren Seafile Server starten. Dazu wechseln wir auf den oben erstellten Benutzer.

chown -R seafile:seafile /home/seafile/*
cd /home/seafile/seafile-server-latest
su seafile
./seafile.sh start
./seahub.sh start

Nun müsst ihr noch einen Administrator für euren Server anlegen.

seafile@xxx:~/seafile-server-latest$ ./seahub.sh start

LC_ALL is not set in ENV, set to en_US.UTF-8
./seahub.sh: Zeile 209: Warnung: setlocale: LC_ALL: Kann die Locale nicht ändern (en_US.UTF-8): Datei oder Verzeichnis nicht gefunden
Starting seahub at port 8000 ...

----------------------------------------
It's the first time you start the seafile server. Now let's create the admin account
----------------------------------------

What is the email for the admin account?
[ admin email ] eureE-Mail

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.

Die Warnung könnt ihr mit folgendem Befehl beseitigen:

su
sed -i -E 's/^# (en_US\.UTF-8.*)$/\1/' /etc/locale.gen
locale-gen

Nun könnt ihr per Webbrowser auf euren Server zugreifen. Dazu gebt ihr „cloud.eureDomain.de“ ein.

7. HTTPS Upload aktivieren

Um den Upload zu aktivieren, müsst ihr euch per Administrator einloggen.

Danach klickt ihr auf „System-Administration“.

Hier wählt ihr den Punkt „Einstellungen“ aus.

Ihr müsst bei „SERVICE_URL“ unbedingt „https://eureDomain.de:8000″ stehen haben.

Bei „FILE_SERVER_ROOT“ muss ebenfalls „https://eureDomain.de/seafhttp“ stehen.

8. Seafile automatisch bei Systemstart starten

Als erstes müssen wir zum Benutzer „root“ wechseln.

su

Danach kopiert ihr folgende Befehle in die Konsole:

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

[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/home/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target' >> /etc/systemd/system/seahub.service
echo '[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target mysql.service

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

[Install]
WantedBy=multi-user.target' >> /etc/systemd/system/seafile.service

Nun müsst ihr die beiden Services nur noch aktivieren:

systemctl enable seafile.service
systemctl enable seahub.service

Ab nun wird sich euer Seafile Server immer automatisch bei Systemstart starten.

9. Mobile Apps

Android App

Apple iOS App

10. Quellen

https://manual.seafile.com/deploy/start_seafile_at_system_bootup.html

https://manual.seafile.com/deploy/using_mysql.html

Teile diesen Beitrag

Christian

Ich studiere derzeit Informatik und betreibe in meiner Freizeit diesen Blog.
Auf die Idee kam ich, als ich Anleitungen zum Thema Debian gesucht habe. Leider waren viele Anleitungen veraltet und daher nutzlos.

Da kam ich auf die Idee selbst Anleitungen zu schreiben.
Wenn meine Anleitungen auch veraltet sein sollten, dann schreibt mir das bitte und ich versuche sie zu aktualisieren.
Christian

Christian

Ich studiere derzeit Informatik und betreibe in meiner Freizeit diesen Blog. Auf die Idee kam ich, als ich Anleitungen zum Thema Debian gesucht habe. Leider waren viele Anleitungen veraltet und daher nutzlos. Da kam ich auf die Idee selbst Anleitungen zu schreiben. Wenn meine Anleitungen auch veraltet sein sollten, dann schreibt mir das bitte und ich versuche sie zu aktualisieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.