Https routing "404 page not found" docker file

It is possible to use the nexcloud docker image via traefik-proxy and "PathPrefix"

It took me several hours to figure it out. But now it works.

The trick is to create a middleware and use the "replacepathregex" function

Nextcloud 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,
    ),
  ),
  'instanceid' => '24352345edgsdg',
  'passwordsalt' => 'dfggdfg3456345235',
  'secret' => '+owakmASIneeia1dc624vtCu/n7z3',
  'trusted_domains' =>
  array (
    0 => 'IP Proxy:8081',
    1 => 'test.dyndns.com',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'mysql',
  'version' => '27.1.1.0',
  'dbname' => 'nextcloud',
  'dbhost' => 'db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => 'Password',
  'installed' => true,
  'overwrite.cli.url' => '#todo https://test.dyndns.com/next',
  'overwriteprotocol' => 'https',
  'overwritewebroot' => '/next',
  'overwritehost' => '#todo test.dyndns.com',
  'trusted_proxies' =>
  array (
    0 => '#todo IP/24',
  ),
  'loglevel' => 2,
  'maintenance' => false,
);

Nextcloud: docker-compose.yaml

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb:10.6
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=Password01
      - MYSQL_PASSWORD=Password01
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    networks:
      - docker-proxy-network

  app:
    image: nextcloud:latest
    restart: unless-stopped
#    ports:    #wird nur fuer die Erstinstallation benoetigt
#      - 8081:80
    links:
      - db
    volumes:
      - ./nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=Password01
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      - TRUSTED_PROXIES=#todo IP Proxy/24

   labels:
      traefik.enable: true
      traefik.http.routers.nextcloud.entrypoints: websecure
      traefik.http.routers.nextcloud.rule: Host(`test.dyndns.com`) && (PathPrefix(`/next`))
      traefik.http.routers.nextcloud.tls: true
      traefik.http.routers.nextcloud.tls.certresolver: http_resolver
      traefik.http.routers.nextcloud.middlewares: nextcloud-secure-headers, nextcloud_redirectregex, nextcloud_replace_path
      traefik.docker.network: docker-proxy-network

#Middleware #1
      traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent: true
      traefik.http.middlewares.nextcloud_redirectregex.redirectregex.regex: 'https://(.*)/.well-known/(?:card|cal)dav'
      traefik.http.middlewares.nextcloud_redirectregex.redirectregex.replacement: 'https://$${1}/remote.php/dav'

#Middleware #2
      traefik.http.middlewares.nextcloud_replace_path.replacepathregex.regex: "^/next/(.*)"
      traefik.http.middlewares.nextcloud_replace_path.replacepathregex.replacement: "/$$1"

#Middleware #3
      traefik.http.middlewares.nextcloud-secure-headers.headers.hostsProxyHeaders: "X-Forwarded-Host"
      traefik.http.middlewares.nextcloud-secure-headers.headers.referrerPolicy: "same-origin"
      traefik.http.middlewares.nextcloud-secure-headers.headers.customResponseHeaders.X-Robots-Tag: "none"

    networks:
      - docker-proxy-network

networks:
  docker-proxy-network:
    external: true