76 Commits

Author SHA1 Message Date
fef4cd4a28 fix: add missing colon in SECURITY.md 2025-12-11 14:18:12 +01:00
Jan Wagner
4a46899d8c chore: update Nextcloud to 32.0.3 2025-12-11 14:15:31 +01:00
Jan Wagner
9c8f6c8edb chore: update Nextcloud to 32.0.2 2025-11-20 19:44:15 +01:00
Jan Wagner
69000e35c3 chore: update Nextcloud to 32.0.1 2025-10-23 23:02:10 +02:00
waja
aae170a54d chore: update latest and supported versions in README 2025-10-08 10:46:43 +02:00
waja
0205f7afeb feat: add CI image test 2025-10-07 22:27:07 +02:00
Dingoz
db1eaf50ed fix: add mp4 and webm to nginx config 2025-10-06 15:59:34 +02:00
Jan Wagner
d16bcc9a32 chore: update Nextcloud to 32.0.0 2025-09-27 20:50:23 +02:00
Jan Wagner
0c6f92a628 chore: update Nextcloud to 31.0.9 2025-09-15 12:59:43 +02:00
b4b8e7f154 chore: update nginx version to 1.28 2025-08-18 10:12:45 +02:00
fd021043c4 chore: update Nextcloud to 31.0.8 2025-08-18 10:00:06 +02:00
Jan Wagner
f623065f7a chore: update Nextcloud to 31.0.7 2025-07-10 22:13:42 +02:00
Jan Wagner
a277e11505 chore: update Nextcloud to 31.0.6 2025-06-12 10:41:10 +02:00
Jan Wagner
42b36e3c9b chore: update Nextcloud to 31.0.5 2025-05-16 09:16:24 +02:00
waja
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
waja
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
waja
78e4175f7f chore: update supported Nextcloud versions 2025-04-25 10:58:36 +02:00
Jan Wagner
46828aed43 chore: update Nextcloud to 31.0.4 2025-04-25 10:55:30 +02:00
Jan Wagner
19dc754372 CI: Fix unsupported runner, use ubuntu-24.04 2025-04-18 16:50:36 +02:00
Jan Wagner
54e9f1feda chore: update Nextcloud to 31.0.3 2025-04-14 10:23:29 +02:00
waja
2892342326 chore: update Nextcloud to 31.0.2 2025-03-19 22:16:43 +01:00
waja
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
waja
1b0c1fb747 chore: update Nextcloud to 30.0.5 2025-01-21 22:15:49 +01:00
waja
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
Jan Wagner
16acf58089 chore: update Nextcloud to 30.0.4 2024-12-13 11:18:34 +01:00
waja
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
Jan Wagner
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
Jan Wagner
ee98f35852 chore: update Nextcloud to 30.0.1 2024-10-18 12:02:34 +02:00
waja
2ceb05c146 chore: update Nextcloud to 30.0.0 2024-09-14 19:52:28 +02:00
Jan Wagner
ee2760237f chore: update Nextcloud to 29.0.7 2024-09-13 05:38:50 +02:00
Jan Wagner
6aa67c63b5 chore: update Nextcloud to 29.0.5 2024-08-21 10:03:37 +02:00
waja
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
Jan Wagner
ce390fc654 chore: update Nextcloud to 29.0.3 2024-06-25 15:03:57 +02:00
Jan Wagner
6facdfba4f chore: update Nextcloud to 29.0.2 2024-06-07 00:26:54 +02:00
Jan Wagner
60954e1ad7 chore: update Nextcloud to 29.0.1 2024-05-23 23:07:46 +02:00
Jan Wagner
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
Jan Wagner
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
Jan Wagner
314cc8016d chore: update Nextcloud to 28.0.3 2024-03-02 05:01:32 +01:00
Casey Link
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
Jan Wagner
2334b3e231 chore: update Nextcloud to 27.1.3 2023-10-30 10:18:22 +01:00
Jan Wagner
6adf9e6bf8 Fix resolving osc-provider (Closes: #47)
Accordingly to dc0b8d9c39
2023-10-21 09:40:13 +02:00
Jan Wagner
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
Jan Wagner
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 90 additions and 46 deletions

View File

@@ -3,7 +3,9 @@ name: build
on:
workflow_dispatch:
push:
branches: [ version-25 ]
branches:
- master
- version-*
schedule:
# Build the image regularly (each Friday)
- cron: '23 04 * * 5'
@@ -27,14 +29,17 @@ jobs:
- name: Extract version for tags
run: |
echo "FULL_VERSION=$(grep -oP '(?<=NEXTCLOUD_VERSION=).*' Dockerfile | head -c6)" >> $GITHUB_ENV
echo "MAJOR_VERSION=$(grep -oP '(?<=NEXTCLOUD_VERSION=).*' Dockerfile | head -c2)" >> $GITHUB_ENV
BRANCH="${GITHUB_REF#refs/heads/}"
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
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@main
with:
cosign-release: 'v1.13.1'
cosign-release: 'v2.2.2'
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
@@ -53,15 +58,32 @@ jobs:
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
${{ env.BRANCH_VERSION }}
${{ env.FULL_VERSION }}
${{ env.MAJOR_VERSION }}
- name: Build and push Docker image
id: build-and-push
- name: Build and export Docker image to Docker
id: build
uses: docker/build-push-action@v2
with:
load: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:testing
context: .
- name: Test Docker image
id: test
run: |
docker run -d -p 8888:8888 --name nextcloud --rm ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:testing && \
docker exec nextcloud occ status && \
nc -z localhost 8888
- name: Push Docker image
id: push
if: github.event_name != 'pull_request'
uses: docker/build-push-action@v2
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
@@ -69,4 +91,4 @@ jobs:
if: ${{ github.event_name != 'pull_request' }}
env:
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.push.outputs.digest }}

View File

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

View File

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

View File

@@ -58,8 +58,8 @@ Verifying the signature isn't a requirement, and might not be as seamless as usi
## Tags
- `latest` : latest Nextcloud version
- `x` : latest Nextcloud x.x (e.g. `25`)
- `x.x.x` : Nextcloud x.x.x (e.g. `25.0.0`)
- `x` : latest Nextcloud x.x (e.g. `32`)
- `x.x.x` : Nextcloud x.x.x (e.g. `32.0.0`)
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.

View File

@@ -2,17 +2,25 @@
## Supported versions
All versions of the Nextcloud community version which still receive updates will be supported
All versions of the Nextcloud community version which still receive updates will be supported
and will receive the minor version updates and security patches.
| Version | Supported |
| ------- | ------------------ |
| 25. x | :white_check_mark: |
| 24. x | :white_check_mark: |
| Version | Supported |
| ------- | ----------------------------- |
| 32. x | :white_check_mark: |
| 31. x | :white_check_mark: |
| 30. x | :negative_squared_cross_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: |
| 22. x | :negative_squared_cross_mark: |
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
@@ -20,9 +28,10 @@ Uploaded images are regularly scanned for [OS vulnerabilities](https://github.co
## Reporting a vulnerability
*Upstream* vulnerabilities should be reported to *upstream* projects according to their own security policies.
_Upstream_ vulnerabilities should be reported to _upstream_ projects according to their own security policies.
Regarding vulnerabilities specific to this project:
- Faulty configuration files
- Unsafe defaults
- Dependencies security updates

View File

@@ -18,10 +18,9 @@ server {
add_header Referrer-Policy "no-referrer" 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-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;
location = /robots.txt {
@@ -31,8 +30,8 @@ server {
}
location ^~ /.well-known {
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/carddav { 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; }
try_files $uri $uri/ =404;
}
@@ -49,7 +48,7 @@ server {
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;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
@@ -62,24 +61,24 @@ server {
fastcgi_read_timeout 1200;
}
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
location ~ ^\/(?:updater|ocs-provider)(?:$|\/) {
try_files $uri/ =404;
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;
expires 6M;
access_log off;
}
location ~ \.woff2?$ {
location ~ \.(otf|woff2)?$ {
try_files $uri /index.php$uri$is_args$args;
expires 7d;
access_log off;
}
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
try_files $uri /index.php$uri$is_args$args;
access_log off;
}

View File

@@ -9,6 +9,11 @@ events {
http {
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;
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
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 [ ! -f /nextcloud/config/config.php ]; then
touch /nextcloud/config/CAN_INSTALL
@@ -24,4 +34,4 @@ else
fi
# 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
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..."
# Execute setup
(cd /nextcloud; php index.php &>/dev/null)

View File

@@ -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("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)
sp.disable_function.function("chmod").param("permissions").value("438").drop();
sp.disable_function.function("chmod").param("permissions").value("511").drop();