Guten Morgen,
ich habe eine Frage zum reverse Proxy. Via Fritzbox route ich Port 443 aud den 443 des FHEM Servers, hier habe ich (prinzipiell in weiten Zügen dem Wiki folgend) einen Apache reverse Proxy eingerichtet. Das läuft seit Jahren zuverlässig.
Jetzt soll allerdings noch eine OwnCloud-Docker Instanz von außen zugänglich gemacht werden. Im Prinzip habe ich die Konfig übernommen und angepasst (auf Port 80), aber das funktioniert leider nicht (keine Route).
<VirtualHost *:80>
ServerName **********.com
ServerAdmin *******.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/*********.error.log
CustomLog ${APACHE_LOG_DIR}/*********.com.access.log combined
SSLCertificateFile /etc/letsencrypt/live/**********/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/************.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Location /owncloud>
ProxyPass http://localhost:32453/owncloud
ProxyPassReverse http://localhost:32453/owncloud
</Location>
<Directory />
RedirectPermanent / /owncloud
</Directory>
</VirtualHost>
Habe ich einen Denkfehler? Oder hat jemand eine elegante andere Idee für mich. Kann ich unter vem VHost 443 auch eine andere <location> angeben? Bin da ehrlich gesagt nicht wirklich drin, hab sowas bislang nur beim IIS gemacht :(
Bin für jeden Tip dankbar...
D kannst mehr als eine location anlegen. Du kannt auch in einem vhost mehrere Weiterleitungen angeben. z.B. in dem Du die für fhem erweiters ....
Jawohl, so würde ich es auch machen.
Die Location für /fhem/ liefert Dir FHEM, die /ownCloud/-Location eben die OwnCloud-Instanz. Also füge nur den Location-Block ein.
An Deiner Konfiguration ist außerdem mutmaßlich falsch: Wenn Du die OwnCloud-Instanz über Port 80 ansprechen möchtest (was eigentlich nicht nötig ist, siehe oben), dann *kannst* Du zwar https://<meinefritzbox>:80/ aufrufen, aber normalerweise spricht man auf Port 80 kein SSL/https, sondern unverschlüsseltes HTTP.
Wobei auch apache die Umsetzung http auf https machen kann. Aber diese Configuration ... da kann ich Dir (nicht mehr) helfen. Setze seit 2 Jahren dafür noch noch nginx ein ...
Btw: Brauchst Du wirklich apache? Läuft da auch mehr drauf oder nur der proxy?
Hi,
ich habe bei mir zu Hause seit Jahren genau die von dir gewünschte Kombination am Laufen
- auf meinem Homeserver läuft Apache. Hierbei ist nur Port 443 (HTTPS) nach aussen frei gegeben
- auf dem Homeserver läuft owncloud sowie noch ein paar andere Dienste.
- FHEM läuft auf einem RPi
Apache ist mittels locations konfiguriert. Sprich Dateien im Apache Verzeichnis /conf-available erzeugen. Ich habe je eine Datei pro Dienst (Bsp. fhem.conf, owncloud.conf, etc.) In dieser Datei sind die notwendigen Einstellungen für den Reverseproxy hinterlegt. Wie man das für owncloud macht findet sich haufenweise im Netz udn sogar bei owncloud selbst (https://doc.owncloud.org/server/10.0/admin_manual/configuration/server/reverse_proxy_configuration.html)
Nun sind meine Dienste damit via https://www.mydyndns.org/owncloud bzw. https://www.mydyndns.org/haus zu erreichen und die Kommunikation ist verschlüsselt. Sprich benutzername und Passowrt können nicht so einfach mitgeschnüffelt werden.
Vorteil für FHEM dieser Methode ist es, dass FHEM vom Intranet ohne Passwort zugänglich ist und bei Zugriff von aussen, ein Passwort durch den Apache geprüft wird. Für den Zugang von aussen habe ich eine extra Seite bei FHEM eingerichtet, auf der man z.B. keine Konsolenbefehle absetzen kann, die Detail-Seite der Geräte nicht öffnen darf und auch bestimmte Räume, in denen ich administrative Sachen drin haben nicht angezeigt werden. Als z.B. auf Port 8083 die normale FHEM Seite und auf Port 98084 die spezielle Seite für Aussenzugriff und Apache routet nur auf den 8084 Port.
Ich kann heute abend zu Hause mal meine Konfig-Datei für FHEM und Owncloud hier einstellen.
Auf meinem neuen Homeserver habe ich das ganze nun in einzelnen Docker Container verpackt. Bringt Vorteile bei der Wartbarkeit aber bis man das halbwegs am Laufen hat, macht man eine Lernkruve durch
so, hier mal meine Configs
owncloud.conf
<location /owncloud>
ProxyPass http://123.456.789.123/owncloud
ProxyPassReverse http://123.456.789.123/owncloud
ProxyHTMLEnable On
ProxyHTMLURLMap / /
ProxyHTMLURLMap /owncloud /owncloud
SetOutputFilter INFLATE;proxy-html;DEFLATE
</location>
In diesem Fall läuft Owncloud auf dem gleichen Server wie der Apache. Man könnte als IP also auch 127.0.0.1 nehmen. Bei Owncloud bitte auch beachten, dass der Document Root ggf angepasst werden muß
https://doc.owncloud.org/server/10.0/admin_manual/installation/changing_the_web_route.html
Und für FHEM in der fhem.conf mit der IP Adresse des Raspberry. In dieser Konfig fragt der Apache auch das Zugangspasswort ab, welches in der angegeben Datei abliegen muß. Somit wie gesagt bei Zugriff aus dem Intranet ohne Passowrt und bei Zugriff von aussen mit Passwort.
<Location /fhem>
ProxyPass http://123.456.789.321:8084/fhem
ProxyPassReverse http://123.456.789.321:8084/fhem
ProxyHTMLEnable On
ProxyHTMLURLMap / /
ProxyHTMLURLMap /fhem/ /fhem/
AuthType Basic
AuthName "Password Required"
AuthUserFile /etc/apache2/passwords/fhem
Require valid-user
Order deny,allow
Allow from all
SetOutputFilter INFLATE;proxy-html;DEFLATE
</Location>
Hi,
super, besten Dank für die Hilfestellung! Ich schau mir das heute Abend mal in Ruhe an und melde mich ob das alles passt und läuft. Danke für den Schubs!
Grüße Tedious