Du hast Seafile Server erfolgreich installiert und konfiguriert? Vielleicht hast du bereits eine externe Festplatte angeschlossen und nutzt Seafile bereits erfolgreich in deinem privaten Netzwerk. Jetzt soll Seafile auch von unterwegs erreichbar und verschlüsselt (https) sein.
Dies ist relativ einfach und schnell erledigt. Allerdings musst du dich zuerst entsprechend vorbereiten. Die Voraussetzungen:
- aktiven Seafile Server
- DynDNS (noip.com, duckdns.org etc)
- Portfreigaben am Router (80, 443)
Jetzt musst du noch ein Paket installieren am Raspberry:
sudo apt-get install python-certbot-nginx
Damit sind die Vorbereitungen abgeschlossen und es kann los gehen.
Als erstes forderst du ein kostenloses SSL Zertifikat von Let’s Encrypt an:
sudo certbot --authenticator standalone --installer nginx -d <domain> --pre-hook "service nginx stop" --post-hook "service nginx start"
Den Teil <domain> ersetzt du durch deine erstellte DynDNS Adresse. Im Anschluss musst die Konfigurationsdatei des Webserver nginx anpassen. Ich gehe davon aus, dass du den Seafile Server anhand meiner Anleitung installiert hast oder mein zur Verfügung gestelltes Image nutzt. In dem Fall kann die Konfigurationsdatei einfach gelöscht werden:
sudo rm /etc/nginx/sites-available/seafile.conf
Jetzt einfach die Datei neu erstellen und die unten stehende Konfiguration einfügen:
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; # deindnsname durch deine vollständige dyndns ersetzen
ssl_certificate_key /etc/letsencrypt/live/deindnsname/privkey.pem; # deindnsname durch deine vollständige dyndns ersetzen
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;
}
}
Achte bitte darauf, dass du in Zeile 13 und 14 „deindnsname“ durch deine vollständige DynDNS ersetzt. (zum Beispiel: stephansnet.dyndns.net)
Die Datei speichern und schließen, die Konfiguration testen und nginx neu starten:
sudo nginx -t # das Ergebnis soll "Syntax ok" lauten
sudo nginx -s reload
Jetzt müssen wir nur nur Seafile die Änderungen mitteilen. Dazu zum Benutzer Seafile wechseln und zwei Dateien anpassen:
sudo su seafile
cd
cd conf
nano ccnet.conf
Service URL aktualisieren, speichern und schließen:
SERVICE_URL = https://deindnsname
nano seahub_settings.py
FILE_SERVER_ROOT = 'https://deindnsname/seafhttp'
Der Seafile-Benutzer kann verlassen werden und es muss ein Neustart des Servers erfolgen:
sudo systemctl restart seafile seahub
Jetzt kannst du deine Adresse aufrufen. Seafile Server ist nun online und verschlüsselt. Gelegenheit genug sich einmal die Seafile App anzuschauen und ggf. Fotos automatisch zu synchronisieren.
Ich freue mich auf deine Unterstützung: PayPalMe
Viel Spaß.
Hallo,
ganz herzlichen Dank für Deine tollen Tutorials bzgl. Seafile (nicht nur dieses hier, sondern auch diejenigen für die Basisinstallation, für Fail2ban etc) – sie sind eine große Hilfe!
Viele Grüße,
Joost