deenfritptrues

Breadcrumbs

Die richtige Konfiguration für Nextcloud hinter einem Apache Reversproxy zu finden, ha schon den einen oder anderen einige graue Haare beschert.

Aber mal vorweg, was für einen Grund gibt es, Nextcloud auf einem Webserver hinter einen Apache Server zu installieren.
Nun in meinem Fall ist es so, das mein NAS auf mit WIndows 10 läuft und Nextcloud Windows nicht unterstützt.

Daher musste eine Workaround her.

Der sieht so aus, das ich Ubunutu ( 18.04 LTS) in einer Hyper-V installiert habe.
Wie man das macht und wie man Apache und Nextcloud grundlegen installiert gehe ich jetzt nicht im Detail darauf ein.
Ich möchte nur meine Konfiguration teilen, damit andere evtl. nicht so lange danach suchen.

Hier ein Diagramm wie das Netzwerktechnisch aussehen könnte.

2020 03 06 10 11 16 apache r proxy.odg LibreOffice Draw

 

Zur Config.
In diesem Beispiel ist die Kommunikation zwischen dem Windows Apache und dem Linux Apache unverschlüsselt per HTTP.
Für den Internetzugrff ist es prinzipiell ausreichend, wenn der Apache am Windows Server HTTPS unterstützt.
Wer es ganz sicher machen möchte, muss am Linux Apache ebenfalls SSL aktivieren und ein Zertifikat einrichen.


1. Am (Windows) Apache Server 1 muss das Proxy Modul aktiv sein.

2. Man legt einen Apache Virtualhost  für Port 80 und 443 an bzw. ändert diese wie folgt:

 

<VirtualHost *:80>
ServerName externaldomain.tomynextcloud.server

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
RewriteEngine On
RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
ProxyPass / "http://IP_OF_MY_Linux_NEXTCLOUD_SERVER/"
ProxyPassReverse / "http://IP_OF_MY_Linux_NEXTCLOUD_SERVER/"

Timeout 3600
</VirtualHost>

 

<VirtualHost *:443>
ServerName externaldomain.tomynextcloud.server
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
RewriteEngine On
RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
ProxyPass / "http://TARGET_IP_OF_MY_Linux_NEXTCLOUD_SERVER/"
ProxyPassReverse / "http://TARGET_IP_OF_MY_Linux_NEXTCLOUD_SERVER/"

Timeout 3600
</VirtualHost>

 

In der Apache Config am Linux Server trägt man foldendes ein:

 

Timeout 3600

<Directory /var/www/html>
Options FollowSymLinks
AllowOverride All
</Directory>

 

Der Timeout ist bei beiden wichtig.
Wenn man zum Beispiel größere Dateien hochlädt und der PHP Timeout größer ist, als der von Apache, bekommt mein eine Fehlermeldung, das Nextcloud, die Filechunks nicht zusammensetzen konnte.

 

PHP INI Einstellungen am Linux Server dazu wären zum Beispiel:

 

max_execution_time = 3600

max_input_time = 3600

memory_limit = 512M

upload_max_filesize = 500M

 

In der config.php von Nextcloud muss man folgenden eintragen:

 

'trusted_domains' =>
array (
0 => 'externaldomain.tomynextcloud.server',
1 => 'lokaler_hostname_vom_linux_server',
2 => 'IP_des_linux_server',
),

'overwrite.cli.url' => 'http://externaldomain.tomynextcloud.server',
'htaccess.RewriteBase' => '/',
'overwritehost' => 'externaldomain.tomynextcloud.server,
'overwriteprotocol' => 'https',
'trusted_proxies' => 'IP_DES_PROXY_SERVERS',

 

Mit 'overwriteprotocol' => 'https', zwingt man Nextcloud dazu von HTTP auf HTTPS umzuspringen.
Wenn man das nicht möchte, kann man es rausnehmen.

 

'htaccess.RewriteBase' => '/', muss evtl. angepasst werden, wenn Nextcloud in einem Unterordner installiert wurde.

 

Folgendes müsst ihr natürlich an Eure Umgebung anpassen:

 

externaldomain.tomynextcloud.server = Domäne über die euer Webserver aus dem Internet erreichbar ist.

TARGET_IP_OF_MY_Linux_NEXTCLOUD_SERVER = IP des Linux Servers wo Nextcloud gehostet wird

lokaler_hostname_vom_linux_server = Der Hostname des Linux Servers wo Nextcloud gehostet wird

IP_DES_PROXY_SERVERS = Die IP Adresse des Apache Proxyserver auf dem WIndows Server

 

Bei Fragen könnt ihr diese über die Kommentare stellen.

Viel Spaß beim "basteln".

 

Wer amavisd(-new) auf CentOS 7 nutzt, dem wird evtl. aufgefallen sein, das beim starten von amavisd die Info kommt, das für lha kein Decoder gefunden wurde.

 

No ext program for .lha, tried: lha

No decoder for .lha

 

Auf CentOS 7 gibt es (bei mir) kein lha Paket und auch keine /usr/bin/lha Binary.

7zip kann allerdings auch lha extrahieren.

 

Damit Amavis 7zip für lha nutzt, muss man die /etc/amavisd/amavisd.conf editieren.

 

Zuerst muss natürich 7zip installiert werden, wenn noch nicht vorhanden.

 

yum install p7zip

 

In /etc/amavisd/amavisd.conf ca. in Zeile 330 steht:

 

['lha', \&do_lha, 'lha'],

 

ich habe diese Zeile auskommtentiert und darunter mit 7zip ergänzt:

 

# ['lha', \&do_lha, 'lha'],
  ['lha', \&do_7zip, ['7zr','7za','7z'] ],

 

Danach amavisd neu starten und amavisd sollte auch lha scannen können.

 

 

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.