nextcloud/docker

Using the fpm image in a subdirectory of the proxy

blicknix opened this issue · 2 comments

We try to run the fpm image in a sub directory with the config for the nginx proxy from the config from the nextcloud documentation. While everything works with no sub directory, we get 404 from the app container as the scripts are tried to be accessed from with the sub directory attached.
We tried to change the parameters for overwritewebroot and the other overwrite parameters, but nothing helped with this issue.

Docker compose

version: '3'

services:
  db:
    image: mariadb:10.6
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql:Z
    environment:
      - MYSQL_ROOT_PASSWORD=abcdefg
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
    env_file:
      - db.env
  redis:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:28.0.3-fpm-alpine
    restart: always
    volumes:
      - nextcloud:/var/www/html:z
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
    env_file:
      - db.env
    depends_on:
      - db
      - redis

  web:
    build: ./web
    restart: always
    volumes:
      - nextcloud:/var/www/nextcloud:z,ro
    ports:
      - 10.128.6.106:443:443
      - 10.128.6.106:80:80
    depends_on:
      - app
        
  cron:
    image: nextcloud:28.0.3-fpm-alpine
    restart: always
    volumes:
      - nextcloud:/var/www/html:z
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis

volumes:
  db:
  nextcloud:

nginx.conf

Logs for app container

172.21.0.5 -  21/Mar/2024:22:18:11 +0000 "GET /nextcloud/index.php" 404
172.21.0.5 -  21/Mar/2024:22:18:16 +0000 "GET /nextcloud/ocs/v2.php" 404
172.21.0.5 -  21/Mar/2024:22:18:20 +0000 "PUT /nextcloud/ocs/v2.php" 404
172.21.0.5 -  21/Mar/2024:22:18:46 +0000 "GET /nextcloud/ocs/v2.php" 404

The image, as distributed, isn't really set up to do this in any official manner. I'm not saying a sub-directory setup can't be made to work, but you'd be on your own.

Have you considered using a virtual host / subdomain instead? It doesn't even require another IP address if you don't want it to. eg. #1992 (comment)