Umstellen auf HTTPS – signiertes SSL-Zertifikat

Dies ist nur nötig wenn ihr den Seafile Server unterwegs erreichen wollt. Dazu muss man vorab eine DynDNS Adresse erstellen, zum Beispiel bei noip.com oder spdyn.de. Das müsst ihr dann entsprechend in eurem Router einpflegen und Ports für den Raspberry Pi freigeben. Benötigt wird folgender Port:
1. 80 (für die Installation), kann nachdem auf https umgestellt ist, gelöscht werden
2. 443
Anschließend geht es am Raspberry Pi, als Standardbenutzer, weiter:


sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo sudo certbot --authenticator standalone --installer nginx -d <domain> --pre-hook "service nginx stop" --post-hook "service nginx start"
sudo systemctl restart seafile seahub

Als nächstes noch die Konfiguration von nginx anpassen. Also öffnen wir die seafile.conf und ersetzen den Inhalt mit untigem. Alternativ kann man auch vorab einfach die Datei löschen mit sudo rm /etc/nginx/sites-available/seafile.conf, da diese mit nano neu eingelegt werden würde:

sudo nano /etc/nginx/sites-available/seafile.conf
server {
    listen       80;
    server_name  _;
    rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https

    # Enables or disables emitting nginx version on error pages and in the "Server" response header field.
    server_tokens off;
}


server {
    listen 443;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/deindnsname/fullchain.pem;  # path to your cacert.pem
    ssl_certificate_key /etc/letsencrypt/live/deindnsnamre/privkey.pem;    # path to your privkey.pem
    server_name _;

    proxy_set_header X-Forwarded-For $remote_addr;

    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_read_timeout  1200s;
         proxy_set_header   X-Forwarded-Proto https;


         # used for view/edit office file via Office Online Server
         client_max_body_size 0;

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

        location /seafhttp {
        rewrite ^/seafhttp(.*)$ $1 break;
        proxy_pass http://127.0.0.1:8082;
        client_max_body_size 0;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        
        proxy_connect_timeout  36000s;
        proxy_read_timeout  36000s;
        proxy_send_timeout  36000s;

        send_timeout  36000s;
    }
        location /media {
        root /home/seafile/seafile-server-latest/seahub;
    }
}
sudo nginx -t
sudo nginx -s reload

Ich habe die Dateiinhalte von manual.seafile.com bereits an unsere Bedürfnisse angepasst. Das Zertifikat ist sogar signiert und ihr habt ein grünes Schloss in der Adressleiste.

Zu guter Letzt noch die ccnet.conf und seahub_settings.py abwandeln:

sudo su seafile
cd
cd conf
nano ccnet.conf

Die Service_URL abändern:

SERVICE_URL = https://euredomain

In seahub_settings.py die File Server Root anpassen:

nano seahub_settings.py
FILE_SERVER_ROOT = 'https://euredomain/seafhttp'

Natürlich jeweils speichern und schließen. Seafile Nutzer verlassen und Seafile einmal neustarten. Das war’s dann auch schon.

Viel Spaß mit eurer eigenen privaten Cloud.

Wenn ihr Fragen oder Anregungen habt, könnt ihr gerne ein Kommentar hinterlassen.

12 Comments

  1. Hallo Stephan,

    deine Erklärungen für die Einrichtung von Seafile sind sehr gut. Leider bekomme ich jedoch bei der SSL aktivierung Probleme.

    Bei dem Schritt: sudo nginx -t wird mir folgender Fehler angezeigt:

    nginx: [emerg] BIO_new_file(„/etc/letsencrypt/live/deindnsname/fullchain.pem“) failed (SSL: error:02001002:system library:fopen:No such ftory:fopen(‚/etc/letsencrypt/live/deindnsname/fullchain.pem‘,’r‘) error:2006D080:BIO routines:BIO_new_file:no such file)
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Wo habe ich was falsch gemacht?

    freundliche Grüße

    Mathias

    Mathias
    1. Hallo Mathias,

      danke für dein Feedback.
      Zum Fehler:
      Wenn du den Fehler kopiert und eins uns zu eins hier eingefügt hast würde ich zuerst „deindnsname“ durch die von dir angelegte dyndns Adresse ersetzen…

      Viele Grüße
      Stephan

      1. Vielen Dank für die schnelle Rückmeldung.

        Ja den Fehler habe ich eins zu eins kopiert. Über den part „deindnsname“ bin ich auch schon gestolpert. Ich Frage mich woher diese Bezeichnung kommt. Die habe ich nämlich nirgendwo angegeben.

        Mathias
      2. Hallo Stephan,

        habe es gefunden. Danke noch mal für den Support und die beiden wirklich guten Anleitungen für die Einrichtung des Seafile Servers. Nun funktioniert die Verbindung über https.

        Müssen die Zertifikate irgendwann erneuert werden?

        MfG

        Mathias

        Mathias
      3. Hallo Mathias,

        freut mich, dass es nun funktioniert.
        Das Zertifikat muss irgendwann erneuert werden, dazu wirst du rechtzeitig eine Mail von Let’s Encrypt bekommen.
        Ich empfehle dir noch Fail2Ban einzurichten und die Daten auf eine externe Festplatte zu verlegen. Wenn du Spaß daran hast die Weboberfläche anzupassen kannst du hier mal schauen.

        Viele Grüße
        Stephan

      4. Hallo Stephan,

        danke für die weiteren Tipps. Ist es bei der Einbindung der externen Festplatte so, dass auch die zukünftigen Cloud Daten auf der Externen Festplatte gespeichert werden?

        Gruß Mathias

        Mathias
      5. Hallo Mathias,

        ja, wenn du nach meiner Anleitung gehst verschiebt du erst die bereits gespeicherten Daten auf die externe Festplatte und zukünftig werden die Daten dort automatisch gespeichert. Somit bist du nicht auf eine extrem große sd Karte angewiesen (meine hat nur 8gb). Ich empfehle eine externe Festplatte mit eigener Stromversorgung. Sonst musst du auf das Netzteil vom Raspberry achten, das dieses genug Leistung bringt eine Festplatte zuverlässig mit zu betreiben.

        Viele Grüße
        Stephan

    2. Hi Stephan,

      das hört sich sehr gut an. Ja das Problem mit der Engergieversorgung hatte ich schon. Wenn ich meine externe Festplatte an den Pi über USB anschließe geht der ganz schön in die Knie. Werde mir wohl irgendwann eine mit mehr externer Versorgung holen.

      Danke nochmal und schönes Wochenende!

      Gruß

      Mathias

      Mathias
  2. Danke für die Erklärung.
    Wenn ich nun lokal über meine Domain auf den Server zugreife, müsste es doch bei einer FritzBox nicht über das Internet geleitet werden. Also der Traffic nur über das Lokale Netzwerk. Ich erinnere mich mal von Dynmasq gehört zu haben, aber bin jetzt nicht sicher ob es überhaupt nötig ist.
    freundliche Grüße
    Christian

    Christian

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.