Compare commits
265 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d6b30a09cd | |||
| 0ea040a0b8 | |||
| 9ae50462bb | |||
| 18e63accec | |||
| 845e87e1f7 | |||
| 40bfbf83c4 | |||
| b8fbafdc5e | |||
| d8d7a068c2 | |||
| 66d84c14bf | |||
| 1ab0089ba8 | |||
| 12c7107e8c | |||
| 55aa6d8fc0 | |||
| c11f47354c | |||
| 2c60e958d3 | |||
| 9ef1ca07ba | |||
| 7dee65d2e4 | |||
| 5c5c8300dd | |||
| 86a9a32e11 | |||
| 756bf8314c | |||
| 1f7090c292 | |||
| 84401c2d6e | |||
| b067fd3f40 | |||
| 1219680197 | |||
| e96c597c91 | |||
| caacf6aeaa | |||
| f88176e48e | |||
| 9db91ac472 | |||
| 56b1700d85 | |||
| b1a80cf985 | |||
| 172ba459db | |||
| 9f54e05342 | |||
| f871df614d | |||
| 7a4b323fdb | |||
| 299f3aebe4 | |||
| c01c76eed3 | |||
| 1ffe09b420 | |||
| bca84afd66 | |||
| 21e56efaac | |||
| d513e7936b | |||
| 149b7def11 | |||
| e3a63887c7 | |||
| 2f18f69beb | |||
| b3cff13b42 | |||
| 9b4e9d9547 | |||
| 4d83d66a53 | |||
| 1e11d72e35 | |||
| 505105fe17 | |||
| daa6cafde4 | |||
| d304094cea | |||
| 33aa7f815b | |||
| 6f9d0dd700 | |||
| 41a4032401 | |||
| d62847c04e | |||
| 1cc63c3f5b | |||
| 55a2ce4c10 | |||
| 1bce780ebd | |||
| ec093790ad | |||
| fea393d7ed | |||
| 9ccc3f7d23 | |||
| ef7d3212f5 | |||
| 00c8d0a054 | |||
| 01604663b3 | |||
| 1689cc8ee2 | |||
| c8c016ee50 | |||
| ec21e9270f | |||
| 1c8210f139 | |||
| 61fc9e8826 | |||
| 5a368f953d | |||
| cb4d74e48e | |||
| cf2bbfd4cc | |||
| 5eb6d2cf00 | |||
| f538a7c7c8 | |||
| 940602d00a | |||
| 8350dfb59d | |||
| 5f4e6ade15 | |||
| 155d8b6221 | |||
| 4d17b40c7a | |||
| 410e9099e1 | |||
| ba7f0cb19e | |||
| 95f68cc925 | |||
| 996a1834a1 | |||
| f074c417ea | |||
| 4a4092d0c4 | |||
| c03d89a3b1 | |||
| c09b1192d6 | |||
| f177dd40b1 | |||
| d63e8b8fae | |||
| ab206d6923 | |||
| 172b158844 | |||
| cfc188ff54 | |||
| 4378ded170 | |||
| c9e3f1efdd | |||
| 5c639ddec5 | |||
| 54975688f7 | |||
| d63dd0b145 | |||
| a862f0e51c | |||
| d44394be34 | |||
| c21382a82a | |||
| 08eb53dbc2 | |||
| a9650d3216 | |||
| c4f866deac | |||
| ee4cc0aa59 | |||
| 2d51455cc3 | |||
| 59b07d4b1e | |||
| e5fa3217cb | |||
| 42acbd98c2 | |||
| 37b095daff | |||
| f5b191d9ba | |||
| ec2a44de56 | |||
| fad0e5748b | |||
| df3f1e51c4 | |||
| e758d203db | |||
| d35f147bfb | |||
| 11200b9de2 | |||
| c9a4b75176 | |||
| 7f24768f15 | |||
| c21262fc5c | |||
| 999c1b551f | |||
| 7d1ccace93 | |||
| 366f82a611 | |||
| 8785ae0ed7 | |||
| fc758fabf7 | |||
| e8d432051f | |||
| d8c47913f5 | |||
| 3d78df390a | |||
| 9f0cf3ad66 | |||
| 34a7b00bb3 | |||
| caa1161694 | |||
| 6b655403a1 | |||
| 131dc9738f | |||
| cd635c9732 | |||
| e085c40f94 | |||
| ef0c147a25 | |||
| c61c7ab837 | |||
| 038f3519b8 | |||
| 51751c8b6b | |||
| 254cf304ca | |||
| 6f300e74f3 | |||
| 0122716e54 | |||
| 3cacf0befe | |||
| 6502a6e3b8 | |||
| 1871397b0c | |||
| be48a91b50 | |||
| 82fdcb351c | |||
| 54e7aae15a | |||
| 808ef35929 | |||
| e2ae8ad01b | |||
| 8f446231eb | |||
| bcd566d805 | |||
| 0dbcaa0e20 | |||
| 56fb426903 | |||
| ec1544b392 | |||
| 2251203a0c | |||
| 3be84eff8f | |||
| 89a30bfbda | |||
| ffe72e4873 | |||
| f652195a6c | |||
| af430f79eb | |||
| f15e915837 | |||
| f8bb5ea0df | |||
| ee70425cfb | |||
| 189393d3b8 | |||
| f09f569592 | |||
| 488435aee6 | |||
| 137e491049 | |||
| 5a299cb432 | |||
| 3e5d023c1b | |||
| 84914ee9ae | |||
| b1fe0e53c8 | |||
| 579008e919 | |||
| ba69aa2268 | |||
| e8a91bf603 | |||
| d77c283dcd | |||
| 3810418af8 | |||
| 7d9ea6994b | |||
| 764390d168 | |||
| 77e90d418c | |||
| 44b2b62789 | |||
| 4437d58231 | |||
| 12d15a8c41 | |||
| 627b7e4dfe | |||
| 80141c7ac7 | |||
| 80a19a0b1c | |||
| e2c01ab275 | |||
| 8930912461 | |||
| 95938d87f3 | |||
| 17abcb56d2 | |||
| 30998908af | |||
| b241353f74 | |||
| 485ae2b8a4 | |||
| 602e286ad4 | |||
| 217a0bb636 | |||
| e96ae06317 | |||
| 105dc2f613 | |||
| a615f58468 | |||
| b156028604 | |||
| 733b22111e | |||
| 79b3d2403a | |||
| 2417fd36b5 | |||
| 8b49829e0d | |||
| 41daeeb1ef | |||
| d170773a05 | |||
| 97b80b09b8 | |||
| 6171983070 | |||
| 022a6c9954 | |||
| b380ed7ac3 | |||
| a36da31f59 | |||
| de3e7b6503 | |||
| 44522fd7ca | |||
| b36979b56a | |||
| 23d030d135 | |||
| 07d9832298 | |||
| eb15df4825 | |||
| 8a7ad87310 | |||
| 39c79b57db | |||
| 65bb9a61d2 | |||
| 7f1c01987c | |||
| c5e6b12b05 | |||
| 7ef1e7b62a | |||
| 0762b51b6d | |||
| 3bba63f4ca | |||
| ef51f1cd77 | |||
| 15a9daa805 | |||
| 14ffe05314 | |||
| 926aef4c06 | |||
| ce5e421300 | |||
| fcbe3f7e41 | |||
| d2f4130c20 | |||
| 230c83304b | |||
| 1216d05538 | |||
| f5f473175a | |||
| 96027e74cc | |||
| 2162a7360b | |||
| 4fbc715a56 | |||
| 1ad9ec39e3 | |||
| c4dbfc5403 | |||
| 4e6a1a9451 | |||
| eeda7556b6 | |||
| 00e6cae2c7 | |||
| b9db61565e | |||
| be210587be | |||
| 0c22fa4bc8 | |||
| cf423c8202 | |||
| 6b2f1edacd | |||
| 3d2a29876f | |||
| 75a673c6d3 | |||
| 2249bc44d2 | |||
| d867e87a90 | |||
| 9d03694011 | |||
| f610cf299b | |||
| 4fe0a7c4ed | |||
| 9146fe4c33 | |||
| 23d3e81b3c | |||
| 74017396e4 | |||
| 24687aee69 | |||
| ba215d2b7c | |||
| dad9f33359 | |||
| c11df7ec3b | |||
| 24e0fe8c6b | |||
| 2cec861c04 | |||
| 360460d1dd | |||
| abfabbf9fa | |||
| f0615d4ada | |||
| ca6cd7ab47 | |||
| 0a9394970a |
@@ -0,0 +1,11 @@
|
||||
version: 2
|
||||
updates:
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/docker/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
@@ -7,73 +7,91 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Build image
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'juliushaertl/nextcloud-docker-dev'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
container:
|
||||
- php83
|
||||
- php82
|
||||
- php81
|
||||
- php80
|
||||
- php74
|
||||
- php73
|
||||
- php72
|
||||
- php71
|
||||
- push
|
||||
- saml
|
||||
- nginx
|
||||
- elasticsearch
|
||||
- mailhog
|
||||
- ldap
|
||||
- lookupserver
|
||||
- smb
|
||||
- codedev
|
||||
- code
|
||||
- talk-janus
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
uses: docker/setup-qemu-action@v3
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ matrix.container }}-buildx-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ matrix.container }}-buildx-
|
||||
- name: Log in to GitHub Container Registry
|
||||
uses: docker/login-action@v1
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Available platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
- name: Set dockerfile path
|
||||
id: dockerfile
|
||||
run: |
|
||||
NAME="${{ matrix.container }}"
|
||||
DOCKERFILE=$([[ -f "docker/$NAME/Dockerfile" ]] && echo "docker/$NAME/Dockerfile" || echo "docker/Dockerfile.$NAME")
|
||||
echo "DOCKERFILE=$DOCKERFILE" >> $GITHUB_OUTPUT
|
||||
- name: Build container image
|
||||
uses: docker/build-push-action@v2
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
push: false
|
||||
context: docker/
|
||||
platforms: linux/amd64,linux/arm64
|
||||
file: docker/Dockerfile.${{ matrix.container }}
|
||||
file: ${{ steps.dockerfile.outputs.DOCKERFILE }}
|
||||
tags: |
|
||||
ghcr.io/juliushaertl/nextcloud-dev-${{ matrix.container }}
|
||||
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: Push container image
|
||||
uses: docker/build-push-action@v2
|
||||
if: github.ref == 'refs/heads/master'
|
||||
uses: docker/build-push-action@v5
|
||||
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
||||
with:
|
||||
push: true
|
||||
context: docker/
|
||||
platforms: linux/amd64,linux/arm64
|
||||
file: docker/Dockerfile.${{ matrix.container }}
|
||||
file: ${{ steps.dockerfile.outputs.DOCKERFILE }}
|
||||
tags: |
|
||||
ghcr.io/juliushaertl/nextcloud-dev-${{ matrix.container }}
|
||||
ghcr.io/juliushaertl/nextcloud-dev-${{ matrix.container }}:${{ github.event_name == 'release' && 'latest' || 'nightly' }}
|
||||
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
|
||||
|
||||
@@ -11,6 +11,6 @@ jobs:
|
||||
name: Shellcheck
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run ShellCheck
|
||||
uses: ludeeus/action-shellcheck@master
|
||||
|
||||
@@ -1,25 +1,44 @@
|
||||
SHELL := /bin/bash
|
||||
|
||||
.PHONY: images
|
||||
.PHONY: images docker-build pull-all
|
||||
|
||||
.ONESHELL:
|
||||
images:
|
||||
images: docker/*/Dockerfile docker/Dockerfile.*
|
||||
|
||||
.ONESHELL:
|
||||
pull-all:
|
||||
for file in $$(find docker/ -maxdepth 1 -type f -iname 'Dockerfile.*'); do \
|
||||
NAME=$$(echo $$file | sed 's/^.*\.//'); echo "=> Building image $$NAME"; \
|
||||
(cd docker && docker build -t ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest -f Dockerfile.$$NAME .)
|
||||
NAME=$$(echo $$file | sed 's/^.*\.//'); \
|
||||
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/juliushaertl/nextcloud-dev-$${NAME}"; \
|
||||
done
|
||||
|
||||
.PHONY: pull
|
||||
.ONESHELL:
|
||||
pull:
|
||||
for file in $$(find docker/ -maxdepth 1 -type f -iname 'Dockerfile.*'); do \
|
||||
NAME=$$(echo $$file | sed 's/^.*\.//'); echo "=> Pulling image $$NAME"; docker pull "ghcr.io/juliushaertl/nextcloud-dev-$${NAME}"; \
|
||||
done
|
||||
pull-installed:
|
||||
docker image ls | grep juliushaertl/nextcloud-dev | cut -f 1 -d " "
|
||||
docker image ls | grep juliushaertl/nextcloud-dev | cut -f 1 -d " " | xargs -L 1 docker pull
|
||||
|
||||
# Empty target to always build
|
||||
docker-build:
|
||||
|
||||
docker/%/Dockerfile: docker-build
|
||||
NAME=$$(basename $$(dirname $@)); \
|
||||
echo "=> Building dockerfile" $@ as ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest; \
|
||||
(cd docker && docker build -t ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest -f $$NAME/Dockerfile .)
|
||||
|
||||
docker/Dockerfile.%: docker-build
|
||||
NAME=$$(echo $$(basename $@) | sed 's/^.*\.//'); \
|
||||
echo "=> Building dockerfile" $@ as ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest; \
|
||||
(cd docker && docker build -t ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest -f Dockerfile.$$NAME .)
|
||||
|
||||
check: dockerfilelint shellcheck
|
||||
|
||||
.ONESHELL:
|
||||
dockerfilelint:
|
||||
for file in $$(find docker/ -type f -iname 'Dockerfile.*' -maxdepth 1); do dockerfilelint $$file; done;
|
||||
for file in $$(find docker -type f -iname 'Dockerfile' -maxdepth 2); do dockerfilelint $$file; done;
|
||||
|
||||
.ONESHELL:
|
||||
shellcheck:
|
||||
@@ -28,9 +47,11 @@ shellcheck:
|
||||
|
||||
.ONESHELL:
|
||||
template-apply:
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.1/php:7.1/' > docker/Dockerfile.php71
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.1/php:7.2/' > docker/Dockerfile.php72
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.1/php:7.3/' > docker/Dockerfile.php73
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.1/php:7.4/' > docker/Dockerfile.php74
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.1/php:8.0/' > docker/Dockerfile.php80
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.1/php:8.1/' > docker/Dockerfile.php81
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:7.1/' > docker/Dockerfile.php71
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:7.2/' > docker/Dockerfile.php72
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:7.3/' > docker/Dockerfile.php73
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:7.4/' > docker/Dockerfile.php74
|
||||
cat docker/Dockerfile.php.template | sed 's/php:8.2/php:8.0/' > docker/Dockerfile.php80
|
||||
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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# nextcloud-dev-docker-compose
|
||||
# Nextcloud development environment on Docker Compose
|
||||
|
||||
Nextcloud development environment using docker-compose
|
||||
|
||||
@@ -15,10 +15,45 @@ Features
|
||||
- 🚀 Blackfire
|
||||
- 📄 Collabora
|
||||
|
||||
## Getting started
|
||||
|
||||
To get the setup running:
|
||||
## Standalone containers
|
||||
|
||||
::: tip
|
||||
This is a very simple way but doesn't cover all features. If you are looking for a fully featured setup you may skip to the next section
|
||||
:::
|
||||
|
||||
There is a standalone version of the Nextcloud containers available that can be used to run Nextcloud without the other services. This is useful if you are just wanting to get started with app development against a specific server version, or to just have a quick way to develop, test or debug.
|
||||
|
||||
These containers support automatic fetching of the server source code and use SQLite as the database. The server source code is fetched from the official Nextcloud server repository and the version can be specified using the `NEXTCLOUD_VERSION` environment variable. The default version is `master`.
|
||||
|
||||
Running the containers does not need this repository to be cloned.
|
||||
|
||||
Example for running a Nextcloud server from the master branch of server:
|
||||
|
||||
```bash
|
||||
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/juliushaertl/nextcloud-dev-php80:latest
|
||||
```
|
||||
|
||||
The `SERVER_BRANCH` environment variable can be used to run different versions of Nextcloud by specificing either a server branch or git tag.
|
||||
|
||||
```bash
|
||||
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
|
||||
```
|
||||
|
||||
You can also mount your local server source code into the container to run a local version of Nextcloud:
|
||||
|
||||
```bash
|
||||
docker run --rm -p 8080:80 -e SERVER_BRANCH=v24.0.1 -v /tmp/server:/var/www/html ghcr.io/juliushaertl/nextcloud-dev-php80:latest
|
||||
```
|
||||
## Simple master setup
|
||||
|
||||
The easiest way to get the setup running the ```master``` branch is by running the ```bootstrap.sh``` script:
|
||||
```
|
||||
git clone https://github.com/juliushaertl/nextcloud-docker-dev
|
||||
cd nextcloud-docker-dev
|
||||
@@ -26,23 +61,58 @@ cd nextcloud-docker-dev
|
||||
sudo sh -c "echo '127.0.0.1 nextcloud.local' >> /etc/hosts"
|
||||
docker-compose up nextcloud proxy
|
||||
```
|
||||
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:
|
||||
|
||||
## Manual setup
|
||||
cd workspace/server
|
||||
git fetch --unshallow
|
||||
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
|
||||
git fetch origin
|
||||
|
||||
### Nextcloud Code
|
||||
This may take some time depending on your internet connection speed.
|
||||
|
||||
The Nextcloud code base needs to be available including the `3rdparty` submodule. To clone it from github run:
|
||||
## Additional apps
|
||||
|
||||
To install additional apps add them to the bootstrap command:
|
||||
|
||||
```bash
|
||||
./bootstrap.sh circles contacts
|
||||
```
|
||||
|
||||
You can also do this after the initial bootstrap.
|
||||
In this case it will clone the apps but not update the `.env` file.
|
||||
If you want your apps to be installed in the Nextcloud instance by default
|
||||
add them to the `NEXTCLOUD_AUTOINSTALL_APPS` variable in `.env`.
|
||||
|
||||
## Complex setup
|
||||
|
||||
In order to achieve a more complex dev environment with different branches of the server, follow the manual steps:
|
||||
|
||||
##### 1. Create a workspace folder and clone the server repository
|
||||
|
||||
```
|
||||
mkdir workspace && cd workspace
|
||||
git clone https://github.com/nextcloud/server.git
|
||||
```
|
||||
|
||||
##### 2. The Nextcloud code base needs to be available including the [`3rdparty`](https://github.com/nextcloud/3rdparty) submodule:
|
||||
|
||||
```
|
||||
cd server
|
||||
git submodule update --init
|
||||
pwd
|
||||
```
|
||||
|
||||
The last command prints the path to the Nextcloud server directory.
|
||||
Use it for setting the `REPO_PATH_SERVER` in the next step.
|
||||
|
||||
### Environment variables
|
||||
Since the viewer app is kind of required for Nextcloud server, you should also clone the viewer app:
|
||||
|
||||
```
|
||||
cd apps
|
||||
git clone https://github.com/nextcloud/viewer.git
|
||||
```
|
||||
|
||||
##### 3. Environment variables
|
||||
|
||||
A `.env` file should be created in the repository root, to keep configuration default on the dev setup:
|
||||
|
||||
@@ -52,60 +122,90 @@ cp example.env .env
|
||||
|
||||
Replace `REPO_PATH_SERVER` with the path from above.
|
||||
|
||||
### Setting the PHP version to be used
|
||||
|
||||
The Nextcloud instance is setup to run with PHP 7.2 by default.
|
||||
If you wish to use a different version of PHP, set the `PHP_VERSION` `.env` variable.
|
||||
|
||||
The variable supports the following values:
|
||||
|
||||
1. PHP 7.1: `71`
|
||||
1. PHP 7.2: `72`
|
||||
1. PHP 7.3: `73`
|
||||
1. PHP 7.4: `74`
|
||||
1. PHP 8.0: `80`
|
||||
|
||||
### Starting the containers
|
||||
|
||||
- Start full setup: `docker-compose up`
|
||||
- Minimum: `docker-compose up proxy nextcloud` (nextcloud mysql redis mailhog)
|
||||
|
||||
### Running stable versions
|
||||
##### 4. Running different stable versions
|
||||
|
||||
The docker-compose file provides individual containers for stable Nextcloud releases. In order to run those you will need a checkout of the stable version server branch to your workspace directory. Using [git worktree](https://blog.juliushaertl.de/index.php/2018/01/24/how-to-checkout-multiple-git-branches-at-the-same-time/) makes it easy to have different branches checked out in parallel in separate directories.
|
||||
|
||||
Note that for performance reasons the server repository might have been cloned with --depth=1 by default. To get the full history it is highly recommended to run:
|
||||
|
||||
cd workspace/server
|
||||
git fetch --unshallow
|
||||
|
||||
This may take some time depending on your internet connection speed.
|
||||
|
||||
```
|
||||
cd workspace/server
|
||||
git worktree add ../stable23 stable23
|
||||
```
|
||||
As in the `server` folder, the `3rdparty` submodule is needed:
|
||||
```
|
||||
cd ../stable23
|
||||
git submodule update --init
|
||||
```
|
||||
|
||||
After adding the worktree you can start the stable container using `docker-compose up -d stable23`. You can then add stable23.local to your `/etc/hosts` file to access it.
|
||||
The same can be done for `stable24`, `stable25`... and so on.
|
||||
|
||||
Git worktrees can also be used to have a checkout of an apps stable brach within the server stable directory.
|
||||
Git worktrees can also be used to have a checkout of an apps stable branch within the server stable directory.
|
||||
|
||||
```
|
||||
cd workspace/server/apps-extra/text
|
||||
git worktree add ../../../stable23/apps-extra/text stable23
|
||||
```
|
||||
|
||||
### Running into errors
|
||||
The viewer app should also be added to the stable worktrees:
|
||||
|
||||
If your setup isn't working and you can not figure out the reason why, running
|
||||
```
|
||||
cd workspace/server/apps/viewer
|
||||
git worktree add ../../../stable25/apps/viewer stable25
|
||||
```
|
||||
|
||||
- Use `apps/` for required apps (like `viewer`)
|
||||
- Use `apps-extra/` for apps that support only one specific nextcloud version (like `talk`)
|
||||
- Use `apps-shared/` for apps that support multiple nextcloud versions as this directory is shared between all containers
|
||||
|
||||
##### 5. Editing `/etc/hosts`
|
||||
|
||||
You can then add `stable23.local`, `stable24.local` and so on to your `/etc/hosts` file to access it.
|
||||
```
|
||||
sudo sh -c "echo '127.0.0.1 nextcloud.local' >> /etc/hosts"
|
||||
```
|
||||
|
||||
##### 6. Setting the PHP version to be used
|
||||
|
||||
The Nextcloud instance is setup to run with PHP 7.2 by default.
|
||||
If you wish to use a different version of PHP, set the `PHP_VERSION` `.env` variable.
|
||||
|
||||
The variable supports the following values:
|
||||
|
||||
- PHP 7.1: `71`
|
||||
- PHP 7.2: `72`
|
||||
- PHP 7.3: `73`
|
||||
- PHP 7.4: `74`
|
||||
- PHP 8.0: `80`
|
||||
- PHP 8.1: `81`
|
||||
|
||||
##### 7. Starting the containers
|
||||
|
||||
- Minimum to run `master`: `docker-compose up proxy nextcloud` (nextcloud mysql redis mailhog)
|
||||
- Start stable branches: `docker-compose up stable23 proxy`
|
||||
- Start full setup: `docker-compose up`
|
||||
|
||||
##### 8. Switching between stable versions and master
|
||||
|
||||
Remove all relevant containers and volumes:
|
||||
`docker-compose down -v`
|
||||
|
||||
Start master or the branch you want to run:
|
||||
`docker-compose up stable23 proxy`
|
||||
|
||||
## Running into errors
|
||||
|
||||
- If your setup isn't working and you can not figure out the reason why, running
|
||||
`docker-compose down -v` will remove the relevant containers and volumes,
|
||||
allowing you to run `docker-compose up` again from a clean slate.
|
||||
|
||||
- Sometimes it might help: `docker pull ghcr.io/juliushaertl/nextcloud-dev-php74:latest`
|
||||
|
||||
- In extreme cases, clean everything: `docker system prune --all`
|
||||
|
||||
- If you start your stable containers (not the master) and it wants to install Nextcloud even if it is not the first start, you may have removed the configuration with the last `docker-compose down` command. Try to use `docker-compose stop` instead or give the stable setup named values yourself.
|
||||
|
||||
## 🔒 Reverse Proxy
|
||||
|
||||
Used for SSL termination. To setup SSL support provide a proper DOMAIN_SUFFIX environment variable and put the certificates to ./data/ssl/ named by the domain name.
|
||||
Used for SSL termination. To setup SSL support provide a proper `DOMAIN_SUFFIX` environment variable and put the certificates to `./data/ssl/` named by the domain name.
|
||||
|
||||
You might need to add the domains to your `/etc/hosts` file:
|
||||
|
||||
@@ -116,47 +216,82 @@ You might need to add the domains to your `/etc/hosts` file:
|
||||
|
||||
This is assuming you have set `DOMAIN_SUFFIX=.local`
|
||||
|
||||
You can generate it through:
|
||||
To update the hosts file automatically you can use the `update-hosts` script:
|
||||
|
||||
```
|
||||
awk -v D=.local '/- [A-z0-9]+\${DOMAIN_SUFFIX}/ {sub("\\$\{DOMAIN_SUFFIX\}", D " 127.0.0.1", $2); print $2}' docker-compose.yml
|
||||
./scripts/update-hosts
|
||||
```
|
||||
|
||||
You can generate selfsigned certificates using:
|
||||
You can generate self-signed certificates using:
|
||||
|
||||
```
|
||||
cd data/ssl
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nextcloud.local.key -out nextcloud.local.crt
|
||||
```
|
||||
|
||||
You can also override the default port used for HTTP and HTTPS bound on the host for the proxy by setting these environment variables in the `.env` file (don't forget to recreate the containers):
|
||||
|
||||
```
|
||||
PROXY_PORT_HTTP=8080
|
||||
PROXY_PORT_HTTPS=4443
|
||||
```
|
||||
|
||||
### dnsmasq to resolve wildcard domains
|
||||
|
||||
Instead of adding the individual container domains to `/etc/hosts` a local dns server like dnsmasq can be used to resolve any domain ending with the configured DOMAIN_SUFFIX in `.env` to localhost.
|
||||
Instead of adding the individual container domains to `/etc/hosts` a local dns server like dnsmasq can be used to resolve any domain ending with the configured `DOMAIN_SUFFIX` in `.env` to localhost.
|
||||
|
||||
For dnsmasq adding the following configuration would be sufficient for `DOMAIN_SUFFIX=.local`:
|
||||
```
|
||||
address=/.local/127.0.0.1
|
||||
```
|
||||
|
||||
To run dnsmasq in a container, you can use the following example:
|
||||
|
||||
```
|
||||
docker run --rm -it \
|
||||
-e DMQ_DHCP_RANGES=" " \
|
||||
-e DMQ_DHCP_DNS=" " \
|
||||
-e DMQ_DHCP_GATEWAY=" " \
|
||||
-e DMQ_DNS_ADDRESS="address=/.local/127.0.0.1" \
|
||||
-p 53:53 \
|
||||
-p 53:53/udp \
|
||||
drpsychick/dnsmasq:latest
|
||||
```
|
||||
|
||||
### Use DNS Service Discovery on MacOS
|
||||
|
||||
You can also use the `dns-sd` tool on MacOS to advertise the container domains on the network. This is especially useful if you try to connect from an iPhone or iPad, since those devices do not allow to edit the `/etc/hosts` file. Use the tool like this:
|
||||
|
||||
```
|
||||
dns-sd -P nextcloud _http._tcp local 80 nextcloud.local 192.168.0.10
|
||||
```
|
||||
|
||||
Be aware that since this is advertised in the local network, it is not recommended to use it in a network where multiple instances could be running. In this case you might want to change the `DOMAIN_SUFFIX` in `.env` to prevent any collision.
|
||||
|
||||
### Use valid certificates trusted by your system
|
||||
|
||||
* Install mkcert https://github.com/FiloSottile/mkcert
|
||||
* Install [mkcert](https://github.com/FiloSottile/mkcert)
|
||||
* Go to `data/ssl`
|
||||
* `mkcert nextcloud.local`
|
||||
|
||||
* `mv nextcloud.local-key.pem nextcloud.local.key`
|
||||
* `mv nextcloud.local.pem nextcloud.local.crt`
|
||||
* `mkcert -cert-file nextcloud.local.crt -key-file nextcloud.local.key nextcloud.local`
|
||||
* `docker-compose restart proxy`
|
||||
|
||||
## ✉ Mail
|
||||
|
||||
Sending/receiving mails can be tested with [mailhog](https://github.com/mailhog/MailHog) which is available on ports 1025 (SMTP).
|
||||
Sending/receiving mail can be tested with [mailhog](https://github.com/mailhog/MailHog) which is available on ports 1025 (SMTP).
|
||||
|
||||
To use the webui, add `127.0.0.1 mail.local` to your `/etc/hosts` and open [mail.local](http://mail.local).
|
||||
|
||||
## 🚀 Blackfire
|
||||
|
||||
Blackfire needs to use a hostname/ip that is resolvable from within the blackfire container. Their free version is [limited to local profiling](https://support.blackfire.io/troubleshooting/hack-edition-users-cannot-profile-non-local-http-applications) so we need to browse Nextcloud though its local docker IP or add the hostname to `/etc/hosts`.
|
||||
Blackfire needs to use a hostname/ip that is resolvable from within the Blackfire container. Their free version is [limited to local profiling](https://support.blackfire.io/troubleshooting/hack-edition-users-cannot-profile-non-local-http-applications) so we need to browse Nextcloud though its local docker IP or add the hostname to `/etc/hosts`.
|
||||
|
||||
By default the PHP module for Blackfire is disabled, but you can enable or disable this through the following script:
|
||||
|
||||
```
|
||||
./scripts/php-mod-config nextcloud blackfire on
|
||||
```
|
||||
|
||||
After that you can use Blackfire through the browser plugin or curl as described below.
|
||||
|
||||
### Using with curl
|
||||
|
||||
@@ -165,6 +300,23 @@ alias blackfire='docker-compose exec -e BLACKFIRE_CLIENT_ID=$BLACKFIRE_CLIENT_ID
|
||||
blackfire curl http://192.168.21.8/
|
||||
```
|
||||
|
||||
## Xdebug
|
||||
|
||||
Xdebug is shipped but disabled by default. It can be turned on by running:
|
||||
|
||||
```
|
||||
./scripts/php-mod-config nextcloud xdebug.mode debug
|
||||
```
|
||||
|
||||
### Debugging cron, occ or other command line scripts
|
||||
|
||||
```
|
||||
docker compose exec nextcloud bash
|
||||
# use this if you have configured path mapping in PHPstorm to match the server name configured
|
||||
export PHP_IDE_CONFIG=serverName=localhost
|
||||
sudo -E -u www-data php -dxdebug.mode=debug -dxdebug.client_host=host.docker.internal -dxdebug.start_with_request=yes -dxdebug.idekey=PHPSTORM occ
|
||||
```
|
||||
|
||||
## 👥 LDAP
|
||||
|
||||
The LDAP sample data is based on https://github.com/rroemhild/docker-test-openldap and extended with randomly generated users/groups. For details see [data/ldap-generator/](https://github.com/juliushaertl/nextcloud-docker-dev/tree/master/data/ldap-generator). LDAP will be configured automatically if the ldap container is available during installation.
|
||||
@@ -179,19 +331,20 @@ docker-compose exec ldap ldapsearch -H 'ldap://localhost' -D "cn=admin,dc=planet
|
||||
|
||||
## Collabora
|
||||
|
||||
- Make sure to have the collabora hostname setup in your /etc/hosts file: `127.0.0.1 collabora.local`
|
||||
- Automatically enable for one of your containers (e.g. the main nextcloud one):
|
||||
- Make sure to have the Collabora hostname setup in your `/etc/hosts` file: `127.0.0.1 collabora.local`
|
||||
- Clone, build and enable the [richdocuments](https://github.com/nextcloud/richdocuments) app
|
||||
- Automatically enable for one of your containers (e.g. the main `nextcloud` one):
|
||||
- Run `./scripts/enable-collabora nextcloud`
|
||||
- Manual setup
|
||||
- Start the Collabora Online server in addition to your other containers `docker-compose up -d collabora`
|
||||
- Make sure you have the richdocuments app cloned to your apps-extra directory and built the frontend code of the app with `npm ci && npm run build`
|
||||
- Make sure you have the [richdocuments app](https://github.com/nextcloud/richdocuments) cloned to your `apps-extra` directory and built the frontend code of the app with `npm ci && npm run build`
|
||||
- Enable the app and configure `collabora.local` in the Collabora settings inside of Nextcloud
|
||||
|
||||
|
||||
## ONLYOFFICE
|
||||
|
||||
- Make sure to have the collabora hostname setup in your /etc/hosts file: `127.0.0.1 onlyoffice.local`
|
||||
- Automatically enable for one of your containers (e.g. the main nextcloud one):
|
||||
- Make sure to have the ONLYOFFICE hostname setup in your `/etc/hosts` file: `127.0.0.1 onlyoffice.local`
|
||||
- Automatically enable for one of your containers (e.g. the main `nextcloud` one):
|
||||
- Run `./scripts/enable-onlyoffice nextcloud`
|
||||
- Manual setup
|
||||
- Start the ONLYOFFICE server in addition to your other containers `docker-compose up -d onlyoffice`
|
||||
@@ -199,14 +352,24 @@ docker-compose exec ldap ldapsearch -H 'ldap://localhost' -D "cn=admin,dc=planet
|
||||
- Enable the app and configure `onlyoffice.local` in the ONLYOFFICE settings inside of Nextcloud
|
||||
|
||||
|
||||
## Talk HPB
|
||||
|
||||
- Make sure to have the signaling hostname setup in your `/etc/hosts` file: `127.0.0.1 talk-signaling.local`
|
||||
- Automatically enable for one of your containers (e.g. the main `nextcloud` one):
|
||||
- Run `./scripts/enable-talk-hpb.sh nextcloud`
|
||||
- Manual setup
|
||||
- Start the talk signaling server and janus in addition to your other containers `docker-compose up -d talk-signaling talk-janus`
|
||||
- Go to the admin settings of talk and add the signaling server (`http://talk-signaling.local` with shared secret `1234`)
|
||||
|
||||
|
||||
## Antivirus
|
||||
|
||||
```bash
|
||||
docker-compose up -d proxy nextcloud av
|
||||
```
|
||||
|
||||
The clanav antivirus will then be exposed as a deamon with host `clam` and
|
||||
port 3310.
|
||||
The [ClamAV](https://www.clamav.net/) antivirus will then be exposed as a daemon with host `nextav` and
|
||||
port `3310`.
|
||||
|
||||
## SAML
|
||||
|
||||
@@ -216,9 +379,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.dev.bitgrid.net/simplesaml/saml2/idp/metadata.php`
|
||||
- single sign on service url: `https://sso.local.dev.bitgrid.net/simplesaml/saml2/idp/SSOService.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
|
||||
- use certificate from `docker/configs/var-simplesamlphp/cert/example.org.crt`
|
||||
```
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICrDCCAhWgAwIBAgIUNtfnC2jE/rLdxHCs2th3WaYLryAwDQYJKoZIhvcNAQEL
|
||||
@@ -241,9 +404,9 @@ docker-compose up -d proxy nextcloud saml
|
||||
- cn `urn:oid:2.5.4.3`
|
||||
- email `urn:oid:0.9.2342.19200300.100.1.3`
|
||||
|
||||
### Environment based SSO
|
||||
### Environment-based SSO
|
||||
|
||||
A simple approach to test environment based SSO with the user_saml app is to use apache basic auth with the following configuration:
|
||||
A simple approach to test environment-based SSO with the `user_saml` app is to use Apache's basic auth with the following configuration:
|
||||
|
||||
```
|
||||
|
||||
@@ -273,15 +436,15 @@ A simple approach to test environment based SSO with the user_saml app is to use
|
||||
</Location>
|
||||
```
|
||||
|
||||
## Fulltextsearch
|
||||
## [Fulltextsearch](https://github.com/nextcloud/fulltextsearch)
|
||||
|
||||
```
|
||||
docker-compose up -d elasticsearch elasticsearch-ui
|
||||
```
|
||||
|
||||
- Address for configuring in Nextcloud: `http://elastic:elastic@elasticsearch:9200`
|
||||
- Adress to access elastic search from outside: `http://elastic:elastic@elasticsearch.local`
|
||||
- Address for accessing the ui: http://elasticsearch-ui.local/
|
||||
- Address to access Elasticsearch from outside: `http://elastic:elastic@elasticsearch.local`
|
||||
- Address for accessing the UI: http://elasticsearch-ui.local/
|
||||
|
||||
`sudo sysctl -w vm.max_map_count=262144`
|
||||
|
||||
@@ -289,10 +452,10 @@ docker-compose up -d elasticsearch elasticsearch-ui
|
||||
|
||||
## 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.
|
||||
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
|
||||
docker-composer up proxy nextcloud minio
|
||||
docker-compose up proxy nextcloud minio
|
||||
```
|
||||
|
||||
## Development
|
||||
@@ -307,15 +470,15 @@ sudo -E -u www-data php -dxdebug.remote_host=192.168.21.1 occ
|
||||
|
||||
### Useful commands
|
||||
|
||||
- Restart apache to reload php configuration without a full container restart: `docker-compose kill -s USR1 nextcloud`
|
||||
- Access to mysql console: `mysql -h $(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nextcloud_database-mysql_1) -P 3306 -u nextcloud -pnextcloud`
|
||||
- Restart Apache to reload php configuration without a full container restart: `docker-compose kill -s USR1 nextcloud`
|
||||
- Access to MySQL console: `mysql -h $(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nextcloud_database-mysql_1) -P 3306 -u nextcloud -pnextcloud`
|
||||
- Run an LDAP search: `ldapsearch -x -H ldap://$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nextcloud_ldap_1) -D "cn=admin,dc=planetexpress,dc=com" -w admin -b "dc=planetexpress,dc=com" -s subtree <filter> <attrs>`
|
||||
|
||||
## Keycloak
|
||||
## [Keycloak](https://www.keycloak.org/)
|
||||
|
||||
- Keycloak is using ldap as a user backend (make sure the ldap container is also running)
|
||||
- `occ user_oidc:provider Keycloak -c nextcloud -s 09e3c268-d8bc-42f1-b7c6-74d307ef5fde -d https://keycloak.local.dev.bitgrid.net/auth/realms/Example/.well-known/openid-configuration`
|
||||
- https://keycloak.local.dev.bitgrid.net/auth/realms/Example/.well-known/openid-configuration
|
||||
- Keycloak is using LDAP as a user backend (make sure the LDAP container is also running)
|
||||
- `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
|
||||
|
||||
@@ -325,15 +488,40 @@ sudo -E -u www-data php -dxdebug.remote_host=192.168.21.1 occ
|
||||
docker-compose up -d proxy portal gs1 gs2 lookup database-mysql
|
||||
```
|
||||
|
||||
Users are named the same as the instance name, e.g. gs1, gs2
|
||||
Users are named the same as the instance name, e.g. `gs1`, `gs2`
|
||||
|
||||
## Imaginary
|
||||
|
||||
Enable the imaginary server for generating previews
|
||||
|
||||
```bash
|
||||
docker-composer up proxy nextcloud previews_hpb
|
||||
docker-compose up proxy nextcloud previews_hpb
|
||||
./scripts/enable-preview-imaginary.sh
|
||||
```
|
||||
|
||||
## PhpMyAdmin
|
||||
If you need to access the database, you can startup the `phpmyadmin` container that is already prepared.
|
||||
```
|
||||
docker-compose up -d phpmyadmin
|
||||
```
|
||||
Just add the domain to your `/etc/hosts` file and give it a try.
|
||||
|
||||
```
|
||||
sudo sh -c "echo '127.0.0.1 phpmyadmin.local' >> /etc/hosts"
|
||||
```
|
||||
|
||||
## pgAdmin
|
||||
If you need to access the database and you are running PostgreSQL, you can use this additional container.
|
||||
|
||||
```
|
||||
docker-compose up -d pgadmin
|
||||
```
|
||||
|
||||
Add the domain to your `/etc/hosts` file:
|
||||
|
||||
```
|
||||
sudo sh -c "echo '127.0.0.1 pgadmin.local' >> /etc/hosts"
|
||||
```
|
||||
|
||||
After you have started the container open `pgadmin.local` in a web browser. The password for the `nextcloud.local` is `postgres`.
|
||||
That's it, open the following path to see the Nextcloud tables: `Server group 1 -> nextcloud.local -> Databases -> nextcloud -> Schemas -> public -> Tables`
|
||||
|
||||
+45
-26
@@ -4,6 +4,13 @@ set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
APPS_TO_INSTALL=(viewer recommendations files_pdfviewer profiler hmr_enabler)
|
||||
NEXTCLOUD_AUTOINSTALL_APPS=(viewer profiler hmr_enabler)
|
||||
|
||||
# You can specify additional apps to install on the command line.
|
||||
APPS_TO_INSTALL+=( "$@" )
|
||||
NEXTCLOUD_AUTOINSTALL_APPS+=( "$@" )
|
||||
|
||||
indent() {
|
||||
sed 's/^/ /'
|
||||
}
|
||||
@@ -16,10 +23,30 @@ indent_cli() {
|
||||
fi
|
||||
}
|
||||
|
||||
function install_server() {
|
||||
if [ -d workspace/server/.git ]; then
|
||||
echo "🆗 Server is already installed." | indent
|
||||
return
|
||||
fi
|
||||
mkdir -p workspace/
|
||||
(
|
||||
(
|
||||
echo "🌏 Fetching server (this might take a while to finish)" &&
|
||||
git clone https://github.com/nextcloud/server.git --depth 1 workspace/server 2>&1 | indent_cli &&
|
||||
cd workspace/server && git submodule update --init 2>&1 | indent_cli
|
||||
) || echo "❌ Failed to clone Nextcloud server code"
|
||||
) | indent
|
||||
}
|
||||
|
||||
function install_app() {
|
||||
TARGET=workspace/server/apps-extra/"$1"
|
||||
if [ -d "$TARGET"/.git ]; then
|
||||
echo "🆗 App $1 is already installed." | indent
|
||||
return
|
||||
fi
|
||||
(
|
||||
echo "🌏 Fetching $1"
|
||||
(git clone https://github.com/nextcloud/"$1".git workspace/server/apps-extra/"$1" 2>&1 | indent_cli &&
|
||||
(git clone https://github.com/nextcloud/"$1".git "$TARGET" 2>&1 | indent_cli &&
|
||||
echo "✅ $1 installed") ||
|
||||
echo "❌ Failed to install $1"
|
||||
) | indent
|
||||
@@ -43,49 +70,39 @@ is_installed docker
|
||||
is_installed docker-compose
|
||||
is_installed git
|
||||
|
||||
(
|
||||
(
|
||||
(docker ps 2>&1 >/dev/null && echo "✅ Docker is properly executable") ||
|
||||
(echo "❌ Cannot run docker ps, you might need to check that your user is able to use docker properly" && exit 1)
|
||||
) | indent
|
||||
|
||||
echo
|
||||
echo "⏩ Setting up folder structure and fetching repositories"
|
||||
|
||||
mkdir -p workspace/
|
||||
(
|
||||
(
|
||||
echo "🌏 Fetching server (this might take a while to finish)" &&
|
||||
git clone https://github.com/nextcloud/server.git --depth 1 workspace/server 2>&1 | indent_cli &&
|
||||
cd workspace/server && git submodule update --init 2>&1 | indent_cli
|
||||
) || echo "❌ Failed to clone Nextcloud server code"
|
||||
) | indent
|
||||
|
||||
#(
|
||||
# (
|
||||
# cd workspace/server && \
|
||||
# git worktree add ../stable19 stable19 2>&1 | indent_cli
|
||||
# ) || echo "❌ Failed to setup worktree for stable19"
|
||||
#) | indent
|
||||
|
||||
install_server
|
||||
mkdir -p workspace/server/apps-extra
|
||||
install_app viewer
|
||||
install_app recommendations
|
||||
install_app files_pdfviewer
|
||||
install_app profiler
|
||||
for app in "${APPS_TO_INSTALL[@]}"
|
||||
do
|
||||
install_app "$app"
|
||||
done
|
||||
|
||||
|
||||
echo
|
||||
echo
|
||||
echo "⏩ Setup your environment in an .env file"
|
||||
if [ ! -f ".env" ]; then
|
||||
cat <<EOT >.env
|
||||
COMPOSE_PROJECT_NAME=nextcloud
|
||||
COMPOSE_PROJECT_NAME=master
|
||||
PROTOCOL=http
|
||||
DOMAIN_SUFFIX=.local
|
||||
REPO_PATH_SERVER=$PWD/workspace/server
|
||||
ADDITIONAL_APPS_PATH=$PWD/workspace/server/apps-extra
|
||||
STABLE_ROOT_PATH=$PWD/workspace
|
||||
NEXTCLOUD_AUTOINSTALL_APPS="viewer profiler"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS="${NEXTCLOUD_AUTOINSTALL_APPS[@]}"
|
||||
DOCKER_SUBNET=192.168.21.0/24
|
||||
PORTBASE=821
|
||||
PHP_XDEBUG_MODE=develop
|
||||
# SQL variant to use, possible values: sqlite, mysql, pgsql
|
||||
SQL=mysql
|
||||
DB_SERVICE=database-mysql
|
||||
# other values: "database-postgres"
|
||||
EOT
|
||||
fi
|
||||
|
||||
@@ -123,6 +140,8 @@ cat <<EOF
|
||||
|
||||
$ cd workspace/server
|
||||
$ git fetch --unshallow
|
||||
$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
|
||||
$ git fetch origin
|
||||
|
||||
This may take some time depending on your internet connection speed.
|
||||
|
||||
|
||||
@@ -39,7 +39,6 @@ if ($primary === 'minio-multibucket') {
|
||||
// optional, defaults to 64
|
||||
'num_buckets' => 64,
|
||||
// n integer in the range from 0 to (num_buckets-1) will be appended
|
||||
'bucket' => 'nextcloud_',
|
||||
'bucket' => 'nc-' . $hostname,
|
||||
'key' => 'nextcloud',
|
||||
'secret' => 'nextcloud',
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
nextcloud.local:5432:database-postgres:postgres:postgres
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Servers": {
|
||||
"1": {
|
||||
"Name": "nextcloud.local",
|
||||
"Group": "Server Group 1",
|
||||
"Port": 5432,
|
||||
"Username": "postgres",
|
||||
"Host": "database-postgres",
|
||||
"SSLMode": "prefer",
|
||||
"MaintenanceDB": "postgres",
|
||||
"PassFile": "/pgadmin4/config/pgpassfile"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
# Keycloak SAML test setup
|
||||
|
||||
Currently the Keycloak realm only supports the main instance (nextcloud.local). For other instances this would need a separate realm and adjusting the imported realm in `docker/configs/keycloak`.
|
||||
|
||||
Setup can be done automatically through:
|
||||
|
||||
```bash
|
||||
occ saml:config:create
|
||||
occ saml:config:set \
|
||||
--general-idp0_display_name "Keycloak SAML" \
|
||||
--general-uid_mapping "username" \
|
||||
--idp-entityId "http://keycloak.local/realms/Example" \
|
||||
--idp-singleLogoutService.url "http://keycloak.local/realms/Example/protocol/saml" \
|
||||
--idp-singleSignOnService.url "http://keycloak.local/realms/Example/protocol/saml" \
|
||||
--idp-x509cert="$(cat keycloak.crt)" \
|
||||
--security-authnRequestsSigned 1 \
|
||||
--security-logoutRequestSigned 1 \
|
||||
--security-logoutResponseSigned 1 \
|
||||
--security-wantAssertionsEncrypted 0 \
|
||||
--security-wantAssertionsSigned 1 \
|
||||
--security-wantMessagesSigned 1 \
|
||||
--security-nameIdEncrypted 0 --security-wantNameId 0 \
|
||||
--security-wantNameIdEncrypted 0 \
|
||||
--sp-x509cert="$(cat public.cert)" \
|
||||
--sp-privateKey="$(cat private.key)" \
|
||||
"1"
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
- Setup keycloak for SAML usage: https://janikvonrotz.ch/2020/04/21/configure-saml-authentication-for-nextcloud-with-keycloack/
|
||||
|
||||
## Generate keys for Nextcloud
|
||||
|
||||
openssl req -nodes -new -x509 -keyout private.key -out public.crt
|
||||
|
||||
|
||||
## update keycloak from example realm
|
||||
|
||||
nc-dev exec keycloak /opt/keycloak/bin/kc.sh export --realm Example --users skip --dir /opt/keycloak/data/import
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICnTCCAYUCBgGFAJ9a7jANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTIyMTIxMTA5NTcwMVoXDTMyMTIxMTA5NTg0MVowEjEQMA4GA1UEAwwHRXhhbXBsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJv17u7hBOhwsRmlylApsmRplV1qPrliFmiOenUZSYwdkAtIu9Cu00BBx6FqmUnaTrMzprrjw1Kv8ADifmeT4m4ICul+nClici29o0eVh9a3dbYUZoyruXEEPd3mWVCXebkTfqA7AI8hVGHXk9R23PakQdrGJHoe1QSH3Vk41NyQbYZ5+U4gvnQqmaMgrYFtubQsS4ZdqzrkG5Ry0OigpWjOGT6dnSB0/AttN7pIfnaBGzmgIcQzBrW3c/9qhNuUBAhP3AKwYt/HptOfFkh7atOqrksIelHyuLTqsuXSJ/vAEAuEib1ns8ggYWTTRI9ROvdoJ5kvVBzflSB5Cr10LrsCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAmi2oHhClIZIl/dwLxwVFaLZ7ZcHMLcQjytxrhQhl9i/xIByQXH5DXHtsmg1HcX8BET3Hrm7McxIspBOzHBxZPGLJlZwZ5aVzI6ZwMvy49rR5tbQlRppzM3VkT10P1ccIT6Cx9PtgL9BcgiPkRyzmhq3z10Ayd2PnY0G8Z0Lc7Qc6sXz9+DCFM6GkkvECPLlEdlagtYdQAH2om2qPaj1GjYY+QgvAuRmO04Biu2E/zhMvEG0KH+OgSHf6dTrcUhk0+nl2QRs7kueakRvn+Z6VXkwkcBokNq4+Ka6z9YmimrRv/CiWoLKIcYknHaNaP/PZI6joDcg3IgxWLOLWNHxTGw==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDlz0NWHyNGjVCR
|
||||
FXahaaxhrVTAmeViELJO3pUtiqpYwhxV+nqqRUfBa0KGYHA1bIuM41/OWwHQjwFt
|
||||
opH5OYTTsqXicdVkq+5rYP+tKdJv0+S4puEAQsiLUgEWLpVfSmBIoyGGnU4hUCUR
|
||||
NDySoo5cjmevRUbd5Rvt76hOcYEHPmQOfT3se3wf0fY1sDkcUTK82UAz+3LypLzp
|
||||
atd5keVmwkJC1xtJ+hXdvwL9u0zRD/IJCE1JZK7+w5CqB3AUaVBiwbqHfgvxjPWm
|
||||
WF8bZSErciJM9u7pbFO/lXTcpqRZBC/r80a6bVv0tAtEU+MSgWxXgPqQsIKCDHib
|
||||
JwWgD9jpAgMBAAECggEBAK3xbFFSbjvnmJTIPyu7tYuVS7Igijvo0V3bIeT/sSJP
|
||||
gm0dkx0wJTjke80ET8pQJ2xzab/iqIP4yib2xzBx9fTaoq68ZL23WVYTbFLgdfTI
|
||||
2LVfMq0k33B8mG/2wH8I58nzF9wxUsLqS7Qy6qo+uiyaaSaD9DjeQn6dSLJfPT+B
|
||||
7cG1lKJVnpMEmjCc8b7x7jB2wMIuGVHbNEm+FRe94S8wm+psb6q7eG7JF2PDqsJp
|
||||
Hm+s0jhjwICS4rSTJ9gsg4YNAHx/xnWJn6nZiXh+mu5Irhb2kEQuE1xX1Fhy5GBI
|
||||
qqij2kFAqjn8PZ+RMsH43ITTf17eVq/lMkqcaHJtwgECgYEA8tutP46emqtLgDnp
|
||||
F82tFweQ+luQqohNcaIg4SOIh7eAik15lWYSYSSzsIpBcM9aVJ/ZdCrI9DD/Ba/n
|
||||
jUfoSsPo8PYy59zuGaheUyiQpUva2NNUSGkwQ4aT5aVVyn0cksCCq3ZoQ8wmu1aK
|
||||
JKgzRtQhkZMWOG8aJ+ie1s/PIKkCgYEA8j7TM6w1CELI6j/Xsb9VUr7m/GsU76CN
|
||||
W4eu3yOq6KSkXw8RveYzcHxdyP1TNn10e0n21BjYCKr001q+xgfwUMYcxxpwi+H2
|
||||
RXxyDwjXHmw5VVDXXH8uGHUFC2iYRENKTGmRV4EWc+XnRYk7O41/nsxMqPeBENhT
|
||||
cfMAeZa23kECgYA/kwozTR5v1s+Y7Y/7Tzg0gyKMp1OjkLLVQF/jD+45uOvJSKa/
|
||||
WU0OaREw8cBXy7AV3xKJunmIkxrvXjD7ZwuEJuzfx1NkJw2dYdnvYvsailTr1caG
|
||||
fiLISn6E61cd/spwED0krYZ12Qd6mxjmp7FkpTt0ZFC4zTzHnbmW+id6oQKBgGDB
|
||||
NxosbgIeqqDlXwFfqnSiSyAGpRYQymUEjJQTavAA0qYlHrD6gREsm0jr5ZCeCygz
|
||||
IqMUSTUtExxX4lq2UQXyGwxrQwib+AFI80WOAl3kXAH3iA0pvv+Fvb4QyMB7H/Hl
|
||||
OGf65zzjVrwvU7k1iwOiFfxm3uYbgTjCFi56RBABAoGBAMpRrYBQ4qfVLtIMqnXH
|
||||
xSPMN109PpG74ooyDSmnQutqKx+cnz6PWid+gK/KKZKdh5DG/ScVFCHGy+YqImnA
|
||||
ein9E7+uV6mbOzMnQGKm2Q5vbuG/UWY7bLVoxMN0XS1PTMk/fCC75l1gX1BsO1UX
|
||||
mBctbrmbnZ3Of6966dUuGXnS
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,17 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICvjCCAaYCCQDS+w+GXVpJsDANBgkqhkiG9w0BAQsFADAhMQswCQYDVQQGEwJE
|
||||
RTESMBAGA1UECgwJZGV2LmxvY2FsMB4XDTIyMTIxMDA1MjgxMloXDTIzMDEwOTA1
|
||||
MjgxMlowITELMAkGA1UEBhMCREUxEjAQBgNVBAoMCWRldi5sb2NhbDCCASIwDQYJ
|
||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOXPQ1YfI0aNUJEVdqFprGGtVMCZ5WIQ
|
||||
sk7elS2KqljCHFX6eqpFR8FrQoZgcDVsi4zjX85bAdCPAW2ikfk5hNOypeJx1WSr
|
||||
7mtg/60p0m/T5Lim4QBCyItSARYulV9KYEijIYadTiFQJRE0PJKijlyOZ69FRt3l
|
||||
G+3vqE5xgQc+ZA59Pex7fB/R9jWwORxRMrzZQDP7cvKkvOlq13mR5WbCQkLXG0n6
|
||||
Fd2/Av27TNEP8gkITUlkrv7DkKoHcBRpUGLBuod+C/GM9aZYXxtlIStyIkz27uls
|
||||
U7+VdNympFkEL+vzRrptW/S0C0RT4xKBbFeA+pCwgoIMeJsnBaAP2OkCAwEAATAN
|
||||
BgkqhkiG9w0BAQsFAAOCAQEAOJ3+a1d06LN83gh3iNEvwWNudKVPi7MvyltW2WVB
|
||||
zQBoN2wCYC0crl7PRxXqACvpw2nE2qZaJ0KrrbVWUVMf2lAwRKk4g2F3WcwBjqak
|
||||
WwWEgIDuocLt1WX5nHbI6hb9E2jAwa8wpYbAiRQF5HnZGxI+1ZXKROZvhOPIiAVT
|
||||
v4jTPGr5lgxJ1lKqnVRfKIHZlPWPFGTmuwSkuq+9lwqp/HdCOIiV54c5yi0XBMvE
|
||||
jLhqoE5cxSVNswLF7thD7B2E1NTpyH83Z7rHtK/HDHinUVfOTKhnt15JAf2I2zwh
|
||||
9HErW/Bz4zQlmmBL0uMpgOjTix9h55p2JMuM7/Bd7ng2Dg==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,20 @@
|
||||
# Hook scripts
|
||||
|
||||
Scripts in this directory will be picked up by the docker containers
|
||||
automatically. They can be used for automating setup specific to a developers
|
||||
use cases
|
||||
|
||||
- For all Nextcloud containers:
|
||||
- before-install.sh
|
||||
- after-install.sh
|
||||
|
||||
|
||||
## Example for before-start.sh
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
echo "🎉🎉🎉🎉🎉🎉🎉🎉 triggered hook before-start.sh"
|
||||
env
|
||||
export OC_PASS="mycustomuser"
|
||||
occ user:add --password-from-env mycustomuser
|
||||
```
|
||||
+355
-93
@@ -7,8 +7,8 @@ services:
|
||||
proxy:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-nginx:latest
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "${PROXY_PORT_HTTP:-80}:80"
|
||||
- "${PROXY_PORT_HTTPS:-443}:443"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||
- ./data/ssl/:/etc/nginx/certs
|
||||
@@ -34,7 +34,13 @@ services:
|
||||
- stable22${DOMAIN_SUFFIX}
|
||||
- stable23${DOMAIN_SUFFIX}
|
||||
- stable24${DOMAIN_SUFFIX}
|
||||
- stable25${DOMAIN_SUFFIX}
|
||||
- stable26${DOMAIN_SUFFIX}
|
||||
- stable27${DOMAIN_SUFFIX}
|
||||
- stable28${DOMAIN_SUFFIX}
|
||||
- mail${DOMAIN_SUFFIX}
|
||||
- collabora${DOMAIN_SUFFIX}
|
||||
- codedev${DOMAIN_SUFFIX}
|
||||
- onlyoffice${DOMAIN_SUFFIX}
|
||||
- proxy${DOMAIN_SUFFIX}
|
||||
- hpb${DOMAIN_SUFFIX}
|
||||
@@ -46,6 +52,9 @@ services:
|
||||
- lookup${DOMAIN_SUFFIX}
|
||||
- elasticsearch${DOMAIN_SUFFIX}
|
||||
- elasticsearch-ui${DOMAIN_SUFFIX}
|
||||
- pgadmin${DOMAIN_SUFFIX}
|
||||
- phpmyadmin${DOMAIN_SUFFIX}
|
||||
- talk-signaling${DOMAIN_SUFFIX}
|
||||
|
||||
haproxy:
|
||||
image: haproxy
|
||||
@@ -57,7 +66,7 @@ services:
|
||||
- ./docker/configs/haproxy.conf:/usr/local/etc/haproxy/haproxy.cfg:ro
|
||||
|
||||
nextcloud:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
@@ -68,11 +77,14 @@ services:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
BLACKFIRE_CLIENT_ID:
|
||||
BLACKFIRE_CLIENT_TOKEN:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${REPO_PATH_SERVER:-/home/jus/repos/nextcloud/server}:/var/www/html'
|
||||
- '${REPO_PATH_SERVER}:/var/www/html'
|
||||
- '${REPO_PATH_SERVER}/apps-extra:/var/www/html/apps-extra'
|
||||
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-shared'
|
||||
- data:/var/www/html/data
|
||||
- config:/var/www/html/config
|
||||
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-extra'
|
||||
- /var/www/html/apps-writable
|
||||
- ./data/skeleton/:/skeleton
|
||||
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
|
||||
@@ -83,16 +95,18 @@ services:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
nextcloud2:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
SQL: 'mysql'
|
||||
VIRTUAL_HOST: "nextcloud2${DOMAIN_SUFFIX}"
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${REPO_PATH_SERVER:-/home/jus/repos/nextcloud/server}:/var/www/html'
|
||||
- '${REPO_PATH_SERVER}:/var/www/html'
|
||||
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-extra'
|
||||
- ./data/skeleton/:/skeleton
|
||||
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
|
||||
@@ -102,16 +116,18 @@ services:
|
||||
- database-mysql
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
nextcloud3:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
SQL: 'mysql'
|
||||
SQL: ${SQL:-mysql}
|
||||
VIRTUAL_HOST: "nextcloud3${DOMAIN_SUFFIX}"
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${REPO_PATH_SERVER:-/home/jus/repos/nextcloud/server}:/var/www/html'
|
||||
- '${REPO_PATH_SERVER}:/var/www/html'
|
||||
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-extra'
|
||||
- ./data/skeleton/:/skeleton
|
||||
- ./docker/configs/config.php:/var/www/html/config/writable.config.php:ro
|
||||
@@ -120,215 +136,412 @@ services:
|
||||
- database-mysql
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable16:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-72}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable16${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable16:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable16/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable16:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable16/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:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable17:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-72}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable17${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable17:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable17/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable17:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable17/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
|
||||
ports:
|
||||
- "${PORTBASE:-800}0:80"
|
||||
depends_on:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable18:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable18${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable18:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable18/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable18:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable18/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
|
||||
ports:
|
||||
- "${PORTBASE:-800}0:80"
|
||||
depends_on:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable19:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-72}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable19${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable19:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable19/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable19:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable19/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
|
||||
ports:
|
||||
- "${PORTBASE:-800}0:80"
|
||||
depends_on:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable20:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-72}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable20${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable20:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable20/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable20:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable20/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
|
||||
ports:
|
||||
- "${PORTBASE:-800}0:80"
|
||||
depends_on:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable21:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable21${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable21:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable21/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable21:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable21/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
|
||||
ports:
|
||||
- "${PORTBASE:-800}0:80"
|
||||
depends_on:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable22:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable22${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable22:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable22/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable22:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable22/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:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable24:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
environment:
|
||||
SQL: 'mysql'
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable24${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable24:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable24/apps-extra:/var/www/html/apps-extra'
|
||||
- /var/www/html/data
|
||||
- /var/www/html/config
|
||||
- /var/www/html/apps-writable
|
||||
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
|
||||
depends_on:
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable23:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-73}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
|
||||
environment:
|
||||
SQL: 'sqlite'
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable23${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable23:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/stable23/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/stable23:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable23/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
|
||||
ports:
|
||||
- "${PORTBASE:-800}0:80"
|
||||
depends_on:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable24:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-80}:latest
|
||||
environment:
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable24${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH}/stable24:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable24/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:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable25:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable25${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH}/stable25:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable25/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:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable26:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable26${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH}/stable26:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable26/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:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable27:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable27${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH}/stable27:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable27/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:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
stable28:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
SQL: ${SQL:-mysql}
|
||||
NEXTCLOUD_AUTOINSTALL: "YES"
|
||||
NEXTCLOUD_AUTOINSTALL_APPS:
|
||||
WITH_REDIS: "YES"
|
||||
VIRTUAL_HOST: stable28${DOMAIN_SUFFIX}
|
||||
ADDITIONAL_APPS_PATH:
|
||||
NEXTCLOUD_TRUSTED_DOMAINS:
|
||||
PRIMARY: ${PRIMARY}
|
||||
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH}/stable28:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/stable28/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:
|
||||
- ${DB_SERVICE:-database-mysql}
|
||||
- redis
|
||||
- mail
|
||||
- proxy
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
database-sqlite:
|
||||
image: rwgrim/docker-noop
|
||||
|
||||
database-mysql:
|
||||
image: mariadb:10.5
|
||||
image: mariadb:10.6
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: 'nextcloud'
|
||||
MYSQL_PASSWORD: 'nextcloud'
|
||||
@@ -342,14 +555,32 @@ services:
|
||||
database-postgres:
|
||||
image: postgres:latest
|
||||
environment:
|
||||
POSTGRES_DB: nextcloud
|
||||
POSTGRES_PASSWORD: postgres
|
||||
ports:
|
||||
- 5432:5432
|
||||
expose:
|
||||
- 5432
|
||||
volumes:
|
||||
- postgres:/var/lib/postgresql
|
||||
|
||||
pgadmin:
|
||||
container_name: pgadmin_container
|
||||
image: dpage/pgadmin4
|
||||
environment:
|
||||
VIRTUAL_HOST: "pgadmin${DOMAIN_SUFFIX}"
|
||||
PGADMIN_DEFAULT_EMAIL: pgadmin4@nextcloud.local
|
||||
PGADMIN_DEFAULT_PASSWORD: postgres
|
||||
PGADMIN_CONFIG_SERVER_MODE: 'False'
|
||||
PGADMIN_SERVER_JSON_FILE: /pgadmin4/config/servers.json
|
||||
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: 'False'
|
||||
volumes:
|
||||
- "./data/pgadmin/config:/pgadmin4/config"
|
||||
depends_on:
|
||||
- proxy
|
||||
|
||||
redis:
|
||||
image: redis:6
|
||||
image: redis:7
|
||||
|
||||
ldap:
|
||||
image: osixia/openldap
|
||||
@@ -439,22 +670,36 @@ services:
|
||||
aliasgroup2: http://gs1${DOMAIN_SUFFIX}
|
||||
aliasgroup3: http://gs2${DOMAIN_SUFFIX}
|
||||
aliasgroup4: http://stable20${DOMAIN_SUFFIX}
|
||||
aliasgroup5: http://stable21${DOMAIN_SUFFIX}
|
||||
aliasgroup5: http://stable26${DOMAIN_SUFFIX}
|
||||
aliasgroup6: http://stable22${DOMAIN_SUFFIX}
|
||||
aliasgroup7: http://stable23${DOMAIN_SUFFIX}
|
||||
aliasgroup8: http://stable24${DOMAIN_SUFFIX}
|
||||
aliasgroup9: http://stable25${DOMAIN_SUFFIX}
|
||||
dictionaries: de_DE en_US en_GB
|
||||
username: admin
|
||||
password: admin
|
||||
VIRTUAL_HOST: collabora${DOMAIN_SUFFIX}
|
||||
VIRTUAL_PORT: 9980
|
||||
VIRTUAL_PROTO: http
|
||||
extra_params: "--o:ssl.enable=false --o:net.frame_ancestors=*${DOMAIN_SUFFIX}"
|
||||
extra_params: "--o:ssl.enable=false --o:net.frame_ancestors=*${DOMAIN_SUFFIX} --o:home_mode.enable=true --o:ssl.termination=false ${COLLABORA_PARAMS:-}"
|
||||
|
||||
codedev:
|
||||
privileged: true
|
||||
build:
|
||||
context: ./docker/codedev
|
||||
environment:
|
||||
VIRTUAL_HOST: "codedev${DOMAIN_SUFFIX}"
|
||||
VIRTUAL_PORT: 9980
|
||||
volumes:
|
||||
- /Users/julius/repos/collaboraonline:/collabora
|
||||
command: >
|
||||
tail -f /dev/null
|
||||
|
||||
onlyoffice:
|
||||
image: ${CONTAINER_ONLYOFFICE:-onlyoffice/documentserver:latest}
|
||||
image: onlyoffice/documentserver:latest
|
||||
environment:
|
||||
VIRTUAL_HOST: onlyoffice${DOMAIN_SUFFIX}
|
||||
USE_UNAUTHORIZED_STORAGE: "true"
|
||||
expose:
|
||||
- '80'
|
||||
volumes:
|
||||
@@ -465,8 +710,10 @@ services:
|
||||
image: minio/minio
|
||||
environment:
|
||||
VIRTUAL_HOST: minio${DOMAIN_SUFFIX}
|
||||
VIRTUAL_PORT: 9001
|
||||
MINIO_ROOT_USER: nextcloud
|
||||
MINIO_ROOT_PASSWORD: nextcloud
|
||||
MINIO_BROWSER_REDIRECT_URL: http://minio${DOMAIN_SUFFIX}
|
||||
volumes:
|
||||
- objectstorage_minio:/data
|
||||
command: server /data --console-address :9001
|
||||
@@ -474,7 +721,7 @@ services:
|
||||
elasticsearch:
|
||||
build:
|
||||
context: ./docker
|
||||
dockerfile: Dockerfile.elasticsearch
|
||||
dockerfile: elasticsearch/Dockerfile
|
||||
environment:
|
||||
- ELASTIC_PASSWORD=elastic
|
||||
- discovery.type=single-node
|
||||
@@ -508,30 +755,29 @@ services:
|
||||
|
||||
|
||||
push:
|
||||
image: icewind1991/notify_push
|
||||
ports:
|
||||
- '8191:80'
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-push:latest
|
||||
environment:
|
||||
RUST_LOG: debug
|
||||
VIRTUAL_HOST: push${DOMAIN_SUFFIX}
|
||||
VIRTUAL_PORT: 8191
|
||||
DATABASE_URL: mysql://nextcloud:nextcloud@master_database-mysql_1/nextcloud
|
||||
VIRTUAL_PORT: 7867
|
||||
DATABASE_URL: mysql://root:nextcloud@database-mysql/nextcloud
|
||||
REDIS_URL: redis://redis
|
||||
NEXTCLOUD_URL: https://nextcloud.local.dev.bitgrid.net
|
||||
NEXTCLOUD_URL: http://nextcloud
|
||||
|
||||
keycloak:
|
||||
image: ${CONTAINER_KEYCLOAK:-quay.io/keycloak/keycloak:15.0.1}
|
||||
image: quay.io/keycloak/keycloak:23.0
|
||||
expose:
|
||||
- 8080
|
||||
volumes:
|
||||
- ./docker/configs/keycloak:/tmp/keycloak
|
||||
- ./docker/configs/keycloak:/opt/keycloak/data/import
|
||||
command: start-dev --import-realm
|
||||
environment:
|
||||
VIRTUAL_HOST: "keycloak${DOMAIN_SUFFIX}"
|
||||
VIRTUAL_PORT: 8080
|
||||
KEYCLOAK_USER: admin
|
||||
KEYCLOAK_PASSWORD: admin
|
||||
KEYCLOAK_ADMIN: admin
|
||||
KEYCLOAK_ADMIN_PASSWORD: admin
|
||||
PROXY_ADDRESS_FORWARDING: "true"
|
||||
KEYCLOAK_IMPORT: /tmp/keycloak/realm-export.json
|
||||
KC_PROXY: edge
|
||||
|
||||
av:
|
||||
image: mkodockx/docker-clamav:alpine
|
||||
@@ -541,14 +787,14 @@ services:
|
||||
- clam:/var/lib/clamav
|
||||
|
||||
portal:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
VIRTUAL_HOST: portal${DOMAIN_SUFFIX}
|
||||
SQL: 'mysql'
|
||||
GS_MODE: master
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/server:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/server/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/server:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/server/apps-extra:/var/www/html/apps-extra'
|
||||
- /var/www/html/data
|
||||
- /var/www/html/config
|
||||
- ./data/skeleton/:/skeleton
|
||||
@@ -563,14 +809,14 @@ services:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
gs1:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
VIRTUAL_HOST: gs1${DOMAIN_SUFFIX}
|
||||
SQL: 'mysql'
|
||||
GS_MODE: slave
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/server:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/server/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/server:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/server/apps-extra:/var/www/html/apps-extra'
|
||||
- /var/www/html/data
|
||||
- /var/www/html/config
|
||||
- ./data/skeleton/:/skeleton
|
||||
@@ -586,14 +832,14 @@ services:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
gs2:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-74}:latest
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
|
||||
environment:
|
||||
VIRTUAL_HOST: gs2${DOMAIN_SUFFIX}
|
||||
SQL: 'mysql'
|
||||
GS_MODE: slave
|
||||
volumes:
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/server:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/server/apps-extra:/var/www/html/apps-extra'
|
||||
- '${STABLE_ROOT_PATH}/server:/var/www/html'
|
||||
- '${STABLE_ROOT_PATH}/server/apps-extra:/var/www/html/apps-extra'
|
||||
- /var/www/html/data
|
||||
- /var/www/html/config
|
||||
- ./data/skeleton/:/skeleton
|
||||
@@ -613,17 +859,33 @@ services:
|
||||
environment:
|
||||
VIRTUAL_HOST: "lookup${DOMAIN_SUFFIX}"
|
||||
# volumes:
|
||||
# - '${STABLE_ROOT_PATH:-/home/jus/repos/nextcloud}/lookupserver:/var/www/html'
|
||||
# - '${STABLE_ROOT_PATH}/lookupserver:/var/www/html'
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
|
||||
previews_hpb:
|
||||
image: h2non/imaginary
|
||||
image: nextcloud/aio-imaginary:latest
|
||||
ports:
|
||||
- "8088:8088"
|
||||
environment:
|
||||
- PORT=8088
|
||||
|
||||
talk-signaling:
|
||||
image: strukturag/nextcloud-spreed-signaling:latest
|
||||
environment:
|
||||
VIRTUAL_HOST: "talk-signaling${DOMAIN_SUFFIX}"
|
||||
HTTP_LISTEN: "0.0.0.0:80"
|
||||
HASH_KEY: "11111111111111111111111111111111"
|
||||
BLOCK_KEY: "22222222222222222222222222222222"
|
||||
USE_JANUS: 1
|
||||
JANUS_URL: "ws://talk-janus:8188"
|
||||
SKIP_VERIFY: 1
|
||||
BACKENDS_ALLOWALL: 1
|
||||
BACKENDS_ALLOWALL_SECRET: "1234"
|
||||
INTERNAL_SHARED_SECRET_KEY: "4567"
|
||||
|
||||
talk-janus:
|
||||
image: ghcr.io/juliushaertl/nextcloud-dev-talk-janus:latest
|
||||
|
||||
volumes:
|
||||
data:
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
FROM nginxproxy/nginx-proxy:latest
|
||||
RUN { \
|
||||
echo 'server_tokens off;'; \
|
||||
echo 'client_max_body_size 1024m;'; \
|
||||
} > /etc/nginx/conf.d/my_proxy.conf
|
||||
@@ -1,59 +1,49 @@
|
||||
FROM php:8.1-apache
|
||||
FROM php:8.2-apache
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libcurl4-openssl-dev \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg-dev \
|
||||
libldap2-dev \
|
||||
libmcrypt-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libmagickwand-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
libsmbclient-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
RUN debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
|
||||
docker-php-ext-install \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
zip
|
||||
RUN chmod +x /usr/local/bin/install-php-extensions
|
||||
|
||||
RUN pecl install APCu; \
|
||||
pecl install memcached; \
|
||||
pecl install redis; \
|
||||
pecl install xdebug; \
|
||||
pecl install imagick; \
|
||||
pecl install smbclient; \
|
||||
pecl install mcrypt; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
apcu \
|
||||
memcached \
|
||||
redis \
|
||||
xdebug \
|
||||
imagick \
|
||||
smbclient; \
|
||||
docker-php-source delete && \
|
||||
rm -r /tmp/* /var/cache/*
|
||||
RUN install-php-extensions \
|
||||
apcu \
|
||||
bcmath \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug \
|
||||
zip \
|
||||
@composer
|
||||
|
||||
# dev tools separate install so we quickly change without rebuilding all php extenions
|
||||
# dev tools separate install so we quickly change without rebuilding all php extensions
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
git curl vim 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
@@ -74,13 +64,29 @@ ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
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-php blackfire \
|
||||
&& printf "blackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
RUN a2enmod rewrite
|
||||
# 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
|
||||
@@ -88,5 +94,6 @@ WORKDIR /var/www/html
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php /root/
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
|
||||
+60
-53
@@ -1,59 +1,49 @@
|
||||
FROM php:7.1-apache
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libcurl4-openssl-dev \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg-dev \
|
||||
libldap2-dev \
|
||||
libmcrypt-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libmagickwand-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
libsmbclient-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
RUN debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
|
||||
docker-php-ext-install \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
zip
|
||||
RUN chmod +x /usr/local/bin/install-php-extensions
|
||||
|
||||
RUN pecl install APCu; \
|
||||
pecl install memcached; \
|
||||
pecl install redis; \
|
||||
pecl install xdebug; \
|
||||
pecl install imagick; \
|
||||
pecl install smbclient; \
|
||||
pecl install mcrypt; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
apcu \
|
||||
memcached \
|
||||
redis \
|
||||
xdebug \
|
||||
imagick \
|
||||
smbclient; \
|
||||
docker-php-source delete && \
|
||||
rm -r /tmp/* /var/cache/*
|
||||
RUN install-php-extensions \
|
||||
apcu \
|
||||
bcmath \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug \
|
||||
zip \
|
||||
@composer
|
||||
|
||||
# dev tools separate install so we quickly change without rebuilding all php extenions
|
||||
# dev tools separate install so we quickly change without rebuilding all php extensions
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
git curl vim 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
@@ -74,13 +64,29 @@ ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
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-php blackfire \
|
||||
&& printf "blackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
RUN a2enmod rewrite
|
||||
# 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
|
||||
@@ -88,5 +94,6 @@ WORKDIR /var/www/html
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php /root/
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
|
||||
+60
-53
@@ -1,59 +1,49 @@
|
||||
FROM php:7.2-apache
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libcurl4-openssl-dev \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg-dev \
|
||||
libldap2-dev \
|
||||
libmcrypt-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libmagickwand-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
libsmbclient-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
RUN debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
|
||||
docker-php-ext-install \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
zip
|
||||
RUN chmod +x /usr/local/bin/install-php-extensions
|
||||
|
||||
RUN pecl install APCu; \
|
||||
pecl install memcached; \
|
||||
pecl install redis; \
|
||||
pecl install xdebug; \
|
||||
pecl install imagick; \
|
||||
pecl install smbclient; \
|
||||
pecl install mcrypt; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
apcu \
|
||||
memcached \
|
||||
redis \
|
||||
xdebug \
|
||||
imagick \
|
||||
smbclient; \
|
||||
docker-php-source delete && \
|
||||
rm -r /tmp/* /var/cache/*
|
||||
RUN install-php-extensions \
|
||||
apcu \
|
||||
bcmath \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug \
|
||||
zip \
|
||||
@composer
|
||||
|
||||
# dev tools separate install so we quickly change without rebuilding all php extenions
|
||||
# dev tools separate install so we quickly change without rebuilding all php extensions
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
git curl vim 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
@@ -74,13 +64,29 @@ ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
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-php blackfire \
|
||||
&& printf "blackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
RUN a2enmod rewrite
|
||||
# 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
|
||||
@@ -88,5 +94,6 @@ WORKDIR /var/www/html
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php /root/
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
|
||||
+60
-53
@@ -1,59 +1,49 @@
|
||||
FROM php:7.3-apache
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libcurl4-openssl-dev \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg-dev \
|
||||
libldap2-dev \
|
||||
libmcrypt-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libmagickwand-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
libsmbclient-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
RUN debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
|
||||
docker-php-ext-install \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
zip
|
||||
RUN chmod +x /usr/local/bin/install-php-extensions
|
||||
|
||||
RUN pecl install APCu; \
|
||||
pecl install memcached; \
|
||||
pecl install redis; \
|
||||
pecl install xdebug; \
|
||||
pecl install imagick; \
|
||||
pecl install smbclient; \
|
||||
pecl install mcrypt; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
apcu \
|
||||
memcached \
|
||||
redis \
|
||||
xdebug \
|
||||
imagick \
|
||||
smbclient; \
|
||||
docker-php-source delete && \
|
||||
rm -r /tmp/* /var/cache/*
|
||||
RUN install-php-extensions \
|
||||
apcu \
|
||||
bcmath \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug \
|
||||
zip \
|
||||
@composer
|
||||
|
||||
# dev tools separate install so we quickly change without rebuilding all php extenions
|
||||
# dev tools separate install so we quickly change without rebuilding all php extensions
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
git curl vim 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
@@ -74,13 +64,29 @@ ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
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-php blackfire \
|
||||
&& printf "blackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
RUN a2enmod rewrite
|
||||
# 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
|
||||
@@ -88,5 +94,6 @@ WORKDIR /var/www/html
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php /root/
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
|
||||
+60
-53
@@ -1,59 +1,49 @@
|
||||
FROM php:7.4-apache
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libcurl4-openssl-dev \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg-dev \
|
||||
libldap2-dev \
|
||||
libmcrypt-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libmagickwand-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
libsmbclient-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
RUN debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
|
||||
docker-php-ext-install \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
zip
|
||||
RUN chmod +x /usr/local/bin/install-php-extensions
|
||||
|
||||
RUN pecl install APCu; \
|
||||
pecl install memcached; \
|
||||
pecl install redis; \
|
||||
pecl install xdebug; \
|
||||
pecl install imagick; \
|
||||
pecl install smbclient; \
|
||||
pecl install mcrypt; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
apcu \
|
||||
memcached \
|
||||
redis \
|
||||
xdebug \
|
||||
imagick \
|
||||
smbclient; \
|
||||
docker-php-source delete && \
|
||||
rm -r /tmp/* /var/cache/*
|
||||
RUN install-php-extensions \
|
||||
apcu \
|
||||
bcmath \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug \
|
||||
zip \
|
||||
@composer
|
||||
|
||||
# dev tools separate install so we quickly change without rebuilding all php extenions
|
||||
# dev tools separate install so we quickly change without rebuilding all php extensions
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
git curl vim 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
@@ -74,13 +64,29 @@ ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
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-php blackfire \
|
||||
&& printf "blackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
RUN a2enmod rewrite
|
||||
# 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
|
||||
@@ -88,5 +94,6 @@ WORKDIR /var/www/html
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php /root/
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
|
||||
+60
-53
@@ -1,59 +1,49 @@
|
||||
FROM php:8.0-apache
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libcurl4-openssl-dev \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg-dev \
|
||||
libldap2-dev \
|
||||
libmcrypt-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libmagickwand-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
libsmbclient-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
RUN debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
|
||||
docker-php-ext-install \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
zip
|
||||
RUN chmod +x /usr/local/bin/install-php-extensions
|
||||
|
||||
RUN pecl install APCu; \
|
||||
pecl install memcached; \
|
||||
pecl install redis; \
|
||||
pecl install xdebug; \
|
||||
pecl install imagick; \
|
||||
pecl install smbclient; \
|
||||
pecl install mcrypt; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
apcu \
|
||||
memcached \
|
||||
redis \
|
||||
xdebug \
|
||||
imagick \
|
||||
smbclient; \
|
||||
docker-php-source delete && \
|
||||
rm -r /tmp/* /var/cache/*
|
||||
RUN install-php-extensions \
|
||||
apcu \
|
||||
bcmath \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug \
|
||||
zip \
|
||||
@composer
|
||||
|
||||
# dev tools separate install so we quickly change without rebuilding all php extenions
|
||||
# dev tools separate install so we quickly change without rebuilding all php extensions
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
git curl vim 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
@@ -74,13 +64,29 @@ ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
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-php blackfire \
|
||||
&& printf "blackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
RUN a2enmod rewrite
|
||||
# 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
|
||||
@@ -88,5 +94,6 @@ WORKDIR /var/www/html
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php /root/
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
|
||||
+60
-53
@@ -1,59 +1,49 @@
|
||||
FROM php:8.1-apache
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libcurl4-openssl-dev \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg-dev \
|
||||
libldap2-dev \
|
||||
libmcrypt-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libmagickwand-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
libsmbclient-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||
|
||||
RUN debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
|
||||
docker-php-ext-install \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
zip
|
||||
RUN chmod +x /usr/local/bin/install-php-extensions
|
||||
|
||||
RUN pecl install APCu; \
|
||||
pecl install memcached; \
|
||||
pecl install redis; \
|
||||
pecl install xdebug; \
|
||||
pecl install imagick; \
|
||||
pecl install smbclient; \
|
||||
pecl install mcrypt; \
|
||||
\
|
||||
docker-php-ext-enable \
|
||||
apcu \
|
||||
memcached \
|
||||
redis \
|
||||
xdebug \
|
||||
imagick \
|
||||
smbclient; \
|
||||
docker-php-source delete && \
|
||||
rm -r /tmp/* /var/cache/*
|
||||
RUN install-php-extensions \
|
||||
apcu \
|
||||
bcmath \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug-^3.2 \
|
||||
zip \
|
||||
@composer
|
||||
|
||||
# dev tools separate install so we quickly change without rebuilding all php extenions
|
||||
# dev tools separate install so we quickly change without rebuilding all php extensions
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
git curl vim sudo cron smbclient iproute2 lnav wget iputils-ping gnupg2 jq ripgrep \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
git curl vim 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
@@ -74,13 +64,29 @@ ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
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-php blackfire \
|
||||
&& printf "blackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
RUN a2enmod rewrite
|
||||
# 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
|
||||
@@ -88,5 +94,6 @@ WORKDIR /var/www/html
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php /root/
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
.PHONY: Dockerfile.*
|
||||
Dockerfile.*:
|
||||
NAME=$$(echo $@ | sed 's/^.*\.//'); echo "=> Building image $$NAME"; \
|
||||
(docker build -t ghcr.io/juliushaertl/nextcloud-dev-$$NAME:latest -f Dockerfile.$$NAME .)
|
||||
+154
-42
@@ -2,12 +2,22 @@
|
||||
# shellcheck disable=SC2181
|
||||
|
||||
DOMAIN_SUFFIX=".$(echo "$VIRTUAL_HOST" | cut -d '.' -f2-)"
|
||||
IS_STANDALONE=$([ -z "$VIRTUAL_HOST" ] && echo "true" )
|
||||
|
||||
indent() { sed 's/^/ /'; }
|
||||
|
||||
# Prepare waiting page during auto installation
|
||||
cp /root/installing.html /var/www/html/installing.html
|
||||
|
||||
output() {
|
||||
echo "$@"
|
||||
echo "$@" >> /var/www/html/installing.html
|
||||
}
|
||||
|
||||
OCC() {
|
||||
output "occ" "$@"
|
||||
# shellcheck disable=SC2068
|
||||
sudo -E -u www-data "$WEBROOT/occ" $@ | indent
|
||||
sudo -E -u www-data php "$WEBROOT/occ" $@ | indent
|
||||
}
|
||||
|
||||
update_permission() {
|
||||
@@ -17,25 +27,40 @@ update_permission() {
|
||||
chown www-data:www-data "$WEBROOT"/config/config.php 2>/dev/null
|
||||
}
|
||||
|
||||
configure_xdebug_mode() {
|
||||
if [ -n "$PHP_XDEBUG_MODE" ]
|
||||
then
|
||||
sed -i "s/^xdebug.mode\s*=.*/xdebug.mode = ${PHP_XDEBUG_MODE//\//_}/" /usr/local/etc/php/conf.d/xdebug.ini
|
||||
unset PHP_XDEBUG_MODE
|
||||
else
|
||||
echo "⚠ No value for PHP_XDEBUG_MODE was found. Not updating the setting."
|
||||
fi
|
||||
}
|
||||
|
||||
wait_for_other_containers() {
|
||||
echo "⌛ Waiting for other containers"
|
||||
output "⌛ Waiting for other containers"
|
||||
if [ "$SQL" = "mysql" ]
|
||||
then
|
||||
echo " - MySQL"
|
||||
output " - MySQL"
|
||||
while ! timeout 1 bash -c "(echo > /dev/tcp/database-mysql/3306) 2>/dev/null"; do sleep 2; done
|
||||
[ $? -ne 0 ] && echo "⚠ Unable to connect to the MySQL server"
|
||||
sleep 2
|
||||
fi
|
||||
if [ "$SQL" = "pgsql" ]
|
||||
then
|
||||
while ! timeout 1 bash -c "(echo > /dev/tcp/database-postgres/5432) 2>/dev/null"; do sleep 2; done
|
||||
[ $? -ne 0 ] && echo "⚠ Unable to connect to the PostgreSQL server"
|
||||
sleep 2
|
||||
fi
|
||||
sleep 2
|
||||
[ $? -eq 0 ] && echo "✅ Database server ready"
|
||||
[ $? -eq 0 ] && output "✅ Database server ready"
|
||||
}
|
||||
|
||||
configure_gs() {
|
||||
OCC config:system:set lookup_server --value ""
|
||||
OCC config:system:set lookup_server --value=""
|
||||
|
||||
if [[ "$IS_STANDALONE" = "true" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
get_protocol
|
||||
LOOKUP_SERVER="${PROTOCOL}://lookup${DOMAIN_SUFFIX}/index.php"
|
||||
@@ -65,9 +90,13 @@ configure_gs() {
|
||||
}
|
||||
|
||||
configure_ldap() {
|
||||
if [[ "$IS_STANDALONE" = "true" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
timeout 5 bash -c 'until echo > /dev/tcp/ldap/389; do sleep 0.5; done' 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "LDAP server available"
|
||||
output "LDAP server available"
|
||||
export LDAP_USER_FILTER="(|(objectclass=inetOrgPerson))"
|
||||
|
||||
OCC app:enable user_ldap
|
||||
@@ -96,38 +125,36 @@ configure_ldap() {
|
||||
}
|
||||
|
||||
configure_oidc() {
|
||||
if [[ "$IS_STANDALONE" = "true" ]]; then
|
||||
return 0
|
||||
fi
|
||||
OCC app:enable user_oidc
|
||||
get_protocol
|
||||
OCC user_oidc:provider Keycloak -c nextcloud -s 09e3c268-d8bc-42f1-b7c6-74d307ef5fde -d "$PROTOCOL://keycloak.local.dev.bitgrid.net/auth/realms/Example/.well-known/openid-configuration"
|
||||
OCC user_oidc:provider Keycloak -c nextcloud -s 09e3c268-d8bc-42f1-b7c6-74d307ef5fde -d "$PROTOCOL://keycloak${DOMAIN_SUFFIX}/realms/Example/.well-known/openid-configuration"
|
||||
}
|
||||
|
||||
PROTOCOL=""
|
||||
PROTOCOL="${PROTOCOL:-http}"
|
||||
get_protocol() {
|
||||
if [[ "$PROTOCOL" == "" ]]; then
|
||||
echo " Detecting SSL..."
|
||||
timeout 5 bash -c 'until echo > /dev/tcp/proxy/443; do sleep 0.5; done' 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "🔑 SSL proxy available, configuring proxy settings"
|
||||
PROTOCOL=https
|
||||
else
|
||||
echo "🗝 No SSL proxy, removing overwriteprotocol"
|
||||
PROTOCOL=http
|
||||
fi
|
||||
fi
|
||||
if [[ "$IS_STANDALONE" = "true" ]]; then
|
||||
PROTOCOL=http
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
configure_ssl_proxy() {
|
||||
if [[ "$IS_STANDALONE" = "true" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
get_protocol
|
||||
if [[ "$PROTOCOL" == "https" ]]; then
|
||||
echo "🔑 SSL proxy available, configuring proxy settings"
|
||||
OCC config:system:set overwriteprotocol --value https
|
||||
OCC config:system:set overwrite.cli.url --value "https://$VIRTUAL_HOST"
|
||||
echo "🔑 SSL proxy available, configuring overwrite.cli.url accordingly"
|
||||
OCC config:system:set overwrite.cli.url --value "https://$VIRTUAL_HOST" &
|
||||
else
|
||||
echo "🗝 No SSL proxy, removing overwriteprotocol"
|
||||
OCC config:system:delete overwriteprotocol
|
||||
OCC config:system:set overwrite.cli.url --value "http://$VIRTUAL_HOST"
|
||||
|
||||
echo "🗝 No SSL proxy, configuring overwrite.cli.url accordingly"
|
||||
OCC config:system:set overwrite.cli.url --value "http://$VIRTUAL_HOST" &
|
||||
fi
|
||||
update-ca-certificates
|
||||
}
|
||||
|
||||
|
||||
@@ -164,35 +191,56 @@ install() {
|
||||
cp /root/config.php "$WEBROOT"/config/config.php
|
||||
chown -R www-data:www-data "$WEBROOT"/config/config.php
|
||||
|
||||
mkdir -p "$WEBROOT/apps-extra"
|
||||
mkdir -p "$WEBROOT/apps-shared"
|
||||
|
||||
update_permission
|
||||
|
||||
USER="admin"
|
||||
PASSWORD="admin"
|
||||
|
||||
echo "🔧 Starting auto installation"
|
||||
run_hook_before_install
|
||||
|
||||
output "🔧 Starting auto installation"
|
||||
if [ "$SQL" = "oci" ]; then
|
||||
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name=xe --database-host=$SQLHOST --database-user=system --database-pass=oracle
|
||||
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name=xe --database-host="$SQLHOST" --database-user=system --database-pass=oracle
|
||||
elif [ "$SQL" = "pgsql" ]; then
|
||||
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name="$DBNAME" --database-host=$SQLHOST --database-user=postgres --database-pass=postgres
|
||||
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
|
||||
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name="$DBNAME" --database-host=$SQLHOST --database-user=root --database-pass=nextcloud
|
||||
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL" --database-name="$DBNAME" --database-host="$SQLHOST" --database-user=root --database-pass=nextcloud
|
||||
else
|
||||
OCC maintenance:install --admin-user=$USER --admin-pass=$PASSWORD --database="$SQL"
|
||||
fi;
|
||||
|
||||
output "🔧 Server installed"
|
||||
|
||||
output "🔧 Provisioning apps"
|
||||
OCC app:disable password_policy
|
||||
|
||||
for app in $NEXTCLOUD_AUTOINSTALL_APPS; do
|
||||
OCC app:enable "$app"
|
||||
APP_ENABLED=$(OCC app:enable "$app")
|
||||
output "$APP_ENABLED"
|
||||
WAIT_TIME=0
|
||||
until [[ $WAIT_TIME -eq ${NEXTCLOUD_AUTOINSTALL_APPS_WAIT_TIME:-0} ]] || [[ $APP_ENABLED =~ ${app}.*enabled$ ]]
|
||||
do
|
||||
# if app is not installed pause for 1 seconds and enable again
|
||||
output "🔄 retrying"
|
||||
sleep 1
|
||||
APP_ENABLED=$(OCC app:enable "$app")
|
||||
output "$APP_ENABLED"
|
||||
((WAIT_TIME++))
|
||||
done
|
||||
done
|
||||
configure_gs
|
||||
configure_ldap
|
||||
configure_oidc
|
||||
|
||||
output "🔧 Finetuning the configuration"
|
||||
if [ "$WITH_REDIS" != "NO" ]; then
|
||||
cp /root/redis.config.php "$WEBROOT"/config/
|
||||
else
|
||||
cp /root/apcu.config.php "$WEBROOT"/config/
|
||||
fi
|
||||
OCC user:setting admin settings email admin@example.net
|
||||
|
||||
# Setup domains
|
||||
# localhost is at index 0 due to the installation
|
||||
@@ -207,8 +255,14 @@ install() {
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX + 1))
|
||||
done
|
||||
fi
|
||||
|
||||
TRUSTED_PROXY=$(ip a show type veth | awk '/scope global/ {print $2}')
|
||||
OCC config:system:set trusted_proxies 0 --value="$TRUSTED_PROXY"
|
||||
|
||||
configure_ssl_proxy
|
||||
|
||||
output "🔧 Preparing cron job"
|
||||
|
||||
# Setup initial configuration
|
||||
OCC background:cron
|
||||
|
||||
@@ -218,9 +272,10 @@ install() {
|
||||
# run custom shell script from nc root
|
||||
# [ -e /var/www/html/nc-dev-autosetup.sh ] && bash /var/www/html/nc-dev-autosetup.sh
|
||||
|
||||
echo "🔧 Setting up users and LDAP in the background"
|
||||
output "🔧 Setting up users and LDAP in the background"
|
||||
OCC user:setting admin settings email admin@example.net &
|
||||
INSTANCENAME=$(echo "$VIRTUAL_HOST" | cut -d '.' -f1)
|
||||
configure_add_user "$INSTANCENAME" &
|
||||
configure_add_user "${INSTANCENAME:-nextcloud}" &
|
||||
configure_add_user user1 &
|
||||
configure_add_user user2 &
|
||||
configure_add_user user3 &
|
||||
@@ -231,9 +286,26 @@ install() {
|
||||
configure_add_user john &
|
||||
configure_add_user alice &
|
||||
configure_add_user bob &
|
||||
configure_ldap &
|
||||
|
||||
echo "🚀 Finished setup using $SQL database…"
|
||||
run_hook_after_install
|
||||
|
||||
output "🚀 Finished setup using $SQL database…"
|
||||
}
|
||||
|
||||
run_hook_before_install() {
|
||||
[ -e /shared/hooks/before-install.sh ] && bash /shared/hooks/before-install.sh
|
||||
}
|
||||
|
||||
run_hook_after_install() {
|
||||
[ -e /shared/hooks/after-install.sh ] && bash /shared/hooks/after-install.sh
|
||||
}
|
||||
|
||||
run_hook_before_start() {
|
||||
[ -e /shared/hooks/before-start.sh ] && bash /shared/hooks/before-start.sh
|
||||
}
|
||||
|
||||
run_hook_after_start() {
|
||||
[ -e /shared/hooks/after-start.sh ] && bash /shared/hooks/after-start.sh
|
||||
}
|
||||
|
||||
add_hosts() {
|
||||
@@ -243,10 +315,11 @@ add_hosts() {
|
||||
|
||||
setup() {
|
||||
update_permission
|
||||
configure_xdebug_mode
|
||||
STATUS=$(OCC status)
|
||||
if [[ "$STATUS" = *"installed: true"* ]] || [[ ! -f $WEBROOT/config/config.php ]]
|
||||
then
|
||||
echo "🚀 Nextcloud already installed ... skipping setup"
|
||||
output "🚀 Nextcloud already installed ... skipping setup"
|
||||
|
||||
# configuration that should be applied on each start
|
||||
configure_ssl_proxy
|
||||
@@ -257,16 +330,55 @@ setup() {
|
||||
install
|
||||
fi
|
||||
fi
|
||||
}
|
||||
check_source() {
|
||||
FILE=/var/www/html/status.php
|
||||
if [ -f "$FILE" ]; then
|
||||
output "Server source is mounted, continuing"
|
||||
else
|
||||
output "Server source is not present, fetching ${SERVER_BRANCH:-master}"
|
||||
git clone --depth 1 --branch "${SERVER_BRANCH:-master}" https://github.com/nextcloud/server.git /tmp/server
|
||||
(cd /tmp/server && git submodule update --init)
|
||||
output "Cloning additional apps"
|
||||
git clone --depth 1 --branch "${SERVER_BRANCH:-master}" https://github.com/nextcloud/viewer.git /tmp/server/apps/viewer
|
||||
|
||||
# shallow clone of submodules https://stackoverflow.com/questions/2144406/how-to-make-shallow-git-submodules
|
||||
git config -f .gitmodules submodule.3rdparty.shallow true
|
||||
(cd /tmp/server && git submodule update --init)
|
||||
rsync -a --chmod=755 --chown=www-data:www-data /tmp/server/ /var/www/html
|
||||
chown www-data: /var/www/html
|
||||
chown www-data: /var/www/html/.htaccess
|
||||
fi
|
||||
output "Nextcloud server source is ready"
|
||||
}
|
||||
|
||||
wait_for_other_containers
|
||||
setup
|
||||
tee /etc/apache2/conf-enabled/install.conf << EOF
|
||||
<Directory "/var/www/html">
|
||||
AllowOverride None
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
RewriteCond %{REQUEST_URI} !/installing.html$
|
||||
RewriteRule .* /installing.html [L]
|
||||
</Directory>
|
||||
EOF
|
||||
|
||||
touch /var/log/cron/nextcloud.log "$WEBROOT"/data/nextcloud.log
|
||||
pkill -USR1 apache2
|
||||
(
|
||||
check_source
|
||||
wait_for_other_containers
|
||||
setup
|
||||
run_hook_before_start
|
||||
rm /etc/apache2/conf-enabled/install.conf
|
||||
rm -f /var/www/html/installing.html
|
||||
pkill -USR1 apache2
|
||||
run_hook_after_start
|
||||
) &
|
||||
|
||||
touch /var/log/cron/nextcloud.log "$WEBROOT"/data/nextcloud.log /var/log/xdebug.log
|
||||
chown www-data /var/log/xdebug.log
|
||||
|
||||
echo "📰 Watching log file"
|
||||
tail --follow "$WEBROOT"/data/nextcloud.log /var/log/cron/nextcloud.log &
|
||||
tail --follow "$WEBROOT"/data/nextcloud.log /var/log/cron/nextcloud.log /var/log/xdebug.log &
|
||||
|
||||
echo "⌚ Starting cron"
|
||||
/usr/sbin/cron -f &
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
FROM collabora/code
|
||||
@@ -0,0 +1,21 @@
|
||||
FROM --platform=linux/amd64 ubuntu:22.04
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y git build-essential zip ccache junit4 libkrb5-dev nasm graphviz python3 python3-dev qtbase5-dev libkf5coreaddons-dev libkf5i18n-dev libkf5config-dev libkf5windowsystem-dev libkf5kio-dev autoconf libcups2-dev libfontconfig1-dev gperf default-jdk doxygen libxslt1-dev xsltproc libxml2-utils libxrandr-dev libx11-dev bison flex libgtk-3-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev ant ant-optional libnss3-dev libavahi-client-dev libxt-dev \
|
||||
sudo git vim wget curl \
|
||||
dialog \
|
||||
libpoco-dev python3-polib libcap-dev npm \
|
||||
libpam-dev wget git build-essential libtool \
|
||||
libcap2-bin python3-lxml libpng-dev libcppunit-dev \
|
||||
pkg-config fontconfig \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN npm install -g sass
|
||||
|
||||
RUN adduser --quiet --disabled-password --gecos '' --system --group --home /collabora cool
|
||||
RUN adduser cool sudo
|
||||
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
EXPOSE 9980
|
||||
|
||||
USER cool
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php $CONFIG=[
|
||||
'memcache.local' => '\\OC\\Memcache\\APCu',
|
||||
];
|
||||
@@ -16,6 +16,12 @@
|
||||
'writable' => false,
|
||||
),
|
||||
2 =>
|
||||
array (
|
||||
'path' => '/var/www/html/apps-shared',
|
||||
'url' => '/apps-shared',
|
||||
'writable' => false,
|
||||
),
|
||||
3 =>
|
||||
array (
|
||||
'path' => '/var/www/html/apps-writable',
|
||||
'url' => '/apps-writable',
|
||||
@@ -36,5 +42,7 @@
|
||||
|
||||
'skeletondirectory' => '/skeleton',
|
||||
|
||||
'setup_create_db_user' => false,
|
||||
|
||||
//PLACEHOLDER
|
||||
];
|
||||
|
||||
Executable
+2190
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,18 @@
|
||||
# off develop debug gcstats profile trace
|
||||
xdebug.mode = debug
|
||||
; off develop debug gcstats profile trace
|
||||
xdebug.mode = off
|
||||
xdebug.idekey=PHPSTORM
|
||||
xdebug.trace_output_name=trace.%R.%u
|
||||
xdebug.profiler_output_name=profile.%R.%u
|
||||
xdebug.output_dir=/shared
|
||||
|
||||
# Try to discover the client host, otherwise fall back to the docker host
|
||||
xdebug.log = /var/log/xdebug.log
|
||||
xdebug.log_level = 1
|
||||
|
||||
; Try to discover the client host, otherwise fall back to the docker host
|
||||
xdebug.discover_client_host=true
|
||||
xdebug.client_host=host.docker.internal
|
||||
|
||||
# set this to autostart debugging e.g. if you cannot specify the trigger in the request
|
||||
# https://xdebug.org/docs/all_settings#start_with_request
|
||||
# xdebug.start_with_request = yes
|
||||
; When you cannot specify a trigger, use "xdebug.start_with_request = yes" to autostart debugging for all requests
|
||||
; https://xdebug.org/docs/all_settings#start_with_request
|
||||
xdebug.start_with_request = trigger
|
||||
xdebug.trace_format=0
|
||||
|
||||
@@ -0,0 +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;
|
||||
}
|
||||
|
||||
.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,3 +1,3 @@
|
||||
FROM elasticsearch:7.17.3
|
||||
FROM elasticsearch:7.17.14
|
||||
|
||||
RUN bin/elasticsearch-plugin install --batch ingest-attachment
|
||||
@@ -3,4 +3,4 @@ FROM osixia/openldap:latest
|
||||
ENV LDAP_DOMAIN="planetexpress.com"
|
||||
ENV LDAP_BASE_DN="dc=planetexpress,dc=com"
|
||||
|
||||
COPY ./configs/ldap /container/service/slapd/assets/config/bootstrap/ldif/custom
|
||||
COPY ./ldap/seed /container/service/slapd/assets/config/bootstrap/ldif/custom
|
||||
@@ -1,11 +1,11 @@
|
||||
FROM ubuntu:20.04
|
||||
FROM ubuntu:22.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV DBPASSWD=abrakadabra
|
||||
|
||||
ADD https://github.com/nextcloud/lookup-server/archive/master.zip /root/lookup-server.zip
|
||||
|
||||
COPY configs/lookupserver/entrypoint.sh /usr/sbin/
|
||||
COPY lookupserver/entrypoint.sh /usr/sbin/
|
||||
|
||||
RUN echo 'mariadb-server mysql-server/root_password password $DBPASSWD' | debconf-set-selections && \
|
||||
echo 'mariadb-server mysql-server/root_password_again password $DBPASSWD' | debconf-set-selections && \
|
||||
@@ -30,8 +30,8 @@ RUN cd /root/ && \
|
||||
rm lookup-server.zip && \
|
||||
rm -Rf lookup-server-master
|
||||
|
||||
COPY configs/lookupserver/config.php /var/www/html/config
|
||||
COPY configs/lookupserver/lookup.conf /etc/apache2/conf-available/
|
||||
COPY lookupserver/config.php /var/www/html/config
|
||||
COPY lookupserver/lookup.conf /etc/apache2/conf-available/
|
||||
|
||||
RUN a2enmod rewrite && \
|
||||
a2enconf lookup && \
|
||||
@@ -0,0 +1,2 @@
|
||||
FROM nginxproxy/nginx-proxy:latest
|
||||
ADD nginx/my_proxy.conf /etc/nginx/conf.d
|
||||
@@ -0,0 +1,8 @@
|
||||
server_tokens off;
|
||||
client_max_body_size 1024m;
|
||||
|
||||
proxy_read_timeout 3600;
|
||||
proxy_send_timeout 3600;
|
||||
proxy_connect_timeout 3600;
|
||||
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
@@ -0,0 +1,99 @@
|
||||
FROM php:8.2-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 \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
xdebug-^3.2 \
|
||||
zip \
|
||||
@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 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
echo '[global]'; \
|
||||
echo 'client min protocol = SMB2'; \
|
||||
echo 'client max protocol = SMB3'; \
|
||||
echo 'hide dot files = no'; \
|
||||
} > /etc/samba/smb.conf
|
||||
|
||||
RUN mkdir --parent /var/log/cron
|
||||
ADD configs/cron.conf /etc/nc-cron.conf
|
||||
RUN crontab /etc/nc-cron.conf
|
||||
|
||||
ADD configs/php/nextcloud.ini /usr/local/etc/php/conf.d/nextcloud.ini
|
||||
ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
|
||||
# Setup blackfire probe
|
||||
RUN wget -q -O - https://packages.blackfire.io/gpg.key | sudo apt-key add - \
|
||||
&& echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list \
|
||||
&& apt-get update \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
# mod_rewrite
|
||||
RUN a2enmod rewrite headers
|
||||
|
||||
# increase limit request body
|
||||
RUN echo "LimitRequestBody 0" > /etc/apache2/conf-available/limit-request-body.conf && a2enconf limit-request-body
|
||||
|
||||
VOLUME /var/www/html
|
||||
VOLUME /var/www/html/apps-writable
|
||||
VOLUME /var/www/html/config
|
||||
VOLUME /var/www/html/data
|
||||
|
||||
ENV SQL sqlite
|
||||
ENV NEXTCLOUD_AUTOINSTALL YES
|
||||
ENV WITH_REDIS NO
|
||||
|
||||
ENV WEBROOT /var/www/html
|
||||
WORKDIR /var/www/html
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
@@ -0,0 +1,100 @@
|
||||
FROM php:8.3-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 \
|
||||
blackfire \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
# waiting for https://github.com/mlocati/docker-php-extension-installer/pull/811
|
||||
# imagick \
|
||||
intl \
|
||||
ldap \
|
||||
oci8 \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
redis \
|
||||
smbclient \
|
||||
sysvsem \
|
||||
# xdebug \
|
||||
zip \
|
||||
@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 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/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
|
||||
|
||||
# Install NVM (Fermium = v14, Gallium = v16)
|
||||
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 lts/gallium \
|
||||
&& nvm install lts/fermium \
|
||||
&& npm install -g npm@7
|
||||
RUN wget https://gist.githubusercontent.com/nickvergessen/e21ee0a09ee3b3f7fd1b04c83dd3e114/raw/83142be1e50c23e8de1bd7aae88a95e5d6ae1ce2/nextcloud_log.json && lnav -i nextcloud_log.json && rm nextcloud_log.json
|
||||
|
||||
RUN { \
|
||||
echo '[global]'; \
|
||||
echo 'client min protocol = SMB2'; \
|
||||
echo 'client max protocol = SMB3'; \
|
||||
echo 'hide dot files = no'; \
|
||||
} > /etc/samba/smb.conf
|
||||
|
||||
RUN mkdir --parent /var/log/cron
|
||||
ADD configs/cron.conf /etc/nc-cron.conf
|
||||
RUN crontab /etc/nc-cron.conf
|
||||
|
||||
ADD configs/php/nextcloud.ini /usr/local/etc/php/conf.d/nextcloud.ini
|
||||
ADD configs/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
||||
|
||||
# Setup blackfire probe
|
||||
RUN wget -q -O - https://packages.blackfire.io/gpg.key | sudo apt-key add - \
|
||||
&& echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list \
|
||||
&& apt-get update \
|
||||
&& (apt-get install -y --no-install-recommends blackfire \
|
||||
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini \
|
||||
&& printf "\n\nblackfire.agent_socket=tcp://blackfire:8307\n" >> $PHP_INI_DIR/conf.d/zz-blackfire.ini && \
|
||||
mv $PHP_INI_DIR/conf.d/zz-blackfire.ini $PHP_INI_DIR/conf.d/zz-blackfire.ini.disabled) \
|
||||
|| echo "Skipped blackfire as the installation failed" \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||
|
||||
# mod_rewrite
|
||||
RUN a2enmod rewrite headers
|
||||
|
||||
# increase limit request body
|
||||
RUN echo "LimitRequestBody 0" > /etc/apache2/conf-available/limit-request-body.conf && a2enconf limit-request-body
|
||||
|
||||
VOLUME /var/www/html
|
||||
VOLUME /var/www/html/apps-writable
|
||||
VOLUME /var/www/html/config
|
||||
VOLUME /var/www/html/data
|
||||
|
||||
ENV SQL sqlite
|
||||
ENV NEXTCLOUD_AUTOINSTALL YES
|
||||
ENV WITH_REDIS NO
|
||||
|
||||
ENV WEBROOT /var/www/html
|
||||
WORKDIR /var/www/html
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/bootstrap.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
ADD data/installing.html /root/installing.html
|
||||
ADD configs/autoconfig_mysql.php configs/autoconfig_pgsql.php configs/autoconfig_oci.php configs/s3.php configs/config.php configs/redis.config.php configs/apcu.config.php /root/
|
||||
ADD bin/bootstrap.sh bin/occ /usr/local/bin/
|
||||
@@ -0,0 +1,7 @@
|
||||
FROM alpine
|
||||
|
||||
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
|
||||
|
||||
CMD ["/notify_push"]
|
||||
@@ -0,0 +1,49 @@
|
||||
# Taken from https://github.com/strukturag/nextcloud-spreed-signaling/blob/54c1af7f4f1b598a9f2c1ae37b76b37e9dda3ee8/docker/janus/Dockerfile
|
||||
|
||||
# Modified from https://gitlab.com/powerpaul17/nc_talk_backend/-/blob/dcbb918d8716dad1eb72a889d1e6aa1e3a543641/docker/janus/Dockerfile
|
||||
FROM alpine:3.18
|
||||
|
||||
RUN apk add --no-cache curl autoconf automake libtool pkgconf build-base \
|
||||
glib-dev libconfig-dev libnice-dev jansson-dev openssl-dev zlib libsrtp-dev \
|
||||
gengetopt libwebsockets-dev git curl-dev libogg-dev
|
||||
|
||||
# usrsctp
|
||||
# 08 Oct 2021
|
||||
ARG USRSCTP_VERSION=7c31bd35c79ba67084ce029511193a19ceb97447
|
||||
|
||||
RUN cd /tmp && \
|
||||
git clone https://github.com/sctplab/usrsctp && \
|
||||
cd usrsctp && \
|
||||
git checkout $USRSCTP_VERSION && \
|
||||
./bootstrap && \
|
||||
./configure --prefix=/usr && \
|
||||
make && make install
|
||||
|
||||
# libsrtp
|
||||
ARG LIBSRTP_VERSION=2.4.2
|
||||
RUN cd /tmp && \
|
||||
wget https://github.com/cisco/libsrtp/archive/v$LIBSRTP_VERSION.tar.gz && \
|
||||
tar xfv v$LIBSRTP_VERSION.tar.gz && \
|
||||
cd libsrtp-$LIBSRTP_VERSION && \
|
||||
./configure --prefix=/usr --enable-openssl && \
|
||||
make shared_library && \
|
||||
make install && \
|
||||
rm -fr /libsrtp-$LIBSRTP_VERSION && \
|
||||
rm -f /v$LIBSRTP_VERSION.tar.gz
|
||||
|
||||
# JANUS
|
||||
|
||||
ARG JANUS_VERSION=0.11.8
|
||||
RUN mkdir -p /usr/src/janus && \
|
||||
cd /usr/src/janus && \
|
||||
curl -L https://github.com/meetecho/janus-gateway/archive/v$JANUS_VERSION.tar.gz | tar -xz && \
|
||||
cd /usr/src/janus/janus-gateway-$JANUS_VERSION && \
|
||||
./autogen.sh && \
|
||||
./configure --disable-rabbitmq --disable-mqtt --disable-boringssl && \
|
||||
make && \
|
||||
make install && \
|
||||
make configs
|
||||
|
||||
WORKDIR /usr/src/janus/janus-gateway-$JANUS_VERSION
|
||||
|
||||
CMD [ "janus", "--full-trickle" ]
|
||||
+17
-3
@@ -1,14 +1,22 @@
|
||||
COMPOSE_PROJECT_NAME=master
|
||||
|
||||
# Default protocol to use for Nextcloud and other containers
|
||||
# check the readme for details how to setup https
|
||||
PROTOCOL=http
|
||||
|
||||
# Paths
|
||||
REPO_PATH_SERVER=/home/jus/repos/nextcloud/server
|
||||
ADDITIONAL_APPS_PATH=/home/jus/repos/nextcloud/server/apps-extra
|
||||
REPO_PATH_SERVER=/home/jus/workspace/server
|
||||
|
||||
# Specify a path to apps which will be shared between all containers. Useful for apps that support multiple nextcloud versions
|
||||
ADDITIONAL_APPS_PATH=/home/jus/workspace/server/apps-shared
|
||||
|
||||
# Stable releases root directory
|
||||
STABLE_ROOT_PATH=/home/jus/repos/nextcloud/
|
||||
STABLE_ROOT_PATH=/home/jus/workspace/
|
||||
|
||||
# Install Nextcloud apps per default
|
||||
# NEXTCLOUD_AUTOINSTALL_APPS="viewer activity"
|
||||
# Retry enabling apps for a provided amount of time (can be useful when using the containers in CI)
|
||||
# NEXTCLOUD_AUTOINSTALL_APPS_WAIT_TIME=0
|
||||
|
||||
# Blackfire configuration
|
||||
# BLACKFIRE_CLIENT_ID=
|
||||
@@ -32,7 +40,13 @@ DOMAIN_SUFFIX=.local
|
||||
# PHP_VERSION=72
|
||||
# PHP_VERSION=73
|
||||
# PHP_VERSION=74
|
||||
# PHP_VERSION=80
|
||||
# PHP_VERSION=81
|
||||
|
||||
# May be used to choose database. Both SQL and DB_SERVICE have to be set if used. Defaults to mysql.
|
||||
# SQL=pgsql
|
||||
# DB_SERVICE=database-postgres
|
||||
|
||||
# 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
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:base"
|
||||
],
|
||||
"labels": ["dependencies"],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchDatasources": ["docker"],
|
||||
"matchPackageNames": ["php"],
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -18,8 +18,9 @@ source .env
|
||||
echo "Setting up Collabora with collabora$DOMAIN_SUFFIX on $CONTAINER"
|
||||
docker-compose up -d collabora
|
||||
occ app:enable richdocuments
|
||||
occ config:app:set richdocuments wopi_url --value="http://collabora${DOMAIN_SUFFIX}"
|
||||
occ config:app:set richdocuments public_wopi_url --value="http://collabora${DOMAIN_SUFFIX}"
|
||||
occ config:app:set richdocuments wopi_url --value="${PROTOCOL:-http}://collabora${DOMAIN_SUFFIX}"
|
||||
occ config:app:set richdocuments public_wopi_url --value="${PROTOCOL:-http}://collabora${DOMAIN_SUFFIX}"
|
||||
occ config:app:set richdocuments disable_certificate_verification --value="yes"
|
||||
occ config:system:set allow_local_remote_servers --value true --type bool
|
||||
occ config:system:set gs.trustedHosts 0 --value "*${DOMAIN_SUFFIX}"
|
||||
occ richdocuments:activate-config
|
||||
|
||||
@@ -19,3 +19,6 @@ echo "Setting up ONLYOFFICE with onlyoffice$DOMAIN_SUFFIX on $CONTAINER"
|
||||
docker-compose up -d onlyoffice
|
||||
occ app:enable onlyoffice --force
|
||||
occ config:app:set onlyoffice DocumentServerUrl --value="http://onlyoffice$DOMAIN_SUFFIX"
|
||||
|
||||
|
||||
docker-compose exec onlyoffice /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'
|
||||
|
||||
@@ -8,6 +8,6 @@ OCC config:system:set enabledPreviewProviders 1 --value 'OC\Preview\TXT'
|
||||
OCC config:system:set enabledPreviewProviders 2 --value 'OC\Preview\MarkDown'
|
||||
OCC config:system:set enabledPreviewProviders 3 --value 'OC\Preview\OpenDocument'
|
||||
OCC config:system:set enabledPreviewProviders 4 --value 'OC\Preview\Krita'
|
||||
OCC config:system:set enabledPreviewProviders 4 --value 'OC\Preview\Imaginary'
|
||||
OCC config:system:set enabledPreviewProviders 5 --value 'OC\Preview\Imaginary'
|
||||
|
||||
OCC config:system:set preview_imaginary_url --value 'http://previews_hpb:8088'
|
||||
OCC config:system:set preview_imaginary_url --value 'http://previews_hpb:8088'
|
||||
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Usage $0 CONTAINER"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONTAINER=$1
|
||||
|
||||
function occ() {
|
||||
docker compose exec "$CONTAINER" sudo -E -u www-data "./occ" "$@"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
source .env
|
||||
|
||||
echo "Setting up talk signaling with http://talk-signaling$DOMAIN_SUFFIX on $CONTAINER"
|
||||
docker-compose up -d talk-signaling talk-janus
|
||||
|
||||
if ! occ talk:signaling:list --output="plain" | grep -q "http://talk-signaling$DOMAIN_SUFFIX"; then
|
||||
occ talk:signaling:add "http://talk-signaling$DOMAIN_SUFFIX" "1234"
|
||||
fi
|
||||
|
||||
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Default container name to operate on
|
||||
instance=${INSTANCE:-nextcloud}
|
||||
|
||||
show_help() {
|
||||
cat << EOF
|
||||
$0: Run commands in the database backend directly.
|
||||
Usage:
|
||||
$0 [PARAMS] -- {MySQL Params}
|
||||
|
||||
The PARAMS are interpreted by the wrapper script while the MySQL Params are forwarded literally to the database client.
|
||||
To separate the two lists, the double dash can be used.
|
||||
|
||||
The following parameters are recognized by the wrapper:
|
||||
--instance/-i INST Use the database for the container INST. (Default: nextcloud)
|
||||
--help/-h Show this help and exit.
|
||||
EOF
|
||||
}
|
||||
|
||||
run_mysql() {
|
||||
docker compose exec database-mysql mysql -u nextcloud -pnextcloud "$instance" "$@"
|
||||
exit $?
|
||||
}
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
--instance|-i)
|
||||
instance="$2"
|
||||
# Additional shift
|
||||
shift
|
||||
;;
|
||||
--help|-h)
|
||||
show_help
|
||||
exit
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
run_mysql "$@"
|
||||
;;
|
||||
*)
|
||||
echo "Parameter $1 is not recognized. I assume this is for the mysql client."
|
||||
run_mysql "$@"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Shift to the next parameter
|
||||
shift
|
||||
done
|
||||
|
||||
# No parameters were given.
|
||||
run_mysql
|
||||
Executable
+83
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Default container name to operate on
|
||||
container=${CONTAINER:-nextcloud}
|
||||
# container_set=
|
||||
|
||||
show_help() {
|
||||
cat << EOF
|
||||
$0: Run OCC commands in containers
|
||||
Usage:
|
||||
$0 [CONTAINER] [PARAMS] [--] {OCC_PARAMS}
|
||||
|
||||
In CONTAINER you can specify the name of the container to work on. It must be the very first parameter.
|
||||
|
||||
With PARAMS you can provide additional information to the script. The possible options are documented below.
|
||||
The params in OCC_PARAMS are forwarded to the OCC script literally.
|
||||
|
||||
With double dash -- you can separate the params from the OCC params. This might be required if the names are recognized by both scripts.
|
||||
|
||||
Possible options for PARAMS:
|
||||
--help/-h Print this help and exit
|
||||
|
||||
If the container is not given explicitly, the env variable CONTAINER will be checked. If this is not given, the default value is nextcloud.
|
||||
Examples:
|
||||
|
||||
$0 stable25 -- status
|
||||
Run the occ command "status" in the stable25 container
|
||||
|
||||
$0 stable25 status
|
||||
The same as above with guessing that status is the occ command in question
|
||||
|
||||
$0 app:list
|
||||
List the apps in the default container (nextcloud)
|
||||
EOF
|
||||
}
|
||||
|
||||
run_occ() {
|
||||
docker compose exec --user www-data "$container" ./occ "$@"
|
||||
exit $?
|
||||
}
|
||||
|
||||
is_valid_container_name() {
|
||||
if [[ ( $1 =~ ^nextcloud[2,3]?$ ) || ( $1 =~ ^stable[0-9]*$ ) ]]
|
||||
then
|
||||
# The param $1 is a valid container name
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Guess if the first entry is a container name
|
||||
if is_valid_container_name "$1"
|
||||
then
|
||||
echo "Using $1 as the container to work on."
|
||||
container=$1
|
||||
# container_set=1
|
||||
shift
|
||||
fi
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
--help|-h)
|
||||
show_help
|
||||
exit
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
run_occ "$@"
|
||||
;;
|
||||
*)
|
||||
echo "Parameter $1 is not recognized. I assume this is for occ."
|
||||
run_occ "$@"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Shift to the next parameter
|
||||
# shellcheck disable=SC2317
|
||||
shift
|
||||
done
|
||||
|
||||
run_occ
|
||||
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Usage $0 CONTAINER blackfire on|off"
|
||||
echo " $0 CONTAINER xdebug.log_level <NUMERIC>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
restart() {
|
||||
(cd "$SCRIPT_DIR/.." && docker compose exec "$1" pkill -USR1 apache2)
|
||||
}
|
||||
|
||||
docker_exec() {
|
||||
# shellcheck disable=SC2068
|
||||
(cd "$SCRIPT_DIR/.." && docker compose exec $@)
|
||||
}
|
||||
|
||||
docker_compose() {
|
||||
# shellcheck disable=SC2068
|
||||
(cd "$SCRIPT_DIR/.." && docker compose $@)
|
||||
}
|
||||
|
||||
if [[ "$2" == "blackfire" ]]
|
||||
then
|
||||
if [[ "$3" == "on" ]]
|
||||
then
|
||||
echo 'Enabling blackfire'
|
||||
docker_compose up -d blackfire
|
||||
docker_exec "$1" "mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini"
|
||||
else
|
||||
echo 'Disabling blackfire'
|
||||
docker_compose stop blackfire
|
||||
docker_exec "$1" "mv /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini /usr/local/etc/php/conf.d/docker-php-ext-blackfire.ini.disabled"
|
||||
fi
|
||||
restart "$1"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ "$2" =~ "xdebug" ]]
|
||||
then
|
||||
if [[ -n "$3" ]]
|
||||
then
|
||||
echo "Setting $2 to $3"
|
||||
value="${3//\//\\\/}"
|
||||
docker_exec "$1" sed -i 's/^'"$2"'\s*=\s*.*/'"$2"'='"$value"'/g' /usr/local/etc/php/conf.d/xdebug.ini
|
||||
else
|
||||
echo "No value provided"
|
||||
exit 1
|
||||
fi
|
||||
restart "$1"
|
||||
docker_exec "$1" cat /usr/local/etc/php/conf.d/xdebug.ini
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo 'Invalid option'
|
||||
exit 1
|
||||
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ! [ -x "$(command -v mkcert)" ]; then
|
||||
echo 'Error: mkcert is not installed.' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
|
||||
CERT_DIR="${SCRIPT_DIR}/../data/ssl/"
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/../.env"
|
||||
|
||||
awk '$1 == "-"{ if (key == "aliases:") print $NF; next } {key=$1}' docker-compose.yml | \
|
||||
sed "s/\${DOMAIN_SUFFIX}/${DOMAIN_SUFFIX}/" | \
|
||||
while read -r line;
|
||||
do
|
||||
mkcert -cert-file "${CERT_DIR}${line}.crt" -key-file "${CERT_DIR}${line}.key" "${line}"
|
||||
done
|
||||
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/../.env"
|
||||
|
||||
function addhost() {
|
||||
ETC_HOSTS=/etc/hosts
|
||||
HOSTNAME=$1
|
||||
IP=$2
|
||||
HOSTS_LINE="$( echo -e "$IP\t${HOSTNAME}" )"
|
||||
if grep -q -E "${IP}\s*${HOSTNAME}" /etc/hosts
|
||||
then
|
||||
echo " ✅ ${HOSTNAME} (${IP}) already exists"
|
||||
else
|
||||
echo " 🛠️ Adding ${HOSTNAME} (${IP}) to your $ETC_HOSTS";
|
||||
sudo -- sh -c -e "echo '$HOSTS_LINE' >> /etc/hosts";
|
||||
|
||||
if grep -q -E "${IP}\s*${HOSTNAME}" /etc/hosts
|
||||
then
|
||||
echo " ✅ ${HOSTNAME} (${IP}) was added succesfully";
|
||||
else
|
||||
echo " 🛑 Failed to Add ${HOSTNAME} (${IP}), Try again!";
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
awk '$1 == "-"{ if (key == "aliases:") print $NF; next } {key=$1}' docker-compose.yml | \
|
||||
sed "s/\${DOMAIN_SUFFIX}/${DOMAIN_SUFFIX}/" | \
|
||||
while read -r line;
|
||||
do
|
||||
addhost "${line}" 127.0.0.1;
|
||||
addhost "${line}" "::1";
|
||||
done
|
||||
Reference in New Issue
Block a user