nextcloud-server/.devcontainer
Robin Windey 88fde78a79
feat: Update Nextcloud Devcontainer
Removed deprecations:
* docker-compose version
* apt-key add command in docker installation

Updates:
* Upgrade from PHP8.3 to PHP8.4 (currently recommended for NC) from ppa:ondrej/php
* Use nodejs 22 by default

Optimization:
* Just install docker-ce-cli, not the full docker suite (speeds up docker build)
* Make sure user "devcontainer" has UID 1000. This increases the containers filesystem compatibility to most (unix-based) host systems because the default user there always has 1000 as well
* Ensure devcontainer user has access to docker without sudo

Signed-off-by: Robin Windey <ro.windey@gmail.com>
2025-10-07 04:38:33 +07:00
..
Dockerfile feat: Update Nextcloud Devcontainer 2025-10-07 04:38:33 +07:00
Dockerfile.license
README.md
codespace.config.php
devcontainer.json
devcontainer.json.license
docker-compose.yml feat: Update Nextcloud Devcontainer 2025-10-07 04:38:33 +07:00
entrypoint.sh
launch.json
launch.json.license
postStart.sh feat: Update Nextcloud Devcontainer 2025-10-07 04:38:33 +07:00
setup.sh

README.md

Nextcloud DevContainer

Usage

Make sure you have the VSCode DevContainer extensions installed. If you open the project, VSCode will ask you if you want to open it inside of the DevContainer. If that's not the case, use F1Dev Containers: Open Folder in Container.

Alternatively open the project directly in GitHub Codespaces.

That's already it. Everything else will be configured automatically by the Containers startup routine.

Credentials

On first start the Container installs and configures Nextcloud with the following credentials:

Nextcloud Admin Login

Username: admin
Password: admin

Postgres credentials

Username: postgres
Password: postgres
Database: postgres

Services

The following services will be started:

Service Local port Description
Nextcloud (served via Apache) 80 The main application
Mailhog 8025 SMTP email delivery for testing
Adminer 8080 Database viewer. Use credentials from above and connect to localhost to get access to the NC database

Permissions

The container runs with the user devcontainer who is also running the Apache2 process. All mounted source files have proper permissions so that this user can access everything which is inside the current workspace. If you need to get root permissions for whatever reason, use sudo su or sudo <command> (for example sudo service apache2 restart). Everything else (like building the application, adjusting files, ...) should be done as devcontainer user.

NodeJs and NVM

The container comes with nvm and Node 16 installed. This should be sufficient to build Nextcloud Core sources via make. If you need a different Node Version (for example for app development), you can easily switch between different versions by running:

# Install and use Node 14
nvm install 14
nvm use 14

# Check version 
node -v

# Switch back to Node 16
nvm use 16

# Check version
node -v

Note that nvm is only installed for the user devcontainer and won't work out of the box for any other user.

Debugging

The Apache webserver is already configured to automatically try to connect to a debugger process listening on port 9003. To start the VSCode debugger process, use the delivered debug profile Listen for XDebug. After you started the VSCode debugger, just navigate to the appropriate Nextcloud URL to get your debug hits.