Seafile Server - als separater Server hinter Webserver mit Apache2
Aus znilwiki
Changelog:
- 06.08.2017: erste Version
- 31.01.2019: Anpassung an Ubuntu 18.04 + Seafile 6.3.4
- 10.06.2019: Hinweis auf Seafile ab version 7.0.x
Aufbau
Im Zuge des Umbaus meines Webservers habe ich angefangen die Rollen zu trennen.
Früher lief der Seafile-Server auf dem gleichen Server wie auch diese Webseite.
Nun ist es ein eigener Server dahinter:
+----------------------------------+ +----------------+
| WEBSERVER | | SEAFILE-SERVER |
+-----------------+----------------+ +----------------+
| Extern | Intern | | Intern |
seafile.znil.net ---------> | 213.168.209.199 | 10.100.12.10 | <---- LAN ----> | 10.100.12.20 |
+-----------------+----------------+ +----------------+
Ich habe einen Moment gebraucht bis ich das hintereinander geschaltet bekommen habe ... und es geht wie folgt:
Vorbereitung
- Installiert euren SEAFILE-SERVER gemäß dieser Anleitung: Seafile Server - Installation auf Ubuntu 18.04.x LTS
- Macht den Umbau mit dem Apache2 Reverse Proxy bis euer Seafile-Server über http://10.100.12.20 erreichbar ist - https ist nicht notwendig, ich verwende ein Lets Encrypt Zertifikat extern
- gebt immer die IP-Adresse statt des Namens an in den Konfigurationsdateien (Apache Teil für http und https)
Apache2 Konfiguration
- Legt die Subdomain auf eurem WEBSERVER an.
- macht die Seite per https erreichbar (z.B. mit einem lets Encrypt Zertifikat
- Die Apache-Testseite sollte also per https://eurer.seafile.servername erreichbar sein.
- Ändert die .vhost bzw. die Konfiguratonsdatei der Webseite unter
/etc/apache2/sites-available/seitenname.vhostwie folgt ab: - bearbeitet die .vhost Datei eurer Subdomain:
nano /etc/apache2/sites-available/seafile.znil.net.vhost
und löscht alles darin. Ersetzt den Inhalt wie folgt:
<VirtualHost 10.100.12.10:80>
ServerName seafile.znil.net
ServerAdmin webmaster@znil.net
# Umleitung http zu https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost 192.168.200.10:443>
ServerName seafile.znil.net
ServerAdmin webmaster@znil.net
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCertificateFile /etc/letsencrypt/live/seafile2.znil.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/seafile2.znil.net/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/seafile2.znil.net/chain.pem
#
RewriteEngine On
#
# seafile fileserver
#
ProxyPass /seafhttp http://10.100.12.20:8082
ProxyPassReverse /seafhttp http://10.100.12.20:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# seahub
#
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ProxyPreserveHost On
ProxyPass / http://10.100.12.20:8000/
ProxyPassReverse / http://10.100.12.20:8000/
#
# media
#
ProxyPass /media http://10.100.12.20
ProxyPassReverse /media http://10.100.12.20
</VirtualHost>
Anpassen müsst Ihr
- alle IP-Adressen
- den Pfad zu den SSL-Dateien
Ich lasse den SSL Teil immer einfach stehen und kopiere nur den Rest hinein.
Wichtig waren die letzten beiden Zeilen zu /media damit das Webinterface funktioniert. Dazu muss auf dem Seafile zumindest der http:// Teil funktionieren.
In Seafile müsst Ihr trotzdem die Pfade auf https anpassen wie hier beschrieben: Seafile Server - Installation auf Ubuntu 18.04.x LTS#Seafile_Konfiguration_anpassen
Änderung ab Version 7.0.x
Seit Seafile 7.0.x hört dieser nur noch auf 127.0.0.1:8000 => der Posrt 8000 ist also nicht von anderen Hosts zu erreichen.
Das könnt Ihr ändern indem Ihr auf dem Seafile-Server die folgende Datei bearbeitet:
nano /home/seafile/haiwen/conf/gunicorn.conf
und dort die Zeile
bind = "127.0.0.1:8000"
auf
bind = "0.0.0.0:8000"
ändert. Dann Seafile neu starten.
Seafile von intern
Soll der Seafile-Server auch von intern genutzt werden so:
- so verweist intern auf die interne IP des Webservers, nicht des Seafile-Servers.
