Aktionen

Seafile Server - als separater Server hinter Webserver mit Apache2

Aus znilwiki

Important.png
Hinweis: Ich nutze selbst dieses hier dargestellte Szenario - dabei ist der Seafile gleich hinter 2 Apache Reverse Proxys.
Diese Lösung hat einen Nachteil: Die Anmeldung am Webinterface per https funktioniert nicht. Über http funktioniert es sehr wohl. Aber auch die Vorschau von Dateien etc. hat seine Macken. Der Seafile-Client kommt damit aber zurecht.
Ich habe jetzt einige Zeit mit der Suche nach einer Lösung verbracht - aber ohne Erfolg.

Am einfachsten ist es wenn man den Port 443 komplett 1:1 zum Seafile-Server durchleitet, dann kann man sich das alles hier sparen. Aber leider ist das für mich nicht aktzebtabel da ich diverse andere Dienste ebenfalls per SSL Verschlüsselt über Port 443 anbiete

1 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 --------->  | 198.100.144.136 | 192.168.200.10 | <---- LAN ----> | 192.168.200.50 |
                                +-----------------+----------------+                 +----------------+


Ich habe einen Moment gebraucht bis ich das hintereinander geschaltet bekommen habe ... und es geht wie folgt:


2 Vorbereitung




3 Apache2 Konfiguration

  • Legt die Subdomain auf eurem WEBSERVER an.
  • kopiert die beiden SSL-Schlüsseldateien die Ihr auf eurem SEAFILE-SERVER verwendet habt auf euren WEBSERVER
  • 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 192.168.42.10:80>
               DocumentRoot /var/www/seafile.znil.net/web
               ServerName seafile.znil.net
               ServerAdmin admin@znil.net
               ErrorLog /var/log/ispconfig/httpd/seafile.znil.net/error.log
               ProxyPass / http://192.168.200.50/
               ProxyPassReverse / http://192.168.200.50/
</VirtualHost>
<VirtualHost 192.168.200.10:443>
               DocumentRoot /var/www/seafile.znil.net/web
               ServerName seafile.znil.net
               ServerAdmin admin@znil.net
               ErrorLog /var/log/ispconfig/httpd/seafile.znil.net/error.log
               SSLEngine on
               SSLProtocol All -SSLv2 -SSLv3
               SSLCertificateFile /var/www/clients/client0/web13/ssl/seafile.znil.net.crt
               SSLCertificateKeyFile /var/www/clients/client0/web13/ssl/seafile.znil.net.key
               ProxyPass / http://192.168.200.50/
               ProxyPassReverse / http://192.168.200.50/
</VirtualHost>

Anpassen müsst Ihr

  • alle IP-Adressen
  • den Pfad zu den SSL-Dateien


Wie Ihr seht geht auch der SSL Weg intern unverschlüsselt weiter - ich hatte es bei der Erstellung dieses Artikel nicht mit SSL Intern hinbekommen - damals konnte ich "Apache proxy" noch nicht so gut. Wie es auch intern mit SSL geht setht im nächsten Abschnitt.
Aber auch bei dieser Lösung ist es nach Extern verschlüsselt.



4 Client Synchronisierung via https

Bei der neuen Version 4 von Seafile kann auch der Client nun ausschliesslich über Port 443 synchronisieren - Hurra! Denn so funktioniert es aus praktisch jedem Netzwerk in dem https erlaubt ist.
Doch leider funktionierte es bei mir nicht auf Anhieb. Grund war leider meine obige Konfiguration.

Bei dieser findet die Kommunikation nach extern verschlüsselt statt, intern hingegen unverschlüsselt. Das war nicht schlimm - die Webseite war so verschlüsselt - und der Client ging eh über die Ports 10001 und 12001.
Nun geht aber auch der Client durch den 443 Port.
Damit nun der Client auch funktioniert muss die interne Kommunikation ebenfalls verschlüsselt stattfinden.

Wir bearbeiten also noch mal unsere Konfigurationsdatei:

nano /etc/apache2/sites-available/seafile.znil.net.vhost

und löscht alles darin. Ersetzt den inhalt wie folgt:

<VirtualHost 192.168.42.10:80>
               DocumentRoot /var/www/seafile.znil.net/web
               ServerName seafile.znil.net
               ServerAdmin admin@znil.net
               ErrorLog /var/log/ispconfig/httpd/seafile.znil.net/error.log
               ProxyPass / http://192.168.200.50/
               ProxyPassReverse / http://192.168.200.50/
</VirtualHost>
<VirtualHost 192.168.200.10:443>
               DocumentRoot /var/www/seafile.znil.net/web
               ServerName seafile.znil.net
               ServerAdmin admin@znil.net
               ErrorLog /var/log/ispconfig/httpd/seafile.znil.net/error.log
               SSLEngine on
               SSLProtocol All -SSLv2 -SSLv3
               SSLCertificateFile /var/www/clients/client0/web13/ssl/seafile.znil.net.crt
               SSLCertificateKeyFile /var/www/clients/client0/web13/ssl/seafile.znil.net.key
               SSLProxyEngine On
               SSLProxyVerify none
               SSLProxyCheckPeerCN off
               SSLProxyCheckPeerName off
               SSLProxyCheckPeerExpire off
               ProxyPass / https://192.168.200.50/
               ProxyPassReverse / https://192.168.200.50/
</VirtualHost>

geändert hat sich

  • Die SSLProxyEngine (mit Parametern das die zertifikate nicht überprüft werden sollen)
  • ProxyPass und ProxyReverse zeigen nun auf https statt auf http




5 Kommentare


Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.



<comments />