mirror of
https://github.com/hoellen/docker-nextcloud.git
synced 2025-07-01 15:46:13 +00:00
Compare commits
8 Commits
version-26
...
version-24
Author | SHA1 | Date | |
---|---|---|---|
dd188059ab | |||
055b1f5723 | |||
7726c3f386 | |||
5906c3ea91 | |||
89f2aacb32 | |||
1365e7a046 | |||
49d7a7a469 | |||
183fb4b9df |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@ -3,7 +3,7 @@ name: build
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches: [ version-26 ]
|
branches: [ version-24 ]
|
||||||
schedule:
|
schedule:
|
||||||
# Build the image regularly (each Friday)
|
# Build the image regularly (each Friday)
|
||||||
- cron: '23 04 * * 5'
|
- cron: '23 04 * * 5'
|
||||||
@ -34,7 +34,7 @@ jobs:
|
|||||||
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: 'v2.2.2'
|
cosign-release: 'v1.13.1'
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v1
|
||||||
@ -69,4 +69,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 --yes ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}
|
run: cosign sign ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}
|
||||||
|
11
Dockerfile
11
Dockerfile
@ -1,17 +1,17 @@
|
|||||||
# -------------- Build-time variables --------------
|
# -------------- Build-time variables --------------
|
||||||
ARG NEXTCLOUD_VERSION=26.0.13
|
ARG NEXTCLOUD_VERSION=24.0.12
|
||||||
ARG PHP_VERSION=8.1
|
ARG PHP_VERSION=8.1
|
||||||
ARG NGINX_VERSION=1.24
|
ARG NGINX_VERSION=1.22
|
||||||
|
|
||||||
ARG ALPINE_VERSION=3.17
|
ARG ALPINE_VERSION=3.17
|
||||||
ARG HARDENED_MALLOC_VERSION=11
|
ARG HARDENED_MALLOC_VERSION=11
|
||||||
ARG SNUFFLEUPAGUS_VERSION=0.9.0
|
ARG SNUFFLEUPAGUS_VERSION=0.8.3
|
||||||
|
|
||||||
ARG UID=1000
|
ARG UID=1000
|
||||||
ARG GID=1000
|
ARG GID=1000
|
||||||
|
|
||||||
# nextcloud-26.0.13.tar.bz2
|
# nextcloud-24.0.12.tar.bz2
|
||||||
ARG SHA256_SUM="0a362df7a1233348f99d1853fd7e79f0667b552c145dc45012fab54ac31c79ae"
|
ARG SHA256_SUM="2f093bdf7d34faf38d22f38a5e11f3aee32746ff4add3df17c790b9b36390836"
|
||||||
|
|
||||||
# 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"
|
||||||
@ -64,7 +64,6 @@ RUN apk -U upgrade \
|
|||||||
pcntl \
|
pcntl \
|
||||||
pdo_mysql \
|
pdo_mysql \
|
||||||
pdo_pgsql \
|
pdo_pgsql \
|
||||||
sysvsem \
|
|
||||||
zip \
|
zip \
|
||||||
gmp \
|
gmp \
|
||||||
&& pecl install smbclient \
|
&& pecl install smbclient \
|
||||||
|
@ -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 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 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.
|
||||||
- **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. `24`)
|
||||||
- `x.x.x` : Nextcloud x.x.x (e.g. `25.0.0`)
|
- `x.x.x` : Nextcloud x.x.x (e.g. `24.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.
|
||||||
|
@ -7,10 +7,9 @@ and will receive the minor version updates and security patches.
|
|||||||
|
|
||||||
| Version | Supported |
|
| Version | Supported |
|
||||||
| ------- | ------------------ |
|
| ------- | ------------------ |
|
||||||
| 25. x | :white_check_mark: |
|
|
||||||
| 24. x | :white_check_mark: |
|
| 24. x | :white_check_mark: |
|
||||||
| 23. x | :negative_squared_cross_mark: |
|
| 23. x | :white_check_mark: |
|
||||||
| 22. x | :negative_squared_cross_mark: |
|
| 22. x | :white_check_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.
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ server {
|
|||||||
add_header X-Download-Options "noopen" 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 "noindex, nofollow" always;
|
add_header X-Robots-Tag "none" always;
|
||||||
add_header X-XSS-Protection "0" always;
|
add_header X-XSS-Protection "0" always;
|
||||||
|
|
||||||
location = /robots.txt {
|
location = /robots.txt {
|
||||||
|
@ -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,18 +34,16 @@ 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 27.0.1)
|
# Nextcloud whitelist (tested with Nextcloud 24.0.0)
|
||||||
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/public/Util.php").allow();
|
|
||||||
sp.disable_function.function("proc_open").filename("/nextcloud/3rdparty/symfony/console/Terminal.php").allow();
|
sp.disable_function.function("proc_open").filename("/nextcloud/3rdparty/symfony/console/Terminal.php").allow();
|
||||||
sp.disable_function.function("ini_set").param("option").value_r("display_errors").filename("/nextcloud/lib/base.php").allow();
|
sp.disable_function.function("ini_set").param("option").value_r("display_errors").filename("/nextcloud/lib/base.php").allow();
|
||||||
sp.disable_function.function("ini_get").param("option").value("open_basedir").filename("/nextcloud/3rdparty/bantu/ini-get-wrapper/src/IniGetWrapper.php").allow();
|
sp.disable_function.function("ini_get").param("option").value("open_basedir").filename("/nextcloud/3rdparty/bantu/ini-get-wrapper/src/IniGetWrapper.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("ini_get").param("option").value_r("suhosin").filename("/nextcloud/3rdparty/bantu/ini-get-wrapper/src/IniGetWrapper.php").allow();
|
sp.disable_function.function("ini_get").param("option").value_r("suhosin").filename("/nextcloud/3rdparty/bantu/ini-get-wrapper/src/IniGetWrapper.php").allow();
|
||||||
sp.disable_function.function("ini_get").param("option").value("open_basedir").filename("/nextcloud/apps2/twofactor_webauthn/vendor/symfony/process/ExecutableFinder.php").allow();
|
sp.disable_function.function("ini_get").param("option").value("open_basedir").filename("/nextcloud/apps2/twofactor_webauthn/vendor/symfony/process/ExecutableFinder.php").allow();
|
||||||
sp.disable_function.function("ini_get").param("option").value("open_basedir").filename("/nextcloud/3rdparty/symfony/process/ExecutableFinder.php").allow();
|
sp.disable_function.function("ini_get").param("option").value("open_basedir").filename("/nextcloud/3rdparty/symfony/process/ExecutableFinder.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("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();
|
|
||||||
|
|
||||||
# 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();
|
||||||
|
Reference in New Issue
Block a user