Compare commits

..

82 Commits

Author SHA1 Message Date
Julius Knorr dec9b50b5b feat: Add fpm container
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-04-17 14:22:06 +02:00
Julius Knorr 34002a3723 Merge pull request #380 from SystemKeeper/feat/noid/check-installation-success
feat(install): Check if installation was successful
2025-02-25 07:22:22 +01:00
Marcel Müller e4fd1425d2 feat(install): Check if installation was successful
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-02-24 19:04:37 +01:00
Julius Knorr 5e9519ef37 Merge pull request #384 from pabzm/imap-server
Provide IMAP-Server
2025-02-24 19:03:38 +01:00
Julius Knorr b5de48fa1d Merge pull request #374 from juliusknorr/fix/build
fix/build
2025-02-24 19:02:55 +01:00
Julius Knorr d065043d98 ci: Try downgrading qemu
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-24 15:35:49 +01:00
Julius Knorr 2f84d4f14f Revert "tmp: only build amd64"
This reverts commit 5ce93cb561.

Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-24 15:25:26 +01:00
Julius Knorr 29fbf5a20f ci: run tests only on existing image tags
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-24 08:26:52 +01:00
paz 53286dc556 Provide IMAP-Server
To work with the Mail app, for example.
2025-02-19 15:18:29 +01:00
Julius Knorr 8e7322bca5 ci: Tag locally to run tests for new images
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-16 16:29:55 +01:00
Julius Knorr 2a93fea132 ci: Go back to ubuntu 22.04
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-16 16:20:10 +01:00
Julius Knorr acc19592c4 chore: Use latest node
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-16 15:58:21 +01:00
Julius Knorr 5ce93cb561 tmp: only build amd64
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-16 15:41:38 +01:00
Julius Knorr 81c0256662 remove imagick 2025-02-16 12:54:37 +00:00
Julius Knorr 815d52286e Remove imagick from the install-php-extensions command in various Dockerfiles
* `docker/Dockerfile.php.template`
* `docker/Dockerfile.php72`
* `docker/Dockerfile.php74`
* `docker/Dockerfile.php81`
* `docker/php82/Dockerfile`
* `docker/php83/Dockerfile`
* `docker/php84/Dockerfile`
2025-02-16 13:45:36 +01:00
Julius Knorr 24a33afc41 tmp: Ping onlyoffice server image to previous version
It seems the most recent release of ONLYOFFICE has some regression or
change when it comes to handling reverse proxy SSL where the browser
will request a plain HTTP url instead of HTTPS when trying to load
Editor.bin

https://github.com/ONLYOFFICE/DocumentServer/issues/2186 has this
reported upstream, is older but the most relevant one.

Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-02-14 14:13:18 +01:00
Julius Knorr 86ae68338e Merge pull request #376 from oleksandr-nc/patch-1
(fix): added missing parameter to app_api occ commands
2025-01-30 11:21:15 +01:00
Alexander Piskun faf764edad (fix): added missing parameter to app_api occ commands 2025-01-30 13:16:42 +03:00
Julius Knorr 40121656e7 Merge pull request #373 from jojo221119/patch-1 2025-01-27 22:28:33 +01:00
Julius Knorr aa873ad69b chore: Use imagick from master
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-01-27 10:35:57 +01:00
Julius Knorr 977e894be2 chore: Add more stable hosts to collabora
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-01-27 10:25:14 +01:00
Johannes Hartmann 56c9b43ebf Add git command to fetch stable version 2025-01-25 17:44:48 +01:00
Julius Knorr eafdff79e4 Merge pull request #372 from Antreesy/chore/add-stable31
chore: add stable31 support
2025-01-23 10:00:13 +01:00
Maksim Sukharev cfffb7de2e chore: add stable31 support
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2025-01-23 09:32:36 +01:00
Julius Knorr efff3c474b Merge pull request #370 from juliusknorr/renovate/quay.io-keycloak-keycloak-26.x 2025-01-16 21:27:28 +01:00
renovate[bot] 3e79244edc chore(deps): update quay.io/keycloak/keycloak docker tag to v26.1 2025-01-15 13:35:49 +00:00
Julius Knorr 8fec8bfc80 Merge pull request #368 from joendres/patch-1 2025-01-02 21:54:33 +01:00
Johannes Endres 64bcfa9ed7 Update bootstrap.sh: $PWD might contain whitespace
If $PWD contains whitespace, bootstrap.sh fails. Just adding quotation marks solves this.
2025-01-02 15:23:24 +01:00
Julius Knorr 53f2f9962e docs(s3): Fix external storage config 2024-12-16 15:55:16 +01:00
Julius Knorr 7f814e2fec docs: Extend s3 docs
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-12-12 14:26:15 +01:00
Julius Knorr cf830af93d Merge pull request #367 from mejo-/feat/nginx_vhost_d
feat: Add support for nginx vhost config drop-ins
2024-12-12 08:15:58 +01:00
Jonas 8f96207830 feat: Add support for nginx vhost config drop-ins
Signed-off-by: Jonas <jonas@freesources.org>
2024-12-11 13:42:50 +01:00
Julius Knorr 4f89f93514 Merge pull request #361 from pabzm/bind-published-ports-to-localhost
Bind published ports to 127.0.0.1 by default
2024-12-06 11:26:09 +01:00
Julius Knorr f2b73af92c Merge pull request #359 from juliusknorr/feat/php84
feat: Add php8.4 container
2024-12-04 08:32:02 +01:00
Julius Knorr 6760ee0aac fix: skip blackfire for now
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-11-27 14:40:29 +01:00
paz 6ff8cf9a81 Bind published ports to 127.0.0.1 by default
This increases security as published ports aren't accessible from the
whole local network anymore (without tricks, see
<https://github.com/moby/moby/issues/45610>).
2024-11-26 09:08:02 +01:00
Julius Knorr 807ac403ee fix: Use xdebug beta until final for 8.4 is out
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-11-25 09:30:12 +01:00
Julius Knorr f0ad60dc84 Merge pull request #358 from SystemKeeper/add-nano
chore(tools): Add nano
2024-11-25 08:48:16 +01:00
Julius Knorr 533ed2d458 feat: Add php8.4 container
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-11-25 08:47:54 +01:00
Marcel Müller 733dc061d0 chore(tools): Add nano
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2024-11-24 23:24:42 +01:00
Julius Knorr 95735e4ae2 Merge pull request #304 from juliusknorr/renovate/major-github-artifact-actions
chore(deps): update actions/upload-artifact action to v4
2024-11-18 09:30:45 +01:00
Julius Knorr cea778542e ci: Make artifact names unique 2024-11-18 08:50:18 +01:00
Julius Knorr 3acbca2638 Merge pull request #348 from juliusknorr/renovate/quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26
2024-11-18 08:32:25 +01:00
renovate[bot] aa2ba09132 chore(deps): update actions/upload-artifact action to v4 2024-11-18 07:30:58 +00:00
Julius Knorr e2f430c768 Merge pull request #356 from kyteinsky/enh/dark-mode-installing-html 2024-11-15 18:07:51 +01:00
Anupam Kumar 40dc31e27f enh: auto dark mode in installing status page
and formatting

Signed-off-by: Anupam Kumar <kyteinsky@gmail.com>
2024-11-15 20:30:28 +05:30
Julius Knorr ca58146103 fix(onlyoffice): Fix auto provisioning script to have a proper storage url
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-11-13 12:50:03 +01:00
Julius Knorr cecb01c8da docs: Add small hint about oracle sqlplus
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-10-28 14:22:24 +01:00
Julius Knorr d29f8add9c Merge pull request #350 from Altahrim/feat/oracle-basics
feat: add basic support for Oracle DB
2024-10-25 17:37:30 +02:00
Julius Knorr 06e99a198c Merge pull request #353 from juliusknorr/renovate/elasticsearch-7.x
chore(deps): update elasticsearch docker tag to v7.17.25
2024-10-25 15:11:35 +02:00
renovate[bot] 62ae5c4967 chore(deps): update elasticsearch docker tag to v7.17.25 2024-10-22 21:57:29 +00:00
renovate[bot] d55dad8497 chore(deps): update quay.io/keycloak/keycloak docker tag to v26 2024-10-21 07:26:08 +00:00
Julius Knorr 4141a2c091 Merge pull request #351 from andrey18106/fix/broken-renamed-links
fix: update broken links
2024-10-21 09:25:46 +02:00
Andrey Borysenko 5759f8ade4 fix: update broken links 2024-10-18 16:34:16 +03:00
Benjamin Gaussorgues 855cfa4b2a feat: add basic support for Oracle DB
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-10-17 10:10:37 +02:00
Julius Knorr 51a61bc5a1 Merge pull request #349 from andrey18106/chore/app_api/update-image-name 2024-10-15 08:08:11 +02:00
Andrey Borysenko a7998b3157 chore: update dsp links after repo transfer
Signed-off-by: Andrey Borysenko <andrey18106x@gmail.com>
2024-10-14 15:38:48 +03:00
Julius Knorr 32000b2959 Merge pull request #345 from christianlupus-nextcloud/doc/filter-depth
Added some documentation about NC cloning methods
2024-10-07 09:58:54 +02:00
Christian Wolf 73747b3b51 Remove some typos 2024-09-18 10:39:15 +02:00
Christian Wolf 988061d42b Apply suggestions from code review
Co-authored-by: Julius Knorr <jus@bitgrid.net>
2024-09-18 10:36:11 +02:00
Julius Knorr d8e5d9e598 Merge pull request #346 from SystemKeeper/fix/noid/typo-bootstrap 2024-09-16 11:28:01 +02:00
Marcel Müller 6d7d879a09 fix(bootstrap): Typo boottrap -> bootstrap
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2024-09-16 10:05:19 +02:00
Julius Knorr f410d902f3 Merge pull request #344 from christianlupus-nextcloud/fix/no-depth 2024-09-15 14:42:04 +02:00
Christian Wolf 7ded1e9a96 Fix a MD typo
Signed-off-by: Christian Wolf <git@christianwolf.email>
2024-09-13 22:22:04 +02:00
Christian Wolf 9221e7e207 Added some documentation on the various NC cloning methods
Signed-off-by: Christian Wolf <git@christianwolf.email>
2024-09-13 22:21:55 +02:00
Christian Wolf 173c2235e6 Fix doubled depth filter
Signed-off-by: Christian Wolf <git@christianwolf.email>
2024-09-13 21:22:54 +02:00
Julius Knorr 1fdbdb3b75 Merge pull request #343 from juliushaertl/renovate/elasticsearch-7.x
chore(deps): update elasticsearch docker tag to v7.17.24
2024-09-11 08:09:56 +02:00
renovate[bot] 99191f1990 chore(deps): update elasticsearch docker tag to v7.17.24 2024-09-11 02:01:15 +00:00
Julius Härtl 358ba34cde Merge pull request #341 from SystemKeeper/fix-no-blobs 2024-09-09 09:46:34 +02:00
Julius Härtl 7e4e38ecca Merge pull request #342 from SystemKeeper/fix-recordingserver-typo 2024-09-09 08:14:59 +02:00
Marcel Müller 6db0062970 fix(docs): Fix typo for recording server
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2024-09-08 14:30:16 +02:00
Marcel Müller 2f453878f9 fix(bootstrap): Fix using --clone-no-blobs
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2024-09-08 14:18:22 +02:00
Julius Härtl 441147144c Merge pull request #338 from arnovr/patch-1 2024-08-23 17:14:53 +02:00
arno 35960f538c php80 is not accepted by latest nextcloud 2024-08-23 13:56:28 +02:00
Julius Härtl 19bbcd0bcd Merge pull request #337 from andrey18106/feat/add-appapi-dsp 2024-08-22 19:10:02 +02:00
Andrey Borysenko 26647d4fdc fix: add also occ cli alternative way to register
Signed-off-by: Andrey Borysenko <andrey18106x@gmail.com>
2024-08-22 15:39:44 +03:00
Andrey Borysenko c408686d17 feat: add appapi-dsp/appapi-dsp-https service
Signed-off-by: Andrey Borysenko <andrey18106x@gmail.com>
2024-08-22 13:09:02 +03:00
Julius Härtl f461b7b5d0 Merge pull request #336 from Antreesy/fix/stable30-support 2024-08-16 10:18:43 +02:00
Maksim Sukharev 9bf907e2e9 fix: add stable30 support 2024-08-15 09:41:14 +02:00
Julius Härtl c9f88bade2 chore: only install latest node lts
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-08-04 23:12:01 +02:00
Julius Härtl 90219221b8 Merge pull request #334 from juliushaertl/renovate/elasticsearch-7.x 2024-07-31 16:34:35 +02:00
renovate[bot] 35609a74b2 chore(deps): update elasticsearch docker tag to v7.17.23 2024-07-31 04:32:02 +00:00
35 changed files with 821 additions and 215 deletions
+18 -9
View File
@@ -14,12 +14,16 @@ on:
jobs:
push_to_registry:
name: Build image
runs-on: ubuntu-latest
if: github.repository == 'juliushaertl/nextcloud-docker-dev'
# FIXME: currently there are playwright issues with ubuntu-latest
# https://github.com/microsoft/playwright/issues/30368 closed but still an issue
runs-on: ubuntu-22.04
if: github.repository == 'juliusknorr/nextcloud-docker-dev'
strategy:
fail-fast: false
matrix:
container:
- php84-fpm
- php84
- php83
- php82
- php81
@@ -47,6 +51,10 @@ jobs:
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
# TODO: remove this when https://github.com/actions/runner-images/issues/11471
with:
platforms: linux/arm64
image: tonistiigi/binfmt:qemu-v7.0.0-28
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Cache Docker layers
@@ -78,7 +86,8 @@ jobs:
platforms: linux/amd64,linux/arm64
file: ${{ steps.dockerfile.outputs.DOCKERFILE }}
tags: |
ghcr.io/juliushaertl/nextcloud-dev-${{ matrix.container }}:${{ github.sha }}
ghcr.io/juliusknorr/nextcloud-dev-${{ matrix.container }}:${{ github.sha }}
ghcr.io/juliusknorr/nextcloud-dev-${{ matrix.container }}:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Start containers with docker compose
@@ -87,7 +96,7 @@ jobs:
PHP_VERSION=$(echo ${{ matrix.container }} | sed -e 's/^php//')
echo "PHP_VERSION=${PHP_VERSION}" >> .env
# exit if php version is not numeric or below 80
if ! [[ $PHP_VERSION =~ ^[0-9]+$ ]] || [[ $PHP_VERSION -lt 80 ]]; then
if ! [[ $PHP_VERSION =~ ^[0-9]+$ ]] || [[ $PHP_VERSION -lt 80 ]] || [[ $PHP_VERSION -gt 83 ]]; then
exit 0
fi
docker compose up -d nextcloud
@@ -103,7 +112,7 @@ jobs:
- uses: actions/setup-node@v4
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
with:
node-version: 18
node-version: latest
- name: Install dependencies
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
working-directory: tests
@@ -116,10 +125,10 @@ jobs:
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
working-directory: tests
run: npx playwright test
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
with:
name: playwright-report
name: playwright-report-${{ matrix.container }}
path: tests/playwright-report/
retention-days: 30
- name: Push container image
@@ -131,8 +140,8 @@ jobs:
platforms: linux/amd64,linux/arm64
file: ${{ steps.dockerfile.outputs.DOCKERFILE }}
tags: |
ghcr.io/juliushaertl/nextcloud-dev-${{ matrix.container }}:${{ github.event_name == 'release' && 'release' || 'latest' }}
ghcr.io/juliushaertl/nextcloud-dev-${{ matrix.container }}:${{ github.ref_name }}
ghcr.io/juliusknorr/nextcloud-dev-${{ matrix.container }}:${{ github.event_name == 'release' && 'release' || 'latest' }}
ghcr.io/juliusknorr/nextcloud-dev-${{ matrix.container }}:${{ github.ref_name }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Move cache
+3
View File
@@ -1,4 +1,5 @@
/.vscode
/data/nginx/vhost.d/
/data/ssl/
/data/shared/
/workspace/
@@ -13,3 +14,5 @@ node_modules/
/tests/playwright-report/
/tests/blob-report/
/tests/playwright/.cache/
/.idea/
.DS_Store
+9 -8
View File
@@ -9,29 +9,29 @@ images: docker/*/Dockerfile docker/Dockerfile.*
pull-all:
for file in $$(find docker/ -maxdepth 1 -type f -iname 'Dockerfile.*'); do \
NAME=$$(echo $$file | sed 's/^.*\.//'); \
echo "=> Pulling image $$NAME"; docker pull "ghcr.io/juliushaertl/nextcloud-dev-$${NAME}"; \
echo "=> Pulling image $$NAME"; docker pull "ghcr.io/juliusknorr/nextcloud-dev-$${NAME}"; \
done
for file in $$(find docker -maxdepth 2 -type f -iname 'Dockerfile'); do \
NAME=$$(basename $$(dirname $$file)); \
echo "=> Pulling image $$NAME"; docker pull "ghcr.io/juliushaertl/nextcloud-dev-$${NAME}"; \
echo "=> Pulling image $$NAME"; docker pull "ghcr.io/juliusknorr/nextcloud-dev-$${NAME}"; \
done
pull-installed:
docker image ls | grep juliushaertl/nextcloud-dev | cut -f 1 -d " "
docker image ls | grep juliushaertl/nextcloud-dev | cut -f 1 -d " " | xargs -L 1 docker pull
docker image ls | grep juliusknorr/nextcloud-dev | cut -f 1 -d " "
docker image ls | grep juliusknorr/nextcloud-dev | cut -f 1 -d " " | xargs -L 1 docker pull
# Empty target to always build
docker-build:
docker/%/Dockerfile: docker-build
NAME=$$(basename $$(dirname $@)); \
echo "=> Building dockerfile" $@ as ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest; \
(cd docker && docker build -t ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest -f $$NAME/Dockerfile .)
echo "=> Building dockerfile" $@ as ghcr.io/juliusknorr/nextcloud-dev-$$NAME:latest; \
(cd docker && docker build -t ghcr.io/juliusknorr/nextcloud-dev-$$NAME:latest -f $$NAME/Dockerfile .)
docker/Dockerfile.%: docker-build
NAME=$$(echo $$(basename $@) | sed 's/^.*\.//'); \
echo "=> Building dockerfile" $@ as ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest; \
(cd docker && docker build -t ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest -f Dockerfile.$$NAME .)
echo "=> Building dockerfile" $@ as ghcr.io/juliusknorr/nextcloud-dev-$$NAME:latest; \
(cd docker && docker build -t ghcr.io/juliusknorr/nextcloud-dev-$$NAME:latest -f Dockerfile.$$NAME .)
check: dockerfilelint shellcheck
@@ -55,6 +55,7 @@ template-apply:
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:8.1/' > docker/Dockerfile.php81
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:8.2/' > docker/php82/Dockerfile
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:8.3/' > docker/php83/Dockerfile
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:8.4/' > docker/php84/Dockerfile
docs:
pip3 install mkdocs
+9 -9
View File
@@ -1,6 +1,6 @@
# Nextcloud development environment on Docker Compose
[Documentation](https://juliushaertl.github.io/nextcloud-docker-dev/) | [Nextcloud Developer Portal](https://nextcloud.com/developer/)
[Documentation](https://juliusknorr.github.io/nextcloud-docker-dev/) | [Nextcloud Developer Portal](https://nextcloud.com/developer/)
Nextcloud's development environment using Docker Compose providing a large variety of services for Nextcloud server and app development and testing.
@@ -20,7 +20,7 @@ Nextcloud's development environment using Docker Compose providing a large varie
You can find a step-by-step tutorial on how to use this setup in the [Nextcloud Developer Portal](https://nextcloud.com/developer/). 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](https://juliushaertl.github.io/nextcloud-docker-dev/).
In detail explanation of the setup and its features and configuration options can be found in the [nextcloud-docker-dev documentation](https://juliusknorr.github.io/nextcloud-docker-dev/).
## Quickstart
@@ -31,7 +31,7 @@ In detail explanation of the setup and its features and configuration options ca
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.
```bash
git clone https://github.com/juliushaertl/nextcloud-docker-dev
git clone https://github.com/juliusknorr/nextcloud-docker-dev
cd nextcloud-docker-dev
./bootstrap.sh
```
@@ -47,7 +47,7 @@ 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](http://nextcloud.local). The default username is `admin` and the password is `admin`. [Other users can be found in the documentation](https://juliushaertl.github.io/nextcloud-docker-dev/basics/overview/#default-users).
You can then access your Nextcloud instance at [http://nextcloud.local](http://nextcloud.local). The default username is `admin` and the password is `admin`. [Other users can be found in the documentation](https://juliusknorr.github.io/nextcloud-docker-dev/basics/overview/#default-users).
> [!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:
@@ -74,29 +74,29 @@ Running the containers does not need this repository to be cloned.
Example for running a Nextcloud server from the master branch of server:
```bash
docker run --rm -p 8080:80 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 ghcr.io/juliusknorr/nextcloud-dev-php81:latest
```
For app development you can mount your app directly into the container:
```bash
docker run --rm -p 8080:80 -v ~/path/to/appid:/var/www/html/apps-extra/appid ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 -v ~/path/to/appid:/var/www/html/apps-extra/appid ghcr.io/juliusknorr/nextcloud-dev-php81:latest
```
The `SERVER_BRANCH` environment variable can be used to run different versions of Nextcloud by specifying either a server branch or git tag.
```bash
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliusknorr/nextcloud-dev-php81:latest
```
You can also mount your local server source code into the container to run a local version of Nextcloud:
```bash
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
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 -v /tmp/server:/var/www/html ghcr.io/juliusknorr/nextcloud-dev-php81:latest
```
## More features
You can find documentation for more advanced features in [nextcloud-docker-dev documentation](https://juliushaertl.github.io/nextcloud-docker-dev/) for example:
You can find documentation for more advanced features in [nextcloud-docker-dev documentation](https://juliusknorr.github.io/nextcloud-docker-dev/) for example:
- Running stable Nextcloud versions in parallel
- Using different database backends
+8 -8
View File
@@ -11,7 +11,7 @@ APPS_CLONE_FILTER=
print_help() {
cat << EOF
boottrap.sh [--full-clone|--clone-no-blobs] [--clone-all-apps-filtered] [--] APPS
bootstrap.sh [--full-clone|--clone-no-blobs] [--clone-all-apps-filtered] [--] APPS
This command will initialize the debug environment for app developers.
@@ -25,7 +25,7 @@ The following options can be provided:
--clone-all-apps-filtered
Do not only reduce the history of the server repository but also
the cloned apps.
APPS The apps to add to the development setup on top of the default apps
The default apps to be installed: ${APPS_TO_INSTALL[@]}
@@ -82,7 +82,7 @@ if [ -f ".env" ]; then
echo "❌ Repository path does not exist"
fi
for i in stable26 stable27 stable28
for i in stable27 stable28 stable29 stable30 stable31
do
echo "Stable $i repository path: ${STABLE_ROOT_PATH}/${i}"
STABLE_VERSION=$(grep "OC_VersionString" "${STABLE_ROOT_PATH}/${i}/version.php" | cut -d "'" -f 2)
@@ -102,7 +102,7 @@ case $SERVER_CLONE in
squashed)
CLONE_PARAMS=(--depth 1)
;;
clone-no-blobs)
filter-blobs)
CLONE_PARAMS=(--filter blob:none)
;;
full)
@@ -141,7 +141,7 @@ function install_server() {
(
(
echo "🌏 Fetching server (this might take a while to finish)" &&
git clone ${CLONE_PARAMS[@]+"${CLONE_PARAMS[@]}"} https://github.com/nextcloud/server.git --depth 1 workspace/server --progress 2>&1 &&
git clone ${CLONE_PARAMS[@]+"${CLONE_PARAMS[@]}"} https://github.com/nextcloud/server.git workspace/server --progress 2>&1 &&
cd workspace/server && git submodule update --init --progress 2>&1
) || echo "❌ Failed to clone Nextcloud server code"
) | indent
@@ -201,8 +201,8 @@ cat <<EOT >.env
COMPOSE_PROJECT_NAME=master
PROTOCOL=http
DOMAIN_SUFFIX=.local
REPO_PATH_SERVER=$PWD/workspace/server
STABLE_ROOT_PATH=$PWD/workspace
REPO_PATH_SERVER="$PWD/workspace/server"
STABLE_ROOT_PATH="$PWD/workspace"
NEXTCLOUD_AUTOINSTALL_APPS="${NEXTCLOUD_AUTOINSTALL_APPS[@]}"
DOCKER_SUBNET=192.168.21.0/24
PORTBASE=821
@@ -295,5 +295,5 @@ cat <<EOF
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
https://github.com/juliusknorr/nextcloud-docker-dev
EOF
View File
+160 -58
View File
@@ -5,13 +5,14 @@ services:
# Proxy for ssl termination and easier hostname access
# SSL certificates with the virtual host name need to be added to ./data/ssl
proxy:
image: ghcr.io/juliushaertl/nextcloud-dev-nginx:latest
image: ghcr.io/juliusknorr/nextcloud-dev-nginx:latest
ports:
- "${PROXY_PORT_HTTP:-80}:80"
- "${PROXY_PORT_HTTPS:-443}:443"
- "${IP_BIND:-127.0.0.1}:${PROXY_PORT_HTTP:-80}:80"
- "${IP_BIND:-127.0.0.1}:${PROXY_PORT_HTTPS:-443}:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./data/ssl/:/etc/nginx/certs
- ./data/nginx/vhost.d/:/etc/nginx/vhost.d
environment:
DHPARAM_BITS: 2048
DHPARAM_GENERATION: "false"
@@ -39,7 +40,10 @@ services:
- stable27${DOMAIN_SUFFIX}
- stable28${DOMAIN_SUFFIX}
- stable29${DOMAIN_SUFFIX}
- stable30${DOMAIN_SUFFIX}
- stable31${DOMAIN_SUFFIX}
- mail${DOMAIN_SUFFIX}
- imap${DOMAIN_SUFFIX}
- collabora${DOMAIN_SUFFIX}
- codedev${DOMAIN_SUFFIX}
- onlyoffice${DOMAIN_SUFFIX}
@@ -57,6 +61,8 @@ services:
- phpmyadmin${DOMAIN_SUFFIX}
- talk-signaling${DOMAIN_SUFFIX}
- talk-recording${DOMAIN_SUFFIX}
extra_hosts:
- host.docker.internal:host-gateway
haproxy:
image: haproxy
@@ -67,16 +73,8 @@ services:
volumes:
- ./docker/configs/haproxy.conf:/usr/local/etc/haproxy/haproxy.cfg:ro
dockersocketproxy:
image: ghcr.io/cloud-py-api/nextcloud-appapi-dsp:release
volumes:
- /var/run/docker.sock:/var/run/docker.sock
privileged: true
environment:
NC_HAPROXY_PASSWORD: secret
nextcloud:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: ${NEXTCLOUD_AUTOINSTALL:-YES}
@@ -108,7 +106,7 @@ services:
- host.docker.internal:host-gateway
nextcloud2:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: 'mysql'
VIRTUAL_HOST: "nextcloud2${DOMAIN_SUFFIX}"
@@ -124,7 +122,7 @@ services:
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
- ./data/shared:/shared
ports:
- "${PORTBASE:-800}1:80"
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}1:80"
depends_on:
- database-${SQL:-mysql}
- redis
@@ -134,7 +132,7 @@ services:
- host.docker.internal:host-gateway
nextcloud3:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
VIRTUAL_HOST: "nextcloud3${DOMAIN_SUFFIX}"
@@ -158,7 +156,7 @@ services:
- host.docker.internal:host-gateway
stable16:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-73}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -187,7 +185,7 @@ services:
- host.docker.internal:host-gateway
stable17:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-73}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -216,7 +214,7 @@ services:
- host.docker.internal:host-gateway
stable18:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-74}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -245,7 +243,7 @@ services:
- host.docker.internal:host-gateway
stable19:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-74}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -274,7 +272,7 @@ services:
- host.docker.internal:host-gateway
stable20:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-74}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -303,7 +301,7 @@ services:
- host.docker.internal:host-gateway
stable21:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -333,7 +331,7 @@ services:
- host.docker.internal:host-gateway
stable22:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -363,7 +361,7 @@ services:
- host.docker.internal:host-gateway
stable23:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -393,7 +391,7 @@ services:
- host.docker.internal:host-gateway
stable24:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -423,7 +421,7 @@ services:
- host.docker.internal:host-gateway
stable25:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -453,7 +451,7 @@ services:
- host.docker.internal:host-gateway
stable26:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -483,7 +481,7 @@ services:
- host.docker.internal:host-gateway
stable27:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -513,7 +511,7 @@ services:
- host.docker.internal:host-gateway
stable28:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -543,7 +541,7 @@ services:
- host.docker.internal:host-gateway
stable29:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -572,6 +570,66 @@ services:
extra_hosts:
- host.docker.internal:host-gateway
stable30:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
NEXTCLOUD_AUTOINSTALL_APPS:
WITH_REDIS: "YES"
VIRTUAL_HOST: stable30${DOMAIN_SUFFIX}
ADDITIONAL_APPS_PATH:
NEXTCLOUD_TRUSTED_DOMAINS:
PRIMARY: ${PRIMARY:-local}
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
volumes:
- '${STABLE_ROOT_PATH}/stable30:/var/www/html'
- '${STABLE_ROOT_PATH}/stable30/apps-extra:/var/www/html/apps-extra'
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-shared'
- /var/www/html/data
- /var/www/html/config
- /var/www/html/apps-writable
- ./data/skeleton/:/skeleton
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
- ./data/shared:/shared
depends_on:
- database-${SQL:-mysql}
- redis
- mail
- ${PROXY_SERVICE:-proxy}
extra_hosts:
- host.docker.internal:host-gateway
stable31:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
NEXTCLOUD_AUTOINSTALL_APPS:
WITH_REDIS: "YES"
VIRTUAL_HOST: stable31${DOMAIN_SUFFIX}
ADDITIONAL_APPS_PATH:
NEXTCLOUD_TRUSTED_DOMAINS:
PRIMARY: ${PRIMARY:-local}
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
volumes:
- '${STABLE_ROOT_PATH}/stable31:/var/www/html'
- '${STABLE_ROOT_PATH}/stable31/apps-extra:/var/www/html/apps-extra'
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-shared'
- /var/www/html/data
- /var/www/html/config
- /var/www/html/apps-writable
- ./data/skeleton/:/skeleton
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
- ./data/shared:/shared
depends_on:
- database-${SQL:-mysql}
- redis
- mail
- ${PROXY_SERVICE:-proxy}
extra_hosts:
- host.docker.internal:host-gateway
database-sqlite:
image: rwgrim/docker-noop
@@ -586,14 +644,14 @@ services:
'--wait_timeout=28800',
]
ports:
- "${PORTBASE:-800}2:3306"
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}2:3306"
volumes:
- mysql:/var/lib/mysql
database-mariadb-primary:
image: docker.io/bitnami/mariadb:10.6
ports:
- '3306'
- "${IP_BIND:-127.0.0.1}:3306:3306"
volumes:
- 'mariadb_primary_data:/bitnami/mariadb'
environment:
@@ -608,7 +666,7 @@ services:
database-mariadb-replica:
image: docker.io/bitnami/mariadb:10.6
ports:
- '3306'
- "${IP_BIND:-127.0.0.1}:3306:3306"
depends_on:
- database-mariadb-primary
environment:
@@ -629,7 +687,7 @@ services:
volumes:
- './docker/maxscale/my-maxscale.cnf:/etc/maxscale.cnf.d/my-maxscale.cnf'
ports:
- '3306'
- "${IP_BIND:-127.0.0.1}:3306:3306"
database-pgsql:
image: postgres:latest
@@ -637,19 +695,18 @@ services:
POSTGRES_DB: nextcloud
POSTGRES_PASSWORD: postgres
ports:
- "${PORTBASE:-800}2:5432"
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}2:5432"
volumes:
- postgres:/var/lib/postgresql
database-oci:
image: ghcr.io/gvenzl/oracle-xe:21
image: gvenzl/oracle-free:23
environment:
ORACLE_PASSWORD: nextcloud
APP_USER: nextcloud
APP_USER_PASSWORD: nextcloud
ORACLE_DATABASE: nextcloud
ORACLE_PASSWORD: oracle
ports:
- 1521:1521/tcp
- "${IP_BIND:-127.0.0.1}:1521:1521"
volumes:
- oracle:/opt/oracle/oradata
pgadmin:
container_name: pgadmin_container
@@ -678,7 +735,7 @@ services:
- 389
- 636
ports:
- 3389:389
- "${IP_BIND:-127.0.0.1}:3389:389"
environment:
LDAP_DOMAIN: planetexpress.com
LDAP_BASE_DN: dc=planetexpress,dc=com
@@ -700,7 +757,7 @@ services:
PHPLDAPADMIN_LDAP_HOSTS: ldap
PHPLDAPADMIN_HTTPS: 'false'
ports:
- "${PORTBASE:-800}8:80"
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}8:80"
saml:
image: unicon/simplesamlphp
@@ -714,16 +771,23 @@ services:
- 80
mail:
image: ghcr.io/juliushaertl/nextcloud-dev-mailhog:latest
image: ghcr.io/juliusknorr/nextcloud-dev-mailhog:latest
environment:
VIRTUAL_HOST: "mail${DOMAIN_SUFFIX}"
VIRTUAL_PORT: 8025
imap:
image: ghcr.io/christophwurst/docker-imap-devel:latest
environment:
MAILNAME: example.net
MAIL_ADDRESS: admin@example.net
MAIL_PASS: admin
smb:
image: dperson/samba
ports:
- 139
- 445
- "${IP_BIND:-127.0.0.1}:139:139"
- "${IP_BIND:-127.0.0.1}:445:445"
environment:
# -u "<username;password>[;ID;group;GID]"
USER: "admin;admin"
@@ -740,7 +804,7 @@ services:
blackfire:
image: blackfire/blackfire:2
ports:
- 8307:8307
- "${IP_BIND:-127.0.0.1}:8307:8307"
environment:
- BLACKFIRE_SERVER_ID
- BLACKFIRE_SERVER_TOKEN
@@ -764,6 +828,9 @@ services:
aliasgroup7: http://stable26${DOMAIN_SUFFIX}
aliasgroup8: http://stable27${DOMAIN_SUFFIX}
aliasgroup9: http://stable28${DOMAIN_SUFFIX}
aliasgroup10: http://stable29${DOMAIN_SUFFIX}
aliasgroup11: http://stable30${DOMAIN_SUFFIX}
aliasgroup12: http://stable31${DOMAIN_SUFFIX}
dictionaries: de_DE en_US en_GB
username: admin
password: admin
@@ -786,7 +853,7 @@ services:
tail -f /dev/null
onlyoffice:
image: onlyoffice/documentserver:latest
image: onlyoffice/documentserver:8.2
environment:
VIRTUAL_HOST: onlyoffice${DOMAIN_SUFFIX}
USE_UNAUTHORIZED_STORAGE: "true"
@@ -836,7 +903,7 @@ services:
elasticsearch-ui:
image: appbaseio/dejavu
ports:
- 1358:1358
- "${IP_BIND:-127.0.0.1}:1358:1358"
expose:
- 1358
environment:
@@ -846,7 +913,7 @@ services:
push:
image: ghcr.io/juliushaertl/nextcloud-dev-push:latest
image: ghcr.io/juliusknorr/nextcloud-dev-push:latest
environment:
RUST_LOG: debug
VIRTUAL_HOST: push${DOMAIN_SUFFIX}
@@ -856,7 +923,7 @@ services:
NEXTCLOUD_URL: http://nextcloud
keycloak:
image: quay.io/keycloak/keycloak:25.0
image: quay.io/keycloak/keycloak:26.1
expose:
- 8080
volumes:
@@ -878,7 +945,7 @@ services:
- clam:/var/lib/clamav
portal:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
VIRTUAL_HOST: portal${DOMAIN_SUFFIX}
SQL: 'mysql'
@@ -900,7 +967,7 @@ services:
- host.docker.internal:host-gateway
gs1:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
VIRTUAL_HOST: gs1${DOMAIN_SUFFIX}
SQL: 'mysql'
@@ -923,7 +990,7 @@ services:
- host.docker.internal:host-gateway
gs2:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
VIRTUAL_HOST: gs2${DOMAIN_SUFFIX}
SQL: 'mysql'
@@ -946,7 +1013,7 @@ services:
- host.docker.internal:host-gateway
lookup:
image: ghcr.io/juliushaertl/nextcloud-dev-lookupserver:latest
image: ghcr.io/juliusknorr/nextcloud-dev-lookupserver:latest
environment:
VIRTUAL_HOST: "lookup${DOMAIN_SUFFIX}"
# volumes:
@@ -958,7 +1025,7 @@ services:
cap_drop:
- ALL
ports:
- 8888:8888
- "${IP_BIND:-127.0.0.1}:8888:8888"
environment:
MAX_CLIENTS: 100
ALLOWED_NETWORKS: 0.0.0.0/0
@@ -981,7 +1048,7 @@ services:
previews_hpb:
image: nextcloud/aio-imaginary:latest
ports:
- "8088:8088"
- "${IP_BIND:-127.0.0.1}:8088:8088"
environment:
- PORT=8088
@@ -1000,7 +1067,7 @@ services:
INTERNAL_SHARED_SECRET_KEY: "4567"
talk-janus:
image: ghcr.io/juliushaertl/nextcloud-dev-talk-janus:latest
image: ghcr.io/juliusknorr/nextcloud-dev-talk-janus:latest
talk-recording:
image: nextcloud/aio-talk-recording:latest
@@ -1016,13 +1083,48 @@ services:
VIRTUAL_HOST: "talk-recording${DOMAIN_SUFFIX}"
VIRTUAL_PORT: 1234
shm_size: 2147483648
appapi-dsp:
image: ghcr.io/nextcloud/nextcloud-appapi-dsp:release
container_name: nextcloud-appapi-dsp-http
network_mode: ${NETWORK_MODE:-master_default}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- NC_HAPROXY_PASSWORD=${NC_HAPROXY_PASSWORD:-some_secure_password}
- BIND_ADDRESS=${BIND_ADDRESS:-}
- HAPROXY_PORT=${HAPROXY_PORT:-2375}
- TIMEOUT_CONNECT=${TIMEOUT_CONNECT:-10s}
- TIMEOUT_CLIENT=${TIMEOUT_CLIENT:-30s}
- TIMEOUT_SERVER=${TIMEOUT_SERVER:-30s}
- EX_APPS_NET=${EX_APPS_NET:-ipv4@localhost}
- EX_APPS_COUNT=${EX_APPS_COUNT:-50}
appapi-dsp-https:
image: ghcr.io/nextcloud/nextcloud-appapi-dsp:release
container_name: nextcloud-appapi-dsp-https
network_mode: ${NETWORK_MODE:-host}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${CERT_PATH:-./data/ssl/app_api/app_api.pem}:/certs/cert.pem
environment:
- NC_HAPROXY_PASSWORD=${NC_HAPROXY_PASSWORD:-some_secure_password}
- BIND_ADDRESS=${BIND_ADDRESS:-172.17.0.1}
- HAPROXY_PORT=${HAPROXY_PORT:-2375}
- TIMEOUT_CONNECT=${TIMEOUT_CONNECT:-10s}
- TIMEOUT_CLIENT=${TIMEOUT_CLIENT:-30s}
- TIMEOUT_SERVER=${TIMEOUT_SERVER:-30s}
- EX_APPS_NET=${EX_APPS_NET:-ipv4@localhost}
- EX_APPS_COUNT=${EX_APPS_COUNT:-50}
volumes:
data:
config:
apps-writable:
mysql:
postgres:
oracle:
redis:
data2:
config2:
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+17 -5
View File
@@ -41,6 +41,11 @@ OCC() {
sudo -E -u www-data php "$WEBROOT/occ" $@ | indent
}
is_installed() {
STATUS=$(OCC status)
[[ "$STATUS" = *"installed: true"* ]]
}
update_permission() {
chown -R www-data:www-data "$WEBROOT"/apps-writable
chown -R www-data:www-data "$WEBROOT"/data
@@ -100,7 +105,7 @@ wait_for_other_containers() {
"oci")
output " - Oracle"
retry_with_timeout "(echo > /dev/tcp/database-$SQL/1521) 2>/dev/null" 30 "⚠ Unable to connect to the Oracle server"
sleep 2
sleep 45
;;
"sqlite")
output " - SQLite"
@@ -233,7 +238,7 @@ install() {
output "🔧 Starting auto installation"
if [ "$SQL" = "oci" ]; then
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name=nextcloud --database-host="$SQLHOST" --database-port=1521 --database-user=nextcloud --database-pass=nextcloud
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name=FREE --database-host="$SQLHOST" --database-port=1521 --database-user=system --database-pass=oracle
elif [ "$SQL" = "pgsql" ]; then
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name="$DBNAME" --database-host="$SQLHOST" --database-user=postgres --database-pass=postgres
elif [ "$SQL" = "mysql" ]; then
@@ -250,7 +255,14 @@ install() {
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL"
fi;
output "🔧 Server installed"
if is_installed
then
output "🔧 Server installed"
else
output "Last nextcloud.log entry:"
output "$(tail -n 1 "$WEBROOT"/data/nextcloud.log | jq)"
fatal "🚨 Server installation failed."
fi
output "🔧 Provisioning apps"
OCC app:disable password_policy
@@ -356,8 +368,8 @@ add_hosts() {
setup() {
update_permission
configure_xdebug_mode
STATUS=$(OCC status)
if [[ "$STATUS" = *"installed: true"* ]] || [[ ! -f $WEBROOT/config/config.php ]]
if is_installed || [[ ! -f $WEBROOT/config/config.php ]]
then
output "🚀 Nextcloud already installed ... skipping setup"
+103 -72
View File
@@ -1,75 +1,106 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="1" />
<meta charset="utf-8">
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
margin: auto;
max-width: 700px;
}
.lds-ellipsis {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-ellipsis div {
position: absolute;
top: 33px;
width: 13px;
height: 13px;
border-radius: 50%;
background: #000;
animation-timing-function: cubic-bezier(0, 1, 1, 0);
}
.lds-ellipsis div:nth-child(1) {
left: 8px;
animation: lds-ellipsis1 0.6s infinite;
}
.lds-ellipsis div:nth-child(2) {
left: 8px;
animation: lds-ellipsis2 0.6s infinite;
}
.lds-ellipsis div:nth-child(3) {
left: 32px;
animation: lds-ellipsis2 0.6s infinite;
}
.lds-ellipsis div:nth-child(4) {
left: 56px;
animation: lds-ellipsis3 0.6s infinite;
}
@keyframes lds-ellipsis1 {
0% {
transform: scale(0);
}
100% {
transform: scale(1);
}
}
@keyframes lds-ellipsis3 {
0% {
transform: scale(1);
}
100% {
transform: scale(0);
}
}
@keyframes lds-ellipsis2 {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(24px, 0);
}
}
</style>
</head>
<body>
<h1>Installing container</h1>
<p>Please wait until the server is ready. This page will redirect you to the login once done.</p>
<h2>Log:</h2>
<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>
<pre>
<head>
<meta http-equiv="refresh" content="1" />
<meta charset="utf-8">
<style>
:root {
--font-color: #333;
--background-color: #fff;
}
@media (prefers-color-scheme: dark) {
:root {
--font-color: #eee;
--background-color: #1a1a1a;
}
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
margin: auto;
max-width: 800px;
color: var(--font-color);
background-color: var(--background-color);
}
.lds-ellipsis {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-ellipsis div {
position: absolute;
top: 33px;
width: 13px;
height: 13px;
border-radius: 50%;
background: var(--font-color);
animation-timing-function: cubic-bezier(0, 1, 1, 0);
}
.lds-ellipsis div:nth-child(1) {
left: 8px;
animation: lds-ellipsis1 0.6s infinite;
}
.lds-ellipsis div:nth-child(2) {
left: 8px;
animation: lds-ellipsis2 0.6s infinite;
}
.lds-ellipsis div:nth-child(3) {
left: 32px;
animation: lds-ellipsis2 0.6s infinite;
}
.lds-ellipsis div:nth-child(4) {
left: 56px;
animation: lds-ellipsis3 0.6s infinite;
}
@keyframes lds-ellipsis1 {
0% {
transform: scale(0);
}
100% {
transform: scale(1);
}
}
@keyframes lds-ellipsis3 {
0% {
transform: scale(1);
}
100% {
transform: scale(0);
}
}
@keyframes lds-ellipsis2 {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(24px, 0);
}
}
</style>
</head>
<body>
<h1>Installing container</h1>
<p>Please wait until the server is ready. This page will redirect you to the login once done.</p>
<h2>Log:</h2>
<div class="lds-ellipsis">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<pre>
+1 -1
View File
@@ -1,3 +1,3 @@
FROM elasticsearch:7.17.22
FROM elasticsearch:7.17.25
RUN bin/elasticsearch-plugin install --batch ingest-attachment
+2 -3
View File
@@ -11,7 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -30,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -44,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+2 -4
View File
@@ -11,8 +11,6 @@ RUN install-php-extensions \
exif \
gd \
gmp \
# waiting for https://github.com/mlocati/docker-php-extension-installer/pull/811
# imagick \
intl \
ldap \
memcached \
@@ -31,7 +29,7 @@ RUN install-php-extensions \
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
@@ -45,7 +43,7 @@ RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 14 && nvm install 16 && nvm install 20 \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
+124
View File
@@ -0,0 +1,124 @@
FROM php:8.4-fpm
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions
RUN install-php-extensions \
apcu \
bcmath \
excimer \
exif \
gd \
gmp \
intl \
ldap \
memcached \
oci8 \
opcache \
pcntl \
pdo_mysql \
pdo_pgsql \
redis \
smbclient \
sysvsem \
xdebug \
zip \
blackfire \
@composer
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
apache2 \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
&& chmod +x /usr/local/bin/phpunit8 \
&& wget -O /usr/local/bin/phpunit9 https://phar.phpunit.de/phpunit-9.phar \
&& chmod +x /usr/local/bin/phpunit9 \
&& ln -s /usr/local/bin/phpunit9 /usr/local/bin/phpunit
# Install NVM
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
RUN { \
echo '[global]'; \
echo 'client min protocol = SMB2'; \
echo 'client max protocol = SMB3'; \
echo 'hide dot files = no'; \
} > /etc/samba/smb.conf
RUN mkdir --parent /var/log/cron
ADD configs/cron.conf /etc/nc-cron.conf
RUN crontab /etc/nc-cron.conf
ADD configs/php/nextcloud.ini /usr/local/etc/php/conf.d/nextcloud.ini
ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
# Setup blackfire probe
RUN wget -q -O - https://packages.blackfire.io/gpg.key | sudo apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list \
&& apt-get update \
&& (apt-get install -y --no-install-recommends blackfire \
&& mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled \
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini) \
|| echo "Skipped blackfire as the installation failed" \
&& rm -rf /var/lib/apt/lists/*
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
# mod_rewrite
RUN a2enmod rewrite headers
# increase limit request body
RUN echo "LimitRequestBody 0" > /etc/apache2/conf-available/limit-request-body.conf && a2enconf limit-request-body
VOLUME /var/www/html
VOLUME /var/www/html/apps-writable
VOLUME /var/www/html/config
VOLUME /var/www/html/data
ENV SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT /var/www/html
WORKDIR /var/www/html
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
ADD https://raw.githubusercontent.com/docker-library/php/refs/heads/master/apache2-foreground /usr/bin/apache2-foreground
RUN chmod +x /usr/bin/apache2-foreground
RUN { \
echo '<FilesMatch \.php$>'; \
echo '\tSetHandler "proxy:fcgi://localhost:9000"'; \
echo '</FilesMatch>'; \
echo; \
echo 'DirectoryIndex disabled'; \
echo 'DirectoryIndex index.php index.html'; \
echo; \
echo '<Directory /var/www/>'; \
echo '\tOptions -Indexes'; \
echo '\tAllowOverride All'; \
echo '</Directory>'; \
} | tee "/etc/apache2/conf-available/docker-php.conf" \
&& a2enconf docker-php
RUN a2enmod proxy_fcgi setenvif
EXPOSE 80
CMD ["bash", "-c", "php-fpm -D && apache2-foreground"]
ADD data/installing.html /root/installing.html
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/default.config.php configs/storage.config.php configs/redis.config.php configs/apcu.config.php /root/
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
+100
View File
@@ -0,0 +1,100 @@
FROM php:8.4-apache
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions
RUN install-php-extensions \
apcu \
bcmath \
excimer \
exif \
gd \
gmp \
intl \
ldap \
memcached \
oci8 \
opcache \
pcntl \
pdo_mysql \
pdo_pgsql \
redis \
smbclient \
sysvsem \
xdebug \
zip \
blackfire \
@composer
# dev tools separate install so we quickly change without rebuilding all php extensions
RUN apt update && apt-get install -y --no-install-recommends \
git curl vim nano sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep rsync mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
RUN wget -O /usr/local/bin/phpunit8 https://phar.phpunit.de/phpunit-8.phar \
&& chmod +x /usr/local/bin/phpunit8 \
&& wget -O /usr/local/bin/phpunit9 https://phar.phpunit.de/phpunit-9.phar \
&& chmod +x /usr/local/bin/phpunit9 \
&& ln -s /usr/local/bin/phpunit9 /usr/local/bin/phpunit
# Install NVM
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash \
&& export NVM_DIR="/root/.nvm" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 20 \
&& nvm alias default 20
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
RUN { \
echo '[global]'; \
echo 'client min protocol = SMB2'; \
echo 'client max protocol = SMB3'; \
echo 'hide dot files = no'; \
} > /etc/samba/smb.conf
RUN mkdir --parent /var/log/cron
ADD configs/cron.conf /etc/nc-cron.conf
RUN crontab /etc/nc-cron.conf
ADD configs/php/nextcloud.ini /usr/local/etc/php/conf.d/nextcloud.ini
ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
# Setup blackfire probe
RUN wget -q -O - https://packages.blackfire.io/gpg.key | sudo apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list \
&& apt-get update \
&& (apt-get install -y --no-install-recommends blackfire \
&& mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled \
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini) \
|| echo "Skipped blackfire as the installation failed" \
&& rm -rf /var/lib/apt/lists/*
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
# mod_rewrite
RUN a2enmod rewrite headers
# increase limit request body
RUN echo "LimitRequestBody 0" > /etc/apache2/conf-available/limit-request-body.conf && a2enconf limit-request-body
VOLUME /var/www/html
VOLUME /var/www/html/apps-writable
VOLUME /var/www/html/config
VOLUME /var/www/html/data
ENV SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT /var/www/html
WORKDIR /var/www/html
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
CMD ["apache2-foreground"]
ADD data/installing.html /root/installing.html
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/default.config.php configs/storage.config.php configs/redis.config.php configs/apcu.config.php /root/
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
+9 -6
View File
@@ -13,11 +13,14 @@ There are two ways of using this setup. **A persistent setup is the most common
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.
```bash
git clone https://github.com/juliushaertl/nextcloud-docker-dev
git clone https://github.com/juliusknorr/nextcloud-docker-dev
cd nextcloud-docker-dev
./bootstrap.sh
```
There are some options to simplify the later development by cloning not only the minimal data set but a bigger one that helps with later switching of branches etc.
See also the [detailed page](nc-history.md) for an overview of the options.
This may take some time depending on your internet connection speed.
Depending on your docker version you will need to use `docker-compose` instead of `docker compose` in the following commands.
@@ -29,7 +32,7 @@ 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](http://nextcloud.local). The default username is `admin` and the password is `admin`. [Other users can be found in the documentation](https://juliushaertl.github.io/nextcloud-docker-dev/basics/overview/#default-users).
You can then access your Nextcloud instance at [http://nextcloud.local](http://nextcloud.local). The default username is `admin` and the password is `admin`. [Other users can be found in the documentation](https://juliusknorr.github.io/nextcloud-docker-dev/basics/overview/#default-users).
!!! warning
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:
@@ -56,23 +59,23 @@ Running the containers does not need this repository to be cloned.
Example for running a Nextcloud server from the master branch of server:
```bash
docker run --rm -p 8080:80 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 ghcr.io/juliusknorr/nextcloud-dev-php80:latest
```
For app development you can mount your app directly into the container:
```bash
docker run --rm -p 8080:80 -v ~/path/to/appid:/var/www/html/apps-extra/appid ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 -v ~/path/to/appid:/var/www/html/apps-extra/appid ghcr.io/juliusknorr/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.
```bash
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliusknorr/nextcloud-dev-php80:latest
```
You can also mount your local server source code into the container to run a local version of Nextcloud:
```bash
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
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 -v /tmp/server:/var/www/html ghcr.io/juliusknorr/nextcloud-dev-php80:latest
```
+69
View File
@@ -0,0 +1,69 @@
# Nextcloud server with history
The script `bootstrap.sh` will download a clone of the server code repository.
Depending on your use case, you might be interested in having the complete or a partial history of the Nextcloud server at your fingertips.
## TL;DR
If you want to have a quick and dirty solution to just bootstrap the dev environment, just use `./bootstrap.sh`.
If you want to intensively work on the server, use `./bootstrap.sh --full-clone`.
If you want to switch from time to time between server versions and save bandwidth/storage, use `./bootstrap.sh --clone-no-blobs`.
## Clone with depth one by default
If you do not provide any additional information to the bootstrap script, it will truncate the history of the server repository.
This truncation is done after exactly one commit.
That means the clone you will get will contain exactly this single commit.
!!! info
This will create a clone with `--depth 1`.
See the man page of git clone for more details on the implications.
As this is mainly the same data as the tarball, the download in this mode is the fastest of all options.
If you want to play around with the different server versions, you need to download these and unshallow the repository using `git fetch --unshallow`.
This will take quite some time and will download the complete server history.
## Clone with complete history
If you know that you will need the complete history of the server repository, you might want to avoid first creating a shallow copy and then unshallow it directly.
To cope with this, you can append `--full-clone` to the `./bootstrap.sh` command line:
```
./bootstrap.sh --full-clone
```
The benefit is that the complete repository is present and you can browse the history as you like.
The obvious drawback is that you have to download the complete history which might take a significant amount of time.
## Clone with the blobs filtered out
There is also one more option to the script, namely `--clone-no-blobs`.
This works only with a sufficiently recent version of git.
Instead of a shallow clone (where the history is truncated), a partial clone created by this parameter has the complete history attached.
In that sense, you can navigate the complete history as you like.
You would do the following to create such a partial clone:
```
./bootstrap.sh --clone-no-blobs
```
The main difference to a shallow clone is that the cloned repository will not download all files (git calls them _blobs_) stored in the past.
Instead, once you checkout a certain commit, git checks for all files if the corresponding file has been downloaded in the past.
If it was, it uses this copy.
If the file was not yet downloaded, a new connection to the upstream repository has to be made and the missing blobs are downloaded.
Just after the clone of such a partially cloned repo, git will download all blobs needed to view the (current) branch content.
This is very similar to the shallow clone where only the content of the last commit is downloaded.
As the complete history is generally known, you can use the normal git commands to handle such a repository.
You can just pull/fetch as you are used.
Switching a branch might download the required files on the fly.
Any later update (using `git fetch` or `git pull`) will respect the setting and also download no blobs directly.
!!! Info
This will clone the repository with `--filter blob:none`.
Again see the man page of `git clone` for more details.
The benefit of this approach is obviously that you can have a complete history that you can work with (as long as you do not need the file contents).
The initial clone takes a bit longer than the shallow one as additionally the history commits (without the contents) need to be transmitted.
The obvious drawback is that once you need to checkout a file that was never checked out in the clone, it has to be downloaded and a live internet connection is needed.
+2
View File
@@ -9,6 +9,8 @@ In order to run a stable version you need to have the corresponding git checkout
Assuming you have already cloned the repository into `~/nextcloud-docker-dev/workspace/server` you can run the following commands to create a new worktree for the stable28 branch:
```bash
# make sure the stable version is fetched
git fetch origin stable28:stable28
# create a new worktree for the stable28 branch
cd ~/nextcloud-docker-dev/workspace/server
git worktree add ../stable28 stable28
+4 -4
View File
@@ -9,7 +9,7 @@ Running the containers does not need this repository to be cloned.
Example for running a Nextcloud server from the master branch of server:
```bash
docker run --rm -p 8080:80 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 ghcr.io/juliusknorr/nextcloud-dev-php80:latest
```
For app development you can mount your app directly into the container:
@@ -17,17 +17,17 @@ For app development you can mount your app directly into the container:
```bash
docker run --rm -p 8080:80 \
-v ~/path/to/appid:/var/www/html/apps-extra/appid \
ghcr.io/juliushaertl/nextcloud-dev-php80:latest
ghcr.io/juliusknorr/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.
```bash
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliusknorr/nextcloud-dev-php80:latest
```
You can also mount your local server source code into the container to run a local version of Nextcloud:
```bash
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
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 -v /tmp/server:/var/www/html ghcr.io/juliusknorr/nextcloud-dev-php80:latest
```
+19
View File
@@ -0,0 +1,19 @@
# Customize nginx config
## Add custom config for a virtualhost config
Add a config snippet to `data/nginx/vhost.d/<vhost-name>`, it will be included in the respective vhost config automatically.
For example to redirect all requests to `/apps.*/text` to a `vite serve` process on the docker host, add the following to `data/nginx/vhost.d/nextcloud.local`:
```
location ~* ^/apps.*/text/ {
rewrite ^/apps.*/text/(.*) /$1 break;
proxy_pass http://host.docker.internal:5173;
# fallback to nextcloud server if vite serve doesn't answer
error_page 502 = @fallback;
}
location @fallback {
proxy_pass http://nextcloud.local;
}
```
+1 -1
View File
@@ -14,4 +14,4 @@ Various settings in this setup are considered insecure and default passwords and
- 🚀 Blackfire, Xdebug for profiling and debugging
- 📄 Lots of integrating service containers: Collabora Online, Onlyoffice, Elasticsearch, ...
Follow the [getting started guide](https://juliushaertl.github.io/nextcloud-docker-dev/basics/getting-started/) or the [Nextcloud developer tutorial](https://nextcloud.com/developer/) to get started.
Follow the [getting started guide](https://juliusknorr.github.io/nextcloud-docker-dev/basics/getting-started/) or the [Nextcloud developer tutorial](https://nextcloud.com/developer/) to get started.
+87
View File
@@ -0,0 +1,87 @@
# AppAPI
For [AppAPI](https://github.com/nextcloud/app_api) the [Docker Socket Proxy](https://github.com/nextcloud/docker-socket-proxy) (DSP) is required to work.
## HTTP AppAPI DSP
### 1. Start the HTTP DSP container
```bash
docker compose up -d appapi-dsp
```
### 2. Configure Deploy daemon
After the DSP container is running, configure the Deploy daemon in AppAPI admin settings with the following parameters:
- **Host**: `http://nextcloud-appapi-dsp-http:2375`
- **Nextcloud URL**: `http://nextcloud.local` (locally always use http)
- **Enable https**: `false`
- **Network**: `master_default` (the network of nextcloud-docker-dev docker-compose, by default it is `master_default`)
- **HaProxy password**: `some_secure_password`
or via OCC CLI:
```bash
./scripts/occ.sh nextcloud -- app_api:daemon:register dsp_http "DSP HTTP" docker-install http "nextcloud-appapi-dsp-http" "http://nextcloud.local" --net=master_default --set-default
```
## HTTPS AppAPI DSP
For HTTPS DSP setup, please refer to the [HTTPS (remote)](https://github.com/nextcloud/docker-socket-proxy?tab=readme-ov-file#httpsremote) section.
### 1. Generate self-signed certificates
Following the instruction from the DSP repository, generate and place the self-signed certificate in the `nextcloud-docker-dev/data/ssl/app_api/app_api.pem` directory.
> **Note**: Additionally, you can copy the `app_api.pem` file to the `nextcloud-docker-dev/data/shared` directory
> to be able to access it for import in each nextcloud dev container (e.g. `occ security:certificates:import /shared/app_api.pem`).
### 2. Start the HTTPS DSP container
```bash
docker compose up -d appapi-dsp-https
```
### 3. Configure Deploy daemon
After the DSP container is running and the certificate is imported in Nextcloud, configure the Deploy daemon in AppAPI admin settings with the following parameters:
- **Host**: `https://<nextcloud-appapi-dsp-https or BIND_ADDRESS IP>:2375` (use host depending on your setup)
- **Nextcloud URL**: `http://nextcloud.local` (locally always use http)
- **Enable https**: `true`
- **Network**: `host` (with https enabled, the network is forced to `host`)
- **HaProxy password**: `some_secure_password`
or via OCC CLI:
```bash
./scripts/occ.sh nextcloud -- app_api:daemon:register dsp_https "DSP HTTPS" docker-install https "nextcloud-appapi-dsp-https" "http://nextcloud.local" --net=host --set-default
```
## Environment variables
The list of available environment variables for the AppAPI DSP is listed in its repository,
and in the `example.env` file.
## Troubleshooting
### Image of AppAPI DSP is not accessible
In case the AppAPI DSP image is not accessible, you can build it locally by cloning the [Docker Socket Proxy](https://github.com/nextcloud/docker-socket-proxy) repository and running the following commands:
```bash
git clone https://github.com/nextcloud/docker-socket-proxy.git
```
```bash
cd docker-socket-proxy
```
```bash
docker build -f ./Dockerfile -t nextcloud-appapi-dsp:latest ./
```
After that change the image name in the `docker-compose.yml` file
for `appapi-dsp` or `appapi-dsp-https` service to `nextcloud-appapi-dsp:latest` and try again.
+10 -1
View File
@@ -9,10 +9,11 @@ By default, MySQL will be used as database backend. You can change this by setti
- `sqlite`
- `mariadb-replica`
- `maxscale`
- `oci`
Changing the database env value will require to recreate your setup. You can do this by running `docker compose down -v` and then `docker compose up -d nextcloud`.
All databases use the following credentials by default:
All databases use the following credentials by default (except oracle):
- Root password: `nextcloud`
- Username: `nextcloud`
@@ -72,3 +73,11 @@ docker compose exec database-mariadb-replica mysql -u root -pnextcloud
This mode runs a mariadb primary and read replica setup with maxscale as load balancer. The primary is used for writes and the replica for reads where MaxScale is used to perform a read-write-split.
The logs of MaxScale can be accessed with `docker compose exec maxscale cat /var/log/maxscale/maxscale.log`.
### Oracle
You can access the database with the following command:
```bash
docker compose exec -ti database-oci sqlplus system/oracle
```
+1 -1
View File
@@ -1,6 +1,6 @@
# LDAP
The LDAP sample data is based on <https://github.com/rroemhild/docker-test-openldap> and extended with randomly generated users/groups. For details see [data/ldap-generator/](https://github.com/juliushaertl/nextcloud-docker-dev/tree/master/data/ldap-generator). LDAP will be configured automatically if the ldap container is available during installation.
The LDAP sample data is based on <https://github.com/rroemhild/docker-test-openldap> and extended with randomly generated users/groups. For details see [data/ldap-generator/](https://github.com/juliusknorr/nextcloud-docker-dev/tree/master/data/ldap-generator). LDAP will be configured automatically if the ldap container is available during installation.
Example users are: `leela fry bender zoidberg hermes professor`. The password is the same as the uid.
+28
View File
@@ -1,5 +1,13 @@
# S3 / Object storage
S3 can be easily tested with the included container running Minio. This is a self-hosted S3-compatible object storage server.
Start the container using the following command:
```bash
docker compose up -d minio
```
## Primary object storage
Primary object storage can be enabled by setting the `PRIMARY=minio` environment variable either in your `.env` file or in `docker-compose.yml` for individual containers.
@@ -8,6 +16,26 @@ Primary object storage can be enabled by setting the `PRIMARY=minio` environment
docker compose up nextcloud minio
```
## External object storage
External storage can be configured in the Nextcloud admin settings. This is an example configuration for the `nc-external` bucket, buckets will be autocreated so you can name any bucket you like:
- Bucket: `nc-external`
- Authentication: `Access Key`
- Hostname: `minio`
- Port: `9000`
- Enable SSL: `No`
- Enable Path Style: `Yes`
- Legacy (v2) Authentication: `No`
- Access Key: `nextcloud`
- Secret Key: `nextcloud`
## Accessing Minio
Minio can be accessed via the browser at <http://minio.local> with the following credentials:
- Username: `nextcloud`
- Password: `nextcloud`
## Using mc command line
+1 -1
View File
@@ -14,4 +14,4 @@
- Make sure to have the recording hostname setup in your `/etc/hosts` file: `127.0.0.1 talk-recording.local`
- Make sure the Talk HPB is running and configured
- Start the talk recording server in addition to your other containers `docker-compose up -d talk-recording`
- Go to the admin settings of talk and add the signaling server (`http://talk-recording.local` with shared secret `6789`)
- Go to the admin settings of talk and add the recording server (`http://talk-recording.local` with shared secret `6789`)
+1 -1
View File
@@ -8,7 +8,7 @@ Xdebug is shipped but disabled by default. It can be turned on by running:
You can also enable other modes, e.g. trace:
````
```
./scripts/php-mod-config nextcloud xdebug.mode debug,trace
```
+17
View File
@@ -24,6 +24,9 @@ PROTOCOL=http
# BLACKFIRE_SERVER_ID=
# BLACKFIRE_SERVER_TOKEN=
# By default the published ports are only accessible at 127.0.0.1 (your localhost).
# Set this to '0.0.0.0' to make them accessible from your whole local network.
# IP_BIND=127.0.0.1
# can be used to run separate setups besides each other
# DOCKER_SUBNET=192.168.15.0/24
@@ -49,3 +52,17 @@ SQL=mysql
# The mode of the xdebuger extention. This can be a comma separated list of
# the entries none, develop, debug, trace, and profile.
PHP_XDEBUG_MODE=develop
# Nextcloud AppAPI Docker Socket Proxy
# ------------------------------------
# NC_HAPROXY_PASSWORD=some_secure_password
# BIND_ADDRESS=172.17.0.1
# CERT_PATH=./data/ssl/app_api/app_api.pem
# NETWORK_MODE=host
# HAPROXY_PORT=2375
# TIMEOUT_CONNECT=10s
# TIMEOUT_CLIENT=30s
# TIMEOUT_SERVER=30s
# EX_APPS_NET=ipv4@localhost
# EX_APPS_COUNT=50
# ------------------------------------
+2 -2
View File
@@ -24,8 +24,8 @@ occ app:enable onlyoffice --force
occ config:app:set onlyoffice DocumentServerUrl --value="$PROTOCOL://onlyoffice$DOMAIN_SUFFIX"
occ config:app:set onlyoffice jwt_secret --value="secret"
occ config:app:set onlyoffice DocumentServerInternalUrl --value="http://onlyoffice/"
occ config:app:set onlyoffice StorageUrl --value="http://nextcloud/"
occ config:app:set onlyoffice StorageUrl --value="http://${CONTAINER}${DOMAIN_SUFFIX}/"
occ onlyoffice:documentserver --check
docker_compose exec onlyoffice /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'
docker_compose exec onlyoffice /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'