Compare commits

...

63 Commits

Author SHA1 Message Date
LinuxServer-CI dbe99cc569 Bot Updating Package Versions 2024-06-17 21:34:18 +00:00
LinuxServer-CI abba10c24c Bot Updating Package Versions 2024-06-11 11:50:49 +00:00
LinuxServer-CI 4513213b97 Bot Updating Package Versions 2024-06-04 11:50:59 +00:00
LinuxServer-CI e25462f5d6 Bot Updating Package Versions 2024-05-28 11:52:42 +00:00
LinuxServer-CI 93c0ad7d37 Bot Updating Templated Files 2024-05-21 11:51:56 +00:00
LinuxServer-CI c2921714b2 Bot Updating Templated Files 2024-05-21 11:49:39 +00:00
LinuxServer-CI e4147b179b Bot Updating Package Versions 2024-05-18 08:36:32 +00:00
LinuxServer-CI 6838676b53 Bot Updating Package Versions 2024-05-14 11:53:21 +00:00
LinuxServer-CI 2687e98212 Bot Updating Templated Files 2024-05-14 11:48:35 +00:00
LinuxServer-CI 419c882f73 Bot Updating Package Versions 2024-05-07 11:53:07 +00:00
LinuxServer-CI e5f9510fed Bot Updating Templated Files 2024-05-07 11:48:40 +00:00
LinuxServer-CI 222b58c99c Bot Updating Package Versions 2024-04-30 11:56:53 +00:00
LinuxServer-CI e355bcbe6a Bot Updating Templated Files 2024-04-30 11:48:41 +00:00
LinuxServer-CI 4f00b831d3 Bot Updating Package Versions 2024-04-23 11:50:13 +00:00
LinuxServer-CI 7a8248f3cd Bot Updating Package Versions 2024-04-16 11:50:06 +00:00
LinuxServer-CI 915ab07cd9 Bot Updating Package Versions 2024-04-08 13:35:02 +00:00
LinuxServer-CI afb828d4da Bot Updating Package Versions 2024-04-02 11:50:18 +00:00
LinuxServer-CI f7056138b6 Bot Updating Package Versions 2024-03-26 11:53:11 +00:00
LinuxServer-CI 70f6155bbf Bot Updating Package Versions 2024-03-21 21:33:06 +00:00
LinuxServer-CI b9cf966878 Bot Updating Package Versions 2024-03-19 11:52:47 +00:00
LinuxServer-CI dead6f366e Bot Updating Package Versions 2024-03-14 21:33:06 +00:00
LinuxServer-CI c2c4010ffb Bot Updating Templated Files 2024-03-12 20:31:37 +00:00
LinuxServer-CI 150c587dff Bot Updating Package Versions 2024-03-07 22:34:05 +00:00
LinuxServer-CI 671cf6fe6c Bot Updating Package Versions 2024-03-06 18:32:28 +00:00
LinuxServer-CI a7da03b8d8 Bot Updating Templated Files 2024-03-06 18:25:39 +00:00
Eric Nemchik 7c8251110c Rebase to Alpine 3.19 (#399)
* Rebase to Alpine 3.19

Signed-off-by: Eric Nemchik <eric@nemchik.com>

* update date and edge repo

---------

Signed-off-by: Eric Nemchik <eric@nemchik.com>
Co-authored-by: aptalca <541623+aptalca@users.noreply.github.com>
2024-03-06 13:24:01 -05:00
LinuxServer-CI 11824dbfe3 Bot Updating Package Versions 2024-03-05 11:50:19 +00:00
LinuxServer-CI 0004b51af8 Bot Updating Package Versions 2024-02-27 11:57:52 +00:00
LinuxServer-CI 9706c0481a Bot Updating Templated Files 2024-02-27 11:50:16 +00:00
LinuxServer-CI bcf04398d0 Bot Updating Templated Files 2024-02-27 11:48:43 +00:00
LinuxServer-CI 48667a56dd Bot Updating Package Versions 2024-02-16 14:34:20 +00:00
LinuxServer-CI b906641f24 Bot Updating Package Versions 2024-02-13 11:52:12 +00:00
LinuxServer-CI 9e83ba52fc Bot Updating Package Versions 2024-02-06 11:49:42 +00:00
LinuxServer-CI 0dfd84df5c Bot Updating Package Versions 2024-01-29 15:37:30 +00:00
LinuxServer-CI 231f432f80 Bot Updating Package Versions 2024-01-23 10:40:44 +00:00
LinuxServer-CI c15658c110 Bot Updating Package Versions 2024-01-18 17:36:47 +00:00
LinuxServer-CI 388fc6d47a Bot Updating Package Versions 2024-01-16 11:56:53 +00:00
LinuxServer-CI 2fe50c2f12 Bot Updating Templated Files 2024-01-16 11:50:34 +00:00
LinuxServer-CI 21dde133fd Bot Updating Templated Files 2024-01-16 11:48:58 +00:00
LinuxServer-CI 7bed73efff Bot Updating Package Versions 2024-01-09 11:50:08 +00:00
driz aede8706ae Merge pull request #406 from linuxserver/dev-mime-fix
Merge pull request #405 from linuxserver/conf-fix-test
2024-01-03 20:55:16 -05:00
Eric Nemchik ccb0036a96 Merge pull request #405 from linuxserver/conf-fix-test
maybe fix nextcloud?
2024-01-03 23:48:00 +00:00
LinuxServer-CI 6675775f5c Bot Updating Templated Files 2024-01-02 16:12:23 +00:00
Eric Nemchik 9d7ea19a71 Merge pull request #404 from linuxserver/cleanup-nginx-develop
Cleanup default site conf
2024-01-02 10:10:21 -06:00
Eric Nemchik 7a4dc0aa13 Update readme date
Signed-off-by: GitHub <noreply@github.com>
2024-01-02 16:07:05 +00:00
Eric Nemchik 56461a34b3 Cleanup default site conf
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-02 16:05:58 +00:00
LinuxServer-CI f131871e4c Bot Updating Package Versions 2024-01-02 11:49:44 +00:00
Adam aae9593ea7 Merge pull request #396 from linuxserver/develop-mime
Avoid duplicate mime definition
2023-12-22 22:39:46 +00:00
TheSpad 4178035a55 Consistent formatting 2023-12-22 17:16:22 +00:00
TheSpad 0ad8c52d56 Use text/javascript as per rfc9239 2023-12-22 17:15:18 +00:00
TheSpad 37eb7522e1 Prefer application/javascript 2023-12-22 17:08:14 +00:00
TheSpad 794f71483a Avoid duplicate mime definition 2023-12-22 17:01:35 +00:00
LinuxServer-CI b22dc7887a Bot Updating Package Versions 2023-12-22 16:33:56 +00:00
Adam 408d92a2ec Merge pull request #393 from linuxserver/develop-conf-mjs
sync with upstream nextcloud docs
2023-12-22 16:28:28 +00:00
TheSpad c3c64ae5d5 sync with upstream nextcloud docs 2023-12-22 16:03:20 +00:00
LinuxServer-CI bf1947d7ad Bot Updating Package Versions 2023-12-12 11:50:00 +00:00
LinuxServer-CI 94fd873ece Bot Updating Package Versions 2023-12-07 21:34:08 +00:00
LinuxServer-CI 61f34bacdc Bot Updating Package Versions 2023-12-05 11:50:04 +00:00
LinuxServer-CI 21f2fc0840 Bot Updating Package Versions 2023-11-30 21:34:34 +00:00
Eric Nemchik 2bdf249bf1 Merge pull request #383 from linuxserver/quiet-migration-develop
only run migration if conf exists
2023-11-29 08:30:52 -06:00
LinuxServer-CI e2d34baa3f Bot Updating Package Versions 2023-11-28 11:52:19 +00:00
Eric Nemchik be9ffb890e only run migration if conf exists
redirect stderr to /dev/null

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-25 10:49:42 -06:00
LinuxServer-CI f62cc3b9e8 Bot Updating Package Versions 2023-11-21 11:49:54 +00:00
14 changed files with 714 additions and 603 deletions
+2 -2
View File
@@ -67,10 +67,10 @@ body:
- type: textarea - type: textarea
attributes: attributes:
description: | description: |
Provide a full docker log, output of "docker logs linuxserver.io" Provide a full docker log, output of "docker logs nextcloud"
label: Container logs label: Container logs
placeholder: | placeholder: |
Output of `docker logs linuxserver.io` Output of `docker logs nextcloud`
render: bash render: bash
validations: validations:
required: true required: true
+1 -1
View File
@@ -7,7 +7,7 @@ jobs:
external-trigger-develop: external-trigger-develop:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/develop' if: github.ref == 'refs/heads/develop'
@@ -9,7 +9,7 @@ jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'
+1 -1
View File
@@ -7,7 +7,7 @@ jobs:
package-trigger-develop: package-trigger-develop:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: Package Trigger - name: Package Trigger
if: github.ref == 'refs/heads/develop' if: github.ref == 'refs/heads/develop'
@@ -9,7 +9,7 @@ jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'
+35 -35
View File
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.18 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -19,45 +19,45 @@ RUN \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
libxml2 \ libxml2 \
php82-apcu \ php83-apcu \
php82-bcmath \ php83-bcmath \
php82-bz2 \ php83-bz2 \
php82-dom \ php83-dom \
php82-exif \ php83-exif \
php82-ftp \ php83-ftp \
php82-gd \ php83-gd \
php82-gmp \ php83-gmp \
php82-imap \ php83-imap \
php82-intl \ php83-intl \
php82-ldap \ php83-ldap \
php82-opcache \ php83-opcache \
php82-pcntl \ php83-pcntl \
php82-pdo_mysql \ php83-pdo_mysql \
php82-pdo_pgsql \ php83-pdo_pgsql \
php82-pdo_sqlite \ php83-pdo_sqlite \
php82-pecl-imagick \ php83-pecl-imagick \
php82-pecl-memcached \ php83-pecl-memcached \
php82-pecl-smbclient \ php83-pecl-smbclient \
php82-pgsql \ php83-pgsql \
php82-posix \ php83-posix \
php82-redis \ php83-redis \
php82-sodium \ php83-sodium \
php82-sqlite3 \ php83-sqlite3 \
php82-sysvsem \ php83-sysvsem \
php82-xmlreader \ php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
sudo && \ sudo && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
php82-pecl-mcrypt && \ php83-pecl-mcrypt && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php82/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php83/php-fpm.d/www.conf && \
grep -qxF 'clear_env = no' /etc/php82/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php82/php-fpm.d/www.conf && \ grep -qxF 'clear_env = no' /etc/php83/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php83/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php82/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php82/conf.d/apcu.ini && \ } >> /etc/php83/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@@ -67,7 +67,7 @@ RUN \
echo 'opcache.revalidate_freq=60'; \ echo 'opcache.revalidate_freq=60'; \
echo 'opcache.jit=1255'; \ echo 'opcache.jit=1255'; \
echo 'opcache.jit_buffer_size=128M'; \ echo 'opcache.jit_buffer_size=128M'; \
} >> "/etc/php82/conf.d/00_opcache.ini" && \ } >> "/etc/php83/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=512M'; \ echo 'memory_limit=512M'; \
echo 'upload_max_filesize=512M'; \ echo 'upload_max_filesize=512M'; \
@@ -76,7 +76,7 @@ RUN \
echo 'max_execution_time=300'; \ echo 'max_execution_time=300'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php82/conf.d/nextcloud.ini" && \ } >> "/etc/php83/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/app/www/src/ && \ /app/www/src/ && \
+35 -35
View File
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.18 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -19,45 +19,45 @@ RUN \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
libxml2 \ libxml2 \
php82-apcu \ php83-apcu \
php82-bcmath \ php83-bcmath \
php82-bz2 \ php83-bz2 \
php82-dom \ php83-dom \
php82-exif \ php83-exif \
php82-ftp \ php83-ftp \
php82-gd \ php83-gd \
php82-gmp \ php83-gmp \
php82-imap \ php83-imap \
php82-intl \ php83-intl \
php82-ldap \ php83-ldap \
php82-opcache \ php83-opcache \
php82-pcntl \ php83-pcntl \
php82-pdo_mysql \ php83-pdo_mysql \
php82-pdo_pgsql \ php83-pdo_pgsql \
php82-pdo_sqlite \ php83-pdo_sqlite \
php82-pecl-imagick \ php83-pecl-imagick \
php82-pecl-memcached \ php83-pecl-memcached \
php82-pecl-smbclient \ php83-pecl-smbclient \
php82-pgsql \ php83-pgsql \
php82-posix \ php83-posix \
php82-redis \ php83-redis \
php82-sodium \ php83-sodium \
php82-sqlite3 \ php83-sqlite3 \
php82-sysvsem \ php83-sysvsem \
php82-xmlreader \ php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
sudo && \ sudo && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
php82-pecl-mcrypt && \ php83-pecl-mcrypt && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php82/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php83/php-fpm.d/www.conf && \
grep -qxF 'clear_env = no' /etc/php82/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php82/php-fpm.d/www.conf && \ grep -qxF 'clear_env = no' /etc/php83/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php83/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php82/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php82/conf.d/apcu.ini && \ } >> /etc/php83/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@@ -67,7 +67,7 @@ RUN \
echo 'opcache.revalidate_freq=60'; \ echo 'opcache.revalidate_freq=60'; \
echo 'opcache.jit=1255'; \ echo 'opcache.jit=1255'; \
echo 'opcache.jit_buffer_size=128M'; \ echo 'opcache.jit_buffer_size=128M'; \
} >> "/etc/php82/conf.d/00_opcache.ini" && \ } >> "/etc/php83/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=512M'; \ echo 'memory_limit=512M'; \
echo 'upload_max_filesize=512M'; \ echo 'upload_max_filesize=512M'; \
@@ -76,7 +76,7 @@ RUN \
echo 'max_execution_time=300'; \ echo 'max_execution_time=300'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php82/conf.d/nextcloud.ini" && \ } >> "/etc/php83/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/app/www/src/ && \ /app/www/src/ && \
Vendored
+116 -106
View File
@@ -16,6 +16,7 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id') GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE' BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE'
LS_USER = 'linuxserver' LS_USER = 'linuxserver'
LS_REPO = 'docker-nextcloud' LS_REPO = 'docker-nextcloud'
@@ -58,11 +59,16 @@ pipeline {
env.COMMIT_SHA = sh( env.COMMIT_SHA = sh(
script: '''git rev-parse HEAD''', script: '''git rev-parse HEAD''',
returnStdout: true).trim() returnStdout: true).trim()
env.GH_DEFAULT_BRANCH = sh(
script: '''git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||' ''',
returnStdout: true).trim()
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
} }
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''',
@@ -120,7 +126,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE_CLEAN = sh( env.EXT_RELEASE_CLEAN = sh(
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/ ]//g' ''',
returnStdout: true).trim() returnStdout: true).trim()
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
@@ -138,7 +144,7 @@ pipeline {
} }
if (env.SEMVER != null) { if (env.SEMVER != null) {
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { if (BRANCH_NAME != "${env.GH_DEFAULT_BRANCH}") {
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
} }
println("SEMVER: ${env.SEMVER}") println("SEMVER: ${env.SEMVER}")
@@ -239,9 +245,11 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.19 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache py3-pip && \ apk add --no-cache python3 && \
pip install s3cmd && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
pip install --no-cache-dir s3cmd && \
s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :''' s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :'''
} }
} }
@@ -260,8 +268,15 @@ pipeline {
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=develop -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest # Cloned repo paths for templating:
# Stage 1 - Jenkinsfile update # ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch develop of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch develop of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
# ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
git clone --branch develop --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest
echo "Starting Stage 1 - Jenkinsfile update"
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
@@ -270,16 +285,17 @@ pipeline {
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile git add Jenkinsfile
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile" echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
# Stage 2 - Delete old templates echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf" OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml"
for i in ${OLD_TEMPLATES}; do for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -294,15 +310,16 @@ pipeline {
git rm "${i}" git rm "${i}"
done done
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old and deprecated templates" echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
echo "No templates to delete" echo "No templates to delete"
fi fi
# Stage 3 - Update templates echo "Starting Stage 3 - Update templates"
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
@@ -323,19 +340,34 @@ pipeline {
fi fi
git add readme-vars.yml ${TEMPLATED_FILES} git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
exit 0
else else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "No templates to update"
fi fi
echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub"
mkdir -p ${TEMPDIR}/docs mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation cd ${TEMPDIR}/docs/docker-documentation
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
git add docs/images/docker-${CONTAINER_NAME}.md git add docs/images/docker-${CONTAINER_NAME}.md
echo "Updating docs repo"
git commit -m 'Bot Updating Documentation' git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
(MAXWAIT="10" && echo "Push to docs failed, trying again in ${MAXWAIT} seconds" && \
sleep $((RANDOM % MAXWAIT)) && \
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase && \
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH})
else
echo "Docs update not needed, skipping"
fi fi
mkdir -p ${TEMPDIR}/unraid mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
@@ -345,9 +377,13 @@ pipeline {
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
echo "Updating Unraid template"
cd ${TEMPDIR}/unraid/templates/ cd ${TEMPDIR}/unraid/templates/
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list && [[ -f ${TEMPDIR}/unraid/templates/unraid/deprecated/${CONTAINER_NAME}.xml ]]; then
echo "Image is on the ignore list, and already in the deprecation folder."
elif grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated" echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml git add -u unraid/${CONTAINER_NAME}.xml
@@ -358,7 +394,42 @@ pipeline {
git add unraid/${CONTAINER_NAME}.xml git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template' git commit -m 'Bot Updating Unraid Template'
fi fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} || \
(MAXWAIT="10" && echo "Push to unraid templates failed, trying again in ${MAXWAIT} seconds" && \
sleep $((RANDOM % MAXWAIT)) && \
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase && \
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH})
else
echo "No updates to Unraid template needed, skipping"
fi
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) -gt 25000 ]]; then
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
else
echo "Syncing readme to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
fi
if curl -s https://hub.docker.com/v2/namespaces/${DOCKERHUB_IMAGE%%/*}/repositories/${DOCKERHUB_IMAGE##*/}/tags | jq -r '.message' | grep -q 404; then
echo "Docker Hub endpoint doesn't exist. Creating endpoint first."
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
-d '{"name":"'${DOCKERHUB_IMAGE##*/}'", "namespace":"'${DOCKERHUB_IMAGE%%/*}'"}' \
https://hub.docker.com/v2/repositories/ || :
fi
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \
-X PATCH \
-d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || :
else
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
fi fi
rm -Rf ${TEMPDIR}''' rm -Rf ${TEMPDIR}'''
script{ script{
@@ -414,14 +485,16 @@ pipeline {
} }
steps{ steps{
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \ sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\ -d '{"namespace_id":'${GITLAB_NAMESPACE}',\
"name":"'${LS_REPO}'", "name":"'${LS_REPO}'",
"mirror":true,\ "mirror":true,\
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\ "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
"issues_access_level":"disabled",\ "issues_access_level":"disabled",\
"merge_requests_access_level":"disabled",\ "merge_requests_access_level":"disabled",\
"repository_access_level":"enabled",\ "repository_access_level":"enabled",\
"visibility":"public"}' ''' "visibility":"public"}' '''
sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \
-d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" '''
} }
} }
/* ############### /* ###############
@@ -452,6 +525,7 @@ pipeline {
--label \"org.opencontainers.image.title=Nextcloud\" \ --label \"org.opencontainers.image.title=Nextcloud\" \
--label \"org.opencontainers.image.description=[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. \" \ --label \"org.opencontainers.image.description=[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. \" \
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
@@ -483,6 +557,7 @@ pipeline {
--label \"org.opencontainers.image.title=Nextcloud\" \ --label \"org.opencontainers.image.title=Nextcloud\" \
--label \"org.opencontainers.image.description=[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. \" \ --label \"org.opencontainers.image.description=[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. \" \
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
@@ -511,6 +586,7 @@ pipeline {
--label \"org.opencontainers.image.title=Nextcloud\" \ --label \"org.opencontainers.image.title=Nextcloud\" \
--label \"org.opencontainers.image.description=[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. \" \ --label \"org.opencontainers.image.description=[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. \" \
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \ --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
--provenance=false --sbom=false \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) { retry(5) {
@@ -537,7 +613,7 @@ pipeline {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" != "true" ]; then
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG} LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
else else
LOCAL_CONTAINER=${IMAGE}:${META_TAG} LOCAL_CONTAINER=${IMAGE}:${META_TAG}
@@ -558,7 +634,8 @@ pipeline {
wait wait
git add package_versions.txt git add package_versions.txt
git commit -m 'Bot Updating Package Versions' git commit -m 'Bot Updating Package Versions'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process" echo "Package tag updated, stopping build process"
else else
@@ -633,7 +710,7 @@ pipeline {
--shm-size=1gb \ --shm-size=1gb \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
-e IMAGE=\"${IMAGE}\" \ -e IMAGE=\"${IMAGE}\" \
-e DELAY_START=\"${CI_DELAY}\" \ -e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \ -e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \ -e META_TAG=\"${META_TAG}\" \
-e PORT=\"${CI_PORT}\" \ -e PORT=\"${CI_PORT}\" \
@@ -661,12 +738,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@@ -677,7 +748,7 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
@@ -708,12 +779,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@@ -724,7 +789,7 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
@@ -753,35 +818,13 @@ pipeline {
docker push ${MANIFESTIMAGE}:amd64-${SEMVER} docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker manifest push --purge ${MANIFESTIMAGE}:develop || : done
docker manifest create ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:amd64-develop ${MANIFESTIMAGE}:arm64v8-develop for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker manifest annotate ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:arm64v8-develop --os linux --arch arm64 --variant v8 docker buildx imagetools create -t ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:amd64-develop ${MANIFESTIMAGE}:arm64v8-develop
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
fi
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-develop")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-develop || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-develop ${MANIFESTIMAGE}:amd64-develop
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-develop
fi
docker manifest push --purge ${MANIFESTIMAGE}:develop
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
fi fi
done done
''' '''
@@ -854,39 +897,6 @@ EOF
) ''' ) '''
} }
} }
// Use helper container to sync the current README on master to the dockerhub endpoint
stage('Sync-README') {
when {
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
]
]) {
sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
docker pull ghcr.io/linuxserver/readme-sync
docker run --rm=true \
-e DOCKERHUB_USERNAME=$DOCKERUSER \
-e DOCKERHUB_PASSWORD=$DOCKERPASS \
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
-e DOCKER_REPOSITORY=${IMAGE} \
-e GIT_BRANCH=master \
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \
ghcr.io/linuxserver/readme-sync bash -c 'node sync'
rm -Rf ${TEMPDIR} '''
}
}
}
// If this is a Pull request send the CI link as a comment on it // If this is a Pull request send the CI link as a comment on it
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {
+8 -21
View File
@@ -28,7 +28,7 @@ Find us at:
# [linuxserver/nextcloud](https://github.com/linuxserver/docker-nextcloud) # [linuxserver/nextcloud](https://github.com/linuxserver/docker-nextcloud)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fnextcloud?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fnextcloud) [![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fnextcloud?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-nextcloud/packages) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-nextcloud/packages)
@@ -110,7 +110,6 @@ To help you get started creating a container from this image you can either use
```yaml ```yaml
--- ---
version: "2.1"
services: services:
nextcloud: nextcloud:
image: lscr.io/linuxserver/nextcloud:develop image: lscr.io/linuxserver/nextcloud:develop
@@ -120,7 +119,7 @@ services:
- PGID=1000 - PGID=1000
- TZ=Etc/UTC - TZ=Etc/UTC
volumes: volumes:
- /path/to/appdata:/config - /path/to/nextcloud/config:/config
- /path/to/data:/data - /path/to/data:/data
ports: ports:
- 443:443 - 443:443
@@ -136,7 +135,7 @@ docker run -d \
-e PGID=1000 \ -e PGID=1000 \
-e TZ=Etc/UTC \ -e TZ=Etc/UTC \
-p 443:443 \ -p 443:443 \
-v /path/to/appdata:/config \ -v /path/to/nextcloud/config:/config \
-v /path/to/data:/data \ -v /path/to/data:/data \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/nextcloud:develop lscr.io/linuxserver/nextcloud:develop
@@ -152,7 +151,7 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-v /config` | Nextcloud configs. | | `-v /config` | Persistent config files |
| `-v /data` | Your personal data. | | `-v /data` | Your personal data. |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@@ -224,7 +223,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
@@ -289,21 +288,6 @@ Below are the instructions for updating containers:
docker image prune docker image prune
``` ```
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once nextcloud
```
* You can also remove the old dangling images: `docker image prune`
**warning**: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
**tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. **tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
@@ -331,6 +315,9 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **06.03.24:** - Rebase to Alpine 3.19 with php 8.3.
* **02.01.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.
* **22.12.23:** - Site default conf updating to include mime.types for js and mjs and update location to include more file types.
* **28.10.23:** - Disable web upgrades using occ during init. * **28.10.23:** - Disable web upgrades using occ during init.
* **31.08.23:** - Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image. * **31.08.23:** - Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image.
* **14.08.23:** - Add develop branch. * **14.08.23:** - Add develop branch.
+488 -384
View File
@@ -1,384 +1,488 @@
NAME VERSION TYPE NAME VERSION TYPE
@nextcloud/text 28.0.0-dev.1 npm @nextcloud/text 3.10.0 npm
ExecutesacommandandpassesthestdiostreamsofthecreatedprocesstoTCPsockets 1.0.0.0 dotnet Process Wrapper 1.0.0.0 dotnet (+1 duplicate)
activity 2.20.0 npm activity 2.21.0 npm
alpine-baselayout 3.4.3-r1 apk alpine-baselayout 3.4.3-r2 apk
alpine-baselayout-data 3.4.3-r1 apk alpine-baselayout-data 3.4.3-r2 apk
alpine-keys 2.4-r1 apk alpine-keys 2.4-r1 apk
alpine-release 3.18.4-r0 apk alpine-release 3.19.1-r0 apk
alsa-lib 1.2.9-r1 apk alsa-lib 1.2.10-r0 apk
amphp/amp v2.6.2 php-composer amphp/amp v2.6.2 php-composer
amphp/byte-stream v1.8.1 php-composer amphp/byte-stream v1.8.1 php-composer
amphp/parallel v1.4.3 php-composer amphp/parallel v1.4.3 php-composer
amphp/parser v1.1.0 php-composer amphp/parser v1.1.0 php-composer
amphp/process v1.1.4 php-composer amphp/process v1.1.4 php-composer
amphp/serialization v1.0.0 php-composer amphp/serialization v1.0.0 php-composer
amphp/sync v1.4.2 php-composer amphp/sync v1.4.2 php-composer
aom-libs 3.6.1-r0 apk anyhow 1.0.71 rust-crate
apache2-utils 2.4.58-r0 apk anyhow 1.0.75 rust-crate
apk-tools 2.14.0-r2 apk aom-libs 3.7.1-r0 apk
apr 1.7.4-r0 apk apache2-utils 2.4.59-r0 apk
apr-util 1.6.3-r1 apk apk-tools 2.14.4-r0 apk
argon2-libs 20190702-r4 apk apr 1.7.4-r0 apk
avahi-libs 0.8-r13 apk apr-util 1.6.3-r1 apk
aws/aws-crt-php v1.0.2 php-composer arg_enum_proc_macro 0.3.2 rust-crate
aws/aws-sdk-php 3.240.8 php-composer argon2-libs 20190702-r5 apk
bantu/ini-get-wrapper v1.0.1 php-composer arrayvec 0.7.2 rust-crate
bash 5.2.15-r5 apk av-metrics 0.9.0 rust-crate
beberlei/assert v3.3.1 php-composer av1-grain 0.2.2 rust-crate
brick/math 0.9.2 php-composer aws/aws-crt-php v1.0.2 php-composer
brotli-libs 1.0.9-r14 apk aws/aws-sdk-php 3.240.8 php-composer
bruteforcesettings 2.8.0 npm bamarni/composer-bin-plugin 1.8.2 php-composer
busybox 1.36.1-r5 apk bantu/ini-get-wrapper v1.0.1 php-composer
busybox-binsh 1.36.1-r5 apk bash 5.2.21-r0 apk
c-client 2007f-r15 apk beberlei/assert v3.3.1 php-composer
ca-certificates 20230506-r0 apk bitflags 1.3.2 rust-crate
ca-certificates-bundle 20230506-r0 apk bitstream-io 1.6.0 rust-crate
cairo 1.17.8-r1 apk bitstream-io 1.7.0 rust-crate
cairo-gobject 1.17.8-r1 apk bitvec 1.0.1 rust-crate
christian-riesen/base32 1.6.0 php-composer bitvec_helpers 3.1.2 rust-crate
cjson 1.7.15-r4 apk brick/math 0.9.2 php-composer
coreutils 9.3-r1 apk brotli-libs 1.1.0-r1 apk
cups-libs 2.4.7-r0 apk bruteforcesettings 2.9.0 npm
curl 8.4.0-r0 apk busybox 1.36.1-r18 apk
cweagans/composer-patches 1.7.3 php-composer busybox-binsh 1.36.1-r18 apk
darsyn/ip 4.1.0 php-composer c-ares 1.27.0-r0 apk
dbus-libs 1.14.8-r0 apk c-client 2007f-r15 apk
deepdiver/zipstreamer 2.0.0 php-composer ca-certificates 20240226-r0 apk
deepdiver1975/tarstreamer v2.1.0 php-composer ca-certificates-bundle 20240226-r0 apk
doctrine/cache 2.2.0 php-composer catatonit 0.2.0-r0 apk
doctrine/dbal 3.7.0 php-composer cfg-if 1.0.0 rust-crate
doctrine/deprecations 1.1.2 php-composer christian-riesen/base32 1.6.0 php-composer
doctrine/event-manager 1.2.0 php-composer cjson 1.7.17-r0 apk
doctrine/lexer 1.2.3 php-composer clap 4.0.32 rust-crate
egulias/email-validator 3.2.5 php-composer clap_complete 4.0.7 rust-crate
ffmpeg 6.0-r15 apk clap_derive 4.0.21 rust-crate
ffmpeg-libavcodec 6.0-r15 apk clap_lex 0.3.0 rust-crate
ffmpeg-libavdevice 6.0-r15 apk composer 2.7.7 binary
ffmpeg-libavfilter 6.0-r15 apk console 0.15.5 rust-crate
ffmpeg-libavformat 6.0-r15 apk coreutils 9.4-r2 apk
ffmpeg-libavutil 6.0-r15 apk coreutils-env 9.4-r2 apk
ffmpeg-libpostproc 6.0-r15 apk coreutils-fmt 9.4-r2 apk
ffmpeg-libswresample 6.0-r15 apk coreutils-sha512sum 9.4-r2 apk
ffmpeg-libswscale 6.0-r15 apk crc 3.0.1 rust-crate
fgrosse/phpasn1 v2.3.0 php-composer crc-catalog 2.2.0 rust-crate
files_pdfviewer 2.9.0 npm crossbeam 0.8.2 rust-crate
firstrunwizard 2.17.0 npm crossbeam-channel 0.5.8 rust-crate
flac-libs 1.4.3-r0 apk crossbeam-deque 0.8.3 rust-crate
fontconfig 2.14.2-r3 apk crossbeam-epoch 0.9.14 rust-crate
freetype 2.13.0-r5 apk crossbeam-queue 0.3.8 rust-crate
fribidi 1.0.13-r0 apk crossbeam-utils 0.8.15 rust-crate
fusonic/linq v1.1.0 php-composer curl 8.5.0-r0 apk
fusonic/opengraph v2.2.0 php-composer cweagans/composer-patches 1.7.3 php-composer
gdbm 1.23-r1 apk dbus-libs 1.14.10-r0 apk
gdk-pixbuf 2.42.10-r5 apk deepdiver/zipstreamer v2.0.2 php-composer
ghostscript 10.02.0-r0 apk deepdiver1975/tarstreamer v2.1.0 php-composer
giggsey/libphonenumber-for-php-lite 8.13.12 php-composer doctrine/cache 2.2.0 php-composer
git 2.40.1-r0 apk doctrine/dbal 3.8.3 php-composer
glib 2.76.4-r0 apk doctrine/deprecations 1.1.2 php-composer
glslang-libs 1.3.243.0-r1 apk doctrine/event-manager 1.2.0 php-composer
gmp 6.2.1-r3 apk doctrine/lexer 2.1.0 php-composer
gnu-libiconv 1.17-r1 apk dolby_vision 3.2.0 rust-crate
gnu-libiconv-libs 1.17-r1 apk egulias/email-validator 3.2.6 php-composer
gnutls 3.8.0-r2 apk either 1.8.1 rust-crate
graphite2 1.3.14-r5 apk fern 0.6.2 rust-crate
guzzlehttp/guzzle 7.5.0 php-composer ffmpeg 6.1.1-r0 apk
guzzlehttp/promises 1.5.2 php-composer ffmpeg-libavcodec 6.1.1-r0 apk
guzzlehttp/psr7 2.4.5 php-composer ffmpeg-libavdevice 6.1.1-r0 apk
guzzlehttp/uri-template v0.2.0 php-composer ffmpeg-libavfilter 6.1.1-r0 apk
harfbuzz 7.3.0-r0 apk ffmpeg-libavformat 6.1.1-r0 apk
hexogen/kdtree v0.2.5 php-composer ffmpeg-libavutil 6.1.1-r0 apk
hwdata-pci 0.370-r0 apk ffmpeg-libpostproc 6.1.1-r0 apk
icewind/searchdav v3.1.0 php-composer ffmpeg-libswresample 6.1.1-r0 apk
icewind/smb v3.5.4 php-composer ffmpeg-libswscale 6.1.1-r0 apk
icewind/streams v0.7.7 php-composer fftw-double-libs 3.3.10-r5 apk
icu-data-en 73.2-r2 apk fgrosse/phpasn1 v2.3.0 php-composer
icu-libs 73.2-r2 apk files_downloadlimit 1.1.0 npm
imagemagick 7.1.1.13-r1 apk files_pdfviewer 2.10.0 npm
imagemagick-libs 7.1.1.13-r1 apk findutils 4.9.0-r5 apk
jansson 2.14-r3 apk firstrunwizard 2.18.0 npm
jbig2dec 0.19-r3 apk fontconfig 2.14.2-r4 apk
jq 1.6-r3 apk freetype 2.13.2-r0 apk
justinrainbow/json-schema 5.2.10 php-composer fribidi 1.0.13-r0 apk
lame-libs 3.100-r5 apk funty 2.0.0 rust-crate
laravel/serializable-closure v1.2.2 php-composer fusonic/linq v1.1.0 php-composer
lcms2 2.15-r2 apk fusonic/opengraph v2.2.0 php-composer
ldb 2.7.2-r1 apk gdbm 1.23-r1 apk
league/flysystem 2.5.0 php-composer getrandom 0.2.9 rust-crate
league/mime-type-detection 1.11.0 php-composer giggsey/libphonenumber-for-php-lite 8.13.27 php-composer
league/uri 6.4.0 php-composer git 2.43.4-r0 apk
league/uri-interfaces 2.2.0 php-composer glib 2.78.6-r0 apk
libacl 2.3.1-r3 apk glslang-libs 1.3.261.1-r0 apk
libarchive 3.7.2-r0 apk gmp 6.3.0-r0 apk
libass 0.17.1-r0 apk gnu-libiconv 1.17-r2 apk
libasyncns 0.8-r1 apk gnu-libiconv-libs 1.17-r2 apk
libattr 2.5.1-r4 apk gnutls 3.8.4-r0 apk
libavif 0.11.1-r2 apk graphite2 1.3.14-r6 apk
libblkid 2.38.1-r8 apk guzzlehttp/guzzle 7.8.1 php-composer
libbluray 1.3.4-r0 apk guzzlehttp/promises 1.5.3 php-composer
libbsd 0.11.7-r1 apk guzzlehttp/psr7 2.6.2 php-composer
libbz2 1.0.8-r5 apk guzzlehttp/uri-template v0.2.0 php-composer
libc-utils 0.7.2-r5 apk harfbuzz 8.3.0-r0 apk
libcap2 2.69-r0 apk heck 0.4.1 rust-crate
libcrypto3 3.1.4-r1 apk hexogen/kdtree v0.2.5 php-composer
libcurl 8.4.0-r0 apk hwdata-pci 0.377.2-r0 apk
libdav1d 1.2.1-r0 apk icewind/searchdav v3.1.0 php-composer
libde265 1.0.12-r0 apk icewind/smb v3.5.4 php-composer
libdrm 2.4.115-r4 apk icewind/streams v0.7.7 php-composer (+1 duplicate)
libedit 20221030.3.1-r1 apk icu-data-en 74.1-r0 apk
libevent 2.1.12-r6 apk icu-libs 74.1-r0 apk
libexpat 2.5.0-r1 apk imagemagick 7.1.1.32-r0 apk
libffi 3.4.4-r2 apk imagemagick-jpeg 7.1.1.32-r0 apk
libformw 6.4_p20230506-r0 apk imagemagick-jxl 7.1.1.32-r0 apk
libgcc 12.2.1_git20220924-r10 apk imagemagick-libs 7.1.1.32-r0 apk
libgomp 12.2.1_git20220924-r10 apk imagemagick-webp 7.1.1.32-r0 apk
libheif 1.16.2-r0 apk interpolate_name 0.2.3 rust-crate
libhwy 1.0.4-r1 apk io-lifetimes 1.0.10 rust-crate
libice 1.1.1-r2 apk is-terminal 0.4.7 rust-crate
libidn2 2.3.4-r1 apk itertools 0.10.5 rust-crate
libintl 0.21.1-r7 apk ivf 0.1.2 rust-crate
libjpeg-turbo 2.1.5.1-r3 apk jansson 2.14-r4 apk
libjxl 0.8.2-r0 apk jq 1.7.1-r0 apk
libldap 2.6.5-r0 apk justinrainbow/json-schema v5.2.13 php-composer
libltdl 2.4.7-r2 apk kornrunner/blurhash v1.2.2 php-composer
libmd 1.0.4-r2 apk lab 0.11.0 rust-crate
libmemcached-libs 1.1.4-r1 apk lame-libs 3.100-r5 apk
libmount 2.38.1-r8 apk laravel/serializable-closure v1.3.3 php-composer
libncursesw 6.4_p20230506-r0 apk lazy_static 1.4.0 rust-crate
libogg 1.3.5-r4 apk lcms2 2.15-r4 apk
libopenmpt 0.7.2-r0 apk ldb 2.7.2-r1 apk
libpanelw 6.4_p20230506-r0 apk league/flysystem 2.5.0 php-composer
libpciaccess 0.17-r2 apk league/mime-type-detection 1.11.0 php-composer
libplacebo 5.264.1-r1 apk league/uri 6.4.0 php-composer
libpng 1.6.39-r3 apk league/uri-interfaces 2.2.0 php-composer
libpq 15.5-r0 apk libSvtAv1Enc 1.7.0-r0 apk
libproc2 4.0.4-r0 apk libacl 2.3.1-r4 apk
libpulse 16.1-r10 apk libarchive 3.7.4-r0 apk
libraw 0.21.1-r1 apk libass 0.17.1-r1 apk
librist 0.2.7-r0 apk libasyncns 0.8-r2 apk
librsvg 2.56.3-r0 apk libattr 2.5.1-r5 apk
libsasl 2.1.28-r4 apk libavif 1.0.3-r0 apk
libsm 1.2.4-r1 apk libblkid 2.39.3-r0 apk
libsmbclient 4.18.8-r0 apk libbluray 1.3.4-r1 apk
libsndfile 1.2.0-r2 apk libbsd 0.11.7-r3 apk
libsodium 1.0.18-r3 apk libbz2 1.0.8-r6 apk
libsrt 1.5.2-r0 apk libc 0.2.144 rust-crate
libssh 0.10.5-r0 apk libc 0.2.149 rust-crate
libssl3 3.1.4-r1 apk libc-utils 0.7.2-r5 apk
libstdc++ 12.2.1_git20220924-r10 apk libcap2 2.69-r1 apk
libtasn1 4.19.0-r1 apk libcrypto3 3.1.5-r0 apk
libtheora 1.1.1-r17 apk libcurl 8.5.0-r0 apk
libunibreak 5.1-r0 apk libdav1d 1.3.0-r1 apk
libunistring 1.1-r1 apk libdovi 3.2.0-r1 apk
libuuid 2.38.1-r8 apk libdrm 2.4.118-r0 apk
libva 2.18.0-r1 apk libedit 20230828.3.1-r3 apk
libvdpau 1.5-r1 apk libevent 2.1.12-r7 apk
libvorbis 1.3.7-r1 apk libexpat 2.6.2-r0 apk
libvpx 1.13.0-r2 apk libffi 3.4.4-r3 apk
libwbclient 4.18.8-r0 apk libflac 1.4.3-r1 apk
libwebp 1.3.2-r0 apk libformw 6.4_p20231125-r0 apk
libx11 1.8.7-r0 apk libgcc 13.2.1_git20231014-r0 apk
libxau 1.0.11-r2 apk libgomp 13.2.1_git20231014-r0 apk
libxcb 1.15-r1 apk libhwy 1.0.7-r0 apk
libxdmcp 1.1.4-r2 apk libice 1.1.1-r5 apk
libxext 1.3.5-r2 apk libidn2 2.3.4-r4 apk
libxfixes 6.0.1-r2 apk libintl 0.22.3-r0 apk
libxft 2.3.8-r1 apk libjpeg-turbo 3.0.1-r0 apk
libxml2 2.11.4-r0 apk libjxl 0.8.2-r0 apk
libxpm 3.5.16-r1 apk libldap 2.6.6-r1 apk
libxrender 0.9.11-r3 apk libltdl 2.4.7-r3 apk
libxt 1.3.0-r2 apk libmcrypt 2.5.8-r10 apk
libxxhash 0.8.2-r0 apk libmd 1.1.0-r0 apk
libzip 1.9.2-r2 apk libmemcached-libs 1.1.4-r1 apk
libzmq 4.3.4-r4 apk libmount 2.39.3-r0 apk
linux-pam 1.5.2-r10 apk libncursesw 6.4_p20231125-r0 apk
lmdb 0.9.31-r0 apk libogg 1.3.5-r5 apk
logrotate 3.21.0-r1 apk libopenmpt 0.7.3-r1 apk
lz4-libs 1.9.4-r4 apk libpanelw 6.4_p20231125-r0 apk
mbedtls 2.28.5-r0 apk libpciaccess 0.17-r2 apk
mexitek/phpcolors v1.0.4 php-composer libplacebo 6.338.1-r0 apk
microsoft/azure-storage-blob 1.5.4 php-composer libpng 1.6.40-r0 apk
microsoft/azure-storage-common 1.5.2 php-composer libpq 16.3-r0 apk
mlocati/ip-lib 1.18.0 php-composer libproc2 4.0.4-r0 apk
mpg123-libs 1.31.3-r1 apk libpulse 16.1-r11 apk
mtdowling/jmespath.php 2.6.1 php-composer librist 0.2.10-r0 apk
musl 1.2.4-r2 apk libsasl 2.1.28-r5 apk
musl-utils 1.2.4-r2 apk libsharpyuv 1.3.2-r0 apk
nano 7.2-r1 apk libsm 1.2.4-r3 apk
ncurses-terminfo-base 6.4_p20230506-r0 apk libsmbclient 4.18.9-r0 apk
netcat-openbsd 1.219-r1 apk libsndfile 1.2.2-r0 apk
nettle 3.8.1-r2 apk libsodium 1.0.19-r0 apk
nextcloud 1.0.0 npm libsrt 1.5.3-r0 apk
nextcloud/lognormalizer v1.0.0 php-composer libssh 0.10.6-r0 apk
nghttp2-libs 1.57.0-r0 apk libssl3 3.1.5-r0 apk
nginx 1.24.0-r7 apk libstdc++ 13.2.1_git20231014-r0 apk
notifications 2.16.0 npm libtasn1 4.19.0-r2 apk
numactl 2.0.16-r4 apk libtheora 1.1.1-r18 apk
onevpl-libs 2023.2.1-r0 apk libunibreak 5.1-r3 apk
oniguruma 6.9.8-r1 apk libunistring 1.1-r2 apk
openssl 3.1.4-r1 apk libuuid 2.39.3-r0 apk
opus 1.4-r0 apk libva 2.20.0-r0 apk
orc 0.4.34-r0 apk libvdpau 1.5-r2 apk
p11-kit 0.24.1-r2 apk libvorbis 1.3.7-r2 apk
pango 1.50.14-r1 apk libvpx 1.13.1-r0 apk
password_policy 1.18.0 npm libwbclient 4.18.9-r0 apk
pcre 8.45-r3 apk libwebp 1.3.2-r0 apk
pcre2 10.42-r1 apk libwebpdemux 1.3.2-r0 apk
pear/archive_tar 1.4.14 php-composer libwebpmux 1.3.2-r0 apk
pear/console_getopt v1.4.3 php-composer libx11 1.8.7-r0 apk
pear/pear-core-minimal v1.10.10 php-composer libxau 1.0.11-r3 apk
pear/pear_exception v1.0.2 php-composer libxcb 1.16-r0 apk
photos 2.4.0 npm libxdmcp 1.1.4-r3 apk
php-http/guzzle7-adapter 1.0.0 php-composer libxext 1.3.5-r3 apk
php-http/httplug 2.2.0 php-composer libxfixes 6.0.1-r3 apk
php-http/promise 1.1.0 php-composer libxml2 2.11.8-r0 apk
php-opencloud/openstack v3.2.1 php-composer libxpm 3.5.17-r0 apk
php82 8.2.12-r0 apk libxt 1.3.0-r4 apk
php82-bcmath 8.2.12-r0 apk libxxhash 0.8.2-r2 apk
php82-bz2 8.2.12-r0 apk libzip 1.10.1-r0 apk
php82-common 8.2.12-r0 apk libzmq 4.3.5-r2 apk
php82-ctype 8.2.12-r0 apk lilv-libs 0.24.22-r0 apk
php82-curl 8.2.12-r0 apk linux-pam 1.5.3-r7 apk
php82-dom 8.2.12-r0 apk linux-raw-sys 0.3.7 rust-crate
php82-exif 8.2.12-r0 apk lmdb 0.9.31-r0 apk
php82-fileinfo 8.2.12-r0 apk log 0.4.17 rust-crate
php82-fpm 8.2.12-r0 apk logreader 2.14.0 npm
php82-ftp 8.2.12-r0 apk logrotate 3.21.0-r1 apk
php82-gd 8.2.12-r0 apk lz4-libs 1.9.4-r5 apk
php82-gmp 8.2.12-r0 apk maybe-rayon 0.1.1 rust-crate
php82-iconv 8.2.12-r0 apk mbedtls 2.28.8-r0 apk
php82-imap 8.2.12-r0 apk memchr 2.5.0 rust-crate
php82-intl 8.2.12-r0 apk memoffset 0.8.0 rust-crate
php82-ldap 8.2.12-r0 apk mexitek/phpcolors v1.0.4 php-composer
php82-mbstring 8.2.12-r0 apk microsoft/azure-storage-blob 1.5.4 php-composer
php82-mysqlnd 8.2.12-r0 apk microsoft/azure-storage-common 1.5.2 php-composer
php82-opcache 8.2.12-r0 apk minimal-lexical 0.2.1 rust-crate
php82-openssl 8.2.12-r0 apk mlocati/ip-lib 1.18.0 php-composer
php82-pcntl 8.2.12-r0 apk mpg123-libs 1.32.3-r0 apk
php82-pdo 8.2.12-r0 apk mtdowling/jmespath.php 2.6.1 php-composer
php82-pdo_mysql 8.2.12-r0 apk musl 1.2.4_git20230717-r4 apk
php82-pdo_pgsql 8.2.12-r0 apk musl-utils 1.2.4_git20230717-r4 apk
php82-pdo_sqlite 8.2.12-r0 apk nano 7.2-r1 apk
php82-pecl-apcu 5.1.22-r0 apk ncurses-terminfo-base 6.4_p20231125-r0 apk
php82-pecl-igbinary 3.2.14-r0 apk netcat-openbsd 1.226-r0 apk
php82-pecl-imagick 3.7.0-r5 apk nettle 3.9.1-r0 apk
php82-pecl-memcached 3.2.0-r1 apk new_debug_unreachable 1.0.4 rust-crate
php82-pecl-msgpack 2.2.0-r0 apk nextcloud 1.0.0 npm
php82-pecl-redis 6.0.2-r0 apk nextcloud/lognormalizer v1.0.0 php-composer
php82-pecl-smbclient 1.1.1-r0 apk nghttp2-libs 1.58.0-r0 apk
php82-pgsql 8.2.12-r0 apk nginx 1.24.0-r16 apk
php82-phar 8.2.12-r0 apk nom 7.1.3 rust-crate
php82-posix 8.2.12-r0 apk noop_proc_macro 0.3.0 rust-crate
php82-session 8.2.12-r0 apk notifications 2.17.0 npm
php82-simplexml 8.2.12-r0 apk num-bigint 0.4.3 rust-crate
php82-sockets 8.2.12-r0 apk num-derive 0.3.3 rust-crate
php82-sodium 8.2.12-r0 apk num-integer 0.1.45 rust-crate
php82-sqlite3 8.2.12-r0 apk num-rational 0.4.1 rust-crate
php82-sysvsem 8.2.12-r0 apk num-traits 0.2.15 rust-crate
php82-xml 8.2.12-r0 apk num_cpus 1.15.0 rust-crate
php82-xmlreader 8.2.12-r0 apk numactl 2.0.16-r4 apk
php82-xmlwriter 8.2.12-r0 apk once_cell 1.17.1 rust-crate
php82-zip 8.2.12-r0 apk onevpl-libs 2023.3.1-r2 apk
phpseclib/phpseclib 2.0.45 php-composer oniguruma 6.9.9-r0 apk
pimple/pimple v3.5.0 php-composer openssl 3.1.5-r0 apk
pixman 0.42.2-r1 apk opus 1.4-r0 apk
pkgconf 1.9.5-r0 apk orc 0.4.34-r0 apk
popt 1.19-r2 apk os_str_bytes 6.5.0 rust-crate
privacy 1.12.0 npm p11-kit 0.25.3-r0 apk
procps-ng 4.0.4-r0 apk password_policy 1.19.0 npm
psr/cache 3.0.0 php-composer paste 1.0.12 rust-crate
psr/clock 1.0.0 php-composer pcre 8.45-r3 apk
psr/container 2.0.2 php-composer pcre2 10.42-r2 apk
psr/event-dispatcher 1.0.0 php-composer pear/archive_tar 1.4.14 php-composer
psr/http-client 1.0.1 php-composer pear/console_getopt v1.4.3 php-composer
psr/http-factory 1.0.1 php-composer pear/pear-core-minimal v1.10.14 php-composer
psr/http-message 1.0.1 php-composer pear/pear_exception v1.0.2 php-composer
psr/log 1.1.4 php-composer photos 2.5.0 npm
punic/punic 3.8.1 php-composer php-http/guzzle7-adapter 1.0.0 php-composer
ralouphie/getallheaders 3.0.3 php-composer php-http/httplug 2.2.0 php-composer
ramsey/collection 1.1.3 php-composer php-http/promise 1.1.0 php-composer
ramsey/uuid 4.1.1 php-composer php-opencloud/openstack v3.2.1 php-composer
readline 8.2.1-r1 apk php83 8.3.8-r0 apk
recommendations 2.0.0 npm php83-bcmath 8.3.8-r0 apk
related_resources 1.3.0 npm php83-bz2 8.3.8-r0 apk
rsync 3.2.7-r4 apk php83-common 8.3.8-r0 apk
rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer php83-ctype 8.3.8-r0 apk
rubix/tensor 2.2.3 php-composer php83-curl 8.3.8-r0 apk
rullzer/easytotp v0.1.4 php-composer php83-dom 8.3.8-r0 apk
sabre/dav 4.5.0 php-composer php83-exif 8.3.8-r0 apk
sabre/event 5.1.4 php-composer php83-fileinfo 8.3.8-r0 apk
sabre/http 5.1.10 php-composer php83-fpm 8.3.8-r0 apk
sabre/uri 2.3.3 php-composer php83-ftp 8.3.8-r0 apk
sabre/vobject 4.5.4 php-composer php83-gd 8.3.8-r0 apk
sabre/xml 2.2.6 php-composer php83-gmp 8.3.8-r0 apk
samba-client 4.18.8-r0 apk php83-iconv 8.3.8-r0 apk
samba-client-libs 4.18.8-r0 apk php83-imap 8.3.8-r0 apk
samba-common 4.18.8-r0 apk php83-intl 8.3.8-r0 apk
samba-libs 4.18.8-r0 apk php83-ldap 8.3.8-r0 apk
samba-util-libs 4.18.8-r0 apk php83-mbstring 8.3.8-r0 apk
scanelf 1.3.7-r1 apk php83-mysqlnd 8.3.8-r0 apk
scssphp/scssphp v1.11.0 php-composer php83-opcache 8.3.8-r0 apk
sdl2 2.26.5-r0 apk php83-openssl 8.3.8-r0 apk
shaderc 2023.3-r1 apk php83-pcntl 8.3.8-r0 apk
shadow 4.13-r4 apk php83-pdo 8.3.8-r0 apk
shared-mime-info 2.2-r5 apk php83-pdo_mysql 8.3.8-r0 apk
skalibs 2.13.1.1-r1 apk php83-pdo_pgsql 8.3.8-r0 apk
soxr 0.1.3-r5 apk php83-pdo_sqlite 8.3.8-r0 apk
speexdsp 1.2.1-r1 apk php83-pecl-apcu 5.1.23-r0 apk
spirv-tools 1.3.243.0-r1 apk php83-pecl-igbinary 3.2.15-r0 apk
spomky-labs/base64url v2.0.4 php-composer php83-pecl-imagick 3.7.0-r0 apk
spomky-labs/cbor-php v2.0.1 php-composer php83-pecl-mcrypt 1.0.7-r0 apk
sqlite-libs 3.41.2-r2 apk php83-pecl-memcached 3.2.0-r0 apk
ssl_client 1.36.1-r5 apk php83-pecl-msgpack 2.2.0-r2 apk
stecman/symfony-console-completion 0.11.0 php-composer php83-pecl-redis 6.0.2-r0 apk
sudo 1.9.13_p3-r2 apk php83-pecl-smbclient 1.1.1-r0 apk
suspicious_login 6.0.0 npm php83-pgsql 8.3.8-r0 apk
svt-av1-libs 1.6.0-r0 apk php83-phar 8.3.8-r0 apk
symfony/console v5.4.24 php-composer php83-posix 8.3.8-r0 apk
symfony/css-selector v5.4.11 php-composer php83-session 8.3.8-r0 apk
symfony/deprecation-contracts v3.0.2 php-composer php83-simplexml 8.3.8-r0 apk
symfony/dom-crawler v5.4.11 php-composer php83-sockets 8.3.8-r0 apk
symfony/event-dispatcher v5.4.26 php-composer php83-sodium 8.3.8-r0 apk
symfony/event-dispatcher-contracts v3.0.2 php-composer php83-sqlite3 8.3.8-r0 apk
symfony/http-foundation v5.4.25 php-composer php83-sysvsem 8.3.8-r0 apk
symfony/mailer v5.4.22 php-composer php83-xml 8.3.8-r0 apk
symfony/mime v5.4.19 php-composer php83-xmlreader 8.3.8-r0 apk
symfony/polyfill-ctype v1.23.0 php-composer php83-xmlwriter 8.3.8-r0 apk
symfony/polyfill-intl-grapheme v1.23.1 php-composer php83-zip 8.3.8-r0 apk
symfony/polyfill-intl-idn v1.27.0 php-composer phpseclib/phpseclib 2.0.47 php-composer
symfony/polyfill-intl-normalizer v1.27.0 php-composer pimple/pimple v3.5.0 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer popt 1.19-r3 apk
symfony/polyfill-php72 v1.27.0 php-composer ppv-lite86 0.2.17 rust-crate
symfony/polyfill-php73 v1.23.0 php-composer privacy 1.13.0 npm
symfony/polyfill-php73 v1.26.0 php-composer proc-macro-error 1.0.4 rust-crate
symfony/polyfill-php80 v1.27.0 php-composer proc-macro-error-attr 1.0.4 rust-crate
symfony/process v5.4.24 php-composer proc-macro2 1.0.57 rust-crate
symfony/routing v5.4.25 php-composer procps-ng 4.0.4-r0 apk
symfony/service-contracts v3.0.2 php-composer psr/cache 3.0.0 php-composer
symfony/string v6.0.19 php-composer psr/clock 1.0.0 php-composer
symfony/translation v5.4.24 php-composer psr/container 2.0.2 php-composer
symfony/translation-contracts v2.4.0 php-composer psr/event-dispatcher 1.0.0 php-composer
talloc 2.4.0-r1 apk psr/http-client 1.0.3 php-composer
tdb-libs 1.4.8-r1 apk psr/http-factory 1.0.2 php-composer
tevent 0.14.1-r1 apk psr/http-message 1.1 php-composer
thecodingmachine/safe v1.3.3 php-composer psr/log 1.1.4 php-composer (+1 duplicate)
tiff 4.5.1-r0 apk punic/punic 3.8.1 php-composer
twofactor_totp 10.0.0-beta2 npm quote 1.0.27 rust-crate
tzdata 2023c-r1 apk radium 0.7.0 rust-crate
utmps-libs 0.1.2.1-r1 apk ralouphie/getallheaders 3.0.3 php-composer
v4l-utils-libs 1.24.1-r0 apk ramsey/collection 1.1.3 php-composer
vidstab 1.1.1-r0 apk ramsey/uuid 4.1.1 php-composer
viewer 2.2.0 npm rand 0.8.5 rust-crate
vulkan-loader 1.3.243.0-r1 apk rand_chacha 0.3.1 rust-crate
wapmorgan/mp3info 0.1.0 php-composer rand_core 0.6.4 rust-crate
wayland-libs-client 1.22.0-r2 apk rav1e 0.6.6 rust-crate
web-auth/cose-lib v3.3.9 php-composer rav1e-libs 0.6.6-r2 apk
web-auth/metadata-service v3.3.9 php-composer rayon 1.7.0 rust-crate
web-auth/webauthn-lib v3.3.9 php-composer rayon-core 1.11.0 rust-crate
x264-libs 0.164_git20220602-r1 apk readline 8.2.1-r2 apk
x265-libs 3.5-r4 apk recommendations 2.1.0 npm
xvidcore 1.3.7-r1 apk related_resources 1.4.0 npm
xz-libs 5.4.3-r0 apk rsync 3.2.7-r4 apk
zimg 3.0.5-r0 apk rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer
zlib 1.2.13-r1 apk rubix/tensor 2.2.3 php-composer
zstd-libs 1.5.5-r4 apk rullzer/easytotp v0.1.4 php-composer
rust_hawktracer 0.7.0 rust-crate
rust_hawktracer_normal_macro 0.4.1 rust-crate
rust_hawktracer_proc_macro 0.4.1 rust-crate
rustix 0.37.19 rust-crate
sabre/dav 4.5.0 php-composer
sabre/event 5.1.4 php-composer
sabre/http 5.1.10 php-composer
sabre/uri 2.3.3 php-composer
sabre/vobject 4.5.4 php-composer
sabre/xml 2.2.6 php-composer
samba-client 4.18.9-r0 apk
samba-client-libs 4.18.9-r0 apk
samba-common 4.18.9-r0 apk
samba-libs 4.18.9-r0 apk
samba-util-libs 4.18.9-r0 apk
scan_fmt 0.2.6 rust-crate
scanelf 1.3.7-r2 apk
scopeguard 1.1.0 rust-crate
scssphp/scssphp v1.12.1 php-composer
sdl2 2.28.5-r0 apk
serd-libs 0.32.0-r0 apk
serde 1.0.163 rust-crate
serde_derive 1.0.163 rust-crate
shaderc 2023.7-r0 apk
shadow 4.14.2-r0 apk
signal-hook 0.3.15 rust-crate
signal-hook-registry 1.4.1 rust-crate
simd_helpers 0.1.0 rust-crate
skalibs 2.14.0.1-r0 apk
sord-libs 0.16.16-r0 apk
soxr 0.1.3-r7 apk
speexdsp 1.2.1-r2 apk
spirv-tools 1.3.261.1-r0 apk
spomky-labs/base64url v2.0.4 php-composer
spomky-labs/cbor-php v2.0.1 php-composer
sqlite-libs 3.44.2-r0 apk
sratom 0.6.16-r0 apk
ssl_client 1.36.1-r18 apk
stecman/symfony-console-completion 0.11.0 php-composer
sudo 1.9.15_p2-r0 apk
support 1.12.0 npm
suspicious_login 7.0.0 npm
symfony/console v5.4.35 php-composer
symfony/css-selector v5.4.11 php-composer
symfony/deprecation-contracts v3.0.2 php-composer
symfony/dom-crawler v5.4.11 php-composer
symfony/event-dispatcher v5.4.26 php-composer
symfony/event-dispatcher-contracts v3.0.2 php-composer
symfony/http-foundation v5.4.25 php-composer
symfony/mailer v5.4.22 php-composer
symfony/mime v5.4.19 php-composer
symfony/polyfill-ctype v1.28.0 php-composer
symfony/polyfill-intl-grapheme v1.28.0 php-composer
symfony/polyfill-intl-idn v1.28.0 php-composer
symfony/polyfill-intl-normalizer v1.28.0 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer
symfony/polyfill-mbstring v1.28.0 php-composer
symfony/polyfill-php72 v1.28.0 php-composer
symfony/polyfill-php73 v1.26.0 php-composer
symfony/polyfill-php73 v1.28.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer
symfony/polyfill-php80 v1.28.0 php-composer
symfony/process v5.4.34 php-composer
symfony/routing v5.4.25 php-composer
symfony/service-contracts v3.0.2 php-composer
symfony/string v6.0.19 php-composer
symfony/translation v5.4.24 php-composer
symfony/translation-contracts v2.4.0 php-composer
syn 1.0.109 rust-crate
syn 2.0.16 rust-crate
talloc 2.4.2-r0 apk
tap 1.0.1 rust-crate
tdb-libs 1.4.9-r0 apk
termcolor 1.2.0 rust-crate
terminal_size 0.2.6 rust-crate
tevent 0.15.0-r0 apk
thecodingmachine/safe v1.3.3 php-composer
thiserror 1.0.40 rust-crate
thiserror-impl 1.0.40 rust-crate
twofactor_totp 11.0.0-dev npm
tzdata 2024a-r0 apk
unicode-ident 1.0.8 rust-crate
unicode-width 0.1.10 rust-crate
utmps-libs 0.1.2.2-r0 apk
v4l-utils-libs 1.24.1-r1 apk
v_frame 0.3.3 rust-crate
vidstab 1.1.1-r0 apk
viewer 2.3.0 npm
vulkan-loader 1.3.261.1-r0 apk
wapmorgan/mp3info 0.1.0 php-composer
wayland-libs-client 1.22.0-r4 apk
web-auth/cose-lib v3.3.9 php-composer
web-auth/metadata-service v3.3.9 php-composer
web-auth/webauthn-lib v3.3.9 php-composer
wyz 0.5.1 rust-crate
x264-libs 0.164_git20231001-r0 apk
x265-libs 3.5-r4 apk
xvidcore 1.3.7-r2 apk
xz-libs 5.4.5-r0 apk
y4m 0.8.0 rust-crate
zimg 3.0.5-r2 apk
zix-libs 0.4.2-r0 apk
zlib 1.3.1-r0 apk
zstd-libs 1.5.5-r8 apk
+4 -1
View File
@@ -31,7 +31,7 @@ param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." } - { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." }
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata", desc: "Nextcloud configs." } - { vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files" }
- { vol_path: "/data", vol_host_path: "/path/to/data", desc: "Your personal data." } - { vol_path: "/data", vol_host_path: "/path/to/data", desc: "Your personal data." }
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
@@ -79,6 +79,9 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "06.03.24:", desc: "Rebase to Alpine 3.19 with php 8.3."}
- { date: "02.01.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf." }
- { date: "22.12.23:", desc: "Site default conf updating to include mime.types for js and mjs and update location to include more file types." }
- { date: "28.10.23:", desc: "Disable web upgrades using occ during init." } - { date: "28.10.23:", desc: "Disable web upgrades using occ during init." }
- { date: "31.08.23:", desc: "Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image." } - { date: "31.08.23:", desc: "Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image." }
- { date: "14.08.23:", desc: "Add develop branch." } - { date: "14.08.23:", desc: "Add develop branch." }
@@ -1,4 +1,4 @@
## Version 2023/06/23 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample ## Version 2024/01/03 - 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 # Set the `immutable` cache control options only for assets with a cache busting `v` argument
map $arg_v $asset_immutable { map $arg_v $asset_immutable {
@@ -36,25 +36,24 @@ server {
gzip_comp_level 4; gzip_comp_level 4;
gzip_min_length 256; gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; gzip_types application/atom+xml text/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# Pagespeed is not supported by Nextcloud, so if your server is built # Pagespeed is not supported by Nextcloud, so if your server is built
# with the `ngx_pagespeed` module, uncomment this line to disable it. # with the `ngx_pagespeed` module, uncomment this line to disable it.
#pagespeed off; #pagespeed off;
# The settings allows you to optimize the HTTP2 bandwitdth. # The settings allows you to optimize the HTTP2 bandwidth.
# See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/ # See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/
# for tunning hints # for tuning hints
client_body_buffer_size 512k; client_body_buffer_size 512k;
# HTTP response headers borrowed from Nextcloud `.htaccess` # HTTP response headers borrowed from Nextcloud `.htaccess`
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 "noindex, nofollow" always;
add_header X-Robots-Tag "noindex, nofollow" always; add_header X-XSS-Protection "1; mode=block" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak # Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By; fastcgi_hide_header X-Powered-By;
@@ -66,7 +65,7 @@ server {
# that file is correctly served; if it doesn't, then the request is passed to # that file is correctly served; if it doesn't, then the request is passed to
# the front-end controller. This consistent behaviour means that we don't need # the front-end controller. This consistent behaviour means that we don't need
# to specify custom rules for certain paths (e.g. images and other assets, # to specify custom rules for certain paths (e.g. images and other assets,
# `/updater`, `/ocm-provider`, `/ocs-provider`), and thus # `/updater`, `/ocs-provider`), and thus
# `try_files $uri $uri/ /index.php$request_uri` # `try_files $uri $uri/ /index.php$request_uri`
# always provides the desired behaviour. # always provides the desired behaviour.
index index.php index.html /index.php$request_uri; index index.php index.html /index.php$request_uri;
@@ -113,7 +112,7 @@ server {
# to the URI, resulting in a HTTP 500 error response. # to the URI, resulting in a HTTP 500 error response.
location ~ \.php(?:$|/) { location ~ \.php(?:$|/) {
# Required for legacy support # Required for legacy support
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;
fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info; set $path_info $fastcgi_path_info;
@@ -134,7 +133,8 @@ server {
fastcgi_max_temp_file_size 0; fastcgi_max_temp_file_size 0;
} }
location ~ \.(?:css|js|svg|gif|png|jpg|ico|wasm|tflite|map)$ { # Serve static files
location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ {
try_files $uri /index.php$request_uri; try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463, $asset_immutable"; 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
@@ -142,6 +142,7 @@ server {
location ~ \.wasm$ { location ~ \.wasm$ {
default_type application/wasm; default_type application/wasm;
} }
} }
location ~ \.woff2?$ { location ~ \.woff2?$ {
@@ -168,3 +168,9 @@ if [ ! -s /config/www/nextcloud/config/config.php ]; then
elif [ -f /config/www/nextcloud/config/config.php ]; then elif [ -f /config/www/nextcloud/config/config.php ]; then
sed -i "s|/app/www/public/data|/data|g" /config/www/nextcloud/config/config.php sed -i "s|/app/www/public/data|/data|g" /config/www/nextcloud/config/config.php
fi fi
#modify javascript mime type and add .mjs support
if [ -s /etc/nginx/mime.types ]; then
sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types
sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types
fi
+1 -1
View File
@@ -5,7 +5,7 @@ DEFAULT_CONF="/config/nginx/site-confs/default.conf"
OLD_ROOT="root /config/www/nextcloud/;" OLD_ROOT="root /config/www/nextcloud/;"
NEW_ROOT="root /app/www/public;" NEW_ROOT="root /app/www/public;"
if grep -q "${OLD_ROOT}" "${DEFAULT_CONF}"; then if [[ -f "${DEFAULT_CONF}" ]] && grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then
echo "updating root in ${DEFAULT_CONF}" echo "updating root in ${DEFAULT_CONF}"
sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}" sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}"
fi fi