Compare commits

..

10 Commits

Author SHA1 Message Date
LinuxServer-CI eacb86c387 Bot Updating Package Versions 2026-04-07 12:49:19 +00:00
LinuxServer-CI fd176e91da Bot Updating Templated Files 2026-04-07 12:42:41 +00:00
LinuxServer-CI 4cfe793459 Bot Updating Package Versions 2026-03-30 15:51:53 +00:00
LinuxServer-CI 7b7c8e55f4 Bot Updating Package Versions 2026-03-20 15:13:58 +00:00
LinuxServer-CI af8e5ea755 Bot Updating Package Versions 2026-03-17 12:36:38 +00:00
LinuxServer-CI 8d268f6ea0 Bot Updating Package Versions 2026-03-03 12:04:15 +00:00
LinuxServer-CI a412ecd855 Bot Updating Package Versions 2026-02-24 12:10:03 +00:00
LinuxServer-CI c25805191c Bot Updating Package Versions 2026-02-17 12:08:29 +00:00
LinuxServer-CI 07103ef369 Bot Updating Templated Files 2026-02-12 12:01:45 +00:00
LinuxServer-CI 703ec8dd91 Bot Updating Templated Files 2026-02-12 11:59:09 +00:00
5 changed files with 139 additions and 164 deletions
Vendored
+86 -88
View File
@@ -75,6 +75,7 @@ pipeline {
'''
script{
env.EXIT_STATUS = ''
env.CI_TEST_ATTEMPTED = ''
env.LS_RELEASE = sh(
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:develop 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim()
@@ -283,7 +284,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \
python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
@@ -871,6 +872,7 @@ pipeline {
script{
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
env.CI_JSON_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/report.json'
env.CI_TEST_ATTEMPTED = 'true'
}
sh '''#! /bin/bash
set -e
@@ -1073,98 +1075,13 @@ EOF
) '''
}
}
// If this is a Pull request send the CI link as a comment on it
stage('Pull Request Comment') {
when {
not {environment name: 'CHANGE_ID', value: ''}
environment name: 'EXIT_STATUS', value: ''
}
steps {
sh '''#! /bin/bash
# Function to retrieve JSON data from URL
get_json() {
local url="$1"
local response=$(curl -s "$url")
if [ $? -ne 0 ]; then
echo "Failed to retrieve JSON data from $url"
return 1
fi
local json=$(echo "$response" | jq .)
if [ $? -ne 0 ]; then
echo "Failed to parse JSON data from $url"
return 1
fi
echo "$json"
}
build_table() {
local data="$1"
# Get the keys in the JSON data
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
# Check if keys are empty
if [ -z "$keys" ]; then
echo "JSON report data does not contain any keys or the report does not exist."
return 1
fi
# Build table header
local header="| Tag | Passed |\\n| --- | --- |\\n"
# Loop through the JSON data to build the table rows
local rows=""
for build in $keys; do
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
if [ "$status" = "true" ]; then
status="✅"
else
status="❌"
fi
local row="| "$build" | "$status" |\\n"
rows="${rows}${row}"
done
local table="${header}${rows}"
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
echo "$escaped_table"
}
if [[ "${CI}" = "true" ]]; then
# Retrieve JSON data from URL
data=$(get_json "$CI_JSON_URL")
# Create table from JSON data
table=$(build_table "$data")
echo -e "$table"
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
else
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
}
}
}
/* ######################
Send status to Discord
Comment on PR and Send status to Discord
###################### */
post {
always {
sh '''#!/bin/bash
rm -rf /config/.ssh/id_sign
rm -rf /config/.ssh/id_sign.pub
git config --global --unset gpg.format
git config --global --unset user.signingkey
git config --global --unset commit.gpgsign
'''
script{
script {
env.JOB_DATE = sh(
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
returnStdout: true).trim()
@@ -1207,6 +1124,87 @@ EOF
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
}
}
script {
if (env.GITHUBIMAGE =~ /lspipepr/){
if (env.CI_TEST_ATTEMPTED == "true"){
sh '''#! /bin/bash
# Function to retrieve JSON data from URL
get_json() {
local url="$1"
local response=$(curl -s "$url")
if [ $? -ne 0 ]; then
echo "Failed to retrieve JSON data from $url"
return 1
fi
local json=$(echo "$response" | jq .)
if [ $? -ne 0 ]; then
echo "Failed to parse JSON data from $url"
return 1
fi
echo "$json"
}
build_table() {
local data="$1"
# Get the keys in the JSON data
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
# Check if keys are empty
if [ -z "$keys" ]; then
echo "JSON report data does not contain any keys or the report does not exist."
return 1
fi
# Build table header
local header="| Tag | Passed |\\n| --- | --- |\\n"
# Loop through the JSON data to build the table rows
local rows=""
for build in $keys; do
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
if [ "$status" = "true" ]; then
status="✅"
else
status="❌"
fi
local row="| "$build" | "$status" |\\n"
rows="${rows}${row}"
done
local table="${header}${rows}"
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
echo "$escaped_table"
}
if [[ "${CI}" = "true" ]]; then
# Retrieve JSON data from URL
data=$(get_json "$CI_JSON_URL")
# Create table from JSON data
table=$(build_table "$data")
echo -e "$table"
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
else
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
}
}
}
sh '''#!/bin/bash
rm -rf /config/.ssh/id_sign
rm -rf /config/.ssh/id_sign.pub
git config --global --unset gpg.format
git config --global --unset user.signingkey
git config --global --unset commit.gpgsign
'''
}
cleanup {
sh '''#! /bin/bash
+1 -1
View File
@@ -135,7 +135,7 @@ If you are using a reverse proxy which validates certificates, you need to [disa
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE]
>Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided.
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
+29 -29
View File
@@ -117,7 +117,7 @@ glslang-libs 1.4.309.0-r0 apk
gmp 6.3.0-r3 apk
gnu-libiconv 1.17-r2 apk
gnu-libiconv-libs 1.17-r2 apk
gnutls 3.8.8-r0 apk
gnutls 3.8.12-r0 apk
graphite2 1.3.14-r6 apk
guzzlehttp/guzzle 7.10.0 php-composer
guzzlehttp/promises 2.3.0 php-composer
@@ -132,12 +132,12 @@ icewind/smb 3.8.1 php-composer
icewind/streams v0.7.8 php-composer
icu-data-en 76.1-r1 apk
icu-libs 76.1-r1 apk
imagemagick 7.1.2.8-r0 apk
imagemagick-jpeg 7.1.2.8-r0 apk
imagemagick-jxl 7.1.2.8-r0 apk
imagemagick-libs 7.1.2.8-r0 apk
imagemagick-openexr 7.1.2.8-r0 apk
imagemagick-webp 7.1.2.8-r0 apk
imagemagick 7.1.2.15-r0 apk
imagemagick-jpeg 7.1.2.15-r0 apk
imagemagick-jxl 7.1.2.15-r0 apk
imagemagick-libs 7.1.2.15-r0 apk
imagemagick-openexr 7.1.2.15-r0 apk
imagemagick-webp 7.1.2.15-r0 apk
imath 3.1.12-r0 apk
interpolate_name 0.2.4 rust-crate
itertools 0.10.5 rust-crate
@@ -179,7 +179,7 @@ libdrm 2.4.124-r0 apk
libeconf 0.6.3-r0 apk
libedit 20250104.3.1-r1 apk
libevent 2.1.12-r8 apk
libexpat 2.7.4-r0 apk
libexpat 2.7.5-r0 apk
libffi 3.4.8-r0 apk
libflac 1.4.3-r1 apk
libformw 6.5_p20250503-r0 apk
@@ -202,8 +202,8 @@ libopenmpt 0.7.15-r0 apk
libpanelw 6.5_p20250503-r0 apk
libpciaccess 0.18.1-r0 apk
libplacebo 6.338.2-r3 apk
libpng 1.6.54-r0 apk
libpq 17.7-r0 apk
libpng 1.6.56-r0 apk
libpq 17.9-r0 apk
libproc2 4.0.4-r3 apk
libpsl 0.21.5-r3 apk
libpulse 17.0-r5 apk
@@ -255,7 +255,7 @@ lz4-libs 1.10.0-r0 apk
marc-mabe/php-enum v4.7.1 php-composer
masterminds/html5 2.9.0 php-composer
maybe-rayon 0.1.1 rust-crate
mbedtls 3.6.5-r0 apk
mbedtls 3.6.6-r0 apk
memchr 2.7.1 rust-crate
mexitek/phpcolors v1.0.4 php-composer
microsoft/azure-storage-blob 1.5.4 php-composer
@@ -270,12 +270,12 @@ nano 8.4-r0 apk
ncurses-terminfo-base 6.5_p20250503-r0 apk
nelexa/buffer 1.3.0 php-composer
netcat-openbsd 1.229.1-r0 apk
nettle 3.10.1-r0 apk
nettle 3.10.2-r0 apk
new_debug_unreachable 1.0.4 rust-crate
nextcloud 1.0.0 npm
nextcloud/lognormalizer v3.0.0 php-composer
nextcloud/lognormalizer v3.0.1 php-composer
nghttp2-libs 1.65.0-r0 apk
nginx 1.28.2-r0 apk
nginx 1.28.3-r0 apk
nom 7.1.3 rust-crate
noop_proc_macro 0.3.0 rust-crate
notifications 6.0.0-dev.0 npm
@@ -424,16 +424,16 @@ ssl_client 1.37.0-r20 apk
stecman/symfony-console-completion v0.14.0 php-composer
sudo 1.9.17_p2-r0 apk
support 5.0.0-dev.0 npm
symfony/console v6.4.17 php-composer
symfony/css-selector v6.4.13 php-composer
symfony/console v6.4.32 php-composer
symfony/css-selector v6.4.24 php-composer
symfony/deprecation-contracts v3.6.0 php-composer (+1 duplicate)
symfony/dom-crawler v6.4.23 php-composer
symfony/event-dispatcher v6.4.8 php-composer
symfony/event-dispatcher-contracts v3.5.0 php-composer
symfony/dom-crawler v6.4.32 php-composer
symfony/event-dispatcher v6.4.32 php-composer
symfony/event-dispatcher-contracts v3.5.1 php-composer
symfony/filesystem v7.4.0 php-composer
symfony/http-foundation v6.4.29 php-composer
symfony/mailer v6.4.12 php-composer
symfony/mime v6.4.12 php-composer
symfony/http-foundation v6.4.33 php-composer
symfony/mailer v6.4.31 php-composer
symfony/mime v6.4.32 php-composer
symfony/polyfill-intl-grapheme v1.32.0 php-composer
symfony/polyfill-intl-idn v1.32.0 php-composer
symfony/polyfill-intl-normalizer v1.33.0 php-composer
@@ -445,13 +445,13 @@ symfony/polyfill-php83 v1.33.0 php-composer
symfony/polyfill-php84 v1.33.0 php-composer (+1 duplicate)
symfony/polyfill-php85 v1.33.0 php-composer
symfony/polyfill-uuid v1.29.0 php-composer
symfony/process v6.4.31 php-composer
symfony/routing v6.4.12 php-composer
symfony/process v6.4.33 php-composer
symfony/routing v6.4.32 php-composer
symfony/service-contracts v3.5.1 php-composer
symfony/string v6.4.15 php-composer
symfony/translation v6.4.4 php-composer
symfony/translation-contracts v3.4.2 php-composer
symfony/uid v6.4.3 php-composer
symfony/string v6.4.30 php-composer
symfony/translation v6.4.32 php-composer
symfony/translation-contracts v3.4.3 php-composer
symfony/uid v6.4.32 php-composer
syn 2.0.48 rust-crate
talloc 2.4.2-r1 apk
tap 1.0.1 rust-crate
@@ -464,7 +464,7 @@ thiserror 1.0.56 rust-crate
thiserror-impl 1.0.56 rust-crate
tinyvec 1.9.0 rust-crate
twofactor_totp 15.0.0-dev.0 npm
tzdata 2025c-r0 apk
tzdata 2026a-r0 apk
unicode-ident 1.0.12 rust-crate
unicode-width 0.1.11 rust-crate
utf8parse 0.2.1 rust-crate
-1
View File
@@ -144,7 +144,6 @@ init_diagram: |
"nextcloud:develop" <- Base Images
# changelog
changelogs:
- {date: "08.02.26:", desc: "Existing users should update: site-confs/default.conf - Deny access to all dotfiles."}
- {date: "10.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "12.02.25:", desc: "Rebase to Alpine 3.21."}
- {date: "09.01.25:", desc: "Fix uploading large files. Existing users should update their nginx confs."}
@@ -1,4 +1,4 @@
## Version 2026/05/05 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample
## Version 2025/07/10 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample
# Set the `immutable` cache control options only for assets with a cache busting `v` argument
map $arg_v $asset_immutable {
@@ -20,13 +20,6 @@ server {
root /app/www/public;
# deny access to all dotfiles
location ~ /\. {
access_log off;
log_not_found off;
return 404;
}
# display real ip in nginx logs when connected through reverse proxy via docker network
set_real_ip_from 172.16.0.0/12;
real_ip_header X-Forwarded-For;
@@ -56,12 +49,12 @@ server {
client_body_buffer_size 512k;
# HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
@@ -99,19 +92,11 @@ server {
# The rules in this block are an adaptation of the rules
# in `.htaccess` that concern `/.well-known`.
location = /.well-known/carddav {
return 301 /remote.php/dav/;
}
location = /.well-known/caldav {
return 301 /remote.php/dav/;
}
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
location /.well-known/acme-challenge {
try_files $uri $uri/ =404;
}
location /.well-known/pki-validation {
try_files $uri $uri/ =404;
}
location /.well-known/acme-challenge { try_files $uri $uri/ =404; }
location /.well-known/pki-validation { try_files $uri $uri/ =404; }
# Let Nextcloud's API for `/.well-known` URIs handle all other
# requests by passing them to the front-end controller.
@@ -119,12 +104,8 @@ server {
}
# Rules borrowed from `.htaccess` to hide certain paths from clients
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) {
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
# Ensure this block, which passes PHP files to the PHP process, is above the blocks
# which handle static assets (as seen below). If this block is not declared first,
@@ -143,8 +124,8 @@ server {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_pass 127.0.0.1:9000;
fastcgi_intercept_errors on;
@@ -157,7 +138,7 @@ server {
location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463, $asset_immutable";
access_log off; # Optional: Don't log access to assets
access_log off; # Optional: Don't log access to assets
location ~ \.wasm$ {
default_type application/wasm;
@@ -167,8 +148,8 @@ server {
location ~ \.woff2?$ {
try_files $uri /index.php$request_uri;
expires 7d; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
expires 7d; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
}
# Rule borrowed from `.htaccess`
@@ -176,14 +157,6 @@ server {
return 301 /remote.php$request_uri;
}
# Support for the Client Push (notify_push) plugin, needs mod installed https://github.com/linuxserver/docker-mods/tree/nextcloud-notify-push
location ^~ /push/ {
proxy_pass http://127.0.0.1:7867/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location / {
# enable for basic auth
#auth_basic "Restricted";
@@ -191,4 +164,9 @@ server {
try_files $uri $uri/ /index.php$request_uri;
}
# deny access to .htaccess/.htpasswd files
location ~ /\.ht {
deny all;
}
}