Git Product home page Git Product logo

nextcloud-docker-dev's Introduction

Nextcloud development environment on Docker Compose

Documentation | Nextcloud Developer Portal

Nextcloud's development environment using Docker Compose providing a large variety of services for Nextcloud server and app development and testing.

⚠ DO NOT USE THIS IN PRODUCTION Various settings in this setup are considered insecure and default passwords and secrets are used all over the place

  • ☁ Nextcloud containers for running multiple versions
  • 🐘 Multiple PHP versions
  • πŸ”’ Nginx proxy with optional SSL termination
  • πŸ›’οΈ MySQL/PostgreSQL/MariaDB/SQLite/MaxScale, Redis cache
  • πŸ’Ύ Local or S3 primary storage
  • πŸ‘₯ LDAP with example user data, Keycloak
  • βœ‰ Mailhog for testing mail sending
  • πŸš€ Blackfire, Xdebug for profiling and debugging
  • πŸ“„ Lots of integrating service containers: Collabora Online, Onlyoffice, Elasticsearch, ...

Tutorial

You can find a step-by-step tutorial on how to use this setup in the Nextcloud Developer Portal. It will guide you through the setup and show you how to use it for app development: https://cloud.nextcloud.com/s/iyNGp8ryWxc7Efa?path=%2F1%20Setting%20up%20a%20development%20environment

In detail explanation of the setup and its features and configuration options can be found in the nextcloud-docker-dev documentation.

Quickstart

Persistent development setup

Tip

This is the recommended way to run the setup for development. You will have a local clone of all required source code.

To start the setup run the following commands to clone the repository and bootstrap the setup. This will prepare your setup and clone the Nextcloud server repository and required apps into the workspace folder.

git clone https://github.com/juliushaertl/nextcloud-docker-dev
cd nextcloud-docker-dev
./bootstrap.sh

Depending on your docker version you will need to use docker-compose instead of docker compose in the following commands.

This may take some time depending on your internet connection speed.

Once done you can start the Nextcloud container using:

docker compose up nextcloud

You can also start it in the background using docker compose up -d nextcloud.

You can then access your Nextcloud instance at http://nextcloud.local. The default username is admin and the password is admin. Other users can be found in the documentation.

[!WARN] Note that for performance reasons the server repository might have been cloned with --depth=1 by default. To get the full history it is highly recommended to run:

cd workspace/server
git fetch --unshallow
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

Standalone containers

Tip

This is a very simple way but doesn't cover all features. If you are looking for a fully featured setup you may skip to the next section

There is a standalone version of the Nextcloud containers available that can be used to run Nextcloud without the other services. This is useful if you are just wanting to get started with app development against a specific server version, or to just have a quick way to develop, test or debug.

These containers support automatic fetching of the server source code and use SQLite as the database. The server source code is fetched from the official Nextcloud server repository and the version can be specified using the NEXTCLOUD_VERSION environment variable. The default version is master.

Running the containers does not need this repository to be cloned.

Example for running a Nextcloud server from the master branch of server:

docker run --rm -p 8080:80 ghcr.io/juliushaertl/nextcloud-dev-php80:latest

For app development you can mount your app directly into the container:

docker run --rm -p 8080:80 -v ~/path/to/appid:/var/www/html/apps-extra/appid ghcr.io/juliushaertl/nextcloud-dev-php80:latest

The SERVER_BRANCH environment variable can be used to run different versions of Nextcloud by specifying either a server branch or git tag.

docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliushaertl/nextcloud-dev-php80:latest

You can also mount your local server source code into the container to run a local version of Nextcloud:

docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 -v /tmp/server:/var/www/html ghcr.io/juliushaertl/nextcloud-dev-php80:latest

More features

You can find documentation for more advanced features in nextcloud-docker-dev documentation for example:

  • Running stable Nextcloud versions in parallel
  • Using different database backends
  • Using HTTPS

nextcloud-docker-dev's People

Contributors

abijeet avatar antreesy avatar azul avatar basos9 avatar camilasan avatar carlschwan avatar christianlupus avatar clarg18 avatar come-nc avatar dependabot[bot] avatar fflorent avatar gerbrent avatar individual-it avatar juliushaertl avatar kesselb avatar kyteinsky avatar max-nextcloud avatar mejo- avatar provokateurin avatar pvince81 avatar renovate[bot] avatar smesterheide avatar st3iny avatar swikritit avatar sylvainmetayer avatar systemkeeper avatar szaimen avatar te-online avatar weeman1337 avatar zak39 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

nextcloud-docker-dev's Issues

phpunit not included?

do i see it right that there is no phpunit included?
how can i execute a unit-test with this setup?

Disable HTTPS redirect and HSTS

With nginx-proxy/nginx-proxy#1386

diff --git a/docker-compose.yml b/docker-compose.yml
index 949bb10..e401831 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -17,6 +17,8 @@ services:
       - ./data/ssl/dhparams.pem:/etc/nginx/dhparam/dhparam.pem
     environment:
       DHPARAM_GENERATION: "false"
+      HTTPS_METHOD: "noredirect"
+      HSTS: "off"
     depends_on:
       - nextcloud
     networks:

Initial setup fails due to recent changes in server code

I have used nextcloud-docker-dev to set up Nextcloud dev environment a few weeks ago. However now, when I try to set up a new environment, I get the following error during initial setup of Nextcloud.

nc-master-database-mysql-1  | 2022-09-18 15:43:56 0 [Note] mysqld: ready for connections.
nc-master-database-mysql-1  | Version: '10.5.17-MariaDB-1:10.5.17+maria~ubu2004'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
nc-master-database-mysql-1  | 2022-09-18 15:43:57 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '192.168.21.6' (This connection closed normally without authentication)
nc-master-nextcloud-1       | βœ… Database server ready
nc-master-nextcloud-1       | Nextcloud is not installed - only a limited number of commands are available
nc-master-nextcloud-1       | Add the host IP as host.docker.internal to /etc/hosts ...
nc-master-nextcloud-1       | database name will be nextcloud
nc-master-nextcloud-1       | πŸ”§ Starting auto installation
nc-master-database-mysql-1  | 2022-09-18 15:43:59 6 [Warning] Access denied for user 'root'@'192.168.21.6' (using password: YES)
nc-master-nextcloud-1       |    MySQL username and/or password not valid
nc-master-nextcloud-1       |     -> You need to enter details of an existing account.
nc-master-nextcloud-1       |    Trace: #0 /var/www/html/lib/private/Setup.php(354): OC\Setup\MySQL->setupDatabase('admin')
nc-master-nextcloud-1       |    #1 /var/www/html/core/Command/Maintenance/Install.php(105): OC\Setup->install(Array)
nc-master-nextcloud-1       |    #2 /var/www/html/3rdparty/symfony/console/Command/Command.php(255): OC\Core\Command\Maintenance\Install->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
nc-master-nextcloud-1       |    #3 /var/www/html/3rdparty/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
nc-master-nextcloud-1       |    #4 /var/www/html/3rdparty/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(OC\Core\Command\Maintenance\Install), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
nc-master-nextcloud-1       |    #5 /var/www/html/3rdparty/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
nc-master-nextcloud-1       |    #6 /var/www/html/lib/private/Console/Application.php(213): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
nc-master-nextcloud-1       |    #7 /var/www/html/console.php(100): OC\Console\Application->run()
nc-master-nextcloud-1       |    #8 /var/www/html/occ(11): require_once('/var/www/html/c...')
nc-master-nextcloud-1       |    #9 {main}

This seems to be related to a recent change: nextcloud/server@33d7a96

After I had reverted changes from this commit, the setup completed successfully.

nc-master-database-mysql-1  | 2022-09-18 15:47:06 0 [Note] mysqld: ready for connections.
nc-master-database-mysql-1  | Version: '10.5.17-MariaDB-1:10.5.17+maria~ubu2004'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
nc-master-database-mysql-1  | 2022-09-18 15:47:07 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '192.168.21.6' (This connection closed normally without authentication)
nc-master-nextcloud-1       | βœ… Database server ready
nc-master-nextcloud-1       | Nextcloud is not installed - only a limited number of commands are available
nc-master-nextcloud-1       | Add the host IP as host.docker.internal to /etc/hosts ...
nc-master-nextcloud-1       | database name will be nextcloud
nc-master-nextcloud-1       | πŸ”§ Starting auto installation
nc-master-nextcloud-1       |    Nextcloud was successfully installed

Admin Setup Process Each Docker Compose Up

Hi @juliushaertl , First of all thank you so so much for the great repo you made!

I want to explain my issue when i follow your steps:

There is a small issue of a CAN_INSTALL file missing that i avoided with:

docker exec -it $(docker ps -f name=master_nextcloud --format "{{.ID}}") touch config/CAN_INSTALL

My main issue is with the admin configuration each time I do docker-compose down.

Steps To Reproduce

  1. docker-compose up proxy nextcloud

  2. Add Admin Settings on http://nextcloud.local/

  3. Login into the interface as an admin

  4. docker-compose down

  5. docker-compose up proxy nextcloud

Actual result

  1. You go back to step 2 and need to start the whole admin process again

Expected Result

  1. You go straight to the login page as you're already an admin

Thank you very much!

Missing libgmp

Thanks for sharing this useful setup!
I'd love to have gmp installed out of the box as bookmarks depends on it :)

ARM/Apple M1 issue

  • blackfire php library is not installed for the correct architecture
  • xdebug.client_host is not properly set (due to the way how docker on Mac OS works it uses the ip of the linux vm instead of the Mac host)
  • When using a fixed client host docker/for-mac#6235

Implement simple docker image for app developers

The idea would be to have a simple image (based on the regular php image) that app developers can use to get started with app development by just using a single docker run command

It should:

  • Have a contained mysql/redis server
  • Have nvm/npm/node in it
  • Come with composer/phpunit out of the box
  • Have a pre-seed for the latest server code
    • probably also be available in different flavours for stable releases

Bootstrap script not failing on errors

On a setup without docker, try running the bootstrap script.

It should fail when detecting that docker doesn't exist.

But actually continues.

I found that the (xxx) | indent block is somehow swallowing the exit code, so it continues to run.
Removing the indent wrapper makes it fail correctly.

Not sure if there is a better way to fix this ?

Set `allow_local_remote_servers` to true per default

Since the used domain is nextcloud.local, allow_local_remote_servers probably should be set to true per default, no?

I ran into this when testing the circle sharing functions which send out POST requests to its own internal API. This failed with Host violates local access rules.

If you agree then I can prepare a pull request, but it should be pretty straight forward anyway πŸ˜‰

Missing apps

I'm just getting my feet wet in the Nextcloud ecosystem, but while using your nextcloud-docker-dev environment I realized that with latest Nextcloud (v18), the following apps had to be installed manually in order to get the env working:

  • text
  • viewer

Both apps are not available via app store (probably because they became part of the Nextcloud core apps to be distributed with the release tarball??) so I had to clone them manually.

Without installing these apps, I got plenty of errors. E.g. when running occ upgrade:

UnexpectedValueException: The files of the app "viewer" were not correctly replaced before running the update
Update failed

Please excuse the noise and feel free to close + ignore this bugreport if it's nonsense. It's very likely that I simply didn't get the picture yet πŸ˜‰

Settings exception on php80+

I'm getting an exception with nextcloud 25 (latest at date) with php80

I've got this in my .env

PHP_VERSION=80

image

It works on PHP_VERSION=74

No SSL Detection on startup when Nextcloud is already installed

I think there was a bug introduced with 97482a1 in /docker/bin/bootstrap.sh.

SSL detection was moved from configure_ssl_proxy to get_protocol, but get_protocol is only called indirectly on first startup. From what I can tell it should always run before configure_ssl_proxy. Subsequently when the container starts configure_ssl_proxy will set overwrite.cli.url to http because PROTOCOL is empty.

Document correct workflow

I'm trying to dig into Nextcloud development a bit, but setting up dev environments aren't my favorite thing, so loved that this repo exists.

I ran docker-compose up proxy nextcloud and things worked great. However, I realized that my nextcloud/server being on master instead of stable18 was a problem, so I checked out the latter and ran docker-compose up proxy nextcloud again, and this happened:
error

CAN_INSTALL exists in nextcloud/server/config/, so something somewhere is lying 😒

What is the proper workflow for using this? Where did I go wrong? Can I not put off reading the Docker docs any longer? πŸ˜…

Support for multiple virtual hosts per service in nginx-proxy

Currently the VIRTUAL_HOST environment variable is used by Nextcloud containers to derive an identifier for the instance among other things. This puts some limitations on how nginx-proxy can be used with regard to multiple virtual hosts.

I have a use case where I want to add an external reverse proxy on the web while also keeping the local setup intact. You can find a PoC here https://github.com/smesterheide/nextcloud-docker-dev/tree/app/vo-federation.

If there is interest in this I can create a PR where we disentangle the VIRTUAL_HOST environment variable.

Nextcloud container throws "access denied" error on intial startup

Hi,
i tried to set this up for a long time, but it always fails with the following error message: file_put_contents(/var/www/html/.htaccess): failed to open stream: Permission denied at /var/www/html/lib/private/Setup.php#552

So i created a fresh clone in a new folder and executed the bootstrap script once again, but the result was the same unfortunately...
It's weird, because the container user should be root i guess and shouldn't have to deal with access permissions.

git clone https://github.com/juliushaertl/nextcloud-docker
cd nextcloud-docker-dev
./bootstrap.sh
sudo sh -c "echo '127.0.0.1 nextcloud.local' >> /etc/hosts"
docker-compose up nextcloud proxy
Klone nach 'nextcloud-docker-dev'...
remote: Enumerating objects: 1098, done.
remote: Counting objects: 100% (266/266), done.
remote: Compressing objects: 100% (129/129), done.
remote: Total 1098 (delta 182), reused 202 (delta 135), pack-reused 832
Empfange Objekte: 100% (1098/1098), 29.75 MiB | 14.92 MiB/s, fertig.
LΓΆse Unterschiede auf: 100% (587/587), fertig.

⏩ Performing system checks
    βœ… docker is properly installed
    βœ… docker-compose is properly installed
    βœ… git is properly installed
    βœ… Docker is properly executable

⏩ Setting up folder structure and fetching repositories
    🌏 Fetching server (this might take a while to finish)
       > Klone nach 'workspace/server'...
       > Submodul '3rdparty' (https://github.com/nextcloud/3rdparty.git) fΓΌr Pfad '3rdparty' in die Konfiguration eingetragen.
       > Klone nach '/home/laurenz/Checkouts/test/nextcloud-docker-dev/workspace/server/3rdparty'...
       > Submodul-Pfad '3rdparty': '3095d4062823f3f913d594f9ff313010ed55cd74' ausgecheckt
    🌏 Fetching viewer
       > Klone nach 'workspace/server/apps-extra/viewer'...
    βœ… viewer installed
    🌏 Fetching recommendations
       > Klone nach 'workspace/server/apps-extra/recommendations'...
    βœ… recommendations installed
    🌏 Fetching files_pdfviewer
       > Klone nach 'workspace/server/apps-extra/files_pdfviewer'...
    βœ… files_pdfviewer installed
    🌏 Fetching profiler
       > Klone nach 'workspace/server/apps-extra/profiler'...
    βœ… profiler installed


⏩ Setup your environment in an .env file


 ╔═════════════════════════════════════════╗
 β•‘ oOo Ready to start developing πŸŽ‰        β•‘
 β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

 πŸš€  Start the Nextcloud server by running

        $ docker-compose up -d nextcloud


 πŸ’€  Stop it with

        $ docker-compose stop nextcloud


 πŸ—‘  Fresh install and wipe all data

        $ docker-compose down -v


        Note that for performance reasons the server repository has been cloned with
        --depth=1. To get the full history it is highly recommended to run:

        $ cd workspace/server
        $ git fetch --unshallow

        This may take some time depending on your internet connection speed.


For more details about the individual setup options see
the README.md file or checkout the repo at
https://github.com/juliushaertl/nextcloud-docker-dev
[sudo] Passwort fΓΌr laurenz: 
[+] Running 6/5
 β Ώ Network nextcloud_default             Created                                                         0.0s
 β Ώ Container nextcloud-database-mysql-1  Created                                                         0.1s
 β Ώ Container nextcloud-proxy-1           Created                                                         0.1s
 β Ώ Container nextcloud-mail-1            Created                                                         0.1s
 β Ώ Container nextcloud-redis-1           Created                                                         0.1s
 β Ώ Container nextcloud-nextcloud-1       Created                                                         0.0s
Attaching to nextcloud-nextcloud-1, nextcloud-proxy-1
nextcloud-proxy-1      | Info: running nginx-proxy version 1.0.1-6-gc4ad18f
nextcloud-proxy-1      | Warning: The DHPARAM_GENERATION environment variable is deprecated, please consider using DHPARAM_SKIP set to true instead.
nextcloud-proxy-1      | Skipping Diffie-Hellman parameters setup.
nextcloud-proxy-1      | forego      | starting dockergen.1 on port 5000
nextcloud-proxy-1      | forego      | starting nginx.1 on port 5100
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: using the "epoll" event method
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: nginx/1.21.6
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: OS: Linux 5.15.65-1-MANJARO
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: getrlimit(RLIMIT_NOFILE): 1048576:1048576
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker processes
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 23
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 24
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 25
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 26
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 27
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 28
nextcloud-nextcloud-1  | βŒ› Waiting for other containers
nextcloud-nextcloud-1  |  - MySQL
nextcloud-proxy-1      | dockergen.1 | 2022/10/02 19:43:58 Generated '/etc/nginx/conf.d/default.conf' from 5 containers
nextcloud-proxy-1      | dockergen.1 | 2022/10/02 19:43:58 Running 'nginx -s reload'
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 1 (SIGHUP) received from 31, reconfiguring
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: reconfiguring
nextcloud-proxy-1      | dockergen.1 | 2022/10/02 19:43:58 Watching docker events
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: using the "epoll" event method
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker processes
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 36
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 37
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 38
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 39
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 40
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: start worker process 41
nextcloud-proxy-1      | dockergen.1 | 2022/10/02 19:43:58 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 25#25: gracefully shutting down
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 27#27: gracefully shutting down
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 23#23: gracefully shutting down
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 24#24: gracefully shutting down
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 26#26: gracefully shutting down
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 27#27: exiting
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 25#25: exiting
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 23#23: exiting
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 24#24: exiting
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 26#26: exiting
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 27#27: exit
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 25#25: exit
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 24#24: exit
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 23#23: exit
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 26#26: exit
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 28#28: gracefully shutting down
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 28#28: exiting
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 28#28: exit
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 17 (SIGCHLD) received from 23
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: worker process 23 exited with code 0
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 29 (SIGIO) received
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 17 (SIGCHLD) received from 27
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: worker process 25 exited with code 0
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: worker process 27 exited with code 0
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: worker process 28 exited with code 0
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 29 (SIGIO) received
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 17 (SIGCHLD) received from 26
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: worker process 26 exited with code 0
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 29 (SIGIO) received
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 17 (SIGCHLD) received from 24
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: worker process 24 exited with code 0
nextcloud-proxy-1      | nginx.1     | 2022/10/02 19:43:58 [notice] 19#19: signal 29 (SIGIO) received
nextcloud-nextcloud-1  | βœ… Database server ready
nextcloud-nextcloud-1  | Nextcloud or one of the apps require upgrade - only a limited number of commands are available
nextcloud-nextcloud-1  | You may use your browser or the occ upgrade command to do the upgrade
nextcloud-nextcloud-1  | πŸš€ Nextcloud already installed ... skipping setup
nextcloud-nextcloud-1  |  Detecting SSL...
nextcloud-nextcloud-1  | πŸ— No SSL proxy, removing overwriteprotocol
nextcloud-nextcloud-1  | πŸ— No SSL proxy, removing overwriteprotocol
nextcloud-nextcloud-1  | Nextcloud or one of the apps require upgrade - only a limited number of commands are available
nextcloud-nextcloud-1  | You may use your browser or the occ upgrade command to do the upgrade
nextcloud-nextcloud-1  |    System config value overwriteprotocol deleted
nextcloud-nextcloud-1  | Nextcloud or one of the apps require upgrade - only a limited number of commands are available
nextcloud-nextcloud-1  | You may use your browser or the occ upgrade command to do the upgrade
nextcloud-nextcloud-1  |    System config value overwrite.cli.url set to string http://nextcloud.local
nextcloud-nextcloud-1  | πŸ“° Watching log file
nextcloud-nextcloud-1  | ⌚ Starting cron
nextcloud-nextcloud-1  | πŸš€ Starting apache
nextcloud-nextcloud-1  | ==> /var/www/html/data/nextcloud.log <==
nextcloud-nextcloud-1  | {"reqId":"GellYHinfAKI8gwY2pea","level":3,"time":"2022-05-17T18:08:23+00:00","remoteAddr":"","user":"--","app":"PHP","method":"","url":"--","message":"file_put_contents(/var/www/html/.htaccess): failed to open stream: Permission denied at /var/www/html/lib/private/Setup.php#552","userAgent":"--","version":"23.0.0.1","exception":{"Exception":"Error","Message":"file_put_contents(/var/www/html/.htaccess): failed to open stream: Permission denied at /var/www/html/lib/private/Setup.php#552","Code":0,"Trace":[{"function":"onAll","class":"OC\\Log\\ErrorHandler","type":"::","args":[2,"file_put_contents(/var/www/html/.htaccess): failed to open stream: Permission denied","/var/www/html/lib/private/Setup.php",552,{"config":{"__class__":"OC\\SystemConfig"},"webRoot":"","setupHelper":{"__class__":"OC\\Setup"},"htaccessContent":"<IfModule mod_headers.c>\n  <IfModule mod_setenvif.c>\n    <IfModule mod_fcgid.c>\n       SetEnvIfNoCase ^Authorization$ \"(.+)\" XAUTHORIZATION=$1\n       RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION\n    </IfModule>\n    <IfModule mod_proxy_fcgi.c>\n       SetEnvIfNoCase Authorization \"(.+)\" HTTP_AUTHORIZATION=$1\n    </IfModule>\n    <IfModule mod_lsapi.c>\n      SetEnvIfNoCase ^Authorization$ \"(.+)\" XAUTHORIZATION=$1\n      RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION\n    </IfModule>\n  </IfModule>\n\n  <IfModule mod_env.c>\n    # Add security and privacy related headers\n\n    # Avoid doubled headers by unsetting headers in \"onsuccess\" table,\n    # then add headers to \"always\" table: https://github.com/nextcloud/server/pull/19002\n    Header onsuccess unset Referrer-Policy\n    Header always set Referrer-Policy \"no-referrer\"\n\n    Header onsuccess unset X-Content-Type-Options\n    Header always set X-Content-Type-Options \"nosniff\"\n\n    Header onsuccess unset X-Download-Options\n    Header always set X-Download-Options \"noopen\"\n\n    Header onsuccess unset X-Frame-Options\n    Header always set X-Frame-Options \"SAMEORIGIN\"\n\n    Header onsuccess unset X-Permitted-Cross-Domain-Policies\n    Header always set X-Permitted-Cross-Domain-Policies \"none\"\n\n    Header onsuccess unset X-Robots-Tag\n    Header always set X-Robots-Tag \"none\"\n\n    Header onsuccess unset X-XSS-Protection\n    Header always set X-XSS-Protection \"1; mode=block\"\n\n    SetEnv modHeadersAvailable true\n  </IfModule>\n\n  # Add cache control for static resources\n  <FilesMatch \"\\.(css|js|svg|gif|png|jpg|ico)$\">\n    Header set Cache-Control \"max-age=15778463\"\n  </FilesMatch>\n\n  # Let browsers cache WOFF files for a week\n  <FilesMatch \"\\.woff2?$\">\n    Header set Cache-Control \"max-age=604800\"\n  </FilesMatch>\n</IfModule>\n\n# PHP 7.x\n<IfModule mod_php7.c>\n  php_value mbstring.func_overload 0\n  php_value default_charset 'UTF-8'\n  php_value output_buffering 0\n  <IfModule mod_env.c>\n    SetEnv htaccessWorking true\n  </IfModule>\n</IfModule>\n\n# PHP 8+\n<IfModule mod_php.c>\n  php_value mbstring.func_overload 0\n  php_value default_charset 'UTF-8'\n  php_value output_buffering 0\n  <IfModule mod_env.c>\n    SetEnv htaccessWorking true\n  </IfModule>\n</IfModule>\n\n<IfModule mod_mime.c>\n  AddType image/svg+xml svg svgz\n  AddEncoding gzip svgz\n</IfModule>\n\n<IfModule mod_dir.c>\n  DirectoryIndex index.php index.html\n</IfModule>\n\n<IfModule pagespeed_module>\n  ModPagespeed Off\n</IfModule>\n\n<IfModule mod_rewrite.c>\n  RewriteEngine on\n  RewriteCond %{HTTP_USER_AGENT} DavClnt\n  RewriteRule ^$ /remote.php/webdav/ [L,R=302]\n  RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n  RewriteRule ^\\.well-known/carddav /remote.php/dav/ [R=301,L]\n  RewriteRule ^\\.well-known/caldav /remote.php/dav/ [R=301,L]\n  RewriteRule ^remote/(.*) remote.php [QSA,L]\n  RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]\n  RewriteRule ^\\.well-known/(?!acme-challenge|pki-validation) /index.php [QSA,L]\n  RewriteRule ^(?:\\.(?!well-known)|autotest|occ|issue|indie|db_|console).* - [R=404,L]\n</IfModule>\n\nAddDefaultCharset utf-8\nOptions -Indexes\n","content":"#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####\n\nErrorDocument 403 /\nErrorDocument 404 /","0":"And 1 more entries, set log level to debug to see all entries"}]},{"file":"/var/www/html/lib/private/Setup.php","line":552,"function":"file_put_contents","args":["/var/www/html/.htaccess","<IfModule mod_headers.c>\n  <IfModule mod_setenvif.c>\n    <IfModule mod_fcgid.c>\n       SetEnvIfNoCase ^Authorization$ \"(.+)\" XAUTHORIZATION=$1\n       RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION\n    </IfModule>\n    <IfModule mod_proxy_fcgi.c>\n       SetEnvIfNoCase Authorization \"(.+)\" HTTP_AUTHORIZATION=$1\n    </IfModule>\n    <IfModule mod_lsapi.c>\n      SetEnvIfNoCase ^Authorization$ \"(.+)\" XAUTHORIZATION=$1\n      RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION\n    </IfModule>\n  </IfModule>\n\n  <IfModule mod_env.c>\n    # Add security and privacy related headers\n\n    # Avoid doubled headers by unsetting headers in \"onsuccess\" table,\n    # then add headers to \"always\" table: https://github.com/nextcloud/server/pull/19002\n    Header onsuccess unset Referrer-Policy\n    Header always set Referrer-Policy \"no-referrer\"\n\n    Header onsuccess unset X-Content-Type-Options\n    Header always set X-Content-Type-Options \"nosniff\"\n\n    Header onsuccess unset X-Download-Options\n    Header always set X-Download-Options \"noopen\"\n\n    Header onsuccess unset X-Frame-Options\n    Header always set X-Frame-Options \"SAMEORIGIN\"\n\n    Header onsuccess unset X-Permitted-Cross-Domain-Policies\n    Header always set X-Permitted-Cross-Domain-Policies \"none\"\n\n    Header onsuccess unset X-Robots-Tag\n    Header always set X-Robots-Tag \"none\"\n\n    Header onsuccess unset X-XSS-Protection\n    Header always set X-XSS-Protection \"1; mode=block\"\n\n    SetEnv modHeadersAvailable true\n  </IfModule>\n\n  # Add cache control for static resources\n  <FilesMatch \"\\.(css|js|svg|gif|png|jpg|ico)$\">\n    Header set Cache-Control \"max-age=15778463\"\n  </FilesMatch>\n\n  # Let browsers cache WOFF files for a week\n  <FilesMatch \"\\.woff2?$\">\n    Header set Cache-Control \"max-age=604800\"\n  </FilesMatch>\n</IfModule>\n\n# PHP 7.x\n<IfModule mod_php7.c>\n  php_value mbstring.func_overload 0\n  php_value default_charset 'UTF-8'\n  php_value output_buffering 0\n  <IfModule mod_env.c>\n    SetEnv htaccessWorking true\n  </IfModule>\n</IfModule>\n\n# PHP 8+\n<IfModule mod_php.c>\n  php_value mbstring.func_overload 0\n  php_value default_charset 'UTF-8'\n  php_value output_buffering 0\n  <IfModule mod_env.c>\n    SetEnv htaccessWorking true\n  </IfModule>\n</IfModule>\n\n<IfModule mod_mime.c>\n  AddType image/svg+xml svg svgz\n  AddEncoding gzip svgz\n</IfModule>\n\n<IfModule mod_dir.c>\n  DirectoryIndex index.php index.html\n</IfModule>\n\n<IfModule pagespeed_module>\n  ModPagespeed Off\n</IfModule>\n\n<IfModule mod_rewrite.c>\n  RewriteEngine on\n  RewriteCond %{HTTP_USER_AGENT} DavClnt\n  RewriteRule ^$ /remote.php/webdav/ [L,R=302]\n  RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n  RewriteRule ^\\.well-known/carddav /remote.php/dav/ [R=301,L]\n  RewriteRule ^\\.well-known/caldav /remote.php/dav/ [R=301,L]\n  RewriteRule ^remote/(.*) remote.php [QSA,L]\n  RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]\n  RewriteRule ^\\.well-known/(?!acme-challenge|pki-validation) /index.php [QSA,L]\n  RewriteRule ^(?:\\.(?!well-known)|autotest|occ|issue|indie|db_|console).* - [R=404,L]\n</IfModule>\n\nAddDefaultCharset utf-8\nOptions -Indexes\n#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####\n\nErrorDocument 403 /\nErrorDocument 404 /\n"]},{"file":"/var/www/html/lib/private/Setup.php","line":420,"function":"updateHtaccess","class":"OC\\Setup","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/core/Command/Maintenance/Install.php","line":108,"function":"install","class":"OC\\Setup","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/symfony/console/Command/Command.php","line":255,"function":"execute","class":"OC\\Core\\Command\\Maintenance\\Install","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":1009,"function":"run","class":"Symfony\\Component\\Console\\Command\\Command","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":273,"function":"doRunCommand","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"OC\\Core\\Command\\Maintenance\\Install"},{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":149,"function":"doRun","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/lib/private/Console/Application.php","line":211,"function":"run","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/console.php","line":99,"function":"run","class":"OC\\Console\\Application","type":"->","args":[]},{"file":"/var/www/html/occ","line":11,"args":["/var/www/html/console.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/Log/ErrorHandler.php","Line":99,"CustomMessage":"--"}}
nextcloud-nextcloud-1  | {"reqId":"GellYHinfAKI8gwY2pea","level":3,"time":"2022-05-17T18:08:23+00:00","remoteAddr":"","user":"admin","app":"no app in context","method":"","url":"--","message":"Could not boot files_trashbin: Could not resolve trashManager! Class trashManager does not exist","userAgent":"--","version":"23.0.0.1","exception":{"Exception":"OCP\\AppFramework\\QueryException","Message":"Could not resolve trashManager! Class trashManager does not exist","Code":0,"Trace":[{"file":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","line":131,"function":"resolve","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["trashManager"]},{"file":"/var/www/html/lib/private/ServerContainer.php","line":161,"function":"query","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["trashManager",true]},{"file":"/var/www/html/lib/private/AppFramework/DependencyInjection/DIContainer.php","line":438,"function":"query","class":"OC\\ServerContainer","type":"->","args":["trashManager",true]},{"file":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","line":56,"function":"query","class":"OC\\AppFramework\\DependencyInjection\\DIContainer","type":"->","args":["trashManager"]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/FunctionInjector.php","line":57,"function":"get","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["trashManager"]},{"function":"OC\\AppFramework\\Bootstrap\\{closure}","class":"OC\\AppFramework\\Bootstrap\\FunctionInjector","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/FunctionInjector.php","line":67,"function":"array_map","args":[{"__class__":"Closure"},[{"__class__":"ReflectionParameter","name":"serverContainer"},{"__class__":"ReflectionParameter","name":"logger"},{"__class__":"ReflectionParameter","name":"appManager"},"*** sensitive parameter replaced ***"]]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/BootContext.php","line":51,"function":"injectFn","class":"OC\\AppFramework\\Bootstrap\\FunctionInjector","type":"->","args":[[{"__class__":"OCA\\Files_Trashbin\\AppInfo\\Application"},"registerTrashBackends"]]},{"file":"/var/www/html/apps/files_trashbin/lib/AppInfo/Application.php","line":56,"function":"injectFn","class":"OC\\AppFramework\\Bootstrap\\BootContext","type":"->","args":[[{"__class__":"OCA\\Files_Trashbin\\AppInfo\\Application"},"registerTrashBackends"]]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php","line":178,"function":"boot","class":"OCA\\Files_Trashbin\\AppInfo\\Application","type":"->","args":[{"__class__":"OC\\AppFramework\\Bootstrap\\BootContext"}]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":206,"function":"bootApp","class":"OC\\AppFramework\\Bootstrap\\Coordinator","type":"->","args":["files_trashbin"]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":140,"function":"loadApp","class":"OC_App","type":"::","args":["files_trashbin"]},{"file":"/var/www/html/apps/dav/lib/AppInfo/Application.php","line":168,"function":"loadApps","class":"OC_App","type":"::","args":[["dav"]]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php","line":178,"function":"boot","class":"OCA\\DAV\\AppInfo\\Application","type":"->","args":[{"__class__":"OC\\AppFramework\\Bootstrap\\BootContext"}]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":206,"function":"bootApp","class":"OC\\AppFramework\\Bootstrap\\Coordinator","type":"->","args":["dav"]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":140,"function":"loadApp","class":"OC_App","type":"::","args":["dav"]},{"file":"/var/www/html/lib/private/legacy/OC_Util.php","line":205,"function":"loadApps","class":"OC_App","type":"::","args":[["filesystem"]]},{"file":"/var/www/html/lib/private/User/Session.php","line":553,"function":"setupFS","class":"OC_Util","type":"::","args":["*** sensitive parameter replaced ***"]},{"file":"/var/www/html/lib/private/User/Session.php","line":414,"function":"prepareUserLogin","class":"OC\\User\\Session","type":"->","args":[true,"*** sensitive parameter replaced ***"]},{"file":"/var/www/html/lib/private/User/Session.php","line":625,"function":"completeLogin","class":"OC\\User\\Session","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/User/Session.php","line":366,"function":"loginWithPassword","class":"OC\\User\\Session","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Setup.php","line":434,"function":"login","class":"OC\\User\\Session","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/core/Command/Maintenance/Install.php","line":108,"function":"install","class":"OC\\Setup","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/symfony/console/Command/Command.php","line":255,"function":"execute","class":"OC\\Core\\Command\\Maintenance\\Install","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":1009,"function":"run","class":"Symfony\\Component\\Console\\Command\\Command","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":273,"function":"doRunCommand","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"OC\\Core\\Command\\Maintenance\\Install"},{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":149,"function":"doRun","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/lib/private/Console/Application.php","line":211,"function":"run","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/console.php","line":99,"function":"run","class":"OC\\Console\\Application","type":"->","args":[]},{"file":"/var/www/html/occ","line":11,"args":["/var/www/html/console.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","Line":120,"CustomMessage":"Could not boot files_trashbin: Could not resolve trashManager! Class trashManager does not exist"}}
nextcloud-nextcloud-1  | {"reqId":"GellYHinfAKI8gwY2pea","level":3,"time":"2022-05-17T18:08:23+00:00","remoteAddr":"","user":"admin","app":"no app in context","method":"","url":"--","message":"Could not boot files_versions: Could not resolve OCA\\Files_Versions\\Versions\\IVersionManager! Class can not be instantiated","userAgent":"--","version":"23.0.0.1","exception":{"Exception":"OCP\\AppFramework\\QueryException","Message":"Could not resolve OCA\\Files_Versions\\Versions\\IVersionManager! Class can not be instantiated","Code":0,"Trace":[{"file":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","line":131,"function":"resolve","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["OCA\\Files_Versions\\Versions\\IVersionManager"]},{"file":"/var/www/html/lib/private/AppFramework/DependencyInjection/DIContainer.php","line":463,"function":"query","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["OCA\\Files_Versions\\Versions\\IVersionManager"]},{"file":"/var/www/html/lib/private/AppFramework/DependencyInjection/DIContainer.php","line":435,"function":"queryNoFallback","class":"OC\\AppFramework\\DependencyInjection\\DIContainer","type":"->","args":["OCA\\Files_Versions\\Versions\\IVersionManager"]},{"file":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","line":56,"function":"query","class":"OC\\AppFramework\\DependencyInjection\\DIContainer","type":"->","args":["OCA\\Files_Versions\\Versions\\IVersionManager"]},{"file":"/var/www/html/apps/files_versions/lib/AppInfo/Application.php","line":128,"function":"get","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["OCA\\Files_Versions\\Versions\\IVersionManager"]},{"file":"/var/www/html/apps/files_versions/lib/AppInfo/Application.php","line":115,"function":"loadBackend","class":"OCA\\Files_Versions\\AppInfo\\Application","type":"->","args":[{"@attributes":{"for":"OCP\\Files\\Storage\\IStorage"},"@value":"OCA\\Files_Versions\\Versions\\LegacyVersionsBackend"},{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"__class__":"OC\\AppFramework\\ScopedPsrLogger"}]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/FunctionInjector.php","line":67,"function":"registerVersionBackends","class":"OCA\\Files_Versions\\AppInfo\\Application","type":"->","args":[{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"__class__":"OC\\App\\AppManager"},{"__class__":"OC\\AppFramework\\ScopedPsrLogger"}]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/BootContext.php","line":51,"function":"injectFn","class":"OC\\AppFramework\\Bootstrap\\FunctionInjector","type":"->","args":[{"__class__":"Closure"}]},{"file":"/var/www/html/apps/files_versions/lib/AppInfo/Application.php","line":100,"function":"injectFn","class":"OC\\AppFramework\\Bootstrap\\BootContext","type":"->","args":[{"__class__":"Closure"}]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php","line":178,"function":"boot","class":"OCA\\Files_Versions\\AppInfo\\Application","type":"->","args":[{"__class__":"OC\\AppFramework\\Bootstrap\\BootContext"}]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":206,"function":"bootApp","class":"OC\\AppFramework\\Bootstrap\\Coordinator","type":"->","args":["files_versions"]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":140,"function":"loadApp","class":"OC_App","type":"::","args":["files_versions"]},{"file":"/var/www/html/apps/dav/lib/AppInfo/Application.php","line":168,"function":"loadApps","class":"OC_App","type":"::","args":[["dav"]]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php","line":178,"function":"boot","class":"OCA\\DAV\\AppInfo\\Application","type":"->","args":[{"__class__":"OC\\AppFramework\\Bootstrap\\BootContext"}]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":206,"function":"bootApp","class":"OC\\AppFramework\\Bootstrap\\Coordinator","type":"->","args":["dav"]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":140,"function":"loadApp","class":"OC_App","type":"::","args":["dav"]},{"file":"/var/www/html/lib/private/legacy/OC_Util.php","line":205,"function":"loadApps","class":"OC_App","type":"::","args":[["filesystem"]]},{"file":"/var/www/html/lib/private/User/Session.php","line":553,"function":"setupFS","class":"OC_Util","type":"::","args":["*** sensitive parameter replaced ***"]},{"file":"/var/www/html/lib/private/User/Session.php","line":414,"function":"prepareUserLogin","class":"OC\\User\\Session","type":"->","args":[true,"*** sensitive parameter replaced ***"]},{"file":"/var/www/html/lib/private/User/Session.php","line":625,"function":"completeLogin","class":"OC\\User\\Session","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/User/Session.php","line":366,"function":"loginWithPassword","class":"OC\\User\\Session","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Setup.php","line":434,"function":"login","class":"OC\\User\\Session","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/core/Command/Maintenance/Install.php","line":108,"function":"install","class":"OC\\Setup","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/symfony/console/Command/Command.php","line":255,"function":"execute","class":"OC\\Core\\Command\\Maintenance\\Install","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":1009,"function":"run","class":"Symfony\\Component\\Console\\Command\\Command","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":273,"function":"doRunCommand","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"OC\\Core\\Command\\Maintenance\\Install"},{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/3rdparty/symfony/console/Application.php","line":149,"function":"doRun","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/lib/private/Console/Application.php","line":211,"function":"run","class":"Symfony\\Component\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/console.php","line":99,"function":"run","class":"OC\\Console\\Application","type":"->","args":[]},{"file":"/var/www/html/occ","line":11,"args":["/var/www/html/console.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","Line":116,"CustomMessage":"Could not boot files_versions: Could not resolve OCA\\Files_Versions\\Versions\\IVersionManager! Class can not be instantiated"}}
nextcloud-nextcloud-1  | 
nextcloud-nextcloud-1  | ==> /var/log/cron/nextcloud.log <==
nextcloud-nextcloud-1  | [Sun Oct 02 19:44:08.057272 2022] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.54 (Debian) PHP/7.4.32 configured -- resuming normal operations
nextcloud-nextcloud-1  | [Sun Oct 02 19:44:08.057300 2022] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
nextcloud-proxy-1      | nginx.1     | 127.0.0.1 192.168.21.1 - - [02/Oct/2022:19:44:33 +0000] "GET / HTTP/1.1" 503 190 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0" "-"
nextcloud-proxy-1      | nginx.1     | 127.0.0.1 192.168.21.1 - - [02/Oct/2022:19:44:34 +0000] "GET / HTTP/1.1" 503 190 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0" "-"
^CGracefully stopping... (press Ctrl+C again to force)
[+] Running 2/2
 β Ώ Container nextcloud-proxy-1      Stopped                                                              0.3s
 β Ώ Container nextcloud-nextcloud-1  Stopped                                                              1.2s
canceled

Docker logs if it helps...?:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  compose: Docker Compose (Docker Inc., 2.10.2)
  scan: Docker Scan (Docker Inc., v0.1.0-260-g9c79702144)

Server:
 Containers: 8
  Running: 3
  Paused: 0
  Stopped: 5
 Images: 248
 Server Version: 20.10.17
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: false
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6.m
 runc version: 
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.15.65-1-MANJARO
 Operating System: Manjaro Linux
 OSType: linux
 Architecture: x86_64
 CPUs: 6
 Total Memory: 31.26GiB
 Name: laurenz-ManjaroKDE
 ID: 2RXV:LA4W:IMSU:4CB4:3GWD:OFPY:SMEJ:EIW2:BUCQ:RB5M:RIMG:5VQB
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  192.168.0.81:5000
  127.0.0.0/8
 Live Restore Enabled: false

Ngnix starts with wrong port configuration after second installation

I ran the default configuration script a second time after I deleted the previous folder and the created network in docker.

sudo rm -rf nextcloud-docker-dev
sudo docker network rm $(sudo docker network ls -q)
git clone https://github.com/juliushaertl/nextcloud-docker-dev
cd nextcloud-docker-dev
./bootstrap.sh
sudo sh -c "echo '127.0.0.1 nextcloud.local' >> /etc/hosts"
docker-compose up nextcloud proxy
́̀```

Now I see on the last step, that nginx will be started on 5100, but `docker ps` shows me that the configuration exposes 80:80. So the default nextcloud instance can't be visited under  `nextcloud.local`.

Μ€```
nextcloud_1          | βŒ› Waiting for other containers
nextcloud_1          |  - MySQL
proxy_1              | Info: running nginx-proxy version 1.0.1-6-gc4ad18f
proxy_1              | Skipping Diffie-Hellman parameters setup.
proxy_1              | Warning: The DHPARAM_GENERATION environment variable is deprecated, please consider using DHPARAM_SKIP set to true instead.
proxy_1              | forego      | starting dockergen.1 on port 5000
proxy_1              | forego      | starting nginx.1 on port 5100
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: using the "epoll" event method
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: nginx/1.21.6
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: OS: Linux 5.18.0-kali7-amd64
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: getrlimit(RLIMIT_NOFILE): 1048576:1048576
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker processes
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 24
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 25
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 26
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 27
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 28
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 29
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 30
proxy_1              | nginx.1     | 2022/10/16 21:43:36 [notice] 19#19: start worker process 31
proxy_1              | dockergen.1 | 2022/10/16 21:43:36 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
proxy_1              | dockergen.1 | 2022/10/16 21:43:36 Watching docker events
proxy_1              | dockergen.1 | 2022/10/16 21:43:36 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'

Global scale test setup

  • Basic containers
  • Make collabora work out of the box
  • SAML integration as an option with keycloak
  • Ensure that it also works with plain http
    • Check why files_sharing is always assuming https for federated shares to users coming from the lookup server

Problem with the recent depth=1 cloning

since you updated the repository cloning to depth=1 i have the problem that i can not add the stable worktrees anymore on a fresh installation, even when executing a fetch --unshallow before.

I am running the following commands:

mkdir -p $HOME/temp_nextcloud
git clone https://github.com/juliushaertl/nextcloud-docker-dev $HOME/temp_nextcloud/nextcloud-docker-dev
cd $HOME/temp_nextcloud/nextcloud-docker-dev
./bootstrap.sh
cd $HOME/temp_nextcloud/nextcloud-docker-dev/workspace/server/
git fetch --unshallow
git worktree add ../stable24 stable24

and the output i get:

Cloning into '/home/user/temp_nextcloud/nextcloud-docker-dev'...
remote: Enumerating objects: 1133, done.
remote: Counting objects: 100% (301/301), done.
remote: Compressing objects: 100% (102/102), done.
remote: Total 1133 (delta 207), reused 278 (delta 197), pack-reused 832
Receiving objects: 100% (1133/1133), 29.75 MiB | 18.69 MiB/s, done.
Resolving deltas: 100% (612/612), done.

⏩ Performing system checks
    βœ… docker is properly installed
    βœ… docker-compose is properly installed
    βœ… git is properly installed
    βœ… Docker is properly executable

⏩ Setting up folder structure and fetching repositories
    🌏 Fetching server (this might take a while to finish)
       > Cloning into 'workspace/server'...
       > Submodule '3rdparty' (https://github.com/nextcloud/3rdparty.git) registered for path '3rdparty'
       > Cloning into '/home/user/temp_nextcloud/nextcloud-docker-dev/workspace/server/3rdparty'...
       > Submodule path '3rdparty': checked out '3095d4062823f3f913d594f9ff313010ed55cd74'
    🌏 Fetching viewer
       > Cloning into 'workspace/server/apps-extra/viewer'...
    βœ… viewer installed
    🌏 Fetching recommendations
       > Cloning into 'workspace/server/apps-extra/recommendations'...
    βœ… recommendations installed
    🌏 Fetching files_pdfviewer
       > Cloning into 'workspace/server/apps-extra/files_pdfviewer'...
    βœ… files_pdfviewer installed
    🌏 Fetching profiler
       > Cloning into 'workspace/server/apps-extra/profiler'...
    βœ… profiler installed


⏩ Setup your environment in an .env file


 ╔═════════════════════════════════════════╗
 β•‘ oOo Ready to start developing πŸŽ‰        β•‘
 β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

 πŸš€  Start the Nextcloud server by running

	$ docker-compose up -d nextcloud


 πŸ’€  Stop it with

	$ docker-compose stop nextcloud


 πŸ—‘  Fresh install and wipe all data

	$ docker-compose down -v


	Note that for performance reasons the server repository has been cloned with
	--depth=1. To get the full history it is highly recommended to run:

	$ cd workspace/server
	$ git fetch --unshallow

	This may take some time depending on your internet connection speed.


For more details about the individual setup options see
the README.md file or checkout the repo at
https://github.com/juliushaertl/nextcloud-docker-dev
remote: Enumerating objects: 847748, done.
remote: Counting objects: 100% (847736/847736), done.
remote: Compressing objects: 100% (153980/153980), done.
remote: Total 842315 (delta 686914), reused 834685 (delta 679389), pack-reused 0
Receiving objects: 100% (842315/842315), 2.00 GiB | 20.99 MiB/s, done.
Resolving deltas: 100% (686914/686914), completed with 3582 local objects.
fatal: invalid reference: stable24

do you know whats going on here? i tried to checkout the branch on the server directory, but that also does not work.
git branch -r does also only show the following branches:

  origin/HEAD -> origin/master
  origin/master

ofc, i can clone the repo again into the stable24 folder and checkout the stable24 branch there, but since you documented the recommended process with worktree, i thought i report the behaviour.

Bootstrap improvements

As found during setup with @vinicius73 the initial bootstrap could be improved a bit:

  • Progress output for git clone commands
  • Retry failed clones
  • Suggest /etc/host changes or do them right away with sudo
  • Add proxy as a dependency for the nextcloud container
  • Add last 3 stable versions as worktree instead of the hardcoded one

blackfire connection errors in the log file

My log file is polluted with these errors:

{
  "reqId": "ErAZBSfz8BcrItdKUwe0",
  "level": 3,
  "time": "2022-02-08T10:07:41+00:00",
  "remoteAddr": "192.168.21.2",
  "user": "admin",
  "app": "PHP",
  "method": "PUT",
  "url": "/index.php/apps/user_status/heartbeat",
  "message": "Unknown: php_network_getaddresses: getaddrinfo for blackfire failed: Temporary failure in name resolution at Unknown#0",
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Falkon/3.2.0 Chrome/87.0.4280.144 Safari/537.36",
  "version": "24.0.0.4",
  "exception": {
    "Exception": "Error",
    "Message": "Unknown: php_network_getaddresses: getaddrinfo for blackfire failed: Temporary failure in name resolution at Unknown#0",
    "Code": 0,
    "Trace": [
      {
        "function": "onAll",
        "class": "OC\\Log\\ErrorHandler",
        "type": "::",
        "args": [
          2,
          "Unknown: php_network_getaddresses: getaddrinfo for blackfire failed: Temporary failure in name resolution",
          "Unknown",
          0
        ]
      }
    ],
    "File": "/var/www/html/lib/private/Log/ErrorHandler.php",
    "Line": 99,
    "CustomMessage": "--"
  }
}

I do not use blackfire so I do not pass it to docker-compose up, but it should not be mandatory (or if it is it should be setup by default).

SSL not working (.localhost, PHP 8)

I am having trouble starting the dev setup and getting SSL to work.

What I did:

  • checkout stable23 for NC server
  • latest nextcloud-docker-dev
  • DOMAIN_SUFFIX=.localhost
  • PHP_VERSION=80
  • docker-compose up nextcloud proxy
  • ends up in bash: connect: Connection refused (see logs)

I have already tried resetting everything (containers, volumes, directories).

`docker-compose` log output
~/git/nextcloud/nextcloud-docker-dev (master)$ docker-compose up proxy nextcloud
nextcloud_redis_1 is up-to-date
nextcloud_database-mysql_1 is up-to-date
nextcloud_mail_1 is up-to-date
Starting nextcloud_proxy_1     ... done
Starting nextcloud_nextcloud_1 ... done
Attaching to nextcloud_proxy_1, nextcloud_nextcloud_1
proxy_1              | Warning: The DHPARAM_GENERATION environment variable is deprecated, please consider using DHPARAM_SKIP set to true instead.
proxy_1              | Skipping Diffie-Hellman parameters setup.
proxy_1              | forego      | starting dockergen.1 on port 5000
proxy_1              | forego      | starting nginx.1 on port 5100
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: using the "epoll" event method
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: nginx/1.21.3
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: built by gcc 8.3.0 (Debian 8.3.0-6) 
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: OS: Linux 5.4.0-91-generic
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: getrlimit(RLIMIT_NOFILE): 1048576:1048576
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker processes
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 22
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 23
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 24
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 25
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 26
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 27
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 28
proxy_1              | nginx.1     | 2021/12/05 09:53:15 [notice] 17#17: start worker process 29
nextcloud_1          | βŒ› Waiting for other containers
nextcloud_1          |  - MySQL
proxy_1              | dockergen.1 | 2021/12/05 09:53:15 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
proxy_1              | dockergen.1 | 2021/12/05 09:53:15 Watching docker events
proxy_1              | dockergen.1 | 2021/12/05 09:53:15 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
nextcloud_1          | βœ… Database server ready
nextcloud_1          | Xdebug: [Config] The setting 'xdebug.profiler_enable' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.profiler_enable (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
nextcloud_1          | Xdebug: [Config] The setting 'xdebug.profiler_enable_trigger' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.profiler_enable_trigger (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
nextcloud_1          | Xdebug: [Config] The setting 'xdebug.profiler_output_dir' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.profiler_output_dir (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
nextcloud_1          | Xdebug: [Config] The setting 'xdebug.remote_connect_back' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_connect_back (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
nextcloud_1          | Xdebug: [Config] The setting 'xdebug.remote_enable' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_enable (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
nextcloud_1          | Xdebug: [Config] The setting 'xdebug.trace_output_dir' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.trace_output_dir (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
nextcloud_1          | Xdebug: [Config] The setting 'xdebug.trace_enable_trigger' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.trace_enable_trigger (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
nextcloud_1          | πŸš€ Nextcloud already installed ... skipping setup
nextcloud_1          | bash: connect: Connection refused
nextcloud_1          | bash: line 1: /dev/tcp/proxy/443: Connection refused
nextcloud_1          | bash: connect: Connection refused

Errors on Ubuntu 18.04 with docker.io as root

I cannot get it runing.

after applying the changes from #7, this is my log:

Attaching to nextclouddockerdev_nc-database-postgres_1, nextclouddockerdev_nc-server-sqlite_1, nextclouddockerdev_nc-server-postgres_1, nextclouddockerdev_nc-database-mysql_1, nextclouddockerdev_nc-server-mysql_1
nc-database-postgres_1 | The files belonging to this database system will be owned by user "postgres".
nc-database-postgres_1 | This user must also own the server process.
nc-database-postgres_1 |
nc-server-sqlite_1 | chown: cannot access '/var/www/html/apps-extra': No such file or directory
nc-database-postgres_1 | The database cluster will be initialized with locale "en_US.utf8".
nc-server-sqlite_1 | Starting server using sqlite database…
nc-database-postgres_1 | The default database encoding has accordingly been set to "UTF8".
nc-database-postgres_1 | The default text search configuration will be set to "english".
nc-database-postgres_1 |
nc-server-sqlite_1 | tail: warning: --retry only effective for the initial open
nc-database-postgres_1 | Data page checksums are disabled.
nc-server-postgres_1 | chown: cannot access '/var/www/html/apps-extra': No such file or directory
nc-server-sqlite_1 | tail: cannot open '/var/www/html/data/nextcloud.log' for reading: No such file or directory
nc-database-postgres_1 |
nc-server-mysql_1 | bash: connect: Connection refused
nc-database-mysql_1 | Initializing database
nc-server-mysql_1 | bash: /dev/tcp/nc-database-mysql/3306: Connection refused
nc-server-postgres_1 | Starting server using pgsql database…
nc-database-postgres_1 | fixing permissions on existing directory /var/lib/postgresql/data ... ok
nc-database-mysql_1 | 2018-08-21T21:39:41.412583Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
nc-server-sqlite_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.4. Set the 'ServerName' directive globally to suppress this message
nc-database-postgres_1 | initdb: could not create directory "/var/lib/postgresql/data/pg_xlog": No space left on device
nc-database-mysql_1 | 2018-08-21T21:39:41.413050Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.12) initializing of server in progress as process 32
nc-server-postgres_1 | tail: warning: --retry only effective for the initial open
nc-database-postgres_1 | initdb: removing contents of data directory "/var/lib/postgresql/data"
nc-database-mysql_1 | mbind: Operation not permitted
nc-server-sqlite_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.4. Set the 'ServerName' directive globally to suppress this message
nc-server-postgres_1 | tail: cannot open '/var/www/html/data/nextcloud.log' for reading: No such file or directory
nc-database-mysql_1 | mbind: Operation not permitted
nc-server-sqlite_1 | [Tue Aug 21 21:39:40.697700 2018] [mpm_prefork:notice] [pid 13] AH00163: Apache/2.4.10 (Debian) PHP/7.1.10 configured -- resuming normal operations
nc-server-postgres_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.5. Set the 'ServerName' directive globally to suppress this message
nc-database-mysql_1 | mbind: Operation not permitted
nc-server-sqlite_1 | [Tue Aug 21 21:39:40.697733 2018] [core:notice] [pid 13] AH00094: Command line: 'apache2 -D FOREGROUND'
nc-database-mysql_1 | mbind: Operation not permitted
nc-server-postgres_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.5. Set the 'ServerName' directive globally to suppress this message
nc-database-mysql_1 | mbind: Operation not permitted
nc-database-mysql_1 | mbind: Operation not permitted
nc-database-mysql_1 | mbind: Operation not permitted
nc-database-mysql_1 | mbind: Operation not permitted
nc-server-postgres_1 | [Tue Aug 21 21:39:41.159904 2018] [mpm_prefork:notice] [pid 14] AH00163: Apache/2.4.10 (Debian) PHP/7.1.10 configured -- resuming normal operations
nc-server-postgres_1 | [Tue Aug 21 21:39:41.159962 2018] [core:notice] [pid 14] AH00094: Command line: 'apache2 -D FOREGROUND'
nextclouddockerdev_nc-database-postgres_1 exited with code 1
nc-database-mysql_1 | 2018-08-21T21:39:41.443474Z 1 [Warning] [MY-012638] [InnoDB] InnoDB: Retry attempts for writing partial data failed.
nc-database-mysql_1 | 2018-08-21T21:39:41.446209Z 1 [ERROR] [MY-012639] [InnoDB] InnoDB: Write to file ./ibdata1 failed at offset 0, 1048576 bytes should have been written, only 0 were written. Operating system error number 28. Check that your OS and file system support files of this size. Check also that the disk is not full or a disk quota exceeded.
nc-database-mysql_1 | 2018-08-21T21:39:41.446241Z 1 [ERROR] [MY-012640] [InnoDB] InnoDB: Error number 28 means 'No space left on device'
nc-database-mysql_1 | 2018-08-21T21:39:41.446250Z 1 [ERROR] [MY-012267] [InnoDB] InnoDB: Could not set the file size of './ibdata1'. Probably out of disk space
nc-database-mysql_1 | 2018-08-21T21:39:41.446264Z 1 [ERROR] [MY-012929] [InnoDB] InnoDB: InnoDB Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.
nc-database-mysql_1 | 2018-08-21T21:39:42.047501Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
nc-database-mysql_1 | 2018-08-21T21:39:42.047533Z 0 [ERROR] [MY-010119] [Server] Aborting
nc-database-mysql_1 | 2018-08-21T21:39:42.048824Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.12) MySQL Community Server - GPL.
nextclouddockerdev_nc-database-mysql_1 exited with code 1
nc-server-mysql_1 | bash: nc-database-mysql: Name or service not known
nc-server-mysql_1 | bash: /dev/tcp/nc-database-mysql/3306: Invalid argument
nc-server-mysql_1 | bash: nc-database-mysql: Name or service not known
nc-server-mysql_1 | bash: /dev/tcp/nc-database-mysql/3306: Invalid argument
nc-server-mysql_1 | bash: nc-database-mysql: Name or service not known
nc-server-mysql_1 | bash: /dev/tcp/nc-database-mysql/3306: Invalid argument
nc-server-mysql_1 | bash: nc-database-mysql: Name or service not known
...

SSO enhancements

  • autogenerate docker/configs/keycloak/realm-export.json with proper domain suffix
  • add script to auto configure oidc
  • add script to auto configure saml
  • Document behavior and mention it in the changelog #104

adding phpMyAdmin (or adminer) ?

do i see it right that there is none of these tools to manage the database?
wouldnΒ΄t it great to have one of these for administration?

Get rid of hardcoded paths and urls

There are still quite some occurrences of my own environment which should be moved to more generic approaches:

  • absolute file paths, e.g. (/home/jus/)
  • fixed domain values
    • e.g. in saml/keycloak configuration

Getting started

Hi,

first of all: Great idea πŸ‘
I am wondering about this installation steps:

git clone [email protected]:nextcloud/server.git
cd server
export NEXTCLOUD_SOURCE=$PWD
docker-compose up

This would mean that you run the docker-compose inside the nextcloud/server repo/checkout which won't work :)

Shouldn't this rather be like this:

git clone https://github.com/juliushaertl/nextcloud-docker-dev.git
git clone https://github.com/nextcloud/server.git
export NEXTCLOUD_SOURCE="$PWD/server"
cd nextcloud-docker-dev
docker-compose up

Side-note: There is a typo: "Getting startd" => missing e :)

Cheers,
Jan

xdebug warnings

I get this on all occ calls:

Xdebug: [Config] The setting 'xdebug.profiler_enable' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.profiler_enable (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
Xdebug: [Config] The setting 'xdebug.profiler_enable_trigger' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.profiler_enable_trigger (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
Xdebug: [Config] The setting 'xdebug.profiler_output_dir' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.profiler_output_dir (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
Xdebug: [Config] The setting 'xdebug.remote_connect_back' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_connect_back (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
Xdebug: [Config] The setting 'xdebug.remote_enable' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_enable (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
Xdebug: [Config] The setting 'xdebug.trace_output_dir' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.trace_output_dir (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
Xdebug: [Config] The setting 'xdebug.trace_enable_trigger' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.trace_enable_trigger (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)

Error "sudo: /var/www/html/occ: command not found"

Hi,
I just downloaded the project and I'm trying to start the containers using "docker-compose up nextcloud proxy" according to README.md. However I'm getting following error messages:
nextcloud-docker-dev-nextcloud-1 | sudo: /var/www/html/occ: command not found
nextcloud-docker-dev-nextcloud-1 | πŸš€ Nextcloud already installed ... skipping setup
nextcloud-docker-dev-nextcloud-1 | bash: connect: Connection refused
nextcloud-docker-dev-nextcloud-1 | bash: line 1: /dev/tcp/proxy/443: Connection refused
...
nextcloud-docker-dev-nextcloud-1 | Could not open input file: /var/www/html/cron.php

When I try to open Nextcloud on http://nextcloud.local:980/ I get "503 Service Temporarily Unavailable" from nginx.

"ls /var/www/html" in nextcloud-docker-dev-nextcloud-1 returns:
apps-extra apps-writable config data
i.e. no "occ" there

I'm using latest Docker Desktop 4.2.0 on Windows 10 and the only changes to the configuration I did in docker-compose.yml in port mapping for proxy on lines 10 and 11:
- "980:80"
- "9443:443"

Thanks for any suggestions.

installation doc issues in README.md

installation documentation in README.md is lacking some details.

Here's what I've done following your talk of yesterday (that was a little bit of hacking and it's not yet very functional but that gives an idea):

git clone https://github.com/juliushaertl/nextcloud-docker-dev
cd nextcloud-docker-dev
bootstrap.sh
docker-compose up nextcloud

(docker-compose up nextlcoud seems very heavy. Mayeb docker-compose up proxy nextcloud is better)

from within docker:

git clone https://github.com/nextcloud/server 
cd server
git submodule update --init
mv .* ..

(there's a conflict with a additional-config.php file but they are both the same)

restart docker image

bootstrap.sh doesn't work on MacOS

apparently argument -u for sed is not supported

donald:nextcloud-docker-dev cyr$ ./bootstrap.sh 

⏩ Performing system checks
    βœ… docker is properly installed
    βœ… docker-compose is properly installed
    βœ… git is properly installed
    βœ… Docker is properly executable

⏩ Setting up folder structure and fetching repositories
    🌏 Fetching server
sed: illegal option -- u
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
    ❌ Failed to clone Nextcloud server code
./bootstrap.sh: line 60: cd: workspace/server: No such file or directory
    ❌ Failed to setup worktree for stable19
    🌏 Fetching viewer
sed: illegal option -- u
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
    ❌ Failed to install viewer
    🌏 Fetching recommendations

Document how to recover from inconsistent state

I followed the Readme and was able to try out nextcloud from current master branch.
I added some apps and created some files.
I then tried switching to stable18 because some things were not working for me.
Somehow i managed to get into an inconsistent state.
docker-compose up proxy nextcloud starts fine but nextcloud.local prints:

Fehler
Es sieht so aus, als ob Du Nextcloud erneut installieren mΓΆchtest. Es fehlt jedoch die Datei CAN_INSTALL in Deinem Konfigurationsordner. Bitte erstelle die Datei CAN_INSTALL im Konfigurationsordner um fortzufahren.

So I tried to recover from that by

  • removing the server directory and cloning from github again to make sure no files are remaining
  • docker-compose down
  • cloning server again and git checkout stable18
  • docker-compose up proxy nextcloud

I still see the message. Also tried with a different browser.
No idea what is different from a fresh install.

It also looks like config/CAN_INSTALL exists in the git repo.

I'm happy to help documenting how to get back to a consistent state. Just don't have any idea how to achieve that right now. πŸ˜‰

SMB config issue with user placeholder

It's not possible to connect to the user share because in the UI you need to use "$user1" to specify the name of the share, but due to the user being called "user1", the placeholder "$user" gets replaced by the user name internally.

Not sure how to fix the behavior itself. but we could fix the docker to have different user names to avoid bumping into such issues.

stable24/ stable25: error on settings page with the admin user

If i try to access the settings (http://stable24.local/index.php/settings/user) with the admin user on a fresh stable24 instance, i get the following error:

Internal Server Error
The server was unable to complete your request.

If this happens again, please send the technical details below to the server administrator.

More details can be found in the server log.

Technical details
Remote Address: 192.168.21.3
Request ID: PapRFdtJSUTZU7KrkTAo
Type: Exception
Code: 1
Message: assert(class_exists(LoadViewer::class)) in file '/var/www/html/apps/settings/lib/Settings/Personal/ServerDevNotice.php' line 82
File: /var/www/html/lib/private/AppFramework/Http/Dispatcher.php
Line: 165

Trace
#0 /var/www/html/lib/private/AppFramework/App.php(172): OC\AppFramework\Http\Dispatcher->dispatch(Object(OCA\Settings\Controller\PersonalSettingsController), 'index')
#1 /var/www/html/lib/private/Route/Router.php(298): OC\AppFramework\App::main('OCA\\Settings\\Co...', 'index', Object(OC\AppFramework\DependencyInjection\DIContainer), Array)
#2 /var/www/html/lib/base.php(1030): OC\Route\Router->match('/settings/user')
#3 /var/www/html/index.php(36): OC::handleRequest()
#4 {main}

Previous
#0 /var/www/html/apps/settings/lib/Settings/Personal/ServerDevNotice.php(82): assert(false, 'assert(class_ex...')
#1 /var/www/html/apps/settings/lib/Controller/CommonSettingsTrait.php(129): OCA\Settings\Settings\Personal\ServerDevNotice->getForm()
#2 /var/www/html/apps/settings/lib/Controller/PersonalSettingsController.php(73): OCA\Settings\Controller\PersonalSettingsController->formatSettings(Array)
#3 /var/www/html/apps/settings/lib/Controller/CommonSettingsTrait.php(140): OCA\Settings\Controller\PersonalSettingsController->getSettings('personal-info')
#4 /var/www/html/apps/settings/lib/Controller/PersonalSettingsController.php(64): OCA\Settings\Controller\PersonalSettingsController->getIndexResponse('personal', 'personal-info')
#5 /var/www/html/lib/private/AppFramework/Http/Dispatcher.php(225): OCA\Settings\Controller\PersonalSettingsController->index('personal-info')
#6 /var/www/html/lib/private/AppFramework/Http/Dispatcher.php(133): OC\AppFramework\Http\Dispatcher->executeController(Object(OCA\Settings\Controller\PersonalSettingsController), 'index')
#7 /var/www/html/lib/private/AppFramework/App.php(172): OC\AppFramework\Http\Dispatcher->dispatch(Object(OCA\Settings\Controller\PersonalSettingsController), 'index')
#8 /var/www/html/lib/private/Route/Router.php(298): OC\AppFramework\App::main('OCA\\Settings\\Co...', 'index', Object(OC\AppFramework\DependencyInjection\DIContainer), Array)
#9 /var/www/html/lib/base.php(1030): OC\Route\Router->match('/settings/user')
#10 /var/www/html/index.php(36): OC::handleRequest()
#11 {main}

The Container log entry:

stable24_1           | {"reqId":"PapRFdtJSUTZU7KrkTAo","level":3,"time":"2022-10-18T14:32:01+00:00","remoteAddr":"192.168.21.3","user":"admin","app":"index","method":"GET","url":"/index.php/settings/user","message":"assert(class_exists(LoadViewer::class)) in file '/var/www/html/apps/settings/lib/Settings/Personal/ServerDevNotice.php' line 82","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36","version":"24.0.6.1","exception":{"Exception":"Exception","Message":"assert(class_exists(LoadViewer::class)) in file '/var/www/html/apps/settings/lib/Settings/Personal/ServerDevNotice.php' line 82","Code":1,"Trace":[{"file":"/var/www/html/lib/private/AppFramework/App.php","line":172,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Settings\\Controller\\PersonalSettingsController"},"index"]},{"file":"/var/www/html/lib/private/Route/Router.php","line":298,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Settings\\Controller\\PersonalSettingsController","index",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},["personal-info","settings.PersonalSettings.index"]]},{"file":"/var/www/html/lib/base.php","line":1030,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/settings/user"]},{"file":"/var/www/html/index.php","line":36,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","Line":165,"Previous":{"Exception":"AssertionError","Message":"assert(class_exists(LoadViewer::class))","Code":1,"Trace":[{"file":"/var/www/html/apps/settings/lib/Settings/Personal/ServerDevNotice.php","line":82,"function":"assert","args":[false,"assert(class_exists(LoadViewer::class))"]},{"file":"/var/www/html/apps/settings/lib/Controller/CommonSettingsTrait.php","line":129,"function":"getForm","class":"OCA\\Settings\\Settings\\Personal\\ServerDevNotice","type":"->","args":[]},{"file":"/var/www/html/apps/settings/lib/Controller/PersonalSettingsController.php","line":73,"function":"formatSettings","class":"OCA\\Settings\\Controller\\PersonalSettingsController","type":"->","args":[[[{"__class__":"OCA\\Settings\\Settings\\Personal\\PersonalInfo"}],[{"__class__":"OCA\\Settings\\Settings\\Personal\\ServerDevNotice"}]]]},{"file":"/var/www/html/apps/settings/lib/Controller/CommonSettingsTrait.php","line":140,"function":"getSettings","class":"OCA\\Settings\\Controller\\PersonalSettingsController","type":"->","args":["personal-info"]},{"file":"/var/www/html/apps/settings/lib/Controller/PersonalSettingsController.php","line":64,"function":"getIndexResponse","class":"OCA\\Settings\\Controller\\PersonalSettingsController","type":"->","args":["personal","personal-info"]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":225,"function":"index","class":"OCA\\Settings\\Controller\\PersonalSettingsController","type":"->","args":["personal-info"]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":133,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Settings\\Controller\\PersonalSettingsController"},"index"]},{"file":"/var/www/html/lib/private/AppFramework/App.php","line":172,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Settings\\Controller\\PersonalSettingsController"},"index"]},{"file":"/var/www/html/lib/private/Route/Router.php","line":298,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Settings\\Controller\\PersonalSettingsController","index",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},["personal-info","settings.PersonalSettings.index"]]},{"file":"/var/www/html/lib/base.php","line":1030,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/settings/user"]},{"file":"/var/www/html/index.php","line":36,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/html/apps/settings/lib/Settings/Personal/ServerDevNotice.php","Line":82},"CustomMessage":"--"}}

i have used the following commands to run the instance:

mkdir -p $HOME/temp_nextcloud
git clone https://github.com/juliushaertl/nextcloud-docker-dev $HOME/temp_nextcloud/nextcloud-docker-dev
cd $HOME/temp_nextcloud/nextcloud-docker-dev
./bootstrap.sh
cd $HOME/temp_nextcloud/nextcloud-docker-dev/workspace/server/
git fetch --unshallow
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
git worktree add ../stable24 stable24
cd ../stable24
git submodule update --init
cd $HOME/temp_nextcloud/nextcloud-docker-dev
docker-compose up -d stable24 proxy database-mysql

More test data

Hi,
While using this docker image, I realise that I spend quite some time each time I reset it to configure multiple apps like groupfolder and external storage.

I wonder if we could add some more elaborate boostrap script to enable more apps (if found), and use occ to configure them automatically.

GS improvements

  • figure out how to make plain http work out of the box
  • add script to auto configure collabora
  • auto configure gss.master.csp-allow
  • trigger cron directly after install to trigger initial lookup server sync

Workaround patch for sharing with http

  • This makes sure that the protocol gets added to the lookup server entries
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index e7aa72fafb..17ef7412fa 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -552,7 +552,7 @@ class User implements IUser {
                if (strpos($url, 'https://') === 0) {
                        return substr($url, strlen('https://'));
                } elseif (strpos($url, 'http://') === 0) {
-                       return substr($url, strlen('http://'));
+                       // return substr($url, strlen('http://'));
                }

                return $url;

nginx-proxy container broken with newer Docker and cgroups2

Apparently docker-gen, which is used to dynamically generate the nginx config in nginx-proxy, doesn't work with newer Docker and cgroups2. I hit this bug after upgrading my system to Debian Bullseye (with Docker 20.10.3).

The result is that the nginx config at /etc/nginx/conf.d/default.conf is broken, leading to error no servers inside upstream when nginx is due to be restarted.

The bug is tracked in an upstream nginx-proxy issue (nginx-proxy/nginx-proxy#1548) and there's even two pull requests to fix it in underlying docker-gen: nginx-proxy/docker-gen#335 and nginx-proxy/docker-gen#336.

I was able to locally fix the problem by unpacking docker-gen-linux-amd64-0.7.3-29-g84b3509.tar.gz from https://github.com/steffen-p/docker-gen/releases (compiled docker-gen binaries with PR nginx-proxy/docker-gen#335) to docker/bin/docker-gen and applying the following patch:

diff --git a/docker/Dockerfile.nginx b/docker/Dockerfile.nginx
index 7f8bf99..d82bdeb 100644
--- a/docker/Dockerfile.nginx
+++ b/docker/Dockerfile.nginx
@@ -1,4 +1,5 @@
 FROM jwilder/nginx-proxy
+ADD bin/docker-gen /usr/local/bin/
 RUN { \
       echo 'server_tokens off;'; \
       echo 'client_max_body_size 100m;'; \

The issue will probably be solved by 1) Docker fixing its cgroups2 implementation and/or 2) docker-gen merging one of the two linked PRs. Nevertheless I thought it would be helpful to have the issue documented here as others who use nextcloud-docker-dev might run into it sooner or later.

User guide

Great work on this - I got it up and running following the instructions without issue. However, when I fired up nextcloud.local in my browser I found I lacked the admin credentials to actually log in! The readme doesn't appear to mention it nor could I find a link to some other documentation. In the end I was lucky and my first guess of admin and admin worked, but it would be nice if this was written somewhere, unless I missed it!

In general a guide hosted somewhere like readthedocs or a GitHub wiki would be nice; I'd also like to know how to set up a local directory as an app, for example, so stuff like that could go there.

If this already exists and I just missed it then I apologise...

Testing SSO with basic auth

<Location /login>
	AuthType Basic
	AuthName "SAML"
	AuthUserFile /var/www/html/.htpasswd
	Require valid-user
</Location>
<Location /index.php/login>
	AuthType Basic
	AuthName "SAML"
	AuthUserFile /var/www/html/.htpasswd
	Require valid-user
</Location>
<Location /index.php/apps/user_saml/saml/login>
	AuthType Basic
	AuthName "SAML"
	AuthUserFile /var/www/html/.htpasswd
	Require valid-user
</Location>
<Location /apps/user_saml/saml/login>
	AuthType Basic
	AuthName "SAML"
	AuthUserFile /var/www/html/.htpasswd
	Require valid-user
</Location>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.