Compare commits

..

1 Commits

Author SHA1 Message Date
Julius Härtl a3e7cb8f98 feat: Add appapi docker socket proxy
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-08-19 12:44:32 +02:00
53 changed files with 532 additions and 1508 deletions
+28 -34
View File
@@ -15,13 +15,11 @@ jobs:
push_to_registry:
name: Build image
runs-on: ubuntu-latest
if: github.repository == 'juliusknorr/nextcloud-docker-dev'
if: github.repository == 'juliushaertl/nextcloud-docker-dev'
strategy:
fail-fast: false
matrix:
container:
- php85
- php84
- php83
- php82
- php81
@@ -34,7 +32,6 @@ jobs:
- saml
- nginx
- elasticsearch
- keycloak
- mailhog
- ldap
- lookupserver
@@ -42,19 +39,18 @@ jobs:
- codedev
- code
- talk-janus
- noop
permissions:
packages: write
contents: read
steps:
- name: Check out the repo
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Cache Docker layers
uses: actions/cache@v5
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ matrix.container }}-buildx-${{ github.sha }}
@@ -82,31 +78,16 @@ jobs:
platforms: linux/amd64,linux/arm64
file: ${{ steps.dockerfile.outputs.DOCKERFILE }}
tags: |
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: Push container image
uses: docker/build-push-action@v6
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
with:
push: true
context: docker/
platforms: linux/amd64,linux/arm64
file: ${{ steps.dockerfile.outputs.DOCKERFILE }}
tags: |
ghcr.io/juliusknorr/nextcloud-dev-${{ matrix.container }}:${{ github.event_name == 'release' && 'release' || 'latest' }}
ghcr.io/juliusknorr/nextcloud-dev-${{ matrix.container }}:${{ github.ref_name }}
ghcr.io/juliushaertl/nextcloud-dev-${{ matrix.container }}:${{ github.sha }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Start containers with docker compose
if: matrix.container == 'php82' || matrix.container == 'php83' || matrix.container == 'php84'
run: |
./bootstrap.sh
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 or above 84 to only test against supported ones in server master
if ! [[ $PHP_VERSION =~ ^[0-9]+$ ]] || [[ $PHP_VERSION -lt 80 ]] || [[ $PHP_VERSION -gt 84 ]]; then
# exit if php version is not numeric or below 80
if ! [[ $PHP_VERSION =~ ^[0-9]+$ ]] || [[ $PHP_VERSION -lt 80 ]]; then
exit 0
fi
docker compose up -d nextcloud
@@ -119,28 +100,41 @@ jobs:
sleep 1
done
curl http://nextcloud.local/status.php
- uses: actions/setup-node@v6
if: matrix.container == 'php82' || matrix.container == 'php83' || matrix.container == 'php84'
- uses: actions/setup-node@v4
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
with:
node-version: latest
node-version: 18
- name: Install dependencies
if: matrix.container == 'php82' || matrix.container == 'php83' || matrix.container == 'php84'
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
working-directory: tests
run: npm ci
- name: Install Playwright Browsers
if: matrix.container == 'php82' || matrix.container == 'php83' || matrix.container == 'php84'
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
working-directory: tests
run: npx playwright install --with-deps
- name: Run Playwright tests
if: matrix.container == 'php82' || matrix.container == 'php83' || matrix.container == 'php84'
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
working-directory: tests
run: npx playwright test
- uses: actions/upload-artifact@v7
if: matrix.container == 'php82' || matrix.container == 'php83' || matrix.container == 'php84'
- uses: actions/upload-artifact@v3
if: matrix.container == 'php81' || matrix.container == 'php82' || matrix.container == 'php83'
with:
name: playwright-report-${{ matrix.container }}
name: playwright-report
path: tests/playwright-report/
retention-days: 30
- name: Push container image
uses: docker/build-push-action@v6
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
with:
push: true
context: docker/
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 }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
+3 -3
View File
@@ -28,11 +28,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Install dependencies
@@ -42,7 +42,7 @@ jobs:
- name: Build MkDocs
run: mkdocs build
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
uses: actions/upload-pages-artifact@v3
with:
# Upload entire repository
path: './site'
+1 -1
View File
@@ -11,7 +11,7 @@ jobs:
name: Shellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
env:
-3
View File
@@ -1,5 +1,4 @@
/.vscode
/data/nginx/vhost.d/
/data/ssl/
/data/shared/
/workspace/
@@ -14,5 +13,3 @@ node_modules/
/tests/playwright-report/
/tests/blob-report/
/tests/playwright/.cache/
/.idea/
.DS_Store
+8 -10
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/juliusknorr/nextcloud-dev-$${NAME}"; \
echo "=> Pulling image $$NAME"; docker pull "ghcr.io/juliushaertl/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/juliusknorr/nextcloud-dev-$${NAME}"; \
echo "=> Pulling image $$NAME"; docker pull "ghcr.io/juliushaertl/nextcloud-dev-$${NAME}"; \
done
pull-installed:
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
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
# Empty target to always build
docker-build:
docker/%/Dockerfile: docker-build
NAME=$$(basename $$(dirname $@)); \
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 .)
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 .)
docker/Dockerfile.%: docker-build
NAME=$$(echo $$(basename $@) | sed 's/^.*\.//'); \
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 .)
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 .)
check: dockerfilelint shellcheck
@@ -55,8 +55,6 @@ 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
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:8.5/' > docker/php85/Dockerfile
docs:
pip3 install mkdocs
+9 -9
View File
@@ -1,6 +1,6 @@
# Nextcloud development environment on Docker Compose
[Documentation](https://juliusknorr.github.io/nextcloud-docker-dev/) | [Nextcloud Developer Portal](https://nextcloud.com/developer/)
[Documentation](https://juliushaertl.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://juliusknorr.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://juliushaertl.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/juliusknorr/nextcloud-docker-dev
git clone https://github.com/juliushaertl/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://juliusknorr.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://juliushaertl.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/juliusknorr/nextcloud-dev-php81:latest
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:
```bash
docker run --rm -p 8080:80 -v ~/path/to/appid:/var/www/html/apps-extra/appid ghcr.io/juliusknorr/nextcloud-dev-php81:latest
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.
```bash
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliusknorr/nextcloud-dev-php81:latest
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:
```bash
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
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](https://juliusknorr.github.io/nextcloud-docker-dev/) for example:
You can find documentation for more advanced features in [nextcloud-docker-dev documentation](https://juliushaertl.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
bootstrap.sh [--full-clone|--clone-no-blobs] [--clone-all-apps-filtered] [--] APPS
boottrap.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 stable29 stable30 stable31 stable32 stable33
for i in stable26 stable27 stable28
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)
;;
filter-blobs)
clone-no-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 workspace/server --progress 2>&1 &&
git clone ${CLONE_PARAMS[@]+"${CLONE_PARAMS[@]}"} https://github.com/nextcloud/server.git --depth 1 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/juliusknorr/nextcloud-docker-dev
https://github.com/juliushaertl/nextcloud-docker-dev
EOF
View File
+73 -324
View File
@@ -1,16 +1,17 @@
version: '3'
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/juliusknorr/nextcloud-dev-nginx:latest
image: ghcr.io/juliushaertl/nextcloud-dev-nginx:latest
ports:
- "${IP_BIND:-127.0.0.1}:${PROXY_PORT_HTTP:-80}:80"
- "${IP_BIND:-127.0.0.1}:${PROXY_PORT_HTTPS:-443}:443"
- "${PROXY_PORT_HTTP:-80}:80"
- "${PROXY_PORT_HTTPS:-443}:443"
volumes:
- ${DOCKER_SOCKET-/var/run/docker.sock}:/tmp/docker.sock:ro
- /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"
@@ -38,15 +39,7 @@ services:
- stable27${DOMAIN_SUFFIX}
- stable28${DOMAIN_SUFFIX}
- stable29${DOMAIN_SUFFIX}
- stable30${DOMAIN_SUFFIX}
- stable31${DOMAIN_SUFFIX}
- stable32${DOMAIN_SUFFIX}
- stable33${DOMAIN_SUFFIX}
- mail${DOMAIN_SUFFIX}
- sso${DOMAIN_SUFFIX}
- minio${DOMAIN_SUFFIX}
- rustfs${DOMAIN_SUFFIX}
- imap${DOMAIN_SUFFIX}
- collabora${DOMAIN_SUFFIX}
- codedev${DOMAIN_SUFFIX}
- onlyoffice${DOMAIN_SUFFIX}
@@ -64,9 +57,6 @@ services:
- phpmyadmin${DOMAIN_SUFFIX}
- talk-signaling${DOMAIN_SUFFIX}
- talk-recording${DOMAIN_SUFFIX}
- authentik${DOMAIN_SUFFIX}
extra_hosts:
- host.docker.internal:host-gateway
haproxy:
image: haproxy
@@ -77,8 +67,16 @@ 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/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: ${NEXTCLOUD_AUTOINSTALL:-YES}
@@ -110,9 +108,9 @@ services:
- host.docker.internal:host-gateway
nextcloud2:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
SQL: 'mysql'
VIRTUAL_HOST: "nextcloud2${DOMAIN_SUFFIX}"
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
volumes:
@@ -126,7 +124,7 @@ services:
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
- ./data/shared:/shared
ports:
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}1:80"
- "${PORTBASE:-800}1:80"
depends_on:
- database-${SQL:-mysql}
- redis
@@ -136,7 +134,7 @@ services:
- host.docker.internal:host-gateway
nextcloud3:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
VIRTUAL_HOST: "nextcloud3${DOMAIN_SUFFIX}"
@@ -160,7 +158,7 @@ services:
- host.docker.internal:host-gateway
stable16:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-73}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -189,7 +187,7 @@ services:
- host.docker.internal:host-gateway
stable17:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-73}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -218,7 +216,7 @@ services:
- host.docker.internal:host-gateway
stable18:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-74}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -247,7 +245,7 @@ services:
- host.docker.internal:host-gateway
stable19:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-74}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -276,7 +274,7 @@ services:
- host.docker.internal:host-gateway
stable20:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-74}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -305,7 +303,7 @@ services:
- host.docker.internal:host-gateway
stable21:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -335,7 +333,7 @@ services:
- host.docker.internal:host-gateway
stable22:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -365,7 +363,7 @@ services:
- host.docker.internal:host-gateway
stable23:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -395,7 +393,7 @@ services:
- host.docker.internal:host-gateway
stable24:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-80}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -425,7 +423,7 @@ services:
- host.docker.internal:host-gateway
stable25:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -455,7 +453,7 @@ services:
- host.docker.internal:host-gateway
stable26:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -485,7 +483,7 @@ services:
- host.docker.internal:host-gateway
stable27:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -515,7 +513,7 @@ services:
- host.docker.internal:host-gateway
stable28:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -545,7 +543,7 @@ services:
- host.docker.internal:host-gateway
stable29:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
@@ -574,128 +572,8 @@ services:
extra_hosts:
- host.docker.internal:host-gateway
stable30:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}: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:-82}: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
stable32:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
NEXTCLOUD_AUTOINSTALL_APPS:
WITH_REDIS: "YES"
VIRTUAL_HOST: stable32${DOMAIN_SUFFIX}
ADDITIONAL_APPS_PATH:
NEXTCLOUD_TRUSTED_DOMAINS:
PRIMARY: ${PRIMARY:-local}
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
volumes:
- '${STABLE_ROOT_PATH}/stable32:/var/www/html'
- '${STABLE_ROOT_PATH}/stable32/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
stable33:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-83}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
NEXTCLOUD_AUTOINSTALL_APPS:
WITH_REDIS: "YES"
VIRTUAL_HOST: stable33${DOMAIN_SUFFIX}
ADDITIONAL_APPS_PATH:
NEXTCLOUD_TRUSTED_DOMAINS:
PRIMARY: ${PRIMARY:-local}
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
volumes:
- '${STABLE_ROOT_PATH}/stable33:/var/www/html'
- '${STABLE_ROOT_PATH}/stable33/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: ghcr.io/juliusknorr/nextcloud-dev-noop:latest
image: rwgrim/docker-noop
database-mysql:
image: mariadb:10.6
@@ -708,14 +586,14 @@ services:
'--wait_timeout=28800',
]
ports:
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}2:3306"
- "${PORTBASE:-800}2:3306"
volumes:
- mysql:/var/lib/mysql
database-mariadb-primary:
image: docker.io/bitnami/mariadb:10.6
ports:
- "${IP_BIND:-127.0.0.1}:3306:3306"
- '3306'
volumes:
- 'mariadb_primary_data:/bitnami/mariadb'
environment:
@@ -730,7 +608,7 @@ services:
database-mariadb-replica:
image: docker.io/bitnami/mariadb:10.6
ports:
- "${IP_BIND:-127.0.0.1}:3306:3306"
- '3306'
depends_on:
- database-mariadb-primary
environment:
@@ -751,7 +629,7 @@ services:
volumes:
- './docker/maxscale/my-maxscale.cnf:/etc/maxscale.cnf.d/my-maxscale.cnf'
ports:
- "${IP_BIND:-127.0.0.1}:3306:3306"
- '3306'
database-pgsql:
image: postgres:latest
@@ -759,18 +637,19 @@ services:
POSTGRES_DB: nextcloud
POSTGRES_PASSWORD: postgres
ports:
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}2:5432"
- "${PORTBASE:-800}2:5432"
volumes:
- postgres:/var/lib/postgresql
database-oci:
image: gvenzl/oracle-free:23
image: ghcr.io/gvenzl/oracle-xe:21
environment:
ORACLE_PASSWORD: oracle
ORACLE_PASSWORD: nextcloud
APP_USER: nextcloud
APP_USER_PASSWORD: nextcloud
ORACLE_DATABASE: nextcloud
ports:
- "${IP_BIND:-127.0.0.1}:1521:1521"
volumes:
- oracle:/opt/oracle/oradata
- 1521:1521/tcp
pgadmin:
container_name: pgadmin_container
@@ -788,7 +667,7 @@ services:
- ${PROXY_SERVICE:-proxy}
redis:
image: redis:8
image: redis:7
volumes:
- redis:/data
@@ -799,7 +678,7 @@ services:
- 389
- 636
ports:
- "${IP_BIND:-127.0.0.1}:3389:389"
- 3389:389
environment:
LDAP_DOMAIN: planetexpress.com
LDAP_BASE_DN: dc=planetexpress,dc=com
@@ -814,7 +693,6 @@ services:
PMA_HOST: database-mysql
PMA_USER: root
PMA_PASSWORD: nextcloud
UPLOAD_LIMIT: 512M
ldapadmin:
image: osixia/phpldapadmin
@@ -822,10 +700,10 @@ services:
PHPLDAPADMIN_LDAP_HOSTS: ldap
PHPLDAPADMIN_HTTPS: 'false'
ports:
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}8:80"
- "${PORTBASE:-800}8:80"
saml:
image: unicon/simplesamlphp
image: unicon/simplesamlphp
volumes:
- ./docker/configs/var-simplesamlphp/config:/var/simplesamlphp/config
- ./docker/configs/var-simplesamlphp/cert:/var/simplesamlphp/cert
@@ -836,23 +714,16 @@ services:
- 80
mail:
image: ghcr.io/juliusknorr/nextcloud-dev-mailhog:latest
image: ghcr.io/juliushaertl/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:
- "${IP_BIND:-127.0.0.1}:139:139"
- "${IP_BIND:-127.0.0.1}:445:445"
- 139
- 445
environment:
# -u "<username;password>[;ID;group;GID]"
USER: "admin;admin"
@@ -869,7 +740,7 @@ services:
blackfire:
image: blackfire/blackfire:2
ports:
- "${IP_BIND:-127.0.0.1}:8307:8307"
- 8307:8307
environment:
- BLACKFIRE_SERVER_ID
- BLACKFIRE_SERVER_TOKEN
@@ -893,11 +764,6 @@ 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}
aliasgroup13: http://stable32${DOMAIN_SUFFIX}
aliasgroup14: http://stable33${DOMAIN_SUFFIX}
dictionaries: de_DE en_US en_GB
username: admin
password: admin
@@ -935,27 +801,14 @@ services:
image: minio/minio
environment:
VIRTUAL_HOST: minio${DOMAIN_SUFFIX}
VIRTUAL_PORT: 9000
VIRTUAL_PORT: 9001
MINIO_ROOT_USER: nextcloud
MINIO_ROOT_PASSWORD: nextcloud
MINIO_BROWSER_REDIRECT_URL: ${PROTOCOL}://minio${DOMAIN_SUFFIX}
ports:
- "9001:9001"
volumes:
- objectstorage_minio:/data
command: server /data --console-address :9001
rustfs:
image: rustfs/rustfs:latest
environment:
VIRTUAL_HOST: rustfs${DOMAIN_SUFFIX}
VIRTUAL_PORT: 9001
RUSTFS_ACCESS_KEY: nextcloud
RUSTFS_SECRET_KEY: nextcloud
RUSTFS_CONSOLE_ENABLE: "true"
volumes:
- objectstorage_rustfs:/data
elasticsearch:
build:
context: ./docker
@@ -983,7 +836,7 @@ services:
elasticsearch-ui:
image: appbaseio/dejavu
ports:
- "${IP_BIND:-127.0.0.1}:1358:1358"
- 1358:1358
expose:
- 1358
environment:
@@ -993,7 +846,7 @@ services:
push:
image: ghcr.io/juliusknorr/nextcloud-dev-push:latest
image: ghcr.io/juliushaertl/nextcloud-dev-push:latest
environment:
RUST_LOG: debug
VIRTUAL_HOST: push${DOMAIN_SUFFIX}
@@ -1003,21 +856,18 @@ services:
NEXTCLOUD_URL: http://nextcloud
keycloak:
image: ghcr.io/juliusknorr/nextcloud-dev-keycloak:latest
image: quay.io/keycloak/keycloak:25.0
expose:
- 8080
# volumes:
# - ./docker/configs/keycloak:/opt/keycloak/data/import
command: start-dev --import-realm --http-enabled=true --proxy-headers xforwarded
volumes:
- ./docker/configs/keycloak:/opt/keycloak/data/import
command: start-dev --import-realm
environment:
PROTOCOL: "${PROTOCOL:-http}"
DOMAIN_SUFFIX: "${DOMAIN_SUFFIX:-.local}"
VIRTUAL_HOST: "keycloak${DOMAIN_SUFFIX}"
VIRTUAL_PORT: 8080
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: admin
KEYCLOAK_PROXY_ADDRESS_FORWARDING: "true"
KEYCLOAK_FRONTEND_URL: "${PROTOCOL:-http}://keycloak${DOMAIN_SUFFIX}"
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
PROXY_ADDRESS_FORWARDING: "true"
KC_PROXY: edge
av:
@@ -1028,7 +878,7 @@ services:
- clam:/var/lib/clamav
portal:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
VIRTUAL_HOST: portal${DOMAIN_SUFFIX}
SQL: 'mysql'
@@ -1050,7 +900,7 @@ services:
- host.docker.internal:host-gateway
gs1:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
VIRTUAL_HOST: gs1${DOMAIN_SUFFIX}
SQL: 'mysql'
@@ -1073,7 +923,7 @@ services:
- host.docker.internal:host-gateway
gs2:
image: ghcr.io/juliusknorr/nextcloud-dev-php${PHP_VERSION:-82}:latest
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
VIRTUAL_HOST: gs2${DOMAIN_SUFFIX}
SQL: 'mysql'
@@ -1096,7 +946,7 @@ services:
- host.docker.internal:host-gateway
lookup:
image: ghcr.io/juliusknorr/nextcloud-dev-lookupserver:latest
image: ghcr.io/juliushaertl/nextcloud-dev-lookupserver:latest
environment:
VIRTUAL_HOST: "lookup${DOMAIN_SUFFIX}"
# volumes:
@@ -1108,7 +958,7 @@ services:
cap_drop:
- ALL
ports:
- "${IP_BIND:-127.0.0.1}:8888:8888"
- 8888:8888
environment:
MAX_CLIENTS: 100
ALLOWED_NETWORKS: 0.0.0.0/0
@@ -1129,9 +979,9 @@ services:
previews_hpb:
image: ghcr.io/nextcloud-releases/aio-imaginary:latest
image: nextcloud/aio-imaginary:latest
ports:
- "${IP_BIND:-127.0.0.1}:8088:8088"
- "8088:8088"
environment:
- PORT=8088
@@ -1150,10 +1000,10 @@ services:
INTERNAL_SHARED_SECRET_KEY: "4567"
talk-janus:
image: ghcr.io/juliusknorr/nextcloud-dev-talk-janus:latest
image: ghcr.io/juliushaertl/nextcloud-dev-talk-janus:latest
talk-recording:
image: ghcr.io/nextcloud-releases/aio-talk-recording:latest
image: nextcloud/aio-talk-recording:latest
environment:
NC_DOMAIN: "nextcloud${DOMAIN_SUFFIX}"
ALLOW_ALL: "true"
@@ -1166,111 +1016,13 @@ 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:
- ${DOCKER_SOCKET-/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:
- ${DOCKER_SOCKET-/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}
authentik-postgresql:
env_file:
- .env
environment:
POSTGRES_DB: ${PG_DB:-authentik}
POSTGRES_PASSWORD: authentik-database
POSTGRES_USER: ${PG_USER:-authentik}
healthcheck:
interval: 30s
retries: 5
start_period: 20s
test:
- CMD-SHELL
- pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
timeout: 5s
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
volumes:
- authentik-database:/var/lib/postgresql/data
authentik-worker:
command: worker
depends_on:
authentik-postgresql:
condition: service_healthy
env_file:
- .env
environment:
AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: authentik-database
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_SECRET_KEY: authentik-secret
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.10.2}
restart: unless-stopped
user: root
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./authentik-media:/media
- ./authentik-certs:/certs
- ./authentik-custom-templates:/templates
authentik:
command: server
depends_on:
authentik-postgresql:
condition: service_healthy
authentik-worker:
condition: service_healthy
environment:
AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: authentik-database
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_SECRET_KEY: authentik-secret
VIRTUAL_HOST: "authentik${DOMAIN_SUFFIX}"
VIRTUAL_PORT: 9000
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.10.2}
ports:
- ${COMPOSE_PORT_HTTP:-9000}:9000
restart: unless-stopped
volumes:
- ./authentik-media:/media
- ./authentik-custom-templates:/templates
volumes:
data:
config:
apps-writable:
mysql:
postgres:
oracle:
redis:
data2:
config2:
@@ -1281,14 +1033,11 @@ volumes:
document_data:
document_log:
objectstorage_minio:
objectstorage_rustfs:
smb:
smbhomes:
elasticsearch_data:
clam:
mariadb_primary_data:
authentik-database:
driver: local
networks:
default:
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+6 -22
View File
@@ -41,11 +41,6 @@ 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
@@ -105,7 +100,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 45
sleep 2
;;
"sqlite")
output " - SQLite"
@@ -227,11 +222,7 @@ configure_add_user() {
install() {
if [ -n "$VIRTUAL_HOST" ]; then
DBNAME=$(echo "$VIRTUAL_HOST" | cut -d '.' -f1)
else
DBNAME="nextcloud"
fi
DBNAME=$(echo "$VIRTUAL_HOST" | cut -d '.' -f1)
SQLHOST="database-$SQL"
echo "database name will be $DBNAME"
@@ -242,7 +233,7 @@ install() {
output "🔧 Starting auto installation"
if [ "$SQL" = "oci" ]; then
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
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
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
@@ -259,14 +250,7 @@ install() {
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL"
fi;
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 "🔧 Server installed"
output "🔧 Provisioning apps"
OCC app:disable password_policy
@@ -372,8 +356,8 @@ add_hosts() {
setup() {
update_permission
configure_xdebug_mode
if is_installed || [[ ! -f $WEBROOT/config/config.php ]]
STATUS=$(OCC status)
if [[ "$STATUS" = *"installed: true"* ]] || [[ ! -f $WEBROOT/config/config.php ]]
then
output "🚀 Nextcloud already installed ... skipping setup"
-46
View File
@@ -109,49 +109,3 @@ if ($primary === 'minio-multibucket') {
),
];
}
if ($primary === 'rustfs') {
$CONFIG += [
'objectstore' =>
array (
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' =>
array (
'bucket' => 'nc-' . $hostname,
'key' => 'nextcloud',
'secret' => 'nextcloud',
'hostname' => 'rustfs.local',
'port' => '80',
'proxy' => 'rustfs:9000',
'use_ssl' => false,
'use_path_style' => true,
'use_presigned_url' => true,
'autocreate' => true,
'verify_bucket_exists' => true,
),
)
];
}
if ($primary === 'rustfs-multibucket') {
$CONFIG += [
'objectstore_multibucket' => array(
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' => array(
// optional, defaults to 64
'num_buckets' => 64,
// n integer in the range from 0 to (num_buckets-1) will be appended
'bucket' => 'nc-' . $hostname,
'key' => 'nextcloud',
'secret' => 'nextcloud',
'hostname' => 'rustfs.local',
'port' => '80',
'proxy' => 'rustfs:9000',
'use_presigned_url' => true,
'use_ssl' => false,
'use_path_style' => true,
),
),
];
}
@@ -511,7 +511,7 @@
"containerId" : "6b350bb7-8ea6-438b-be38-fb58f6523f45",
"attributes" : { }
} ],
"http://nextcloud.local/index.php/apps/user_saml/saml/metadata" : [ ]
"http://nextcloud.dev.local/index.php/apps/user_saml/saml/metadata" : [ ]
}
},
"groups" : [ ],
@@ -689,15 +689,15 @@
"optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
}, {
"id" : "555c2809-b153-4cf4-8bb1-a6306e5179c7",
"clientId" : "http://nextcloud.local/index.php/apps/user_saml/saml/metadata",
"adminUrl" : "http://keycloak.local/auth/realms/Example",
"clientId" : "http://nextcloud.dev.local/index.php/apps/user_saml/saml/metadata",
"adminUrl" : "http://keycloak.dev.local/auth/realms/Example",
"surrogateAuthRequired" : false,
"enabled" : true,
"alwaysDisplayInConsole" : false,
"clientAuthenticatorType" : "client-secret",
"secret" : "FipRMpAHMklMkZtbQfAKkUhxe7gkRZzR",
"redirectUris" : [ "http://nextcloud.local/index.php/apps/user_saml/saml/acs" ],
"webOrigins" : [ "http://nextcloud.local" ],
"redirectUris" : [ "http://nextcloud.dev.local/index.php/apps/user_saml/saml/acs" ],
"webOrigins" : [ "http://nextcloud.dev.local" ],
"notBefore" : 0,
"bearerOnly" : false,
"consentRequired" : false,
@@ -713,12 +713,12 @@
"client.secret.creation.time" : "1670752721",
"saml.force.post.binding" : "true",
"post.logout.redirect.uris" : "+",
"saml_assertion_consumer_url_post" : "http://nextcloud.local/index.php/apps/user_saml/saml/acs",
"saml_assertion_consumer_url_post" : "http://nextcloud.dev.local/index.php/apps/user_saml/saml/acs",
"saml.server.signature" : "true",
"saml.server.signature.keyinfo.ext" : "false",
"saml.signing.certificate" : "MIICvjCCAaYCCQDS+w+GXVpJsDANBgkqhkiG9w0BAQsFADAhMQswCQYDVQQGEwJERTESMBAGA1UECgwJZGV2LmxvY2FsMB4XDTIyMTIxMDA1MjgxMloXDTIzMDEwOTA1MjgxMlowITELMAkGA1UEBhMCREUxEjAQBgNVBAoMCWRldi5sb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOXPQ1YfI0aNUJEVdqFprGGtVMCZ5WIQsk7elS2KqljCHFX6eqpFR8FrQoZgcDVsi4zjX85bAdCPAW2ikfk5hNOypeJx1WSr7mtg/60p0m/T5Lim4QBCyItSARYulV9KYEijIYadTiFQJRE0PJKijlyOZ69FRt3lG+3vqE5xgQc+ZA59Pex7fB/R9jWwORxRMrzZQDP7cvKkvOlq13mR5WbCQkLXG0n6Fd2/Av27TNEP8gkITUlkrv7DkKoHcBRpUGLBuod+C/GM9aZYXxtlIStyIkz27ulsU7+VdNympFkEL+vzRrptW/S0C0RT4xKBbFeA+pCwgoIMeJsnBaAP2OkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAOJ3+a1d06LN83gh3iNEvwWNudKVPi7MvyltW2WVBzQBoN2wCYC0crl7PRxXqACvpw2nE2qZaJ0KrrbVWUVMf2lAwRKk4g2F3WcwBjqakWwWEgIDuocLt1WX5nHbI6hb9E2jAwa8wpYbAiRQF5HnZGxI+1ZXKROZvhOPIiAVTv4jTPGr5lgxJ1lKqnVRfKIHZlPWPFGTmuwSkuq+9lwqp/HdCOIiV54c5yi0XBMvEjLhqoE5cxSVNswLF7thD7B2E1NTpyH83Z7rHtK/HDHinUVfOTKhnt15JAf2I2zwh9HErW/Bz4zQlmmBL0uMpgOjTix9h55p2JMuM7/Bd7ng2Dg==",
"saml.artifact.binding.identifier" : "0TDhGxUTNYmRM8Yd/PcR55vLtAs=",
"saml_single_logout_service_url_redirect" : "http://nextcloud.local/index.php/apps/user_saml/saml/sls",
"saml_single_logout_service_url_redirect" : "http://nextcloud.dev.local/index.php/apps/user_saml/saml/sls",
"saml.signature.algorithm" : "RSA_SHA256",
"saml_force_name_id_format" : "false",
"saml.client.signature" : "true",
@@ -775,15 +775,15 @@
}, {
"id" : "a7bab497-e991-491b-aae2-785f049cf361",
"clientId" : "nextcloud",
"rootUrl" : "http://nextcloud.local",
"adminUrl" : "http://nextcloud.local",
"rootUrl" : "https://nextcloud.dev.local",
"adminUrl" : "https://nextcloud.dev.local",
"surrogateAuthRequired" : false,
"enabled" : true,
"alwaysDisplayInConsole" : false,
"clientAuthenticatorType" : "client-secret",
"secret" : "09e3c268-d8bc-42f1-b7c6-74d307ef5fde",
"redirectUris" : [ "http://nextcloud.local/*" ],
"webOrigins" : [ "http://nextcloud.local" ],
"redirectUris" : [ "https://nextcloud.dev.local/*" ],
"webOrigins" : [ "https://nextcloud.dev.local" ],
"notBefore" : 0,
"bearerOnly" : false,
"consentRequired" : false,
+52
View File
@@ -0,0 +1,52 @@
<?php
// FIXME: Move everything except the last part to the containers
// set the hostname to the VIRTUAL_HOST set for the docker container, otherwise fallback to the docker hostname
$hostname = gethostname();
$primary = isset($_ENV['PRIMARY']) ? $_ENV['PRIMARY'] : '';
$virtualHost = isset($_ENV['VIRTUAL_HOST']) ? $_ENV['VIRTUAL_HOST'] : '';
$virtualHost = explode(".", $virtualHost);
if (count($virtualHost) > 0) {
$hostname = array_shift($virtualHost);
}
$CONFIG = [];
if ($primary === 'minio') {
$CONFIG += [
'objectstore' =>
array (
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' =>
array (
'bucket' => 'nc-' . $hostname,
'key' => 'nextcloud',
'secret' => 'nextcloud',
'hostname' => 'minio',
'port' => '9000',
'use_ssl' => false,
'use_path_style' => true,
'autocreate' => true,
'verify_bucket_exists' => true,
),
)
];
}
if ($primary === 'minio-multibucket') {
$CONFIG += [
'objectstore_multibucket' => array(
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' => array(
// optional, defaults to 64
'num_buckets' => 64,
// n integer in the range from 0 to (num_buckets-1) will be appended
'bucket' => 'nc-' . $hostname,
'key' => 'nextcloud',
'secret' => 'nextcloud',
'hostname' => 'minio',
'port' => '9000',
'use_ssl' => false,
'use_path_style' => true,
),
),
];
}
@@ -21,7 +21,7 @@ $config = array(
* external url, no matter where you come from (direct access or via the
* reverse proxy).
*/
'baseurlpath' => 'https://sso.local/simplesaml/',
'baseurlpath' => 'https://sso.local.dev.bitgrid.net/simplesaml/',
'certdir' => 'cert/',
'loggingdir' => 'log/',
'datadir' => 'data/',
@@ -1,6 +1,6 @@
<?php
$metadata['https://nextcloud.local/index.php/apps/user_saml/saml/metadata'] = array (
'entityid' => 'https://nextcloud.local/index.php/apps/user_saml/saml/metadata',
$metadata['https://nextcloud.local.dev.bitgrid.net/index.php/apps/user_saml/saml/metadata'] = array (
'entityid' => 'https://nextcloud.local.dev.bitgrid.net/index.php/apps/user_saml/saml/metadata',
'contacts' =>
array (
),
@@ -11,7 +11,7 @@ $metadata['https://nextcloud.local/index.php/apps/user_saml/saml/metadata'] = ar
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://nextcloud.local/index.php/apps/user_saml/saml/acs',
'Location' => 'https://nextcloud.local.dev.bitgrid.net/index.php/apps/user_saml/saml/acs',
'index' => 1,
),
),
@@ -20,7 +20,7 @@ $metadata['https://nextcloud.local/index.php/apps/user_saml/saml/metadata'] = ar
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://nextcloud.local/index.php/apps/user_saml/saml/sls',
'Location' => 'https://nextcloud.local.dev.bitgrid.net/index.php/apps/user_saml/saml/sls',
),
),
'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
@@ -36,4 +36,4 @@ $metadata['https://nextcloud.local/index.php/apps/user_saml/saml/metadata'] = ar
),
'validate.authnrequest' => false,
'saml20.sign.assertion' => false,
);
);
+72 -103
View File
@@ -1,106 +1,75 @@
<!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;
}
<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>
.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>
+1 -1
View File
@@ -1,3 +1,3 @@
FROM elasticsearch:7.17.25
FROM elasticsearch:7.17.22
RUN bin/elasticsearch-plugin install --batch ingest-attachment
-9
View File
@@ -1,9 +0,0 @@
FROM quay.io/keycloak/keycloak:26.4
RUN mkdir -p /opt/keycloak/data/import
ADD keycloak/Example-realm.json /opt/keycloak/data/import/Example-realm.json
ADD keycloak/prepare.sh /opt/keycloak/bin/custom-kc.sh
ENTRYPOINT ["/opt/keycloak/bin/custom-kc.sh"]
-26
View File
@@ -1,26 +0,0 @@
#!/bin/bash
KEYCLOAK_REALM_CONFIG="/opt/keycloak/data/import/Example-realm.json"
PROTOCOL="${PROTOCOL:-http}"
NEXTCLOUD_URL=${PROTOCOL}://${NEXTCLOUD_URL:-nextcloud}${DOMAIN_SUFFIX}
KEYCLOAK_URL=${PROTOCOL}://${KEYCLOAK_URL:-keycloak}${DOMAIN_SUFFIX}
if [ -f "$KEYCLOAK_REALM_CONFIG" ]; then
echo "Preparing Keycloak realm configuration..."
echo "Using NEXTCLOUD_URL: ${NEXTCLOUD_URL}"
echo "Using KEYCLOAK_URL: ${KEYCLOAK_URL}"
# Replace placeholder with actual NEXTCLOUD_URL
sed -i.bak "s|http://nextcloud\\.local|${NEXTCLOUD_URL//./\\.}|g" "$KEYCLOAK_REALM_CONFIG"
sed -i.bak "s|http://keycloak\\.local|${KEYCLOAK_URL//./\\.}|g" "$KEYCLOAK_REALM_CONFIG"
rm -f "${KEYCLOAK_REALM_CONFIG}.bak"
cat "$KEYCLOAK_REALM_CONFIG"
echo "Realm configuration prepared."
else
echo "Realm configuration file not found: $KEYCLOAK_REALM_CONFIG"
fi
exec /opt/keycloak/bin/kc.sh "$@"
+1 -8
View File
@@ -5,11 +5,4 @@ proxy_read_timeout 3600;
proxy_send_timeout 3600;
proxy_connect_timeout 3600;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-Proto https;
# FIXME: remove this when onlyoffice is fixed https to http proxying
# https://github.com/ONLYOFFICE/DocumentServer/issues/2186
proxy_set_header CloudFront-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
-11
View File
@@ -1,11 +0,0 @@
# VERSION 0.1.0
# Based on https://github.com/JanNash/docker_noop
FROM alpine:latest AS builder
COPY noop/noop.c /
RUN apk add --no-cache gcc musl-dev && gcc -static -o /noop /noop.c
FROM scratch
COPY --from=builder /noop /noop
CMD ["/noop"]
-5
View File
@@ -1,5 +0,0 @@
#include <stdlib.h>
int main() {
exit(0);
}
+22 -29
View File
@@ -11,6 +11,7 @@ RUN install-php-extensions \
exif \
gd \
gmp \
imagick \
intl \
ldap \
memcached \
@@ -29,37 +30,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +64,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +86,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
+23 -29
View File
@@ -11,6 +11,8 @@ RUN install-php-extensions \
exif \
gd \
gmp \
# waiting for https://github.com/mlocati/docker-php-extension-installer/pull/811
# imagick \
intl \
ldap \
memcached \
@@ -29,37 +31,22 @@ 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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
git curl vim 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/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /usr/local/bin/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 node \
&& nvm alias default node \
&& nvm cache clear
&& nvm install 14 && nvm install 16 && 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
@@ -78,7 +65,14 @@ 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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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
@@ -93,16 +87,16 @@ 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 SQL sqlite
ENV NEXTCLOUD_AUTOINSTALL YES
ENV WITH_REDIS NO
ENV WEBROOT=/var/www/html
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/redis.config.php configs/apcu.config.php /root/
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/
-108
View File
@@ -1,108 +0,0 @@
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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
RUN wget -O /usr/local/bin/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /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 node \
&& nvm alias default node \
&& nvm cache clear
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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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/redis.config.php configs/apcu.config.php /root/
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
-108
View File
@@ -1,108 +0,0 @@
FROM php:8.5-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-tiny \
nano \
sudo \
cron \
smbclient \
iproute2 \
lnav \
wget \
iputils-ping \
gnupg2 \
jq \
ripgrep \
rsync \
&& rm -rf /var/lib/apt/lists/*
# Install PHPUnit
RUN wget -O /usr/local/bin/phpunit11 https://phar.phpunit.de/phpunit-11.phar \
&& chmod +x /usr/local/bin/phpunit11 \
&& wget -O /usr/local/bin/phpunit12 https://phar.phpunit.de/phpunit-12.phar \
&& chmod +x /usr/local/bin/phpunit12 \
&& ln -s /usr/local/bin/phpunit11 /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 node \
&& nvm alias default node \
&& nvm cache clear
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 mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled
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/redis.config.php configs/apcu.config.php /root/
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
+1 -5
View File
@@ -1,10 +1,6 @@
FROM alpine
RUN apk add curl jq \
&& latest_tag=$(curl -Ls https://api.github.com/repos/nextcloud/notify_push/releases/latest | jq -r '.tag_name') \
&& wget https://github.com/nextcloud/notify_push/releases/download/${latest_tag}/notify_push-`uname -m`-unknown-linux-musl -O /notify_push \
&& chmod +x /notify_push \
&& /notify_push --version
RUN wget https://github.com/nextcloud/notify_push/releases/download/v0.6.3/notify_push-`uname -m`-unknown-linux-musl -O /notify_push && chmod +x /notify_push && /notify_push --version
EXPOSE 7867
+6 -9
View File
@@ -13,14 +13,11 @@ 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/juliusknorr/nextcloud-docker-dev
git clone https://github.com/juliushaertl/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.
@@ -32,7 +29,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://juliusknorr.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://juliushaertl.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:
@@ -59,23 +56,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/juliusknorr/nextcloud-dev-php80:latest
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:
```bash
docker run --rm -p 8080:80 -v ~/path/to/appid:/var/www/html/apps-extra/appid ghcr.io/juliusknorr/nextcloud-dev-php80:latest
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.
```bash
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliusknorr/nextcloud-dev-php80:latest
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:
```bash
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
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
```
-69
View File
@@ -1,69 +0,0 @@
# 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,8 +9,6 @@ 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/juliusknorr/nextcloud-dev-php80:latest
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:
@@ -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/juliusknorr/nextcloud-dev-php81:latest
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.
```bash
docker run --rm -p 8080:80 -e SERVER_BRANCH=v32.0.1 ghcr.io/juliusknorr/nextcloud-dev-php81:latest
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:
```bash
docker run --rm -p 8080:80 -e SERVER_BRANCH=v32.0.1 -v /tmp/server:/var/www/html ghcr.io/juliusknorr/nextcloud-dev-php81:latest
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
```
-19
View File
@@ -1,19 +0,0 @@
# 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://juliusknorr.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://juliushaertl.github.io/nextcloud-docker-dev/basics/getting-started/) or the [Nextcloud developer tutorial](https://nextcloud.com/developer/) to get started.
-87
View File
@@ -1,87 +0,0 @@
# 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.
+1 -10
View File
@@ -9,11 +9,10 @@ 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 (except oracle):
All databases use the following credentials by default:
- Root password: `nextcloud`
- Username: `nextcloud`
@@ -73,11 +72,3 @@ 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/juliusknorr/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/juliushaertl/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,28 +0,0 @@
# Notify Push service
Prepare your setup:
* Setup your server with https.
* Install `notify_push` app.
* Start `push` alongside the other services:
```
docker compose up nextcloud proxy push
```
Configure `notify_push` on the nextcloud instance:
* Configure the `notify_push` url:
```
./occ notify_push:setup http://push:7867/push
```
Once `notify_push:setup` finishes you can test the setup:
```bash
./occ notify_push:self-test
```
## Fixing problems:
If the version does not match:
* Alter `docker/push/Dockerfile`.
* Rebuild the image (`docker build .`).
* Replace the push image in `docker-compose.yml`.
* Tear down and restart the push service.
+3 -81
View File
@@ -1,93 +1,15 @@
# S3 / Object storage
S3-compatible object storage can be easily tested with the included containers. Two options are available:
- **rustfs** (recommended) - A fast, lightweight S3-compatible object storage server written in Rust
- **minio** - Abandoned S3-compatible object storage server (open-source version moved to maintenance-only mode with stripped-down UI)
## rustfs (Recommended)
rustfs is the preferred option for development and testing due to its performance and simplicity.
### Starting rustfs
Start the container using the following command:
```bash
docker compose up -d rustfs
```
### Primary object storage
Primary object storage can be enabled by setting the `PRIMARY=rustfs` environment variable either in your `.env` file or in `docker-compose.yml` for individual containers.
```bash
PRIMARY=rustfs docker compose up nextcloud rustfs
```
### 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: `rustfs`
- Port: `9000`
- Enable SSL: `No`
- Enable Path Style: `Yes`
- Legacy (v2) Authentication: `No`
- Access Key: `nextcloud`
- Secret Key: `nextcloud`
### Accessing rustfs console
rustfs can be accessed via the browser at <http://rustfs.local> with the following credentials:
- Username: `nextcloud`
- Password: `nextcloud`
## Minio (Alternative)
Minio is a more feature-rich alternative with additional management capabilities. However, critics often point to recent controversial changes, including shifting to a maintenance-only mode for the open-source version and stripping down the UI. For these reasons, rustfs is now the recommended choice for most development workflows.
### Starting Minio
Start the container using the following command:
```bash
docker compose up -d minio
```
### Primary object storage
## 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.
```bash
PRIMARY=minio docker compose up nextcloud minio
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
## Using mc command line
This can be useful for admin operations like setting a bucket quota on the `nc-external` bucket name:
+5 -14
View File
@@ -4,20 +4,11 @@
## [Keycloak](https://www.keycloak.org/)
- Keycloak is using LDAP as a user backend (make sure the LDAP container is also running)
- If you have ssl enabled please modify the example realm config accordingly in `docker/configs/keycloak/Example-realm.json`
- `occ user_oidc:provider Keycloak -c nextcloud -s 09e3c268-d8bc-42f1-b7c6-74d307ef5fde -d http://keycloak.local/auth/realms/Example/.well-known/openid-configuration`
- <http://keycloak.local/auth/realms/Example/.well-known/openid-configuration>
- `occ user_oidc:provider Keycloak -c nextcloud -s 09e3c268-d8bc-42f1-b7c6-74d307ef5fde -d http://keycloak.dev.local/auth/realms/Example/.well-known/openid-configuration`
- <http://keycloak.dev.local/auth/realms/Example/.well-known/openid-configuration>
- nextcloud
- 09e3c268-d8bc-42f1-b7c6-74d307ef5fde
## Authentik
```
docker compose up -d proxy nextcloud authentik
```
The server will be available on [http://authentik.local:9000](http://authentik.local:9000) and you can follow [authentik documentation](https://integrations.goauthentik.io/chat-communication-collaboration/nextcloud/) to understand how to configure Nextcloud with SAML (but also OIDC and LDAP).
## SAML
```
@@ -25,9 +16,9 @@ docker compose up -d proxy nextcloud saml
```
- uid mapping: `urn:oid:0.9.2342.19200300.100.1.1`
- idp entity id: `https://sso.local/simplesaml/saml2/idp/metadata.php`
- Single Sign-On (SSO) service url: `https://sso.local/simplesaml/saml2/idp/SSOService.php`
- single log out service url: `https://sso.local/simplesaml/saml2/idp/SingleLogoutService.php`
- idp entity id: `https://sso.local.dev.bitgrid.net/simplesaml/saml2/idp/metadata.php`
- Single Sign-On (SSO) service url: `https://sso.local.dev.bitgrid.net/simplesaml/saml2/idp/SSOService.php`
- single log out service url: `https://sso.local.dev.bitgrid.net/simplesaml/saml2/idp/SingleLogoutService.php`
- use certificate from `docker/configs/var-simplesamlphp/cert/example.org.crt`
```
+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 recording server (`http://talk-recording.local` with shared secret `6789`)
- Go to the admin settings of talk and add the signaling 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
```
-21
View File
@@ -24,9 +24,6 @@ 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
@@ -52,21 +49,3 @@ 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
# Docker socket location, use it when you run rootless Docker
# Replace "1000" with the uid used by your Docker engine (default $(id -u))
# DOCKER_SOCKET=/run/user/1000/docker.sock
# 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 -4
View File
@@ -24,10 +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://${CONTAINER}${DOMAIN_SUFFIX}/"
occ config:app:set onlyoffice StorageUrl --value="http://nextcloud/"
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 supervisorctl start ds:example
docker_compose exec onlyoffice /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'
+2 -2
View File
@@ -7,13 +7,13 @@ test.beforeEach(async ({ page }) => {
test.describe('New Todo', () => {
test('see the nextcloud login page', async ({ page }) => {
await expect(page).toHaveTitle('Login Nextcloud');
await expect(page).toHaveTitle('Login Nextcloud');
});
test('login to nextcloud as admin', async ({ page }) => {
await page.fill('#user', 'admin');
await page.fill('#password', 'admin');
await page.getByRole('button', { name: 'Log in', exact: true }).click();
await page.getByRole('button', { name: 'Log in' }).click();
await page.goto('http://nextcloud.local/index.php/apps/files');
});
});
+24 -30
View File
@@ -9,34 +9,32 @@
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
"@playwright/test": "^1.52.0",
"@types/node": "^22.15.30"
"@playwright/test": "^1.40.1",
"@types/node": "^20.10.2"
}
},
"node_modules/@playwright/test": {
"version": "1.56.1",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz",
"integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==",
"version": "1.40.1",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.40.1.tgz",
"integrity": "sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"playwright": "1.56.1"
"playwright": "1.40.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=18"
"node": ">=16"
}
},
"node_modules/@types/node": {
"version": "22.15.30",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz",
"integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==",
"version": "20.10.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz",
"integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
"undici-types": "~5.26.4"
}
},
"node_modules/fsevents": {
@@ -45,7 +43,6 @@
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -55,43 +52,40 @@
}
},
"node_modules/playwright": {
"version": "1.56.1",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz",
"integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==",
"version": "1.40.1",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.1.tgz",
"integrity": "sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"playwright-core": "1.56.1"
"playwright-core": "1.40.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=18"
"node": ">=16"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
"version": "1.56.1",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz",
"integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==",
"version": "1.40.1",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz",
"integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=18"
"node": ">=16"
}
},
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"dev": true,
"license": "MIT"
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
}
}
}
+2 -2
View File
@@ -8,7 +8,7 @@
"author": "",
"license": "ISC",
"devDependencies": {
"@playwright/test": "^1.52.0",
"@types/node": "^22.15.30"
"@playwright/test": "^1.40.1",
"@types/node": "^20.10.2"
}
}