Compare commits

...

87 Commits

Author SHA1 Message Date
LinuxServer-CI a4fddd90ab Bot Updating Package Versions 2024-08-01 19:34:13 +00:00
LinuxServer-CI 6f99c81c7d Bot Updating Package Versions 2024-07-25 22:37:13 +00:00
LinuxServer-CI e59909addc Bot Updating Package Versions 2024-07-23 11:54:34 +00:00
LinuxServer-CI c690639528 Bot Updating Templated Files 2024-07-16 11:50:55 +00:00
LinuxServer-CI 5aebb77566 Bot Updating Templated Files 2024-07-16 11:48:24 +00:00
LinuxServer-CI 85e673015c Bot Updating Package Versions 2024-07-12 08:38:03 +00:00
LinuxServer-CI e372bf8c1f Bot Updating Package Versions 2024-07-09 11:53:27 +00:00
LinuxServer-CI 9888ec10bb Bot Updating Package Versions 2024-07-02 11:52:22 +00:00
LinuxServer-CI 746fc2314f Bot Updating Package Versions 2024-06-25 14:57:41 +00:00
Adam 2ebf64ed79 Merge pull request #445 from linuxserver/develop-3.20
Rebase to 3.20 (develop)
2024-06-25 15:50:18 +01:00
thespad 62d13eaf3b Rebase to 3.20 2024-06-24 20:36:45 +01:00
LinuxServer-CI 4adc904193 Bot Updating Package Versions 2024-06-21 14:36:12 +00:00
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
Eric Nemchik 45d68d0508 Merge pull request #357 from linuxserver/standard-cron-develop
standard cron develop
2023-11-18 19:09:15 -06:00
LinuxServer-CI ba1ac62fd9 Bot Updating Package Versions 2023-11-16 21:36:06 +00:00
LinuxServer-CI ca6afd353a Bot Updating Templated Files 2023-11-16 21:31:08 +00:00
LinuxServer-CI acb431bc9c Bot Updating Package Versions 2023-11-14 23:32:43 +00:00
LinuxServer-CI 2639cc28cd Bot Updating Package Versions 2023-11-14 11:49:59 +00:00
LinuxServer-CI 35919306ae Bot Updating Package Versions 2023-11-10 14:35:17 +00:00
Eric Nemchik 74f9122ab6 Merge branch 'standard-cron' into standard-cron-develop 2023-08-26 09:59:51 -05:00
Eric Nemchik e25b4e3b4f Move crontabs to etc
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-19 10:17:19 -05:00
Eric Nemchik a7471ca097 Remove root cron sed
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-19 08:41:47 -05:00
Eric Nemchik 31e9e86b4f cron in base
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-18 23:38:05 -05:00
Eric Nemchik 0d3c4888b0 Fix perms
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-07-30 09:49:46 -05:00
Eric Nemchik e022624194 standard cron
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-07-30 01:16:35 -05:00
24 changed files with 644 additions and 671 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'
+2
View File
@@ -5,6 +5,8 @@ on:
- '**/run' - '**/run'
- '**/finish' - '**/finish'
- '**/check' - '**/check'
- 'root/migrations/*'
jobs: jobs:
permission_check: permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1
+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.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -19,45 +19,44 @@ 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-mcrypt \
php82-pecl-smbclient \ php83-pecl-memcached \
php82-pgsql \ php83-pecl-smbclient \
php82-posix \ php83-pgsql \
php82-redis \ php83-posix \
php82-sodium \ php83-redis \
php82-sqlite3 \ php83-sodium \
php82-sysvsem \ php83-sqlite3 \
php82-xmlreader \ php83-sysvsem \
php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
sudo && \ sudo && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php82-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 +66,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 +75,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/ && \
@@ -93,6 +92,7 @@ RUN \
rm -rf /app/www/src/updater && \ rm -rf /app/www/src/updater && \
mkdir -p /app/www/src/data && \ mkdir -p /app/www/src/data && \
chmod +x /app/www/src/occ && \ chmod +x /app/www/src/occ && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*
+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.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -19,45 +19,44 @@ 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-mcrypt \
php82-pecl-smbclient \ php83-pecl-memcached \
php82-pgsql \ php83-pecl-smbclient \
php82-posix \ php83-pgsql \
php82-redis \ php83-posix \
php82-sodium \ php83-redis \
php82-sqlite3 \ php83-sodium \
php82-sysvsem \ php83-sqlite3 \
php82-xmlreader \ php83-sysvsem \
php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
sudo && \ sudo && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php82-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 +66,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 +75,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/ && \
@@ -93,6 +92,7 @@ RUN \
rm -rf /app/www/src/updater && \ rm -rf /app/www/src/updater && \
mkdir -p /app/www/src/data && \ mkdir -p /app/www/src/data && \
chmod +x /app/www/src/occ && \ chmod +x /app/www/src/occ && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*
Vendored
+123 -113
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'
@@ -30,8 +31,8 @@ pipeline {
CI_PORT='443' CI_PORT='443'
CI_SSL='true' CI_SSL='true'
CI_DELAY='120' CI_DELAY='120'
CI_DOCKERENV='TZ=US/Pacific' CI_DOCKERENV=''
CI_AUTH='user:password' CI_AUTH=''
CI_WEBPATH='' CI_WEBPATH=''
} }
stages { stages {
@@ -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.20 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,31 +340,50 @@ 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 --depth=1 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 --depth=1 https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates git clone --depth=1 https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.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}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
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
@@ -626,14 +703,14 @@ pipeline {
set -e set -e
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
docker run --rm \ docker run --rm \
--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,12 +789,12 @@ 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
if [ "${CI}" == "false" ]; then if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
@@ -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 {
+10 -22
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)
@@ -47,7 +47,7 @@ Where are your photos and documents? With Nextcloud you pick a server of your ch
## Supported Architectures ## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/nextcloud:develop` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/nextcloud:develop` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@@ -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,10 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **24.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **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.
+2 -3
View File
@@ -7,7 +7,6 @@ custom_version_command: "curl -sX GET https://api.github.com/repos/nextcloud/ser
release_type: prerelease release_type: prerelease
release_tag: develop release_tag: develop
ls_branch: develop ls_branch: develop
build_armhf: false
repo_vars: repo_vars:
- BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE' - BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE'
- LS_USER = 'linuxserver' - LS_USER = 'linuxserver'
@@ -23,6 +22,6 @@ repo_vars:
- CI_PORT='443' - CI_PORT='443'
- CI_SSL='true' - CI_SSL='true'
- CI_DELAY='120' - CI_DELAY='120'
- CI_DOCKERENV='TZ=US/Pacific' - CI_DOCKERENV=''
- CI_AUTH='user:password' - CI_AUTH=''
- CI_WEBPATH='' - CI_WEBPATH=''
+400 -386
View File
@@ -1,386 +1,400 @@
NAME VERSION TYPE NAME VERSION TYPE
@nextcloud/text 28.0.0-dev.1 npm Process Wrapper 1.0.0.0 dotnet (+1 duplicate)
Executes a command and passes the stdio streams of the created process to TCP sockets 1.0.0.0 dotnet activity 3.0.0 npm
activity 2.20.0 npm alpine-baselayout 3.6.5-r0 apk
alpine-baselayout 3.4.3-r1 apk alpine-baselayout-data 3.6.5-r0 apk
alpine-baselayout-data 3.4.3-r1 apk alpine-keys 2.4-r1 apk
alpine-keys 2.4-r1 apk alpine-release 3.20.2-r0 apk
alpine-release 3.18.4-r0 apk alsa-lib 1.2.11-r0 apk
alsa-lib 1.2.9-r1 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.9.0-r0 apk
aom-libs 3.6.1-r0 apk apache2-utils 2.4.62-r0 apk
apache2-utils 2.4.58-r0 apk apk-tools 2.14.4-r0 apk
apk-tools 2.14.0-r2 apk apr 1.7.4-r0 apk
apr 1.7.4-r0 apk apr-util 1.6.3-r1 apk
apr-util 1.6.3-r1 apk argon2-libs 20190702-r5 apk
argon2-libs 20190702-r4 apk aws/aws-crt-php v1.2.5 php-composer
avahi-libs 0.8-r13 apk aws/aws-sdk-php 3.311.2 php-composer
aws/aws-crt-php v1.0.2 php-composer bantu/ini-get-wrapper v1.0.1 php-composer
aws/aws-sdk-php 3.240.8 php-composer bash 5.2.26-r0 apk
bantu/ini-get-wrapper v1.0.1 php-composer brick/math 0.12.1 php-composer
bash 5.2.15-r5 apk brotli-libs 1.1.0-r2 apk
beberlei/assert v3.3.1 php-composer bruteforcesettings 3.0.0 npm
brick/math 0.9.2 php-composer busybox 1.36.1-r29 apk
brotli-libs 1.0.9-r14 apk busybox-binsh 1.36.1-r29 apk
bruteforcesettings 2.8.0 npm c-ares 1.28.1-r0 apk
busybox 1.36.1-r4 apk c-client 2007f-r15 apk
busybox-binsh 1.36.1-r4 apk ca-certificates 20240705-r0 apk
c-client 2007f-r15 apk ca-certificates-bundle 20240705-r0 apk
ca-certificates 20230506-r0 apk catatonit 0.2.0-r0 apk
ca-certificates-bundle 20230506-r0 apk christian-riesen/base32 1.6.0 php-composer
cairo 1.17.8-r1 apk cjson 1.7.18-r0 apk
cairo-gobject 1.17.8-r1 apk composer 2.7.7 binary
christian-riesen/base32 1.6.0 php-composer coreutils 9.5-r1 apk
cjson 1.7.15-r4 apk coreutils-env 9.5-r1 apk
coreutils 9.3-r1 apk coreutils-fmt 9.5-r1 apk
cups-libs 2.4.7-r0 apk coreutils-sha512sum 9.5-r1 apk
curl 8.4.0-r0 apk curl 8.9.0-r0 apk
cweagans/composer-patches 1.7.3 php-composer cweagans/composer-patches 1.7.3 php-composer
darsyn/ip 4.1.0 php-composer dbus-libs 1.14.10-r1 apk
dbus-libs 1.14.8-r0 apk deepdiver/zipstreamer v2.0.3 php-composer
deepdiver/zipstreamer 2.0.0 php-composer deepdiver1975/tarstreamer v2.1.0 php-composer
deepdiver1975/tarstreamer v2.1.0 php-composer doctrine/cache 2.2.0 php-composer
doctrine/cache 2.2.0 php-composer doctrine/dbal 3.8.3 php-composer
doctrine/dbal 3.7.0 php-composer doctrine/deprecations 1.1.3 php-composer
doctrine/deprecations 1.1.2 php-composer doctrine/event-manager 1.2.0 php-composer
doctrine/event-manager 1.2.0 php-composer doctrine/lexer 3.0.1 php-composer
doctrine/lexer 1.2.3 php-composer egulias/email-validator 4.0.2 php-composer
egulias/email-validator 3.2.5 php-composer ffmpeg 6.1.1-r8 apk
ffmpeg 6.0-r15 apk ffmpeg-libavcodec 6.1.1-r8 apk
ffmpeg-libavcodec 6.0-r15 apk ffmpeg-libavdevice 6.1.1-r8 apk
ffmpeg-libavdevice 6.0-r15 apk ffmpeg-libavfilter 6.1.1-r8 apk
ffmpeg-libavfilter 6.0-r15 apk ffmpeg-libavformat 6.1.1-r8 apk
ffmpeg-libavformat 6.0-r15 apk ffmpeg-libavutil 6.1.1-r8 apk
ffmpeg-libavutil 6.0-r15 apk ffmpeg-libpostproc 6.1.1-r8 apk
ffmpeg-libpostproc 6.0-r15 apk ffmpeg-libswresample 6.1.1-r8 apk
ffmpeg-libswresample 6.0-r15 apk ffmpeg-libswscale 6.1.1-r8 apk
ffmpeg-libswscale 6.0-r15 apk fftw-double-libs 3.3.10-r5 apk
fgrosse/phpasn1 v2.3.0 php-composer files_downloadlimit 3.0.0 npm
files_pdfviewer 2.9.0 npm files_pdfviewer 3.0.0 npm
firstrunwizard 2.17.0 npm findutils 4.9.0-r5 apk
flac-libs 1.4.3-r0 apk firstrunwizard 3.0.0 npm
fontconfig 2.14.2-r3 apk fontconfig 2.15.0-r1 apk
freetype 2.13.0-r5 apk freetype 2.13.2-r0 apk
fribidi 1.0.13-r0 apk fribidi 1.0.15-r0 apk
fusonic/linq v1.1.0 php-composer fusonic/opengraph v2.3.0 php-composer
fusonic/opengraph v2.2.0 php-composer gdbm 1.23-r1 apk
gdbm 1.23-r1 apk giflib 5.2.2-r0 apk
gdk-pixbuf 2.42.10-r5 apk giggsey/libphonenumber-for-php-lite 8.13.35 php-composer
ghostscript 10.01.2-r0 apk git 2.45.2-r0 apk
giggsey/libphonenumber-for-php-lite 8.13.12 php-composer git-init-template 2.45.2-r0 apk
git 2.40.1-r0 apk glib 2.80.2-r0 apk
glib 2.76.4-r0 apk glslang-libs 1.3.261.1-r0 apk
glslang-libs 1.3.243.0-r1 apk gmp 6.3.0-r1 apk
gmp 6.2.1-r3 apk gnu-libiconv 1.17-r2 apk
gnu-libiconv 1.17-r1 apk gnu-libiconv-libs 1.17-r2 apk
gnu-libiconv-libs 1.17-r1 apk gnutls 3.8.5-r0 apk
gnutls 3.8.0-r2 apk graphite2 1.3.14-r6 apk
graphite2 1.3.14-r5 apk guzzlehttp/guzzle 7.8.1 php-composer
guzzlehttp/guzzle 7.5.0 php-composer guzzlehttp/promises 2.0.2 php-composer
guzzlehttp/promises 1.5.2 php-composer guzzlehttp/psr7 2.6.2 php-composer
guzzlehttp/psr7 2.4.5 php-composer guzzlehttp/uri-template v1.0.3 php-composer
guzzlehttp/uri-template v0.2.0 php-composer harfbuzz 8.5.0-r0 apk
harfbuzz 7.3.0-r0 apk hexogen/kdtree v0.2.5 php-composer
hexogen/kdtree v0.2.5 php-composer hwdata-pci 0.382-r0 apk
hwdata-pci 0.370-r0 apk icewind/searchdav v3.1.0 php-composer
icewind/searchdav v3.0.1 php-composer icewind/smb v3.5.4 php-composer
icewind/smb v3.5.4 php-composer icewind/streams v0.7.7 php-composer (+1 duplicate)
icewind/streams v0.7.7 php-composer icu-data-en 74.2-r0 apk
icu-data-en 73.2-r2 apk icu-libs 74.2-r0 apk
icu-libs 73.2-r2 apk imagemagick 7.1.1.32-r2 apk
imagemagick 7.1.1.13-r0 apk imagemagick-jpeg 7.1.1.32-r2 apk
imagemagick-libs 7.1.1.13-r0 apk imagemagick-jxl 7.1.1.32-r2 apk
jansson 2.14-r3 apk imagemagick-libs 7.1.1.32-r2 apk
jbig2dec 0.19-r3 apk imagemagick-webp 7.1.1.32-r2 apk
jq 1.6-r3 apk imath 3.1.11-r2 apk
justinrainbow/json-schema 5.2.10 php-composer jansson 2.14-r4 apk
lame-libs 3.100-r5 apk jq 1.7.1-r0 apk
laravel/serializable-closure v1.2.2 php-composer justinrainbow/json-schema v5.2.13 php-composer
lcms2 2.15-r2 apk kornrunner/blurhash v1.2.2 php-composer
ldb 2.7.2-r1 apk lame-libs 3.100-r5 apk
league/flysystem 2.5.0 php-composer laravel/serializable-closure v1.3.3 php-composer
league/mime-type-detection 1.11.0 php-composer lcms2 2.16-r0 apk
league/uri 6.4.0 php-composer lcobucci/clock 3.0.0 php-composer
league/uri-interfaces 2.2.0 php-composer ldb 2.8.0-r1 apk
libacl 2.3.1-r3 apk league/flysystem 2.5.0 php-composer
libarchive 3.7.2-r0 apk league/mime-type-detection 1.11.0 php-composer
libass 0.17.1-r0 apk libSvtAv1Enc 2.0.0-r1 apk
libasyncns 0.8-r1 apk libacl 2.3.2-r0 apk
libattr 2.5.1-r4 apk libarchive 3.7.4-r0 apk
libavif 0.11.1-r2 apk libass 0.17.2-r0 apk
libblkid 2.38.1-r8 apk libasyncns 0.8-r3 apk
libbluray 1.3.4-r0 apk libattr 2.5.2-r0 apk
libbsd 0.11.7-r1 apk libauth-samba 4.19.6-r0 apk
libbz2 1.0.8-r5 apk libavif 1.0.4-r0 apk
libc-utils 0.7.2-r5 apk libblkid 2.40.1-r1 apk
libcap2 2.69-r0 apk libbluray 1.3.4-r1 apk
libcrypto3 3.1.4-r0 apk libbsd 0.12.2-r0 apk
libcurl 8.4.0-r0 apk libbz2 1.0.8-r6 apk
libdav1d 1.2.1-r0 apk libcap2 2.70-r0 apk
libde265 1.0.12-r0 apk libcrypto3 3.3.1-r3 apk
libdrm 2.4.115-r4 apk libcurl 8.9.0-r0 apk
libedit 20221030.3.1-r1 apk libdav1d 1.4.2-r0 apk
libevent 2.1.12-r6 apk libdovi 3.3.0-r0 apk
libexpat 2.5.0-r1 apk libdrm 2.4.120-r0 apk
libffi 3.4.4-r2 apk libeconf 0.6.3-r0 apk
libformw 6.4_p20230506-r0 apk libedit 20240517.3.1-r0 apk
libgcc 12.2.1_git20220924-r10 apk libevent 2.1.12-r7 apk
libgomp 12.2.1_git20220924-r10 apk libexpat 2.6.2-r0 apk
libheif 1.16.2-r0 apk libffi 3.4.6-r0 apk
libhwy 1.0.4-r1 apk libflac 1.4.3-r1 apk
libice 1.1.1-r2 apk libformw 6.4_p20240420-r0 apk
libidn2 2.3.4-r1 apk libgcc 13.2.1_git20240309-r0 apk
libintl 0.21.1-r7 apk libgomp 13.2.1_git20240309-r0 apk
libjpeg-turbo 2.1.5.1-r3 apk libhwy 1.0.7-r0 apk
libjxl 0.8.2-r0 apk libice 1.1.1-r6 apk
libldap 2.6.5-r0 apk libidn2 2.3.7-r0 apk
libltdl 2.4.7-r2 apk libintl 0.22.5-r0 apk
libmcrypt 2.5.8-r10 apk libjpeg-turbo 3.0.3-r0 apk
libmd 1.0.4-r2 apk libjxl 0.10.2-r0 apk
libmemcached-libs 1.1.4-r1 apk libldap 2.6.7-r0 apk
libmount 2.38.1-r8 apk libltdl 2.4.7-r3 apk
libncursesw 6.4_p20230506-r0 apk libmcrypt 2.5.8-r10 apk
libogg 1.3.5-r4 apk libmd 1.1.0-r0 apk
libopenmpt 0.7.2-r0 apk libmemcached-libs 1.1.4-r1 apk
libpanelw 6.4_p20230506-r0 apk libmount 2.40.1-r1 apk
libpciaccess 0.17-r2 apk libncursesw 6.4_p20240420-r0 apk
libplacebo 5.264.1-r1 apk libogg 1.3.5-r5 apk
libpng 1.6.39-r3 apk libopenmpt 0.7.7-r0 apk
libpq 15.4-r0 apk libpanelw 6.4_p20240420-r0 apk
libproc2 4.0.4-r0 apk libpciaccess 0.18.1-r0 apk
libpulse 16.1-r10 apk libplacebo 6.338.2-r1 apk
libraw 0.21.1-r1 apk libpng 1.6.43-r0 apk
librist 0.2.7-r0 apk libpq 16.3-r0 apk
librsvg 2.56.3-r0 apk libproc2 4.0.4-r0 apk
libsasl 2.1.28-r4 apk libpsl 0.21.5-r1 apk
libsm 1.2.4-r1 apk libpulse 17.0-r0 apk
libsmbclient 4.18.8-r0 apk librist 0.2.10-r1 apk
libsndfile 1.2.0-r2 apk libsasl 2.1.28-r6 apk
libsodium 1.0.18-r3 apk libsharpyuv 1.3.2-r0 apk
libsrt 1.5.2-r0 apk libsm 1.2.4-r4 apk
libssh 0.10.5-r0 apk libsmbclient 4.19.6-r0 apk
libssl3 3.1.4-r0 apk libsndfile 1.2.2-r0 apk
libstdc++ 12.2.1_git20220924-r10 apk libsodium 1.0.19-r0 apk
libtasn1 4.19.0-r1 apk libsrt 1.5.3-r0 apk
libtheora 1.1.1-r17 apk libssh 0.10.6-r0 apk
libunibreak 5.1-r0 apk libssl3 3.3.1-r3 apk
libunistring 1.1-r1 apk libstdc++ 13.2.1_git20240309-r0 apk
libuuid 2.38.1-r8 apk libtasn1 4.19.0-r2 apk
libva 2.18.0-r1 apk libtheora 1.1.1-r18 apk
libvdpau 1.5-r1 apk libunibreak 6.1-r0 apk
libvorbis 1.3.7-r1 apk libunistring 1.2-r0 apk
libvpx 1.13.0-r2 apk libuuid 2.40.1-r1 apk
libwbclient 4.18.8-r0 apk libva 2.21.0-r0 apk
libwebp 1.3.2-r0 apk libvdpau 1.5-r3 apk
libx11 1.8.7-r0 apk libvorbis 1.3.7-r2 apk
libxau 1.0.11-r2 apk libvpx 1.14.1-r0 apk
libxcb 1.15-r1 apk libwbclient 4.19.6-r0 apk
libxdmcp 1.1.4-r2 apk libwebp 1.3.2-r0 apk
libxext 1.3.5-r2 apk libwebpdemux 1.3.2-r0 apk
libxfixes 6.0.1-r2 apk libwebpmux 1.3.2-r0 apk
libxft 2.3.8-r1 apk libx11 1.8.9-r1 apk
libxml2 2.11.4-r0 apk libxau 1.0.11-r4 apk
libxpm 3.5.16-r1 apk libxcb 1.16.1-r0 apk
libxrender 0.9.11-r3 apk libxdmcp 1.1.5-r1 apk
libxt 1.3.0-r2 apk libxext 1.3.6-r2 apk
libxxhash 0.8.2-r0 apk libxfixes 6.0.1-r4 apk
libzip 1.9.2-r2 apk libxml2 2.12.7-r0 apk
libzmq 4.3.4-r4 apk libxpm 3.5.17-r0 apk
linux-pam 1.5.2-r10 apk libxt 1.3.0-r5 apk
lmdb 0.9.31-r0 apk libxxhash 0.8.2-r2 apk
logrotate 3.21.0-r1 apk libzip 1.10.1-r0 apk
lz4-libs 1.9.4-r4 apk libzmq 4.3.5-r2 apk
mbedtls 2.28.5-r0 apk lilv-libs 0.24.24-r1 apk
mexitek/phpcolors v1.0.4 php-composer linux-pam 1.6.0-r0 apk
microsoft/azure-storage-blob 1.5.4 php-composer lmdb 0.9.32-r0 apk
microsoft/azure-storage-common 1.5.2 php-composer logreader 3.0.0 npm
mlocati/ip-lib 1.18.0 php-composer logrotate 3.21.0-r1 apk
mpg123-libs 1.31.3-r1 apk lz4-libs 1.9.4-r5 apk
mtdowling/jmespath.php 2.6.1 php-composer masterminds/html5 2.9.0 php-composer
musl 1.2.4-r2 apk mbedtls 3.6.0-r0 apk
musl-utils 1.2.4-r2 apk mexitek/phpcolors v1.0.4 php-composer
nano 7.2-r1 apk microsoft/azure-storage-blob 1.5.4 php-composer
ncurses-terminfo-base 6.4_p20230506-r0 apk microsoft/azure-storage-common 1.5.2 php-composer
netcat-openbsd 1.219-r1 apk mlocati/ip-lib 1.18.0 php-composer
nettle 3.8.1-r2 apk mpg123-libs 1.32.6-r0 apk
nextcloud 1.0.0 npm mtdowling/jmespath.php 2.7.0 php-composer
nextcloud/lognormalizer v1.0.0 php-composer musl 1.2.5-r0 apk
nghttp2-libs 1.57.0-r0 apk musl-utils 1.2.5-r0 apk
nginx 1.24.0-r7 apk nano 8.0-r0 apk
notifications 2.16.0 npm ncurses-terminfo-base 6.4_p20240420-r0 apk
numactl 2.0.16-r4 apk netcat-openbsd 1.226-r0 apk
onevpl-libs 2023.2.1-r0 apk nettle 3.9.1-r0 apk
oniguruma 6.9.8-r1 apk nextcloud 1.0.0 npm
openssl 3.1.4-r0 apk nextcloud/lognormalizer v1.0.0 php-composer
opus 1.4-r0 apk nghttp2-libs 1.62.1-r0 apk
orc 0.4.34-r0 apk nginx 1.26.1-r0 apk
p11-kit 0.24.1-r2 apk notifications 3.0.0 npm
pango 1.50.14-r1 apk numactl 2.0.18-r0 apk
password_policy 1.18.0 npm onevpl-libs 2023.3.1-r2 apk
pcre 8.45-r3 apk oniguruma 6.9.9-r0 apk
pcre2 10.42-r1 apk openexr-libiex 3.1.13-r1 apk
pear/archive_tar 1.4.14 php-composer openexr-libilmthread 3.1.13-r1 apk
pear/console_getopt v1.4.3 php-composer openexr-libopenexr 3.1.13-r1 apk
pear/pear-core-minimal v1.10.10 php-composer openssl 3.3.1-r3 apk
pear/pear_exception v1.0.2 php-composer opus 1.5.2-r0 apk
photos 2.4.0 npm orc 0.4.37-r0 apk
php-http/guzzle7-adapter 1.0.0 php-composer p11-kit 0.25.3-r0 apk
php-http/httplug 2.2.0 php-composer paragonie/constant_time_encoding v2.6.3 php-composer
php-http/promise 1.1.0 php-composer password_policy 2.0.0 npm
php-opencloud/openstack v3.2.1 php-composer pcre 8.45-r3 apk
php82 8.2.10-r0 apk pcre2 10.43-r0 apk
php82-bcmath 8.2.10-r0 apk pear/archive_tar 1.5.0 php-composer
php82-bz2 8.2.10-r0 apk pear/console_getopt v1.4.3 php-composer
php82-common 8.2.10-r0 apk pear/pear-core-minimal v1.10.15 php-composer
php82-ctype 8.2.10-r0 apk pear/pear_exception v1.0.2 php-composer
php82-curl 8.2.10-r0 apk photos 3.0.0 npm
php82-dom 8.2.10-r0 apk php-http/guzzle7-adapter 1.0.0 php-composer
php82-exif 8.2.10-r0 apk php-http/httplug 2.2.0 php-composer
php82-fileinfo 8.2.10-r0 apk php-http/promise 1.1.0 php-composer
php82-fpm 8.2.10-r0 apk php-opencloud/openstack v3.10.0 php-composer
php82-ftp 8.2.10-r0 apk php83 8.3.9-r0 apk
php82-gd 8.2.10-r0 apk php83-bcmath 8.3.9-r0 apk
php82-gmp 8.2.10-r0 apk php83-bz2 8.3.9-r0 apk
php82-iconv 8.2.10-r0 apk php83-common 8.3.9-r0 apk
php82-imap 8.2.10-r0 apk php83-ctype 8.3.9-r0 apk
php82-intl 8.2.10-r0 apk php83-curl 8.3.9-r0 apk
php82-ldap 8.2.10-r0 apk php83-dom 8.3.9-r0 apk
php82-mbstring 8.2.10-r0 apk php83-exif 8.3.9-r0 apk
php82-mysqlnd 8.2.10-r0 apk php83-fileinfo 8.3.9-r0 apk
php82-opcache 8.2.10-r0 apk php83-fpm 8.3.9-r0 apk
php82-openssl 8.2.10-r0 apk php83-ftp 8.3.9-r0 apk
php82-pcntl 8.2.10-r0 apk php83-gd 8.3.9-r0 apk
php82-pdo 8.2.10-r0 apk php83-gmp 8.3.9-r0 apk
php82-pdo_mysql 8.2.10-r0 apk php83-iconv 8.3.9-r0 apk
php82-pdo_pgsql 8.2.10-r0 apk php83-imap 8.3.9-r0 apk
php82-pdo_sqlite 8.2.10-r0 apk php83-intl 8.3.9-r0 apk
php82-pecl-apcu 5.1.22-r0 apk php83-ldap 8.3.9-r0 apk
php82-pecl-igbinary 3.2.14-r0 apk php83-mbstring 8.3.9-r0 apk
php82-pecl-imagick 3.7.0-r5 apk php83-mysqlnd 8.3.9-r0 apk
php82-pecl-mcrypt 1.0.6-r0 apk php83-opcache 8.3.9-r0 apk
php82-pecl-memcached 3.2.0-r1 apk php83-openssl 8.3.9-r0 apk
php82-pecl-msgpack 2.2.0-r0 apk php83-pcntl 8.3.9-r0 apk
php82-pecl-redis 6.0.2-r0 apk php83-pdo 8.3.9-r0 apk
php82-pecl-smbclient 1.1.1-r0 apk php83-pdo_mysql 8.3.9-r0 apk
php82-pgsql 8.2.10-r0 apk php83-pdo_pgsql 8.3.9-r0 apk
php82-phar 8.2.10-r0 apk php83-pdo_sqlite 8.3.9-r0 apk
php82-posix 8.2.10-r0 apk php83-pecl-apcu 5.1.23-r0 apk
php82-session 8.2.10-r0 apk php83-pecl-igbinary 3.2.15-r0 apk
php82-simplexml 8.2.10-r0 apk php83-pecl-imagick 3.7.0-r0 apk
php82-sockets 8.2.10-r0 apk php83-pecl-mcrypt 1.0.7-r0 apk
php82-sodium 8.2.10-r0 apk php83-pecl-memcached 3.2.0-r0 apk
php82-sqlite3 8.2.10-r0 apk php83-pecl-msgpack 2.2.0-r2 apk
php82-sysvsem 8.2.10-r0 apk php83-pecl-redis 6.0.2-r0 apk
php82-xml 8.2.10-r0 apk php83-pecl-smbclient 1.1.1-r0 apk
php82-xmlreader 8.2.10-r0 apk php83-pgsql 8.3.9-r0 apk
php82-xmlwriter 8.2.10-r0 apk php83-phar 8.3.9-r0 apk
php82-zip 8.2.10-r0 apk php83-posix 8.3.9-r0 apk
phpseclib/phpseclib 2.0.45 php-composer php83-session 8.3.9-r0 apk
pimple/pimple v3.5.0 php-composer php83-simplexml 8.3.9-r0 apk
pixman 0.42.2-r1 apk php83-sockets 8.3.9-r0 apk
pkgconf 1.9.5-r0 apk php83-sodium 8.3.9-r0 apk
popt 1.19-r2 apk php83-sqlite3 8.3.9-r0 apk
privacy 1.12.0 npm php83-sysvsem 8.3.9-r0 apk
procps-ng 4.0.4-r0 apk php83-xml 8.3.9-r0 apk
psr/cache 3.0.0 php-composer php83-xmlreader 8.3.9-r0 apk
psr/clock 1.0.0 php-composer php83-xmlwriter 8.3.9-r0 apk
psr/container 2.0.2 php-composer php83-zip 8.3.9-r0 apk
psr/event-dispatcher 1.0.0 php-composer phpseclib/phpseclib 2.0.47 php-composer
psr/http-client 1.0.1 php-composer pimple/pimple v3.5.0 php-composer
psr/http-factory 1.0.1 php-composer popt 1.19-r3 apk
psr/http-message 1.0.1 php-composer privacy 2.0.0 npm
psr/log 1.1.4 php-composer procps-ng 4.0.4-r0 apk
punic/punic 3.8.1 php-composer psr/cache 3.0.0 php-composer
ralouphie/getallheaders 3.0.3 php-composer psr/clock 1.0.0 php-composer
ramsey/collection 1.1.3 php-composer psr/container 2.0.2 php-composer
ramsey/uuid 4.1.1 php-composer psr/event-dispatcher 1.0.0 php-composer
readline 8.2.1-r1 apk psr/http-client 1.0.3 php-composer
recommendations 2.0.0 npm psr/http-factory 1.1.0 php-composer
related_resources 1.3.0 npm psr/http-message 1.1 php-composer
rsync 3.2.7-r4 apk psr/log 1.1.4 php-composer
rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer psr/log 2.0.0 php-composer
rubix/tensor 2.2.3 php-composer punic/punic 3.8.1 php-composer
rullzer/easytotp v0.1.4 php-composer ralouphie/getallheaders 3.0.3 php-composer
sabre/dav 4.4.0 php-composer rav1e-libs 0.7.1-r0 apk
sabre/event 5.1.4 php-composer readline 8.2.10-r0 apk
sabre/http 5.1.7 php-composer recommendations 3.0.0 npm
sabre/uri 2.3.3 php-composer related_resources 1.5.0 npm
sabre/vobject 4.5.3 php-composer rsync 3.3.0-r0 apk
sabre/xml 2.2.6 php-composer rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer
samba-client 4.18.8-r0 apk rubix/tensor 2.2.3 php-composer
samba-client-libs 4.18.8-r0 apk rullzer/easytotp v0.1.4 php-composer
samba-common 4.18.8-r0 apk sabre/dav 4.6.0 php-composer
samba-libs 4.18.8-r0 apk sabre/event 5.1.4 php-composer
samba-util-libs 4.18.8-r0 apk sabre/http 5.1.10 php-composer
scanelf 1.3.7-r1 apk sabre/uri 2.3.3 php-composer
scssphp/scssphp v1.11.0 php-composer sabre/vobject 4.5.4 php-composer
sdl2 2.26.5-r0 apk sabre/xml 2.2.7 php-composer
shaderc 2023.3-r1 apk samba-client 4.19.6-r0 apk
shadow 4.13-r4 apk samba-client-libs 4.19.6-r0 apk
shared-mime-info 2.2-r5 apk samba-common 4.19.6-r0 apk
skalibs 2.13.1.1-r1 apk samba-libs 4.19.6-r0 apk
soxr 0.1.3-r5 apk samba-util-libs 4.19.6-r0 apk
speexdsp 1.2.1-r1 apk scanelf 1.3.7-r2 apk
spirv-tools 1.3.243.0-r1 apk scssphp/scssphp v1.12.1 php-composer
spomky-labs/base64url v2.0.4 php-composer sdl2 2.28.5-r1 apk
spomky-labs/cbor-php v2.0.1 php-composer serd-libs 0.32.2-r0 apk
sqlite-libs 3.41.2-r2 apk shaderc 2024.0-r0 apk
ssl_client 1.36.1-r4 apk shadow 4.15.1-r0 apk
stecman/symfony-console-completion 0.11.0 php-composer skalibs 2.14.1.1-r0 apk
sudo 1.9.13_p3-r2 apk sord-libs 0.16.16-r0 apk
suspicious_login 6.0.0-dev npm soxr 0.1.3-r7 apk
svt-av1-libs 1.6.0-r0 apk speexdsp 1.2.1-r2 apk
symfony/console v5.4.24 php-composer spirv-tools 1.3.261.1-r0 apk
symfony/css-selector v5.4.11 php-composer spomky-labs/cbor-php 3.0.4 php-composer
symfony/deprecation-contracts v3.0.2 php-composer spomky-labs/pki-framework 1.2.1 php-composer
symfony/dom-crawler v5.4.11 php-composer sqlite-libs 3.45.3-r1 apk
symfony/event-dispatcher v5.4.26 php-composer sratom 0.6.16-r0 apk
symfony/event-dispatcher-contracts v3.0.2 php-composer ssl_client 1.36.1-r29 apk
symfony/http-foundation v5.4.25 php-composer stecman/symfony-console-completion 0.11.0 php-composer
symfony/mailer v5.4.22 php-composer sudo 1.9.15_p5-r0 apk
symfony/mime v5.4.19 php-composer support 2.0.0 npm
symfony/polyfill-ctype v1.23.0 php-composer suspicious_login 8.0.0 npm
symfony/polyfill-intl-grapheme v1.23.1 php-composer symfony/console v5.4.35 php-composer
symfony/polyfill-intl-idn v1.27.0 php-composer symfony/css-selector v6.4.3 php-composer
symfony/polyfill-intl-normalizer v1.27.0 php-composer symfony/deprecation-contracts v3.5.0 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer symfony/dom-crawler v6.4.4 php-composer
symfony/polyfill-php72 v1.27.0 php-composer symfony/event-dispatcher v5.4.26 php-composer
symfony/polyfill-php73 v1.23.0 php-composer symfony/event-dispatcher-contracts v3.0.2 php-composer
symfony/polyfill-php73 v1.26.0 php-composer symfony/http-foundation v5.4.25 php-composer
symfony/polyfill-php80 v1.27.0 php-composer symfony/mailer v5.4.22 php-composer
symfony/process v5.4.24 php-composer symfony/mime v5.4.19 php-composer
symfony/routing v5.4.25 php-composer symfony/polyfill-ctype v1.29.0 php-composer
symfony/service-contracts v3.0.2 php-composer symfony/polyfill-intl-grapheme v1.29.0 php-composer
symfony/string v6.0.19 php-composer symfony/polyfill-intl-idn v1.29.0 php-composer
symfony/translation v5.4.24 php-composer symfony/polyfill-intl-normalizer v1.29.0 php-composer
symfony/translation-contracts v2.4.0 php-composer symfony/polyfill-mbstring v1.27.0 php-composer
talloc 2.4.0-r1 apk symfony/polyfill-mbstring v1.29.0 php-composer
tdb-libs 1.4.8-r1 apk symfony/polyfill-php72 v1.29.0 php-composer
tevent 0.14.1-r1 apk symfony/polyfill-php73 v1.26.0 php-composer
thecodingmachine/safe v1.3.3 php-composer symfony/polyfill-php73 v1.28.0 php-composer
tiff 4.5.1-r0 apk symfony/polyfill-php80 v1.27.0 php-composer
twofactor_totp 10.0.0-beta2 npm symfony/polyfill-php80 v1.29.0 php-composer
tzdata 2023c-r1 apk symfony/polyfill-uuid v1.29.0 php-composer
utmps-libs 0.1.2.1-r1 apk symfony/process v5.4.34 php-composer
v4l-utils-libs 1.24.1-r0 apk symfony/routing v5.4.25 php-composer
vidstab 1.1.1-r0 apk symfony/service-contracts v3.0.2 php-composer
viewer 2.2.0 npm symfony/string v6.0.19 php-composer
vulkan-loader 1.3.243.0-r1 apk symfony/translation v6.4.4 php-composer
wapmorgan/mp3info 0.1.0 php-composer symfony/translation-contracts v3.4.2 php-composer
wayland-libs-client 1.22.0-r2 apk symfony/uid v6.4.3 php-composer
web-auth/cose-lib v3.3.9 php-composer talloc 2.4.2-r1 apk
web-auth/metadata-service v3.3.9 php-composer tdb-libs 1.4.9-r1 apk
web-auth/webauthn-lib v3.3.9 php-composer tevent 0.16.1-r0 apk
x264-libs 0.164_git20220602-r1 apk text 4.0.0 npm
x265-libs 3.5-r4 apk twofactor_totp 12.0.0-dev npm
xvidcore 1.3.7-r1 apk tzdata 2024a-r1 apk
xz-libs 5.4.3-r0 apk utmps-libs 0.1.2.2-r1 apk
zimg 3.0.5-r0 apk v4l-utils-libs 1.24.1-r1 apk
zlib 1.2.13-r1 apk vidstab 1.1.1-r0 apk
zstd-libs 1.5.5-r4 apk viewer 3.0.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 4.3.0 php-composer
web-auth/metadata-service 4.8.5 php-composer
web-auth/webauthn-lib 4.8.5 php-composer
x264-libs 0.164_git20231001-r0 apk
x265-libs 3.6-r0 apk
xvidcore 1.3.7-r2 apk
xz-libs 5.6.1-r3 apk
zimg 3.0.5-r2 apk
zix-libs 0.4.2-r0 apk
zlib 1.3.1-r1 apk
zstd-libs 1.5.6-r0 apk
+5 -16
View File
@@ -9,7 +9,6 @@ project_blurb: |
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. 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.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_blurb_optional_extras_enabled: false
# supported architectures # supported architectures
available_architectures: available_architectures:
@@ -25,27 +24,13 @@ development_versions_items:
# container parameters # container parameters
common_param_env_vars_enabled: true common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_net: false
param_usage_include_env: true
param_env_vars:
- { 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:
- { external_port: "443", internal_port: "443", port_desc: "WebUI" } - { external_port: "443", internal_port: "443", port_desc: "WebUI" }
param_device_map: false
cap_add_param: false
# optional container parameters
opt_param_usage_include_env: false
opt_param_usage_include_vols: false
opt_param_usage_include_ports: false
opt_param_device_map: false
opt_cap_add_param: false
optional_block_1: false
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
@@ -79,6 +64,10 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "24.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- { 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/06/24 - 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 {
@@ -7,11 +7,8 @@ map $arg_v $asset_immutable {
} }
server { server {
listen 80 default_server; listen *:80 default_server;
listen [::]:80 default_server; listen *:443 ssl default_server;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _; server_name _;
@@ -36,25 +33,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 +62,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 +109,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 +130,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 +139,7 @@ server {
location ~ \.wasm$ { location ~ \.wasm$ {
default_type application/wasm; default_type application/wasm;
} }
} }
location ~ \.woff2?$ { location ~ \.woff2?$ {
+2
View File
@@ -0,0 +1,2 @@
# min hour day month weekday command
*/5 * * * * /usr/bin/php /app/www/public/cron.php 2>&1
-9
View File
@@ -1,9 +0,0 @@
# do daily/weekly/monthly maintenance
# min hour day month weekday command
*/15 * * * * run-parts /etc/periodic/15min
0 * * * * run-parts /etc/periodic/hourly
0 2 * * * run-parts /etc/periodic/daily
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
# nextcloud cron
*/5 * * * * s6-setuidgid abc php -f /app/www/public/cron.php
@@ -1,23 +0,0 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# make folders
mkdir -p \
/config/crontabs
## root
# if crontabs do not exist in config
if [[ ! -f /config/crontabs/root ]]; then
# copy crontab from system
if crontab -l -u root; then
crontab -l -u root >/config/crontabs/root
fi
# if crontabs still do not exist in config (were not copied from system)
# copy crontab from included defaults (using -n, do not overwrite an existing file)
cp -n /etc/crontabs/root /config/crontabs/
fi
sed -i "s|s6-setuidgid abc php[0-9]* -f /config/www/nextcloud/cron.php|s6-setuidgid abc php -f /app/www/public/cron.php|" /config/crontabs/root
# set permissions and import user crontabs
lsiown root:root /config/crontabs/root
crontab -u root /config/crontabs/root
@@ -1 +0,0 @@
oneshot
@@ -1 +0,0 @@
/etc/s6-overlay/s6-rc.d/init-crontabs-config/run
@@ -21,7 +21,6 @@ if [ -f /config/www/nextcloud/version.php ]; then
! -path "/config/www/nextcloud/config" \ ! -path "/config/www/nextcloud/config" \
! -path "/config/www/nextcloud/themes" \ ! -path "/config/www/nextcloud/themes" \
-delete -delete
sed -i "s|/config/www/nextcloud/cron.php|/app/www/public/cron.php|g" /config/crontabs/root
touch /config/www/nextcloud/config/needs_migration touch /config/www/nextcloud/config/needs_migration
fi fi
@@ -169,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