Problem on dockerize nextcloud behind apache2 reverse proxy, help please

Support intro

Happy holiday every one. Thanks for the good work for creating nextcloud first.

I have been using nextcloud for long time since owncloud day. Always host it on same machine with apache2 behind reverse proxy. Working fine for many years. Durning holiday trying to dockerize it, actually trying to move all my services to docker.

Everything is working except:

  1. Web UI success but not able to redirect to the dashboard, have to refresh the page.
  2. Desktop client not able to login deal to the endless loop after clicking the grand access on webpage.
  3. web server is not properly set up to resolve “/.well-known/caldav” warning.

The first 2 problems I think is the same and block me to use it. I promise I read all documents and all threads I can find regarding this before.

Here is all the details about my setup, let me know if I missed anything.

192.168.0.10: Apache2 reverse proxy with SSL, FQDN: kobe.ca
192.168.0.11: Docker VM running Portainer for Nextcloud
192.168.0.12: MariaDB

  • config.php
<?php
$CONFIG = array(
    'htaccess.RewriteBase' => '/',
    'memcache.local' => '\\OC\\Memcache\\APCu',
    'apps_paths' =>
    array(
        0 =>
        array(
            'path' => '/var/www/html/apps',
            'url' => '/apps',
            'writable' => false,
        ),
        1 =>
        array(
            'path' => '/var/www/html/custom_apps',
            'url' => '/custom_apps',
            'writable' => true,
        ),
    ),
    'datadirectory' => '/var/www/html/data',
    'dbtype' => 'mysql',
    'version' => '20.0.4.0',
    'dbname' => 'nextcloud',
    'dbhost' => '192.168.0.12',
    'dbport' => '',
    'dbtableprefix' => 'oc_',
    'mysql.utf8mb4' => true,
    'dbuser' => 'nextcloud',
    'dbpassword' => 'password',
    'trusted_proxies' =>
    array(
        0 => '192.168.0.10',
    ),
    'overwrite.cli.url' => 'https://kobe.ca/nextcloud', // I tried https://kobe.ca as well, no different
    'overwritehost' => 'kobe.ca',
    'overwriteprotocol' => 'https',
    'overwritewebroot' => '/nextcloud',
    'overwritecondaddr' => '^192\\.168\\.0\\.10$',
    'trusted_domains' =>
    array(
        0 => 'kobe.ca',
    ),
    'forwarded_for_headers' =>
    array(
        0 => 'HTTP_X_FORWARDED',
        1 => 'HTTP_X_FORWARDED_HOST',
        2 => 'HTTP_X_FORWARDED_PROTO',
        3 => 'HTTP_X_FORWARDED_FOR',
    ),
);
  • docker compose
version: "3.5"

services:
  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    volumes:
      - nextcloud_config:/var/www/html/
    environment:
      - MYSQL_PASSWORD=password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=192.168.0.12
      - APACHE_DISABLE_REWRITE_IP=1
      - OVERWRITEHOST=kobe.ca
      - OVERWRITEPROTOCOL=https
      - OVERWRITEWEBROOT=/nextcloud
      - OVERWRITECONDADDR=192.168.0.10

volumes:
  nextcloud_config:
  • ReverseProxy Apache config
    default-ssl.conf
<IfModule mod_ssl.c>
        LoadModule headers_module modules/mod_headers.so

        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
                DocumentRoot /var/www/html
                ServerName www.kobe.ca

                Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

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

                SSLEngine on
                SSLProtocol all -SSLv3 -SSLv2
                SSLHonorCipherOrder On
                SSLCipherSuite CipherXXXXXX
                #   Server Certificate Chain:
                SSLCertificateFile path2cert/site.crt
                SSLCertificateKeyFile path2cert/site.key
                SSLCACertificateFile path2cert/site.ca-bundle

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                    SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                    SSLOptions +StdEnvVars
                </Directory>

                SSLProxyEngine on
                ProxyPreserveHost On
                ProxyRequests off
                
                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 /nextcloud http://192.168.0.11:8080
                ProxyPassReverse /nextcloud http://192.168.0.11:8080
        </VirtualHost>
</IfModule>                
  • Log:
Conf remoteip disabled.,
To activate the new configuration, you need to run:,
  service apache2 reload,
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.37.3. Set the 'ServerName' directive globally to suppress this message,
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.37.3. Set the 'ServerName' directive globally to suppress this message,
[Sun Dec 27 15:47:59.339884 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.13 configured -- resuming normal operations,
[Sun Dec 27 15:47:59.339950 2020] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND',
10.0.0.2 - - [27/Dec/2020:15:48:03 +0000] "GET / HTTP/1.1" 302 1482 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:03 +0000] "GET /apps/dashboard/ HTTP/1.1" 200 11505 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:04 +0000] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/1.1" 200 1479 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:04 +0000] "GET /apps/recommendations/api/recommendations/always HTTP/1.1" 200 1193 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:04 +0000] "PUT /apps/user_status/heartbeat HTTP/1.1" 204 722 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /apps/dashboard/img/kamil-porembinski-clouds.jpg HTTP/1.1" 304 183 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /ocs/v2.php/search/providers?from=%2Fnextcloud%2Fapps%2Fdashboard%2F HTTP/1.1" 200 1097 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /ocs/v2.php/apps/weather_status/api/v1/location HTTP/1.1" 200 908 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "PUT /apps/user_status/heartbeat HTTP/1.1" 204 722 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "PROPFIND /remote.php/dav/ HTTP/1.1" 207 1028 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /ocs/v2.php/apps/spreed/api/v2/room HTTP/1.1" 200 1354 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /cron.php HTTP/1.1" 200 932 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /ocs/v2.php/apps/user_status/api/v1/user_status HTTP/1.1" 200 955 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "PROPFIND /remote.php/dav/principals/users/admin/ HTTP/1.1" 207 1672 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /ocs/v2.php/apps/user_status/api/v1/user_status HTTP/1.1" 200 955 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "PROPFIND /remote.php/dav/calendars/admin/ HTTP/1.1" 207 1927 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:05 +0000] "GET /core/img/favicon.ico HTTP/1.1" 304 180 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:08 +0000] "GET /logout?requesttoken=c0L5kMe%2FEewk3NyT%2BneroY0RS%2B7T2h6YurxHomSKxXw%3D%3AJRG7167eVY1thu%2BinjSfy%2BM%2BJJTqgCfa98YA9QHcjg8%3D HTTP/1.1" 303 1594 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:08 +0000] "GET /login?clear=1 HTTP/1.1" 303 833 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:08 +0000] "GET /login?clear=1 HTTP/1.1" 200 7225 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:08 +0000] "GET /cron.php HTTP/1.1" 200 931 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
127.0.0.1 - - [27/Dec/2020:15:48:12 +0000] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.38 (Debian) PHP/7.4.13 (internal dummy connection)",
127.0.0.1 - - [27/Dec/2020:15:48:16 +0000] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.38 (Debian) PHP/7.4.13 (internal dummy connection)",
10.0.0.2 - - [27/Dec/2020:15:48:20 +0000] "POST /login HTTP/1.1" 303 1256 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:56 +0000] "POST /index.php/login/v2 HTTP/1.1" 200 1229 "-" "Mozilla/5.0 (Macintosh) mirall/3.0.0git (build 3292) (Nextcloud)",
10.0.0.2 - - [27/Dec/2020:15:48:56 +0000] "GET /login/v2/flow/QuGpSHjrwDI3bSBQSFtmjIejI2zs2mEFA1JpT15XSRkerGMCcUi99wGPTNCZt3mlcviFgta2lkSughGcl91Tjbna5gsU0I4VcHQrQ21KHIVERvoMBmabGrKbX39ftnw5 HTTP/1.1" 303 834 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:56 +0000] "GET /login/v2/flow HTTP/1.1" 200 7405 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:56 +0000] "GET /login/v2/flow HTTP/1.1" 200 7404 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:57 +0000] "GET /cron.php HTTP/1.1" 200 931 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:57 +0000] "GET /core/img/favicon.ico HTTP/1.1" 200 3776 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:58 +0000] "GET /login/v2/grant?stateToken=dSTaV8BQMT2opfg5xJoXbQ1kw9IRVUDDomd7TgGST8Z7cTHtROGONQM3NdqR7Xns HTTP/1.1" 200 7368 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:58 +0000] "GET /core/img/background.png?v=2 HTTP/1.1" 304 182 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:48:58 +0000] "GET /cron.php HTTP/1.1" 200 931 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:49:47 +0000] "POST /index.php/login/v2 HTTP/1.1" 200 1128 "-" "Mozilla/5.0 (Macintosh) mirall/3.0.0git (build 3292) (Nextcloud)",
10.0.0.2 - - [27/Dec/2020:15:49:48 +0000] "GET /login/v2/flow/dsrrAHNLnxWidH0BKUIvHKHu09jzNleaoTawxuXZJdohFC9m41aw1nLUNpWA03HG7KZhlKaA6E4uWQosKRQ3nRitlYeeAgc9qX4PTawkhGAwvkItNZsNWiAKal3WSpOV HTTP/1.1" 303 834 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:49:48 +0000] "GET /login/v2/flow HTTP/1.1" 200 7404 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:49:48 +0000] "GET /core/img/background.png?v=0 HTTP/1.1" 304 181 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:49:48 +0000] "GET /cron.php HTTP/1.1" 200 931 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:49:51 +0000] "GET /login/v2/grant?stateToken=dNsV6tHrBBhOkCSzOhUHgCgfv2wapFgOZSdEmkeviRCf05C0irc5x2UMoR3iTnFS HTTP/1.1" 200 7368 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",
10.0.0.2 - - [27/Dec/2020:15:49:51 +0000] "GET /cron.php HTTP/1.1" 200 931 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4325.0 Safari/537.36",