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
10. Quellen
https://manual.seafile.com/deploy/start_seafile_at_system_bootup.html
https://manual.seafile.com/deploy/using_mysql.html
Hallo! Ich müsste ein von 1&1 verwaltetes SSL-Zertifikat für meine Domain benutzen. Wie mache ich das?
Viele Grüße!