Nextcloud über Reverse Proxy

Hallo zusammen,

ich habe einen Nextcloud Server installiert und einen Reverse Proxy davor.
Auf beiden Systemen läuft ein Apache2 Webserver.
Das ganze läuft auch so wie ich es mir Vorstelle.
Nur ich bekomme auf der Übersicht folgende Meldungen angezeigt und die würde ich gerne bereinigen.
Ich habe zwar schon gegoogelt und ein paar Sachen ausprobiert aber die Meldungen gingen nicht weg.

Könnt Ihr mir weiterhelfen?
Welche Daten braucht Ihr noch von mir?

Gruß
T

  • The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the documentation.

  • The “Strict-Transport-Security” HTTP header is not set to at least “15552000” seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips :arrow_upper_right:.

  • Your web server is not properly set up to resolve “/.well-known/caldav”. Further information can be found in the documentation.

  • Your web server is not properly set up to resolve “/.well-known/carddav”. Further information can be found in the documentation.

Moin,

ich würde erstmal ohne reverse Proxy versuchen, um den Fehler zu herauszufinden, ob es wirklich am rp liegt. Wahrscheinlich hast Du das schon gemacht. Un hast Du die Dokus auch befolgt?

Gruß

Haydar

Hi,

sorry für die späte Reaktion.
Bin aber noch nicht zum Testen gekommen.
Ohne RP habe ich es leider noch nicht getestet.
Ja die Anleitungen habe ich befolgt.

Gruß
T

Hi,

  1. Punkt
    In die Nextcloud Konfiguration folgender Eintrag am besten über ‘trusted_domains’ => setzen (IP-Adresse anpassen, ist die des Reverse Proxys) Vorsicht, die Hochkommas werden hier im Forum falsch formatiert!

‘trusted_proxies’ =>
array (
0 => ‘192.168.1.1’,
),

  1. Punkt
    Im Apache des Reverse Proxys das Modul header laden und diesen Eintrag in der VirtualHost anlegen:

Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”

3./4. Punkt
In der Nextcloud VirtualHost des Apaches diesen Eintrag ergänzen:

Redirect 301 /.well-known/carddav https://cloud.example.com/remote.php/dav
Redirect 301 /.well-known/caldav https://cloud.example.com/remote.php/dav

@helge

Danke für die Antwort aber scheinbar kriege ich es trotzdem nicht hin.
Ich wollte auch meine Konfigurationsdateien hochladen aber das funktioniert nicht so wirklich.
Hochladen kann ich nur Bilder und wenn ich es als Text eingebe wird es durch die Sonderzeichen wie “<” irgendwie formatiert und es fehlen etliche Zeilen.

Hab es trotzdem mal als Bild hochgeladen.

Nextcloud Konfiguration

Reverse Proxy - Virtual Host Datei

Gruß
DerT

@DerT
Mit deiner Reverse Proxy / VirtualHost stimmt was nicht. Wenn die Verbindung vom Reverse Proxy zur Nextcloud VirtualHost nicht über das Internet statt findet, kannst du das SSL dem Reverse Proxy überlassen und gehst dann unverschlüsselt zur Nextcloud VirtualHost.

So würde ich es machen. Ich hoffe das es passt, da ich es nicht nachkontrollieren kann. Leider auch als Bild da Code hier im Forum nicht funktioniert.

Port 8080 für Nextcloud VirtualHost aktivieren
vi /etc/apache2/ports.conf
Listen 8080

Voraussetzung, alle Module für header, proxy, rewrite sind geladen.

Nachdem ich mich länger nicht mit dem Thema beschäftigen konnte habe ich aber eine Lösung gefunden.

Mir aufgefallenen, dass meine “VirtualHost” Datei total konfus war und habe diese noch einmal komplett neu aufgebaut.

Für alle die das Problem auch haben hier die Datei mit der es funktioniert hat.

<VirtualHost *:443>
  ServerName nextcloud.example.com
  ProxyPreserveHost On
  DocumentRoot /var/www/nextcloud
  ProxyPass /.well-known !
  ProxyPass / http://nextcloud.angl.loc:80/
  ProxyPassReverse / http://nextcloud.angl.loc:80/

  SSLCertificateFile /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.example.com/privkey.pem
  Include /etc/letsencrypt/options-ssl-apache.conf

  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]

  <IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
  </IfModule>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

PS.
Man kann im Forum code Posten in dem man ihn mit zwischen zwei Zelen mit ``` schreibt.

```
Code
```

I would like to share my fully functional configuration with reverse proxy to future users.

I had troubles accesing NextCloud and the help I found in this thread help me to fix it.

Proxy:

<VirtualHost *:80>
  DocumentRoot /var/www
  ServerName cloud.mydomain.com

  ## Redirigir HTTP -> HTTPS
  RewriteEngine On
  RewriteRule ^/?(.*) https://%{SERVER_NAME}:443/$1 [R,L]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName cloud.mydomain.com
    DocumentRoot /var/www
    CustomLog /var/log/apache2/cloud-access.log combined
    ErrorLog /var/log/apache2/cloud-error.log
    
# Proxy al VM 192.168.1.63
    ProxyPreserveHost On
    ProxyPass /          http://192.168.1.63/
    ProxyPassReverse /   http://192.168.1.63/
    
    
    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]


# Required for Nextcloud
    <IfModule mod_dav.c>
        Dav off
    </IfModule>

# COMMENT THIS BEFORE CREATING THE SSL CERTS
# Security improvements
    Protocols h2 http/1.1
    SSLEngine on
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
    </IfModule>
# Enable only strong encryption ciphers and prefer versions with Forward Secrecy
    SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
    SSLHonorCipherOrder on
# Disable insecure SSL and TLS versions
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
# The following lines prevent .htaccess and .htpasswd files from being viewed by Web clients.
    <Files ".ht*">
        Require all denied
    </Files>
# Disable HTTP TRACE method.
    TraceEnable off
# Disable HTTP TRACK method.
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} ^TRACK
    RewriteRule .* - [R=405,L]
# Avoid "Sabre\DAV\Exception\BadRequest: expected filesize XXXX got XXXX"
    <IfModule mod_reqtimeout.c>
        RequestReadTimeout body=0
    </IfModule>



SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

.
.
.
.
.
Virtutal machine with NextCloud

<VirtualHost *:80>
	ServerName 192.168.1.63
	ServerAdmin webmaster@localhost

	DocumentRoot /var/www/nextcloud/
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	

	<Directory /var/www/nextcloud/>
	  Require all granted
	  AllowOverride All
	  Options FollowSymLinks MultiViews
	</Directory>
	
	<IfModule mod_dav.c>
      Dav off
	</IfModule>
	
	SetEnv HOME /var/www/nextcloud/
	SetEnv HTTP_HOME /var/www/nextcloud/
</VirtualHost>


#<VirtualHost *:443>
    # Nothing
#</VirtualHost>

NextCloud config.php

<?php
$CONFIG = array (
  'passwordsalt' => 'HIDE',
  'secret' => 'HIDE',
  'trusted_domains' => ['192.168.1.*', 'mydomain.com', 'cloud.mydomain.com'],
  'datadirectory' => '/mnt/HDD1/NC_data',
  'dbtype' => 'mysql',
  'version' => '20.0.4.0',
  'dbname' => 'nextcloudDB',
  'dbhost' => '192.168.1.62:3306',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloudDBuser',
  'dbpassword' => 'nextcloudDBpsw',
  'installed' => true,
  'instanceid' => 'HIDE',
  'memcache.local' => '\OC\Memcache\Redis',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => 
  array (
    'host' => '/var/run/redis/redis-server.sock',
    'port' => 0,
    'timeout' => 1.0,
  ),
  'blacklisted_files' => ['.htaccess','Thumbs.db','thumbs.db','prohib.ido'],
  'loglevel' => 2,
  'log_rotate_size' => 3145728,
  'mail_smtpmode' => 'smtp',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtpsecure' => 'ssl',
  'mail_from_address' => 'email',
  'mail_domain' => 'gmail.com',
  'mail_smtpauth' => 1,
  'mail_smtphost' => 'smtp.gmail.com',
  'mail_smtpport' => '465',
  'mail_smtpname' => 'email@gmail.com',
  'mail_smtppassword' => 'password',
  'enable_previews' => true,
  'preview_max_x' => 1000,
  'preview_max_y' => 1000,

  'overwrite.cli.url' => 'https://cloud.mydomain.com/',
  'htaccess.RewriteBase' => '/',
  'overwritehost' => 'cloud.mydomain.com',
  'overwriteprotocol' => 'https',
  'overwritewebroot' => '/',
  'overwritecondaddr' => '^192.168.1.61$',
  'trusted_proxies' => ['192.168.1.61', '192.168.5.0/24'],
  'forwarded_for_headers' => ['HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED'],
  'maintenance' => false,
);
3 Likes

Ok. It’s seems to be fixed with chown -R nextcloud:nextcloud /home/data/nextcloud but now. I got the error.

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request

Reason: DNS lookup failure for: 192.168.1.118index.php

Additionally, a 502 Bad Gateway error was encountered while trying to use an ErrorDocument to handle the request.

I got following waring on the reverse proxy config. Why? the nextcloud instance shoud forward the folder. What I’m doing wrong?

Jan 31 22:56:31 5erver systemd[1]: Started Apache Web Server.
Jan 31 22:56:31 5erver httpd[121573]: AH00112: Warning: DocumentRoot [/usr/share/webapps/nextcloud/] does not exist
Jan 31 22:56:31 5erver httpd[121573]: AH00112: Warning: DocumentRoot [/usr/share/webapps/nextcloud/] does not exist