64 Commits

Author SHA1 Message Date
a277e11505 chore: update Nextcloud to 31.0.6 2025-06-12 10:41:10 +02:00
42b36e3c9b chore: update Nextcloud to 31.0.5 2025-05-16 09:16:24 +02:00
51b19a1236 chore: revert imagick installation to pecl
3.8.0 was released and should include the fix:
https://pecl.php.net/package/imagick/3.8.0

ref: https://github.com/hoellen/docker-nextcloud/pull/103
2025-04-28 18:52:47 +02:00
4270518e02 chore: fixing Docker build checks
* Fixing FromAsCasing
(See https://docs.docker.com/reference/build-checks/from-as-casing/)

* Fixing LegacyKeyValueFormat
(See https://docs.docker.com/reference/build-checks/legacy-key-value-format/)
2025-04-25 11:02:07 +02:00
78e4175f7f chore: update supported Nextcloud versions 2025-04-25 10:58:36 +02:00
46828aed43 chore: update Nextcloud to 31.0.4 2025-04-25 10:55:30 +02:00
19dc754372 CI: Fix unsupported runner, use ubuntu-24.04 2025-04-18 16:50:36 +02:00
54e9f1feda chore: update Nextcloud to 31.0.3 2025-04-14 10:23:29 +02:00
2892342326 chore: update Nextcloud to 31.0.2 2025-03-19 22:16:43 +01:00
a15384e7e5 chore: update Nextcloud to 31.0.1 2025-03-14 09:28:14 +01:00
5d5b8ebc1a chore: update Nextcloud to 31.0.0 2025-02-25 14:12:11 +01:00
921eec5693 chore: update Nextcloud to 30.0.6 2025-02-13 15:45:41 +01:00
1b0c1fb747 chore: update Nextcloud to 30.0.5 2025-01-21 22:15:49 +01:00
a7ade2cbc4 fix: pin Imagick version to fix build error (#102)
Related: #102, #103
2024-12-18 13:32:50 +01:00
3451a6219a fix: wrong path because of usr-merge 2024-12-13 15:10:06 +01:00
16acf58089 chore: update Nextcloud to 30.0.4 2024-12-13 11:18:34 +01:00
ae0277a368 chore: raise Alpine Linux version to 3.21
Release notes: https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.21.0
2024-12-13 11:18:06 +01:00
aeea888ef9 Raise PHP version to 8.3
(Closes: #94)
2024-12-08 13:37:56 +01:00
ae5b0cfd0c chore: update Nextcloud to version 30.0.3 2024-12-06 03:31:04 +01:00
ee9d26963c chore: update Nextcloud to version 30.0.2 2024-11-07 19:40:18 +01:00
a5538adb2f fix: add otf loading in nginx config 2024-10-18 12:03:06 +02:00
ee98f35852 chore: update Nextcloud to 30.0.1 2024-10-18 12:02:34 +02:00
2ceb05c146 chore: update Nextcloud to 30.0.0 2024-09-14 19:52:28 +02:00
ee2760237f chore: update Nextcloud to 29.0.7 2024-09-13 05:38:50 +02:00
6aa67c63b5 chore: update Nextcloud to 29.0.5 2024-08-21 10:03:37 +02:00
a0442ed1de chore: adding trailing slash
see https://docs.nextcloud.com/server/29/admin_manual/installation/nginx.html
2024-08-21 10:02:39 +02:00
74e06ec86d chore: update Nextcloud to 29.0.4 2024-07-20 11:06:42 +02:00
ce390fc654 chore: update Nextcloud to 29.0.3 2024-06-25 15:03:57 +02:00
6facdfba4f chore: update Nextcloud to 29.0.2 2024-06-07 00:26:54 +02:00
60954e1ad7 chore: update Nextcloud to 29.0.1 2024-05-23 23:07:46 +02:00
539f41e25e chore: update Alpine to 3.20 2024-05-23 23:07:46 +02:00
fa3fe52dd2 chore: update Nextcloud to 29.0.0 2024-04-24 17:39:44 +02:00
1528fc9a00 feat: enhance branch workflow 2024-04-24 17:05:32 +02:00
cb21fa369e chore: update Nginx to 1.26 (stable) 2024-04-24 09:12:30 +02:00
35f8a4f1ae chore: mark version 26 as EOL 2024-04-09 15:06:45 +02:00
34f40fe438 fix: add missing librsvg
This was caused by the update to Alpine 3.19.
2024-04-09 14:47:04 +02:00
aec283db22 chore: update cosign 2024-03-29 15:44:15 +01:00
6b6e52fbdc chore: update Alpine to 3.19 2024-03-29 14:59:30 +01:00
e0cb8643f0 chore: update Nextcloud to 28.0.4 2024-03-29 14:58:29 +01:00
314cc8016d chore: update Nextcloud to 28.0.3 2024-03-02 05:01:32 +01:00
4f112a4cdb Fully qualify the base images 2024-03-02 05:00:45 +01:00
18e11abda1 chore: update Nextcloud to 28.0.2 2024-02-01 14:48:00 +01:00
bf3c76a5f8 chore: update nginx configuration
- update static file extensions
 - add mjs to mimetype
   https://github.com/hoellen/docker-nextcloud/issues/60
 - remove legacy header
   https://github.com/hoellen/docker-nextcloud/pull/61
2024-01-02 11:10:11 +01:00
dec3a7f789 fix: set default port for PostgreSQL in db check 2023-12-27 11:24:10 +01:00
cedf7fc4c6 chore: update Nextcloud to 28.0.1 2023-12-21 20:58:05 +01:00
80704341e6 feat: check if db is available, not just in setup 2023-12-21 20:57:11 +01:00
1ee6c08552 chore: update Nextcloud to 28.0.0 2023-12-15 21:09:46 +01:00
112339b5c8 chore: update Nextcloud to 27.1.4 2023-11-24 09:21:16 +01:00
2334b3e231 chore: update Nextcloud to 27.1.3 2023-10-30 10:18:22 +01:00
6adf9e6bf8 Fix resolving osc-provider (Closes: #47)
Accordingly to dc0b8d9c39
2023-10-21 09:40:13 +02:00
0bb63de5b4 chore: update Nextcloud to 27.1.2 2023-10-06 00:44:08 +02:00
0ee4012ae6 Update Snuffleupagus to 0.10.0 2023-09-21 16:17:49 +02:00
18da631215 Drop call of libxml_set_external_entity_loader
ref:
  - https://github.com/jvoisin/snuffleupagus/issues/463
  - https://github.com/hoellen/docker-nextcloud/issues/42
2023-09-21 16:12:33 +02:00
e627d1fd4c chore: update Nextcloud to 27.1.1 2023-09-21 15:52:33 +02:00
86012886af chore: update Nextcloud to 27.1.0 2023-09-15 22:22:15 +02:00
de096e78a4 chore: update Nextcloud to 27.0.2 2023-08-10 12:34:01 +02:00
2d3fd8f5c3 fix: disable snuffleupagus xxe protection
Nextcloud now prevents loading external entities by using libxml_set_external_entity_loader.

ref:
https://github.com/nextcloud/server/pull/39490
https://github.com/hoellen/docker-nextcloud/issues/42
2023-07-25 06:34:32 +02:00
9070495ad0 chore: update Nextcloud to 27.0.1 2023-07-21 00:15:21 +03:00
4ba3589149 chore: update Nextcloud to 27, PHP to 8.2 and Alpine to 3.18 2023-06-13 16:06:23 +02:00
a7ba180598 Update Nextcloud to 26.0.2 2023-05-25 21:08:59 +02:00
4ea95f826a chore: update Nextcloud to 26.0.1 2023-04-20 09:36:26 +02:00
8451b3d94d chore: update nginx to new stable (1.24.0) 2023-04-12 10:42:30 +02:00
9c24fd91b2 chore: update Alpine Linux to 3.17 2023-04-01 12:30:42 +02:00
0bb5b1fa73 chore: update Nextcloud to 26.0.0 2023-03-21 21:30:47 +01:00
10 changed files with 67 additions and 42 deletions

View File

@ -3,7 +3,9 @@ name: build
on: on:
workflow_dispatch: workflow_dispatch:
push: push:
branches: [ master ] branches:
- master
- version-*
schedule: schedule:
# Build the image regularly (each Friday) # Build the image regularly (each Friday)
- cron: '23 04 * * 5' - cron: '23 04 * * 5'
@ -27,14 +29,17 @@ jobs:
- name: Extract version for tags - name: Extract version for tags
run: | run: |
echo "FULL_VERSION=$(grep -oP '(?<=NEXTCLOUD_VERSION=).*' Dockerfile | head -c6)" >> $GITHUB_ENV BRANCH="${GITHUB_REF#refs/heads/}"
echo "MAJOR_VERSION=$(grep -oP '(?<=NEXTCLOUD_VERSION=).*' Dockerfile | head -c2)" >> $GITHUB_ENV VERSION=$(grep -oP '(?<=NEXTCLOUD_VERSION=).*' Dockerfile)
[ "$BRANCH" = "master" ] && echo "BRANCH_VERSION=latest" >> $GITHUB_ENV
echo "FULL_VERSION=${VERSION:0:7}" >> $GITHUB_ENV
echo "MAJOR_VERSION=${VERSION:0:2}" >> $GITHUB_ENV
- name: Install cosign - name: Install cosign
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@main uses: sigstore/cosign-installer@main
with: with:
cosign-release: 'v1.13.1' cosign-release: 'v2.2.2'
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v1
@ -53,7 +58,7 @@ jobs:
with: with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: | tags: |
latest ${{ env.BRANCH_VERSION }}
${{ env.FULL_VERSION }} ${{ env.FULL_VERSION }}
${{ env.MAJOR_VERSION }} ${{ env.MAJOR_VERSION }}
@ -70,4 +75,4 @@ jobs:
if: ${{ github.event_name != 'pull_request' }} if: ${{ github.event_name != 'pull_request' }}
env: env:
COSIGN_EXPERIMENTAL: "true" COSIGN_EXPERIMENTAL: "true"
run: cosign sign ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }} run: cosign sign --yes ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}

View File

@ -8,7 +8,7 @@ on:
jobs: jobs:
build: build:
name: Scan current image & report results name: Scan current image & report results
runs-on: "ubuntu-20.04" runs-on: "ubuntu-24.04"
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v2 uses: actions/checkout@v2

View File

@ -1,24 +1,24 @@
# -------------- Build-time variables -------------- # -------------- Build-time variables --------------
ARG NEXTCLOUD_VERSION=25.0.4 ARG NEXTCLOUD_VERSION=31.0.6
ARG PHP_VERSION=8.1 ARG PHP_VERSION=8.3
ARG NGINX_VERSION=1.22 ARG NGINX_VERSION=1.26
ARG ALPINE_VERSION=3.16 ARG ALPINE_VERSION=3.21
ARG HARDENED_MALLOC_VERSION=11 ARG HARDENED_MALLOC_VERSION=11
ARG SNUFFLEUPAGUS_VERSION=0.8.3 ARG SNUFFLEUPAGUS_VERSION=0.10.0
ARG UID=1000 ARG UID=1000
ARG GID=1000 ARG GID=1000
# nextcloud-25.0.4.tar.bz2 # nextcloud-31.0.6.tar.bz2
ARG SHA256_SUM="c3251e0083a94303e2d6988b352f3b33082a79a726b30ff746709b0fe869a1a6" ARG SHA256_SUM="a6abce1be84ae65090625895ee5796c6e631fd10cb17645ec4d73f7d9b372628"
# Nextcloud Security <security@nextcloud.com> (D75899B9A724937A) # Nextcloud Security <security@nextcloud.com> (D75899B9A724937A)
ARG GPG_FINGERPRINT="2880 6A87 8AE4 23A2 8372 792E D758 99B9 A724 937A" ARG GPG_FINGERPRINT="2880 6A87 8AE4 23A2 8372 792E D758 99B9 A724 937A"
# --------------------------------------------------- # ---------------------------------------------------
### Build PHP base ### Build PHP base
FROM php:${PHP_VERSION}-fpm-alpine${ALPINE_VERSION} as base FROM docker.io/library/php:${PHP_VERSION}-fpm-alpine${ALPINE_VERSION} AS base
ARG SNUFFLEUPAGUS_VERSION ARG SNUFFLEUPAGUS_VERSION
@ -43,6 +43,7 @@ RUN apk -U upgrade \
gmp \ gmp \
icu \ icu \
libjpeg-turbo \ libjpeg-turbo \
librsvg \
libpq \ libpq \
libpq \ libpq \
libwebp \ libwebp \
@ -58,12 +59,14 @@ RUN apk -U upgrade \
bcmath \ bcmath \
exif \ exif \
gd \ gd \
bz2 \
intl \ intl \
ldap \ ldap \
opcache \ opcache \
pcntl \ pcntl \
pdo_mysql \ pdo_mysql \
pdo_pgsql \ pdo_pgsql \
sysvsem \
zip \ zip \
gmp \ gmp \
&& pecl install smbclient \ && pecl install smbclient \
@ -82,7 +85,7 @@ RUN apk -U upgrade \
### Build Hardened Malloc ### Build Hardened Malloc
ARG ALPINE_VERSION ARG ALPINE_VERSION
FROM alpine:${ALPINE_VERSION} as build-malloc FROM docker.io/library/alpine:${ALPINE_VERSION} AS build-malloc
ARG HARDENED_MALLOC_VERSION ARG HARDENED_MALLOC_VERSION
ARG CONFIG_NATIVE=false ARG CONFIG_NATIVE=false
@ -96,11 +99,11 @@ RUN apk --no-cache add build-base git gnupg && cd /tmp \
### Fetch nginx ### Fetch nginx
FROM nginx:${NGINX_VERSION}-alpine as nginx FROM docker.io/library/nginx:${NGINX_VERSION}-alpine AS nginx
### Build Nextcloud (production environemnt) ### Build Nextcloud (production environemnt)
FROM base as nextcloud FROM base AS nextcloud
COPY --from=nginx /usr/sbin/nginx /usr/sbin/nginx COPY --from=nginx /usr/sbin/nginx /usr/sbin/nginx
COPY --from=nginx /etc/nginx /etc/nginx COPY --from=nginx /etc/nginx /etc/nginx

View File

@ -46,7 +46,7 @@ Don't run random images from random dudes on the Internet. Ideally, you want to
- **Images are scanned every day** by [Trivy](https://github.com/aquasecurity/trivy) for OS vulnerabilities. Known vulnerabilities will be automatically uploaded to [GitHub Security Lab](https://github.com/Wonderfall/docker-nextcloud/security/code-scanning) for full transparency. This also warns me if I have to take action to fix a vulnerability. - **Images are scanned every day** by [Trivy](https://github.com/aquasecurity/trivy) for OS vulnerabilities. Known vulnerabilities will be automatically uploaded to [GitHub Security Lab](https://github.com/Wonderfall/docker-nextcloud/security/code-scanning) for full transparency. This also warns me if I have to take action to fix a vulnerability.
- **Latest tag/version is automatically built weekly**, so you should often update your images regardless if you're already using the latest Nextcloud version. - **Latest tag/version is automatically built weekly**, so you should often update your images regardless if you're already using the latest Nextcloud version.
- **Build production images without cache** (use `docker build --no-cache` for instance) if you want to build your images manually. Latest dependencies will hence be used instead of outdated ones due to a cached layer. - **Build production images without cache** (use `docker build --no-cache` for instance) if you want to build your images manually. Latest dependencies will hence be used instead of outdated ones due to a cached layer.
- **A security module for PHP called [Snuffleupagus](https://github.com/jvoisin/snuffleupagus) is used by default**. This module aims at killing entire bug and security exploit classes (including XXE, weak PRNG, file-upload based code execution), thus raising the cost of attacks. For now we're using a configuration file derived from [the default one](https://github.com/jvoisin/snuffleupagus/blob/master/config/default_php8.rules), with some explicit exceptions related to Nextcloud. This configuration file is tested and shouldn't break basic functionality, but it can cause issues in specific and untested use cases: if that happens to you, get logs from either `syslog` or `/nginx/logs/error.log` inside the container, and [open an issue](https://github.com/hoellen/docker-nextcloud/issues). You can also disable the security module altogether by changing the `PHP_HARDENING` environment variable to `false` before recreating the container. - **A security module for PHP called [Snuffleupagus](https://github.com/jvoisin/snuffleupagus) is used by default**. This module aims at killing entire bug and security exploit classes (including weak PRNG, file-upload based code execution), thus raising the cost of attacks. For now we're using a configuration file derived from [the default one](https://github.com/jvoisin/snuffleupagus/blob/master/config/default_php8.rules), with some explicit exceptions related to Nextcloud. This configuration file is tested and shouldn't break basic functionality, but it can cause issues in specific and untested use cases: if that happens to you, get logs from either `syslog` or `/nginx/logs/error.log` inside the container, and [open an issue](https://github.com/hoellen/docker-nextcloud/issues). You can also disable the security module altogether by changing the `PHP_HARDENING` environment variable to `false` before recreating the container.
- **Images are signed with the GitHub-provided OIDC token in Actions** using the experimental "keyless" signing feature provided by [cosign](https://github.com/sigstore/cosign). You can verify the image signature using `cosign` as well: - **Images are signed with the GitHub-provided OIDC token in Actions** using the experimental "keyless" signing feature provided by [cosign](https://github.com/sigstore/cosign). You can verify the image signature using `cosign` as well:
``` ```
@ -58,8 +58,8 @@ Verifying the signature isn't a requirement, and might not be as seamless as usi
## Tags ## Tags
- `latest` : latest Nextcloud version - `latest` : latest Nextcloud version
- `x` : latest Nextcloud x.x (e.g. `25`) - `x` : latest Nextcloud x.x (e.g. `31`)
- `x.x.x` : Nextcloud x.x.x (e.g. `25.0.0`) - `x.x.x` : Nextcloud x.x.x (e.g. `31.0.0`)
You can always have a glance [here](https://github.com/users/hoellen/packages/container/package/nextcloud). You can always have a glance [here](https://github.com/users/hoellen/packages/container/package/nextcloud).
Only the **latest stable version** will be maintained by myself. Only the **latest stable version** will be maintained by myself.

View File

@ -7,12 +7,19 @@ and will receive the minor version updates and security patches.
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 25. x | :white_check_mark: | | 31. x | :white_check_mark: |
| 24. x | :white_check_mark: | | 30. x | :white_check_mark: |
| 29. x | :negative_squared_cross_mark: |
| 28. x | :negative_squared_cross_mark: |
| 27. x | :negative_squared_cross_mark: |
| 26. x | :negative_squared_cross_mark: |
| 25. x | :negative_squared_cross_mark: |
| 24. x | :negative_squared_cross_mark: |
| 23. x | :negative_squared_cross_mark: | | 23. x | :negative_squared_cross_mark: |
| 22. x | :negative_squared_cross_mark: | | 22. x | :negative_squared_cross_mark: |
Please update to the latest version available. Major migrations are always tested before being pushed. Please update to the latest version available. Major migrations are always tested before being pushed.
An up-to-date list of the currently maintained Nextcloud versions can also be found in the [Nextcloud Repository Wiki](https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule).
## Automated vulnerability scanning ## Automated vulnerability scanning

View File

@ -18,10 +18,9 @@ server {
add_header Referrer-Policy "no-referrer" always; add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always; add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always; add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "0" always; add_header X-XSS-Protection "0" always;
location = /robots.txt { location = /robots.txt {
@ -31,8 +30,8 @@ server {
} }
location ^~ /.well-known { location ^~ /.well-known {
location = /.well-known/carddav { return 301 $nc_proto://$host/remote.php/dav; } location = /.well-known/carddav { return 301 $nc_proto://$host/remote.php/dav/; }
location = /.well-known/caldav { return 301 $nc_proto://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $nc_proto://$host/remote.php/dav/; }
location ^~ /.well-known { return 301 $nc_proto://$host/index.php$uri; } location ^~ /.well-known { return 301 $nc_proto://$host/index.php$uri; }
try_files $uri $uri/ =404; try_files $uri $uri/ =404;
} }
@ -49,7 +48,7 @@ server {
return 404; return 404;
} }
location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) { location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) {
include /etc/nginx/fastcgi_params; include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
@ -62,18 +61,18 @@ server {
fastcgi_read_timeout 1200; fastcgi_read_timeout 1200;
} }
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) { location ~ ^\/(?:updater|ocs-provider)(?:$|\/) {
try_files $uri/ =404; try_files $uri/ =404;
index index.php; index index.php;
} }
location ~ \.(?:css|js|svg|gif|map)$ { location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ {
try_files $uri /index.php$uri$is_args$args; try_files $uri /index.php$uri$is_args$args;
expires 6M; expires 6M;
access_log off; access_log off;
} }
location ~ \.woff2?$ { location ~ \.(otf|woff2)?$ {
try_files $uri /index.php$uri$is_args$args; try_files $uri /index.php$uri$is_args$args;
expires 7d; expires 7d;
access_log off; access_log off;

View File

@ -9,6 +9,11 @@ events {
http { http {
include /etc/nginx/mime.types; include /etc/nginx/mime.types;
# Add .mjs as a file extension for javascript
# https://github.com/nextcloud/server/pull/36057
types {
application/javascript mjs;
}
default_type application/octet-stream; default_type application/octet-stream;
access_log /nginx/logs/access.log combined; access_log /nginx/logs/access.log combined;

View File

@ -15,6 +15,16 @@ if [ "$PHP_HARDENING" == "true" ] && [ ! -f /usr/local/etc/php/conf.d/snuffleupa
cp /usr/local/etc/php/snuffleupagus/* /usr/local/etc/php/conf.d cp /usr/local/etc/php/snuffleupagus/* /usr/local/etc/php/conf.d
fi fi
# Check if database is available
if [ -n "${DB_TYPE}" ] && [ "${DB_TYPE}" != "sqlite3" ]; then
DB_PORT=${DB_PORT:-$( [ "${DB_TYPE}" = "pgsql" ] && echo 5432 || echo 3306 )}
until nc -z "${DB_HOST:-nextcloud-db}" "${DB_PORT}"
do
echo "waiting for the database container..."
sleep 1
done
fi
# If new install, run setup # If new install, run setup
if [ ! -f /nextcloud/config/config.php ]; then if [ ! -f /nextcloud/config/config.php ]; then
touch /nextcloud/config/CAN_INSTALL touch /nextcloud/config/CAN_INSTALL
@ -24,4 +34,4 @@ else
fi fi
# Run processes # Run processes
exec /bin/s6-svscan /etc/s6.d exec /usr/bin/s6-svscan /etc/s6.d

View File

@ -55,14 +55,6 @@ cat >> /nextcloud/config/autoconfig.php <<EOF;
?> ?>
EOF EOF
if [ ${DB_TYPE} != "sqlite3" ]; then
until nc -z "${DB_HOST:-nextcloud-db}" "${DB_PORT:-3306}"
do
echo "waiting for the database container..."
sleep 1
done
fi
echo "Starting automatic configuration..." echo "Starting automatic configuration..."
# Execute setup # Execute setup
(cd /nextcloud; php index.php &>/dev/null) (cd /nextcloud; php index.php &>/dev/null)

View File

@ -8,7 +8,7 @@
sp.harden_random.enable(); sp.harden_random.enable();
# Disabled XXE # Disabled XXE
sp.xxe_protection.enable(); #sp.xxe_protection.enable();
# Global configuration variables # Global configuration variables
# sp.global.secret_key("YOU _DO_ NEED TO CHANGE THIS WITH SOME RANDOM CHARACTERS."); # sp.global.secret_key("YOU _DO_ NEED TO CHANGE THIS WITH SOME RANDOM CHARACTERS.");
@ -34,7 +34,7 @@ sp.sloppy_comparison.enable();
# https://snuffleupagus.readthedocs.io/features.html#protection-against-cross-site-request-forgery # https://snuffleupagus.readthedocs.io/features.html#protection-against-cross-site-request-forgery
sp.cookie.name("PHPSESSID").samesite("lax"); sp.cookie.name("PHPSESSID").samesite("lax");
# Nextcloud whitelist (tested with Nextcloud 25.0.0) # Nextcloud whitelist (tested with Nextcloud 27.0.1)
sp.disable_function.function("function_exists").param("function").value("proc_open").filename("/nextcloud/3rdparty/symfony/console/Terminal.php").allow(); sp.disable_function.function("function_exists").param("function").value("proc_open").filename("/nextcloud/3rdparty/symfony/console/Terminal.php").allow();
sp.disable_function.function("function_exists").param("function").value("exec").filename("/nextcloud/lib/private/legacy/OC_Helper.php").allow(); sp.disable_function.function("function_exists").param("function").value("exec").filename("/nextcloud/lib/private/legacy/OC_Helper.php").allow();
sp.disable_function.function("function_exists").param("function").value("exec").filename("/nextcloud/lib/public/Util.php").allow(); sp.disable_function.function("function_exists").param("function").value("exec").filename("/nextcloud/lib/public/Util.php").allow();
@ -47,6 +47,10 @@ sp.disable_function.function("ini_get").param("option").value("open_basedir").fi
sp.disable_function.function("ini_get").param("option").value("allow_url_fopen").filename("/nextcloud/3rdparty/guzzlehttp/guzzle/src/Utils.php").allow(); sp.disable_function.function("ini_get").param("option").value("allow_url_fopen").filename("/nextcloud/3rdparty/guzzlehttp/guzzle/src/Utils.php").allow();
sp.disable_function.function("exec").param("command").value("apachectl -M | grep mpm").filename("/nextcloud/apps2/spreed/lib/Settings/Admin/AdminSettings.php").allow(); sp.disable_function.function("exec").param("command").value("apachectl -M | grep mpm").filename("/nextcloud/apps2/spreed/lib/Settings/Admin/AdminSettings.php").allow();
# Nextcloud inherently enables XXE-Protection since 27.0.1, therefore, drop setting a new external entity loader
sp.disable_function.function("libxml_set_external_entity_loader").filename("/nextcloud/lib/base.php").allow();
sp.disable_function.function("libxml_set_external_entity_loader").drop();
# Harden the `chmod` function (0777 (oct = 511, 0666 = 438) # Harden the `chmod` function (0777 (oct = 511, 0666 = 438)
sp.disable_function.function("chmod").param("permissions").value("438").drop(); sp.disable_function.function("chmod").param("permissions").value("438").drop();
sp.disable_function.function("chmod").param("permissions").value("511").drop(); sp.disable_function.function("chmod").param("permissions").value("511").drop();