Compare commits

...

90 Commits

Author SHA1 Message Date
Eric Nemchik 5432119b35 Move dotfile denial up
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2026-05-05 16:53:27 -05:00
Eric Nemchik 93a31b92d8 Remove duplicate configuration for '.well-known' directory 2026-05-04 15:52:09 -05:00
Eric Nemchik 1f4892f00d Update default.conf.sample to deny dotfile access
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2026-02-08 10:27:40 -06:00
LinuxServer-CI eed6caef67 Bot Updating Package Versions 2026-02-05 21:03:40 +00:00
LinuxServer-CI abf0cf271a Bot Updating Package Versions 2026-01-29 20:55:04 +00:00
LinuxServer-CI 0bfcb8d5a9 Bot Updating Package Versions 2026-01-27 11:57:26 +00:00
LinuxServer-CI fc68f42dc8 Bot Updating Package Versions 2026-01-22 09:57:15 +00:00
LinuxServer-CI 7c5766132f Bot Updating Package Versions 2026-01-13 16:58:49 +00:00
LinuxServer-CI 2dff9adc63 Bot Updating Package Versions 2026-01-13 09:51:20 +00:00
LinuxServer-CI 9393b12c8d Bot Updating Package Versions 2026-01-08 16:57:09 +00:00
LinuxServer-CI fa16614e69 Bot Updating Package Versions 2026-01-06 16:56:33 +00:00
LinuxServer-CI 77ed092e05 Bot Updating Package Versions 2026-01-06 11:52:52 +00:00
LinuxServer-CI ea5f835680 Bot Updating Package Versions 2025-12-23 11:52:15 +00:00
LinuxServer-CI effecf18e4 Bot Updating Package Versions 2025-12-16 11:53:03 +00:00
LinuxServer-CI 88106f48fc Bot Updating Package Versions 2025-12-09 11:51:52 +00:00
LinuxServer-CI 77d1a35de7 Bot Updating Package Versions 2025-12-02 11:52:04 +00:00
LinuxServer-CI 29db09b85d Bot Updating Package Versions 2025-11-25 11:53:49 +00:00
LinuxServer-CI e6b3f8b1c9 Bot Updating Templated Files 2025-11-25 11:48:42 +00:00
LinuxServer-CI c52ca9defd Bot Updating Package Versions 2025-11-18 11:51:40 +00:00
LinuxServer-CI 6cf2b8971c Bot Updating Package Versions 2025-11-13 18:52:03 +00:00
LinuxServer-CI 73b801ac2c Bot Updating Package Versions 2025-11-11 11:51:52 +00:00
LinuxServer-CI d91ea671e3 Bot Updating Package Versions 2025-10-28 11:51:33 +00:00
LinuxServer-CI 8ca96afc78 Bot Updating Templated Files 2025-10-21 15:37:38 +00:00
LinuxServer-CI 98d7659057 Bot Updating Package Versions 2025-10-21 11:55:07 +00:00
LinuxServer-CI d43ca4efef Bot Updating Templated Files 2025-10-21 11:49:09 +00:00
LinuxServer-CI a3ea6bdcca Bot Updating Package Versions 2025-10-16 17:41:30 +00:00
LinuxServer-CI 82d45b0f04 Bot Updating Package Versions 2025-10-14 11:51:56 +00:00
LinuxServer-CI 7e2fb6e3bd Bot Updating Package Versions 2025-10-07 11:52:06 +00:00
LinuxServer-CI 989b190595 Bot Updating Package Versions 2025-09-30 11:53:01 +00:00
LinuxServer-CI ba1619d05b Bot Updating Package Versions 2025-09-25 13:48:30 +00:00
LinuxServer-CI c559f8ac37 Bot Updating Package Versions 2025-09-23 11:52:34 +00:00
LinuxServer-CI b2b6a72a64 Bot Updating Package Versions 2025-09-11 14:43:15 +00:00
LinuxServer-CI c1095c4c21 Bot Updating Package Versions 2025-09-02 11:52:02 +00:00
Adam 952884138f Merge pull request #521 from linuxserver/develop-version-spaces 2025-08-26 15:56:47 +01:00
thespad 5312dc251b Trim whitespace around version numbers 2025-08-26 13:48:15 +01:00
LinuxServer-CI 44443756a6 Bot Updating Package Versions 2025-08-22 19:36:24 +00:00
LinuxServer-CI b5a46482a3 Bot Updating Package Versions 2025-08-19 16:49:38 +00:00
LinuxServer-CI 7418e904c0 Bot Updating Package Versions 2025-08-19 11:51:55 +00:00
LinuxServer-CI 01903b9114 Bot Updating Package Versions 2025-08-12 11:52:14 +00:00
LinuxServer-CI 765dee0eaa Bot Updating Package Versions 2025-08-07 16:52:55 +00:00
LinuxServer-CI 37e8834977 Bot Updating Package Versions 2025-08-05 11:54:23 +00:00
LinuxServer-CI 34358e63bd Bot Updating Package Versions 2025-07-29 11:53:19 +00:00
LinuxServer-CI 3fd3d15029 Bot Updating Package Versions 2025-07-22 11:53:30 +00:00
LinuxServer-CI e20dd83d42 Bot Updating Package Versions 2025-07-15 08:28:19 +00:00
LinuxServer-CI 8b3054aeba Bot Updating Templated Files 2025-07-15 08:22:31 +00:00
Adam bc6105bb18 Merge pull request #510 from linuxserver/develop-3.22 2025-07-15 09:20:33 +01:00
thespad d2b6d946be Fix || breaking build failures 2025-07-10 19:38:21 +01:00
thespad 5421b5b766 Remove pecl-mcrypt 2025-07-10 17:32:57 +01:00
thespad ca08bf6356 Rebase to 3.22 2025-07-10 17:30:30 +01:00
LinuxServer-CI 946e3eb861 Bot Updating Package Versions 2025-07-03 15:47:44 +00:00
LinuxServer-CI 3a0a93dd24 Bot Updating Templated Files 2025-07-03 15:42:29 +00:00
LinuxServer-CI 9c7e18bb64 Bot Updating Templated Files 2025-07-03 15:40:28 +00:00
LinuxServer-CI 685743eab2 Bot Updating Templated Files 2025-06-10 11:48:52 +00:00
LinuxServer-CI 5ecde0417e Bot Updating Package Versions 2025-06-05 13:08:42 +00:00
LinuxServer-CI 29c502fc44 Bot Updating Package Versions 2025-05-26 23:56:22 +00:00
LinuxServer-CI 39f3c15512 Bot Updating Package Versions 2025-05-20 12:11:21 +00:00
LinuxServer-CI d6677cfc43 Bot Updating Templated Files 2025-05-20 11:48:41 +00:00
LinuxServer-CI 234610d94d Bot Updating Package Versions 2025-05-06 11:51:12 +00:00
LinuxServer-CI e00c11055e Bot Updating Package Versions 2025-04-22 11:53:55 +00:00
LinuxServer-CI ed98e24aa7 Bot Updating Package Versions 2025-04-15 17:41:40 +00:00
LinuxServer-CI 9a4d24cd18 Bot Updating Package Versions 2025-04-15 11:50:23 +00:00
LinuxServer-CI 8d8fda1690 Bot Updating Package Versions 2025-04-08 11:54:47 +00:00
LinuxServer-CI 18f8dd7ff6 Bot Updating Package Versions 2025-04-01 11:51:01 +00:00
LinuxServer-CI 6a16f357e0 Bot Updating Package Versions 2025-03-18 11:50:25 +00:00
LinuxServer-CI f8df570a5a Bot Updating Package Versions 2025-03-11 11:53:40 +00:00
LinuxServer-CI 595bb9bda2 Bot Updating Package Versions 2025-03-04 11:51:20 +00:00
LinuxServer-CI be1766be45 Bot Updating Package Versions 2025-02-25 11:50:59 +00:00
LinuxServer-CI 6ac0a2e866 Bot Updating Package Versions 2025-02-18 11:55:00 +00:00
LinuxServer-CI 4ed3edcf13 Bot Updating Package Versions 2025-02-13 19:51:55 +00:00
LinuxServer-CI f16963c975 Bot Updating Templated Files 2025-02-13 19:44:31 +00:00
Adam 5ebc250035 Merge pull request #492 from linuxserver/develop-3.21 2025-02-13 19:42:45 +00:00
LinuxServer-CI 38db952330 Bot Updating Package Versions 2025-02-13 15:44:40 +00:00
thespad 16844327e3 Fix migration permissions 2025-02-12 21:32:56 +00:00
thespad d3e62cc6d8 Rebase to 3.21 2025-02-12 21:20:46 +00:00
LinuxServer-CI 80f58400e5 Bot Updating Package Versions 2025-02-11 11:53:36 +00:00
LinuxServer-CI dff19a091c Bot Updating Templated Files 2025-02-11 11:48:30 +00:00
LinuxServer-CI 9755c51367 Bot Updating Package Versions 2025-02-06 16:46:50 +00:00
LinuxServer-CI fc9aa4801c Bot Updating Package Versions 2025-01-30 15:41:23 +00:00
LinuxServer-CI 75911cd39e Bot Updating Templated Files 2025-01-30 15:36:37 +00:00
LinuxServer-CI 8a9da03e3f Bot Updating Templated Files 2025-01-30 15:34:46 +00:00
LinuxServer-CI 0b3cc76eba Bot Updating Package Versions 2025-01-28 11:56:00 +00:00
LinuxServer-CI 5d67441e57 Bot Updating Package Versions 2025-01-23 10:43:48 +00:00
LinuxServer-CI 6f733cdbcf Bot Updating Package Versions 2025-01-21 17:38:04 +00:00
LinuxServer-CI 3aa977e671 Bot Updating Package Versions 2025-01-21 11:51:08 +00:00
LinuxServer-CI 09206a5e22 Bot Updating Package Versions 2025-01-16 18:44:30 +00:00
LinuxServer-CI 31bdc55111 Bot Updating Package Versions 2025-01-09 13:00:07 +00:00
quietsy 4c50f935e9 Merge pull request #481 from linuxserver/fix-large-files-develop
Fix uploading large files
2025-01-09 13:05:40 +02:00
quietsy 77f8176c20 Fix uploading large files 2025-01-09 12:43:08 +02:00
LinuxServer-CI 2e9473a1d6 Bot Updating Package Versions 2025-01-07 11:51:01 +00:00
LinuxServer-CI b80003caa4 Bot Updating Package Versions 2024-12-24 11:50:56 +00:00
23 changed files with 878 additions and 593 deletions
Executable → Regular
View File
Executable → Regular
+1 -1
View File
@@ -6,7 +6,7 @@
* Read, and fill the Pull Request template * Read, and fill the Pull Request template
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR * If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message * If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn) * If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord)
## Common files ## Common files
Executable → Regular
View File
+1 -1
View File
@@ -1,7 +1,7 @@
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: Discord chat support - name: Discord chat support
url: https://discord.gg/YWrKVTn url: https://linuxserver.io/discord
about: Realtime support / chat with the community and the team. about: Realtime support / chat with the community and the team.
- name: Discourse discussion forum - name: Discourse discussion forum
View File
View File
+3
View File
@@ -8,6 +8,9 @@ on:
pull_request_review: pull_request_review:
types: [submitted,edited,dismissed] types: [submitted,edited,dismissed]
permissions:
contents: read
jobs: jobs:
manage-project: manage-project:
permissions: permissions:
+3
View File
@@ -4,6 +4,9 @@ on:
- cron: '35 2 * * *' - cron: '35 2 * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions: permissions:
+18 -7
View File
@@ -3,6 +3,9 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-develop: external-trigger-develop:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -15,7 +18,10 @@ jobs:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }} SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
printf "# External trigger for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY printf "# External trigger for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY
if grep -q "^nextcloud_develop" <<< "${SKIP_EXTERNAL_TRIGGER}"; then if grep -q "^nextcloud_develop_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_develop_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^nextcloud_develop" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_develop\`; skipping trigger." >> $GITHUB_STEP_SUMMARY echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_develop\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
@@ -25,6 +31,11 @@ jobs:
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease == true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1) EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease == true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1)
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^nextcloud_develop_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
@@ -35,8 +46,8 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/nextcloud" image="linuxserver/nextcloud"
tag="develop" tag="develop"
@@ -92,8 +103,8 @@ jobs:
exit 1 exit 1
fi fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
@@ -108,7 +119,7 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
else else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi fi
@@ -128,7 +139,7 @@ jobs:
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit" --data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****" echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for nextcloud tag develop. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" TRIGGER_REASON="A version change was detected for nextcloud tag develop. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
+3
View File
@@ -5,6 +5,9 @@ on:
- cron: '27 * * * *' - cron: '27 * * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
Executable → Regular
+6
View File
@@ -2,8 +2,14 @@ name: Greetings
on: [pull_request_target, issues] on: [pull_request_target, issues]
permissions:
contents: read
jobs: jobs:
greeting: greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1
+3
View File
@@ -5,6 +5,9 @@ on:
- cron: '42 11 * * 2' - cron: '42 11 * * 2'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
View File
+38 -39
View File
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.20 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -19,44 +19,43 @@ RUN \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
libxml2 \ libxml2 \
php83-apcu \ php84-apcu \
php83-bcmath \ php84-bcmath \
php83-bz2 \ php84-bz2 \
php83-dom \ php84-dom \
php83-exif \ php84-exif \
php83-ftp \ php84-ftp \
php83-gd \ php84-gd \
php83-gmp \ php84-gmp \
php83-imap \ php84-imap \
php83-intl \ php84-intl \
php83-ldap \ php84-ldap \
php83-opcache \ php84-opcache \
php83-pcntl \ php84-pcntl \
php83-pdo_mysql \ php84-pdo_mysql \
php83-pdo_pgsql \ php84-pdo_pgsql \
php83-pdo_sqlite \ php84-pdo_sqlite \
php83-pecl-imagick \ php84-pecl-imagick \
php83-pecl-mcrypt \ php84-pecl-memcached \
php83-pecl-memcached \ php84-pecl-smbclient \
php83-pecl-smbclient \ php84-pgsql \
php83-pgsql \ php84-posix \
php83-posix \ php84-redis \
php83-redis \ php84-sodium \
php83-sodium \ php84-sqlite3 \
php83-sqlite3 \ php84-sysvsem \
php83-sysvsem \ php84-xmlreader \
php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
sudo && \ sudo && \
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/php83/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/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 && \ if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php83/conf.d/apcu.ini && \ } >> /etc/php84/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@@ -66,16 +65,16 @@ 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/php83/conf.d/00_opcache.ini" && \ } >> "/etc/php84/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=512M'; \ echo 'memory_limit=-1'; \
echo 'upload_max_filesize=512M'; \ echo 'upload_max_filesize=100G'; \
echo 'post_max_size=512M'; \ echo 'post_max_size=100G'; \
echo 'max_input_time=300'; \ echo 'max_input_time=3600'; \
echo 'max_execution_time=300'; \ echo 'max_execution_time=3600'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php83/conf.d/nextcloud.ini" && \ } >> "/etc/php84/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/app/www/src/ && \ /app/www/src/ && \
+38 -39
View File
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.20 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -19,44 +19,43 @@ RUN \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
libxml2 \ libxml2 \
php83-apcu \ php84-apcu \
php83-bcmath \ php84-bcmath \
php83-bz2 \ php84-bz2 \
php83-dom \ php84-dom \
php83-exif \ php84-exif \
php83-ftp \ php84-ftp \
php83-gd \ php84-gd \
php83-gmp \ php84-gmp \
php83-imap \ php84-imap \
php83-intl \ php84-intl \
php83-ldap \ php84-ldap \
php83-opcache \ php84-opcache \
php83-pcntl \ php84-pcntl \
php83-pdo_mysql \ php84-pdo_mysql \
php83-pdo_pgsql \ php84-pdo_pgsql \
php83-pdo_sqlite \ php84-pdo_sqlite \
php83-pecl-imagick \ php84-pecl-imagick \
php83-pecl-mcrypt \ php84-pecl-memcached \
php83-pecl-memcached \ php84-pecl-smbclient \
php83-pecl-smbclient \ php84-pgsql \
php83-pgsql \ php84-posix \
php83-posix \ php84-redis \
php83-redis \ php84-sodium \
php83-sodium \ php84-sqlite3 \
php83-sqlite3 \ php84-sysvsem \
php83-sysvsem \ php84-xmlreader \
php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
sudo && \ sudo && \
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/php83/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/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 && \ if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php83/conf.d/apcu.ini && \ } >> /etc/php84/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@@ -66,16 +65,16 @@ 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/php83/conf.d/00_opcache.ini" && \ } >> "/etc/php84/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=512M'; \ echo 'memory_limit=-1'; \
echo 'upload_max_filesize=512M'; \ echo 'upload_max_filesize=100G'; \
echo 'post_max_size=512M'; \ echo 'post_max_size=100G'; \
echo 'max_input_time=300'; \ echo 'max_input_time=3600'; \
echo 'max_execution_time=300'; \ echo 'max_execution_time=3600'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php83/conf.d/nextcloud.ini" && \ } >> "/etc/php84/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/app/www/src/ && \ /app/www/src/ && \
Vendored
+112 -44
View File
@@ -56,11 +56,23 @@ pipeline {
steps{ steps{
echo "Running on node: ${NODE_NAME}" echo "Running on node: ${NODE_NAME}"
sh '''#! /bin/bash sh '''#! /bin/bash
containers=$(docker ps -aq) echo "Pruning builder"
docker builder prune -f --builder container || :
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
docker stop ${containers} BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi fi
docker system prune -af --volumes || : ''' docker system prune -f --volumes || :
docker image prune -af || :
'''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
@@ -82,7 +94,11 @@ pipeline {
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' 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'
if ( env.SYFT_IMAGE_TAG == null ) {
env.SYFT_IMAGE_TAG = 'latest'
}
} }
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
@@ -192,6 +208,7 @@ pipeline {
env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
} }
} }
} }
@@ -217,6 +234,7 @@ pipeline {
env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@@ -242,6 +260,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@@ -264,7 +283,7 @@ 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.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \ apk add --no-cache python3 && \
python3 -m venv /lsiopy && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \ pip install --no-cache-dir -U pip && \
@@ -599,13 +618,16 @@ pipeline {
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 [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -665,13 +687,16 @@ pipeline {
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 [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -725,12 +750,14 @@ pipeline {
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 [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -741,7 +768,8 @@ pipeline {
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
docker stop ${containers} docker stop ${containers}
fi fi
docker system prune -af --volumes || : docker system prune -f --volumes || :
docker image prune -af || :
''' '''
} }
} }
@@ -767,7 +795,7 @@ pipeline {
docker run --rm \ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \ -v ${TEMPDIR}:/tmp \
ghcr.io/anchore/syft:latest \ ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt ${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 ) NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github" echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
@@ -854,7 +882,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true" CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi fi
fi fi
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 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}
@@ -877,7 +905,10 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \ -e NODE_NAME=\"${NODE_NAME}\" \
-t ghcr.io/linuxserver/ci:latest \ -e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py''' python3 test_build.py'''
} }
} }
@@ -903,9 +934,11 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:develop -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:develop -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@@ -930,20 +963,27 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-develop -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-develop -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-develop -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-develop -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:amd64-develop ${MANIFESTIMAGE}:arm64v8-develop docker buildx imagetools create -t ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:amd64-develop ${MANIFESTIMAGE}:arm64v8-develop || \
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${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} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@@ -961,23 +1001,41 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to develop",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "develop"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to develop",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\ jq -n \
"target_commitish": "develop",\ --arg tag_name "$META_TAG" \
"name": "'${META_TAG}'",\ --arg target_commitish "develop" \
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start --arg ci_url "${CI_URL:-N/A}" \
printf '","draft": false,"prerelease": true}' >> releasebody.json --arg ls_notes "$AUTO_RELEASE_NOTES" \
paste -d'\\0' start releasebody.json > releasebody.json.done --arg remote_notes "$(cat releasebody.json)" \
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' '{
"tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": true }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
} }
} }
// Add protection to the release branch // Add protection to the release branch
@@ -1152,12 +1210,22 @@ EOF
} }
cleanup { cleanup {
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Performing docker system prune!!" echo "Pruning builder!!"
containers=$(docker ps -aq) docker builder prune -f --builder container || :
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
docker stop ${containers} BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi fi
docker system prune -af --volumes || : docker system prune -f --volumes || :
docker image prune -af || :
''' '''
cleanWs() cleanWs()
} }
Executable → Regular
View File
+42 -5
View File
@@ -3,9 +3,8 @@
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.") [![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@@ -20,9 +19,8 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
Find us at: Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more! * [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team. * [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum. * [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories. * [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
@@ -57,7 +55,6 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | |
## Version Tags ## Version Tags
@@ -67,11 +64,14 @@ This image provides various versions that are available via tags. Please read th
| :----: | :----: |--- | | :----: | :----: |--- |
| latest | ✅ | Stable Nextcloud releases | | latest | ✅ | Stable Nextcloud releases |
| develop | ✅ | Beta Nextcloud pre-releases *only* | | develop | ✅ | Beta Nextcloud pre-releases *only* |
| previous | ✅ | Nextcloud releases from the previous major version |
## Application Setup ## Application Setup
Access the webui at `https://<your-ip>:443`, for more information check out [Nextcloud](https://nextcloud.com/). Access the webui at `https://<your-ip>:443`, for more information check out [Nextcloud](https://nextcloud.com/).
Note: `occ` should be run without prepending with `sudo -u abc php` or `sudo -u www-data php` ie; `docker exec -it nextcloud occ maintenance:mode --off`
### Updating Nextcloud ### Updating Nextcloud
Updating Nextcloud is done by pulling the new image, and recreating the container with it. Updating Nextcloud is done by pulling the new image, and recreating the container with it.
@@ -86,6 +86,34 @@ Nextcloud's built-in collaborative editing packages (Collabora/CODE and OnlyOffi
If (auto) installed, those built-in packages may cause instability and should be removed. If (auto) installed, those built-in packages may cause instability and should be removed.
### HEIC Image Previews
In order to enable HEIC image preview generation you will need to add the following to your `config.php` file in your `config/www/nextcloud/config' directory;
```
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
'OC\Preview\PNG',
'OC\Preview\JPEG',
'OC\Preview\GIF',
'OC\Preview\BMP',
'OC\Preview\XBitmap',
'OC\Preview\MP3',
'OC\Preview\TXT',
'OC\Preview\MarkDown',
'OC\Preview\OpenDocument',
'OC\Preview\Krita',
'OC\Preview\HEIC',
),
```
You may need to log out and back in for the changes to come in to effect.
This fix was sourced from [Nextcloud Documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#enabledpreviewproviders)
Nextcloud state that HEIC preview is disabled by default due to performance or privacy concerns, so enable this at your own risk.
### Custom App Directories ### Custom App Directories
If you are [using custom app directories](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories) you will need to make the custom folder(s) you are using available to the web server. The recommended way to do this with our container is to add a volume. Ex: If you are [using custom app directories](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories) you will need to make the custom folder(s) you are using available to the web server. The recommended way to do this with our container is to add a volume. Ex:
@@ -319,7 +347,16 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **10.07.25:** - Rebase to Alpine 3.22.
* **12.02.25:** - Rebase to Alpine 3.21.
* **09.01.25:** - Fix uploading large files. Existing users should update their nginx confs.
* **09.07.24:** - Add `previous` tag for n-1 releases.
* **24.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings. * **24.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **19.05.24:** - Added util-linux package required for taskset.
* **10.04.24:** - Added imagemagick-pdf.
* **05.04.24:** - Added imagemagick-heic. Manual update to `config.php` required - see above.
* **02.04.24:** - Existing users should update: site-confs/default.conf - Add support for the Client Push (notify_push) plugin and the [new mod](https://github.com/linuxserver/docker-mods/tree/nextcloud-notify-push).
* **22.03.24:** - Add imagemagick-svg module.
* **06.03.24:** - Rebase to Alpine 3.19 with php 8.3. * **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. * **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. * **22.12.23:** - Site default conf updating to include mime.types for js and mjs and update location to include more file types.
+492 -403
View File
@@ -1,403 +1,492 @@
NAME VERSION TYPE NAME VERSION TYPE
Process Wrapper 1.0.0.0 dotnet (+1 duplicate) Process Wrapper 0.0.0.0 binary (+1 duplicate)
activity 3.0.0 npm acl-libs 2.3.2-r1 apk
alpine-baselayout 3.6.5-r0 apk activity 6.0.0-dev.0 npm
alpine-baselayout-data 3.6.5-r0 apk alpine-baselayout 3.7.0-r0 apk
alpine-keys 2.4-r1 apk alpine-baselayout-data 3.7.0-r0 apk
alpine-release 3.20.3-r0 apk alpine-keys 2.5-r0 apk
alsa-lib 1.2.11-r0 apk alpine-release 3.22.3-r0 apk
amphp/amp v2.6.4 php-composer alsa-lib 1.2.14-r0 apk
amphp/byte-stream v1.8.1 php-composer amphp/amp v2.6.5 php-composer
amphp/parallel v1.4.3 php-composer amphp/byte-stream v1.8.2 php-composer
amphp/parser v1.1.0 php-composer amphp/parallel v1.4.4 php-composer
amphp/process v1.1.4 php-composer amphp/parser v1.1.1 php-composer
amphp/serialization v1.0.0 php-composer amphp/process v1.1.9 php-composer
amphp/sync v1.4.2 php-composer amphp/serialization v1.0.0 php-composer
aom-libs 3.9.1-r0 apk amphp/sync v1.4.2 php-composer
apache2-utils 2.4.62-r0 apk andrewdalpino/okbloomer 1.0.0 php-composer
apk-tools 2.14.4-r1 apk anstream 0.6.8 rust-crate
app_api 1.0.0 npm anstyle 1.0.4 rust-crate
apr 1.7.5-r0 apk anstyle-parse 0.2.3 rust-crate
apr-util 1.6.3-r1 apk anstyle-query 1.0.2 rust-crate
argon2-libs 20190702-r5 apk anyhow 1.0.79 rust-crate
aws/aws-crt-php v1.2.5 php-composer anyhow 1.0.98 rust-crate
aws/aws-sdk-php 3.311.2 php-composer aom-libs 3.12.1-r0 apk
bamarni/composer-bin-plugin 1.8.2 php-composer apache2-utils 2.4.66-r0 apk
bantu/ini-get-wrapper v1.0.1 php-composer apk-tools 2.14.9-r3 apk
bash 5.2.26-r0 apk apr 1.7.5-r0 apk
brick/math 0.12.1 php-composer apr-util 1.6.3-r1 apk
brotli-libs 1.1.0-r2 apk arg_enum_proc_macro 0.3.4 rust-crate
bruteforcesettings 3.0.0 npm argon2-libs 20190702-r5 apk
busybox 1.36.1-r29 apk arrayvec 0.7.4 rust-crate
busybox-binsh 1.36.1-r29 apk av-metrics 0.9.1 rust-crate
c-ares 1.33.1-r0 apk av1-grain 0.2.3 rust-crate
c-client 2007f-r15 apk aws/aws-crt-php v1.2.7 php-composer
ca-certificates 20240705-r0 apk aws/aws-sdk-php 3.369.9 php-composer
ca-certificates-bundle 20240705-r0 apk bamarni/composer-bin-plugin 1.8.3 php-composer
catatonit 0.2.0-r0 apk bantu/ini-get-wrapper v1.0.1 php-composer
christian-riesen/base32 1.6.0 php-composer bash 5.2.37-r0 apk
cjson 1.7.18-r0 apk bitflags 2.4.1 rust-crate
composer 2.8.4 binary bitstream-io 2.2.0 rust-crate
coreutils 9.5-r1 apk bitstream-io 2.6.0 rust-crate
coreutils-env 9.5-r1 apk bitvec 1.0.1 rust-crate
coreutils-fmt 9.5-r1 apk bitvec_helpers 3.1.6 rust-crate
coreutils-sha512sum 9.5-r1 apk brick/math 0.12.1 php-composer
curl 8.11.0-r2 apk brotli-libs 1.1.0-r2 apk
cweagans/composer-patches 1.7.3 php-composer busybox 1.37.0-r20 apk
dbus-libs 1.14.10-r1 apk busybox-binsh 1.37.0-r20 apk
deepdiver/zipstreamer v2.0.3 php-composer c-ares 1.34.6-r0 apk
deepdiver1975/tarstreamer v2.1.0 php-composer c-client 2007f-r15 apk
doctrine/cache 2.2.0 php-composer ca-certificates 20250911-r0 apk
doctrine/dbal 3.9.1 php-composer ca-certificates-bundle 20250911-r0 apk
doctrine/deprecations 1.1.3 php-composer catatonit 0.2.1-r0 apk
doctrine/event-manager 2.0.1 php-composer cfg-if 1.0.0 rust-crate
doctrine/lexer 3.0.1 php-composer christian-riesen/base32 1.6.0 php-composer
egulias/email-validator 4.0.2 php-composer cjson 1.7.19-r0 apk
ffmpeg 6.1.1-r8 apk clap 4.4.14 rust-crate
ffmpeg-libavcodec 6.1.1-r8 apk clap_builder 4.4.14 rust-crate
ffmpeg-libavdevice 6.1.1-r8 apk clap_complete 4.4.6 rust-crate
ffmpeg-libavfilter 6.1.1-r8 apk clap_derive 4.4.7 rust-crate
ffmpeg-libavformat 6.1.1-r8 apk clap_lex 0.6.0 rust-crate
ffmpeg-libavutil 6.1.1-r8 apk colorchoice 1.0.0 rust-crate
ffmpeg-libpostproc 6.1.1-r8 apk composer 2.9.5 binary
ffmpeg-libswresample 6.1.1-r8 apk console 0.15.8 rust-crate
ffmpeg-libswscale 6.1.1-r8 apk coreutils 9.7-r1 apk
fftw-double-libs 3.3.10-r5 apk coreutils-env 9.7-r1 apk
files_downloadlimit 3.0.0 npm coreutils-fmt 9.7-r1 apk
files_pdfviewer 3.0.0 npm coreutils-sha512sum 9.7-r1 apk
findutils 4.9.0-r5 apk crc 3.3.0 rust-crate
firstrunwizard 3.0.0 npm crc-catalog 2.4.0 rust-crate
fontconfig 2.15.0-r1 apk crossbeam 0.8.4 rust-crate
freetype 2.13.2-r0 apk crossbeam-channel 0.5.14 rust-crate
fribidi 1.0.15-r0 apk crossbeam-deque 0.8.5 rust-crate
fusonic/opengraph v2.3.0 php-composer crossbeam-epoch 0.9.18 rust-crate
gdbm 1.23-r1 apk crossbeam-queue 0.3.11 rust-crate
giflib 5.2.2-r0 apk crossbeam-utils 0.8.19 rust-crate
giggsey/libphonenumber-for-php-lite 8.13.45 php-composer curl 8.14.1-r2 apk
git 2.45.2-r0 apk cweagans/composer-patches 1.7.3 php-composer
git-init-template 2.45.2-r0 apk dbus-libs 1.16.2-r1 apk
glib 2.80.5-r0 apk deepdiver/zipstreamer v2.0.3 php-composer
glslang-libs 1.3.261.1-r0 apk deepdiver1975/tarstreamer v2.1.0 php-composer
gmp 6.3.0-r1 apk doctrine/dbal 3.10.4 php-composer
gnu-libiconv 1.17-r2 apk doctrine/deprecations 1.1.5 php-composer
gnu-libiconv-libs 1.17-r2 apk doctrine/event-manager 2.0.1 php-composer
gnutls 3.8.5-r0 apk doctrine/lexer 3.0.1 php-composer
graphite2 1.3.14-r6 apk dolby_vision 3.3.1 rust-crate
guzzlehttp/guzzle 7.8.2 php-composer egulias/email-validator 4.0.4 php-composer
guzzlehttp/promises 2.0.4 php-composer either 1.9.0 rust-crate
guzzlehttp/psr7 2.7.0 php-composer errno 0.3.8 rust-crate
guzzlehttp/uri-template v1.0.3 php-composer fern 0.6.2 rust-crate
harfbuzz 8.5.0-r0 apk ffmpeg 6.1.2-r2 apk
hexogen/kdtree v0.2.5 php-composer ffmpeg-libavcodec 6.1.2-r2 apk
hwdata-pci 0.382-r0 apk ffmpeg-libavdevice 6.1.2-r2 apk
icewind/searchdav v3.1.0 php-composer ffmpeg-libavfilter 6.1.2-r2 apk
icewind/smb v3.5.4 php-composer ffmpeg-libavformat 6.1.2-r2 apk
icewind/streams v0.7.7 php-composer (+1 duplicate) ffmpeg-libavutil 6.1.2-r2 apk
icu-data-en 74.2-r0 apk ffmpeg-libpostproc 6.1.2-r2 apk
icu-libs 74.2-r0 apk ffmpeg-libswresample 6.1.2-r2 apk
imagemagick 7.1.1.32-r2 apk ffmpeg-libswscale 6.1.2-r2 apk
imagemagick-jpeg 7.1.1.32-r2 apk fftw-double-libs 3.3.10-r6 apk
imagemagick-jxl 7.1.1.32-r2 apk files_downloadlimit 5.1.0-dev.0 npm
imagemagick-libs 7.1.1.32-r2 apk files_pdfviewer 6.0.0-dev.0 npm
imagemagick-webp 7.1.1.32-r2 apk findutils 4.10.0-r0 apk
imath 3.1.12-r0 apk firstrunwizard 6.0.0-dev.0 npm
jansson 2.14-r4 apk fontconfig 2.15.0-r3 apk
jq 1.7.1-r0 apk freetype 2.13.3-r0 apk
justinrainbow/json-schema v5.2.13 php-composer fribidi 1.0.16-r1 apk
kornrunner/blurhash v1.2.2 php-composer funty 2.0.0 rust-crate
lame-libs 3.100-r5 apk fusonic/opengraph v3.0.0 php-composer
laravel/serializable-closure v1.3.5 php-composer gdbm 1.24-r0 apk
lcms2 2.16-r0 apk getrandom 0.2.12 rust-crate
lcobucci/clock 3.0.0 php-composer giflib 5.2.2-r1 apk
ldb 2.8.2-r0 apk giggsey/libphonenumber-for-php-lite 9.0.9 php-composer
league/flysystem 2.5.0 php-composer git 2.49.1-r0 apk
league/mime-type-detection 1.11.0 php-composer git-init-template 2.49.1-r0 apk
libSvtAv1Enc 2.0.0-r1 apk glib 2.84.4-r0 apk
libacl 2.3.2-r0 apk glslang-libs 1.4.309.0-r0 apk
libarchive 3.7.7-r0 apk gmp 6.3.0-r3 apk
libass 0.17.2-r0 apk gnu-libiconv 1.17-r2 apk
libasyncns 0.8-r3 apk gnu-libiconv-libs 1.17-r2 apk
libattr 2.5.2-r0 apk gnutls 3.8.8-r0 apk
libauth-samba 4.19.9-r0 apk graphite2 1.3.14-r6 apk
libavif 1.0.4-r0 apk guzzlehttp/guzzle 7.10.0 php-composer
libblkid 2.40.1-r1 apk guzzlehttp/promises 2.3.0 php-composer
libbluray 1.3.4-r1 apk guzzlehttp/psr7 2.8.0 php-composer
libbsd 0.12.2-r0 apk guzzlehttp/uri-template v1.0.4 php-composer
libbz2 1.0.8-r6 apk harfbuzz 11.2.1-r0 apk
libcap2 2.70-r0 apk heck 0.4.1 rust-crate
libcrypto3 3.3.2-r1 apk hexogen/kdtree v0.2.6 php-composer
libcurl 8.11.0-r2 apk hwdata-pci 0.395-r0 apk
libdav1d 1.4.2-r0 apk icewind/searchdav v3.2.0 php-composer
libdovi 3.3.0-r0 apk icewind/smb 3.8.1 php-composer
libdrm 2.4.120-r0 apk icewind/streams v0.7.8 php-composer
libeconf 0.6.3-r0 apk icu-data-en 76.1-r1 apk
libedit 20240517.3.1-r0 apk icu-libs 76.1-r1 apk
libevent 2.1.12-r7 apk imagemagick 7.1.2.8-r0 apk
libexpat 2.6.4-r0 apk imagemagick-jpeg 7.1.2.8-r0 apk
libffi 3.4.6-r0 apk imagemagick-jxl 7.1.2.8-r0 apk
libflac 1.4.3-r1 apk imagemagick-libs 7.1.2.8-r0 apk
libformw 6.4_p20240420-r2 apk imagemagick-openexr 7.1.2.8-r0 apk
libgcc 13.2.1_git20240309-r0 apk imagemagick-webp 7.1.2.8-r0 apk
libgomp 13.2.1_git20240309-r0 apk imath 3.1.12-r0 apk
libhwy 1.0.7-r0 apk interpolate_name 0.2.4 rust-crate
libice 1.1.1-r6 apk itertools 0.10.5 rust-crate
libidn2 2.3.7-r0 apk itertools 0.12.0 rust-crate
libintl 0.22.5-r0 apk ivf 0.1.3 rust-crate
libjpeg-turbo 3.0.3-r0 apk jansson 2.14.1-r0 apk
libjxl 0.10.2-r0 apk joomla/string 3.0.4 php-composer
libldap 2.6.8-r0 apk jq 1.8.1-r0 apk
libltdl 2.4.7-r3 apk justinrainbow/json-schema 6.6.4 php-composer
libmcrypt 2.5.8-r10 apk kornrunner/blurhash v1.2.2 php-composer
libmd 1.1.0-r0 apk lab 0.11.0 rust-crate
libmemcached-libs 1.1.4-r1 apk lame-libs 3.100-r5 apk
libmount 2.40.1-r1 apk laravel/serializable-closure v2.0.4 php-composer
libncursesw 6.4_p20240420-r2 apk lazy_static 1.4.0 rust-crate
libogg 1.3.5-r5 apk lcms2 2.16-r0 apk
libopenmpt 0.7.7-r0 apk lcobucci/clock 3.0.0 php-composer
libpanelw 6.4_p20240420-r2 apk ldb 4.21.9-r1 apk
libpciaccess 0.18.1-r0 apk libSvtAv1Enc 2.3.0-r0 apk
libplacebo 6.338.2-r1 apk libapk2 2.14.9-r3 apk
libpng 1.6.44-r0 apk libarchive 3.8.3-r0 apk
libpq 16.6-r0 apk libass 0.17.3-r0 apk
libproc2 4.0.4-r0 apk libasyncns 0.8-r4 apk
libpsl 0.21.5-r1 apk libattr 2.5.2-r2 apk
libpulse 17.0-r0 apk libauth-samba 4.21.9-r1 apk
librist 0.2.10-r1 apk libavif 1.3.0-r0 apk
libsasl 2.1.28-r6 apk libblkid 2.41-r9 apk
libsharpyuv 1.3.2-r0 apk libbluray 1.3.4-r1 apk
libsm 1.2.4-r4 apk libbsd 0.12.2-r0 apk
libsmbclient 4.19.9-r0 apk libbz2 1.0.8-r6 apk
libsndfile 1.2.2-r0 apk libc 0.2.155 rust-crate
libsodium 1.0.19-r0 apk libc 0.2.172 rust-crate
libsrt 1.5.3-r0 apk libcap2 2.76-r0 apk
libssh 0.10.6-r0 apk libcrypto3 3.5.5-r0 apk
libssl3 3.3.2-r1 apk libcurl 8.14.1-r2 apk
libstdc++ 13.2.1_git20240309-r0 apk libdav1d 1.5.1-r0 apk
libtasn1 4.19.0-r2 apk libdeflate 1.23-r0 apk
libtheora 1.1.1-r18 apk libdovi 3.3.1-r1 apk
libunibreak 6.1-r0 apk libdrm 2.4.124-r0 apk
libunistring 1.2-r0 apk libeconf 0.6.3-r0 apk
libuuid 2.40.1-r1 apk libedit 20250104.3.1-r1 apk
libva 2.21.0-r0 apk libevent 2.1.12-r8 apk
libvdpau 1.5-r3 apk libexpat 2.7.4-r0 apk
libvorbis 1.3.7-r2 apk libffi 3.4.8-r0 apk
libvpx 1.14.1-r0 apk libflac 1.4.3-r1 apk
libwbclient 4.19.9-r0 apk libformw 6.5_p20250503-r0 apk
libwebp 1.3.2-r0 apk libgcc 14.2.0-r6 apk
libwebpdemux 1.3.2-r0 apk libgomp 14.2.0-r6 apk
libwebpmux 1.3.2-r0 apk libhwy 1.0.7-r1 apk
libx11 1.8.9-r1 apk libice 1.1.2-r0 apk
libxau 1.0.11-r4 apk libidn2 2.3.7-r0 apk
libxcb 1.16.1-r0 apk libintl 0.24.1-r0 apk
libxdmcp 1.1.5-r1 apk libjpeg-turbo 3.1.0-r0 apk
libxext 1.3.6-r2 apk libjxl 0.10.3-r2 apk
libxfixes 6.0.1-r4 apk libldap 2.6.8-r0 apk
libxml2 2.12.7-r0 apk libltdl 2.5.4-r1 apk
libxpm 3.5.17-r0 apk libmd 1.1.0-r0 apk
libxt 1.3.0-r5 apk libmemcached-libs 1.1.4-r1 apk
libxxhash 0.8.2-r2 apk libmount 2.41-r9 apk
libzip 1.10.1-r0 apk libncursesw 6.5_p20250503-r0 apk
libzmq 4.3.5-r2 apk libogg 1.3.5-r5 apk
lilv-libs 0.24.24-r1 apk libopenmpt 0.7.15-r0 apk
linux-pam 1.6.0-r0 apk libpanelw 6.5_p20250503-r0 apk
lmdb 0.9.32-r0 apk libpciaccess 0.18.1-r0 apk
logreader 3.0.0 npm libplacebo 6.338.2-r3 apk
logrotate 3.21.0-r1 apk libpng 1.6.54-r0 apk
lz4-libs 1.9.4-r5 apk libpq 17.7-r0 apk
masterminds/html5 2.9.0 php-composer libproc2 4.0.4-r3 apk
mbedtls 3.6.2-r0 apk libpsl 0.21.5-r3 apk
mexitek/phpcolors v1.0.4 php-composer libpulse 17.0-r5 apk
microsoft/azure-storage-blob 1.5.4 php-composer librist 0.2.10-r1 apk
microsoft/azure-storage-common 1.5.2 php-composer libsasl 2.1.28-r8 apk
mlocati/ip-lib 1.18.0 php-composer libsharpyuv 1.5.0-r0 apk
mpg123-libs 1.32.8-r0 apk libsm 1.2.5-r0 apk
mtdowling/jmespath.php 2.7.0 php-composer libsmbclient 4.21.9-r1 apk
musl 1.2.5-r0 apk libsndfile 1.2.2-r2 apk
musl-utils 1.2.5-r0 apk libsodium 1.0.20-r1 apk
nano 8.0-r0 apk libsrt 1.5.3-r1 apk
ncurses-terminfo-base 6.4_p20240420-r2 apk libssh 0.11.2-r0 apk
netcat-openbsd 1.226-r0 apk libssl3 3.5.5-r0 apk
nettle 3.9.1-r0 apk libstdc++ 14.2.0-r6 apk
nextcloud 1.0.0 npm libtasn1 4.21.0-r0 apk
nextcloud/coding-standard v1.2.1 php-composer libtheora 1.1.1-r18 apk
nextcloud/lognormalizer v1.0.0 php-composer libunibreak 6.1-r0 apk
nghttp2-libs 1.62.1-r0 apk libunistring 1.3-r0 apk
nginx 1.26.2-r0 apk libuuid 2.41-r9 apk
notifications 3.0.0 npm libva 2.22.0-r1 apk
numactl 2.0.18-r0 apk libvdpau 1.5-r4 apk
onevpl-libs 2023.3.1-r2 apk libvorbis 1.3.7-r2 apk
oniguruma 6.9.9-r0 apk libvpx 1.15.0-r0 apk
openexr-libiex 3.1.13-r1 apk libwbclient 4.21.9-r1 apk
openexr-libilmthread 3.1.13-r1 apk libwebp 1.5.0-r0 apk
openexr-libopenexr 3.1.13-r1 apk libwebpdemux 1.5.0-r0 apk
openssl 3.3.2-r1 apk libwebpmux 1.5.0-r0 apk
opus 1.5.2-r0 apk libx11 1.8.11-r0 apk
orc 0.4.40-r0 apk libxau 1.0.12-r0 apk
p11-kit 0.25.3-r0 apk libxcb 1.17.0-r0 apk
paragonie/constant_time_encoding v2.7.0 php-composer libxdmcp 1.1.5-r1 apk
password_policy 2.0.0 npm libxext 1.3.6-r2 apk
pcre 8.45-r3 apk libxfixes 6.0.1-r4 apk
pcre2 10.43-r0 apk libxml2 2.13.9-r0 apk
pear/archive_tar 1.5.0 php-composer libxpm 3.5.17-r0 apk
pear/console_getopt v1.4.3 php-composer libxt 1.3.1-r0 apk
pear/pear-core-minimal v1.10.15 php-composer libxxhash 0.8.3-r0 apk
pear/pear_exception v1.0.2 php-composer libyuv 0.0.1887.20251502-r1 apk
photos 3.0.0 npm libzip 1.11.4-r0 apk
php-cs-fixer/shim v3.61.1 php-composer libzmq 4.3.5-r2 apk
php-http/guzzle7-adapter 1.0.0 php-composer lilv-libs 0.24.26-r0 apk
php-http/httplug 2.2.0 php-composer linux-pam 1.7.0-r4 apk
php-http/promise 1.1.0 php-composer linux-raw-sys 0.4.12 rust-crate
php-opencloud/openstack v3.10.0 php-composer lmdb 0.9.33-r0 apk
php83 8.3.14-r0 apk log 0.4.20 rust-crate
php83-bcmath 8.3.14-r0 apk logreader 6.0.0 npm
php83-bz2 8.3.14-r0 apk logrotate 3.21.0-r1 apk
php83-common 8.3.14-r0 apk lz4-libs 1.10.0-r0 apk
php83-ctype 8.3.14-r0 apk marc-mabe/php-enum v4.7.1 php-composer
php83-curl 8.3.14-r0 apk masterminds/html5 2.9.0 php-composer
php83-dom 8.3.14-r0 apk maybe-rayon 0.1.1 rust-crate
php83-exif 8.3.14-r0 apk mbedtls 3.6.5-r0 apk
php83-fileinfo 8.3.14-r0 apk memchr 2.7.1 rust-crate
php83-fpm 8.3.14-r0 apk mexitek/phpcolors v1.0.4 php-composer
php83-ftp 8.3.14-r0 apk microsoft/azure-storage-blob 1.5.4 php-composer
php83-gd 8.3.14-r0 apk microsoft/azure-storage-common 1.5.2 php-composer
php83-gmp 8.3.14-r0 apk minimal-lexical 0.2.1 rust-crate
php83-iconv 8.3.14-r0 apk mlocati/ip-lib 1.22.0 php-composer
php83-imap 8.3.14-r0 apk mpg123-libs 1.32.10-r0 apk
php83-intl 8.3.14-r0 apk mtdowling/jmespath.php 2.8.0 php-composer
php83-ldap 8.3.14-r0 apk musl 1.2.5-r10 apk
php83-mbstring 8.3.14-r0 apk musl-utils 1.2.5-r10 apk
php83-mysqlnd 8.3.14-r0 apk nano 8.4-r0 apk
php83-opcache 8.3.14-r0 apk ncurses-terminfo-base 6.5_p20250503-r0 apk
php83-openssl 8.3.14-r0 apk nelexa/buffer 1.3.0 php-composer
php83-pcntl 8.3.14-r0 apk netcat-openbsd 1.229.1-r0 apk
php83-pdo 8.3.14-r0 apk nettle 3.10.1-r0 apk
php83-pdo_mysql 8.3.14-r0 apk new_debug_unreachable 1.0.4 rust-crate
php83-pdo_pgsql 8.3.14-r0 apk nextcloud 1.0.0 npm
php83-pdo_sqlite 8.3.14-r0 apk nextcloud/lognormalizer v3.0.0 php-composer
php83-pecl-apcu 5.1.23-r0 apk nghttp2-libs 1.65.0-r0 apk
php83-pecl-igbinary 3.2.15-r0 apk nginx 1.28.2-r0 apk
php83-pecl-imagick 3.7.0-r0 apk nom 7.1.3 rust-crate
php83-pecl-mcrypt 1.0.7-r0 apk noop_proc_macro 0.3.0 rust-crate
php83-pecl-memcached 3.3.0-r0 apk notifications 6.0.0-dev.0 npm
php83-pecl-msgpack 2.2.0-r2 apk num-bigint 0.4.4 rust-crate
php83-pecl-redis 6.1.0-r0 apk num-derive 0.4.1 rust-crate
php83-pecl-smbclient 1.1.1-r0 apk num-integer 0.1.45 rust-crate
php83-pgsql 8.3.14-r0 apk num-rational 0.4.1 rust-crate
php83-phar 8.3.14-r0 apk num-traits 0.2.17 rust-crate
php83-posix 8.3.14-r0 apk numactl 2.0.18-r0 apk
php83-session 8.3.14-r0 apk once_cell 1.19.0 rust-crate
php83-simplexml 8.3.14-r0 apk onevpl-libs 2023.3.1-r2 apk
php83-sockets 8.3.14-r0 apk oniguruma 6.9.10-r0 apk
php83-sodium 8.3.14-r0 apk openexr-libiex 3.3.2-r0 apk
php83-sqlite3 8.3.14-r0 apk openexr-libilmthread 3.3.2-r0 apk
php83-sysvsem 8.3.14-r0 apk openexr-libopenexr 3.3.2-r0 apk
php83-xml 8.3.14-r0 apk openexr-libopenexrcore 3.3.2-r0 apk
php83-xmlreader 8.3.14-r0 apk openssl 3.5.5-r0 apk
php83-xmlwriter 8.3.14-r0 apk opus 1.5.2-r1 apk
php83-zip 8.3.14-r0 apk orc 0.4.40-r1 apk
phpseclib/phpseclib 2.0.47 php-composer p11-kit 0.25.5-r2 apk
pimple/pimple v3.5.0 php-composer paragonie/constant_time_encoding v2.6.3 php-composer
popt 1.19-r3 apk password_policy 5.0.0-dev.0 npm
privacy 2.0.0 npm paste 1.0.14 rust-crate
procps-ng 4.0.4-r0 apk pcre2 10.46-r0 apk
psr/cache 3.0.0 php-composer pear/archive_tar 1.5.0 php-composer
psr/clock 1.0.0 php-composer pear/console_getopt v1.4.3 php-composer
psr/container 2.0.2 php-composer pear/pear-core-minimal v1.10.16 php-composer
psr/event-dispatcher 1.0.0 php-composer pear/pear_exception v1.0.2 php-composer
psr/http-client 1.0.3 php-composer photos 6.0.0-dev.0 npm
psr/http-factory 1.1.0 php-composer php-http/guzzle7-adapter 1.1.0 php-composer
psr/http-message 1.1 php-composer php-http/httplug 2.4.1 php-composer
psr/log 1.1.4 php-composer php-http/promise 1.3.1 php-composer
psr/log 2.0.0 php-composer php-opencloud/openstack v3.14.0 php-composer
punic/punic 3.8.1 php-composer php84 8.4.16-r0 apk
ralouphie/getallheaders 3.0.3 php-composer php84-bcmath 8.4.16-r0 apk
rav1e-libs 0.7.1-r0 apk php84-bz2 8.4.16-r0 apk
readline 8.2.10-r0 apk php84-common 8.4.16-r0 apk
recommendations 3.0.0 npm php84-ctype 8.4.16-r0 apk
related_resources 1.5.0 npm php84-curl 8.4.16-r0 apk
rsync 3.3.0-r0 apk php84-dom 8.4.16-r0 apk
rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer php84-exif 8.4.16-r0 apk
rubix/tensor 2.2.3 php-composer php84-fileinfo 8.4.16-r0 apk
rullzer/easytotp v0.1.4 php-composer php84-fpm 8.4.16-r0 apk
sabre/dav 4.6.0 php-composer php84-ftp 8.4.16-r0 apk
sabre/event 5.1.4 php-composer php84-gd 8.4.16-r0 apk
sabre/http 5.1.10 php-composer php84-gmp 8.4.16-r0 apk
sabre/uri 2.3.3 php-composer php84-iconv 8.4.16-r0 apk
sabre/vobject 4.5.4 php-composer php84-intl 8.4.16-r0 apk
sabre/xml 2.2.7 php-composer php84-ldap 8.4.16-r0 apk
samba-client 4.19.9-r0 apk php84-mbstring 8.4.16-r0 apk
samba-client-libs 4.19.9-r0 apk php84-mysqlnd 8.4.16-r0 apk
samba-common 4.19.9-r0 apk php84-opcache 8.4.16-r0 apk
samba-libs 4.19.9-r0 apk php84-openssl 8.4.16-r0 apk
samba-util-libs 4.19.9-r0 apk php84-pcntl 8.4.16-r0 apk
scanelf 1.3.7-r2 apk php84-pdo 8.4.16-r0 apk
scssphp/scssphp v1.12.1 php-composer php84-pdo_mysql 8.4.16-r0 apk
sdl2 2.28.5-r1 apk php84-pdo_pgsql 8.4.16-r0 apk
serd-libs 0.32.2-r0 apk php84-pdo_sqlite 8.4.16-r0 apk
shaderc 2024.0-r0 apk php84-pecl-apcu 5.1.27-r0 apk
shadow 4.15.1-r0 apk php84-pecl-igbinary 3.2.16-r1 apk
skalibs 2.14.1.1-r0 apk php84-pecl-imagick 3.8.0-r1 apk
sord-libs 0.16.16-r0 apk php84-pecl-imap 1.0.3-r0 apk
soxr 0.1.3-r7 apk php84-pecl-memcached 3.3.0-r0 apk
speexdsp 1.2.1-r2 apk php84-pecl-msgpack 3.0.0-r0 apk
spirv-tools 1.3.261.1-r0 apk php84-pecl-redis 6.3.0-r0 apk
spomky-labs/cbor-php 3.1.0 php-composer php84-pecl-smbclient 1.2.0_pre-r0 apk
spomky-labs/pki-framework 1.2.1 php-composer php84-pgsql 8.4.16-r0 apk
sqlite-libs 3.45.3-r1 apk php84-phar 8.4.16-r0 apk
sratom 0.6.16-r0 apk php84-posix 8.4.16-r0 apk
ssl_client 1.36.1-r29 apk php84-session 8.4.16-r0 apk
stecman/symfony-console-completion v0.13.0 php-composer php84-simplexml 8.4.16-r0 apk
sudo 1.9.15_p5-r0 apk php84-sockets 8.4.16-r0 apk
support 2.0.0 npm php84-sodium 8.4.16-r0 apk
suspicious_login 8.0.0 npm php84-sqlite3 8.4.16-r0 apk
symfony/console v6.4.12 php-composer php84-sysvsem 8.4.16-r0 apk
symfony/css-selector v6.4.3 php-composer php84-xml 8.4.16-r0 apk
symfony/deprecation-contracts v3.5.0 php-composer php84-xmlreader 8.4.16-r0 apk
symfony/dom-crawler v6.4.4 php-composer php84-xmlwriter 8.4.16-r0 apk
symfony/event-dispatcher v6.4.8 php-composer php84-zip 8.4.16-r0 apk
symfony/event-dispatcher-contracts v3.0.2 php-composer phpseclib/phpseclib 2.0.47 php-composer
symfony/http-foundation v6.4.12 php-composer pimple/pimple v3.6.0 php-composer
symfony/mailer v6.4.12 php-composer popt 1.19-r4 apk
symfony/mime v6.4.12 php-composer ppv-lite86 0.2.17 rust-crate
symfony/polyfill-ctype v1.29.0 php-composer privacy 5.0.0-dev.0 npm
symfony/polyfill-intl-grapheme v1.31.0 php-composer proc-macro2 1.0.76 rust-crate
symfony/polyfill-intl-idn v1.31.0 php-composer procps-ng 4.0.4-r3 apk
symfony/polyfill-intl-normalizer v1.31.0 php-composer profiling 1.0.13 rust-crate
symfony/polyfill-mbstring v1.27.0 php-composer profiling-procmacros 1.0.13 rust-crate
symfony/polyfill-mbstring v1.31.0 php-composer psr/cache 3.0.0 php-composer
symfony/polyfill-php73 v1.26.0 php-composer psr/clock 1.0.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer psr/container 2.0.2 php-composer
symfony/polyfill-php80 v1.29.0 php-composer psr/event-dispatcher 1.0.0 php-composer
symfony/polyfill-php83 v1.31.0 php-composer psr/http-client 1.0.3 php-composer
symfony/polyfill-uuid v1.31.0 php-composer psr/http-factory 1.1.0 php-composer
symfony/process v6.4.12 php-composer psr/http-message 2.0 php-composer
symfony/routing v6.4.12 php-composer psr/log 3.0.2 php-composer (+1 duplicate)
symfony/service-contracts v3.0.2 php-composer punic/punic 3.8.1 php-composer
symfony/string v6.0.19 php-composer quote 1.0.35 rust-crate
symfony/translation v6.4.12 php-composer radium 0.7.0 rust-crate
symfony/translation-contracts v3.4.2 php-composer ralouphie/getallheaders 3.0.3 php-composer
symfony/uid v6.4.12 php-composer rand 0.8.5 rust-crate
talloc 2.4.2-r1 apk rand_chacha 0.3.1 rust-crate
tdb-libs 1.4.9-r1 apk rand_core 0.6.4 rust-crate
tevent 0.16.1-r0 apk rav1e 0.7.1 rust-crate
text 4.0.0 npm rav1e-libs 0.7.1-r2 apk
twofactor_nextcloud_notification 4.0.0 npm rayon 1.8.0 rust-crate
twofactor_totp 12.0.0-dev npm rayon-core 1.12.0 rust-crate
tzdata 2024b-r0 apk readline 8.2.13-r1 apk
utmps-libs 0.1.2.2-r1 apk recommendations 6.0.0-dev.0 npm
v4l-utils-libs 1.24.1-r1 apk rsync 3.4.1-r1 apk
vidstab 1.1.1-r0 apk rubix/ml 2.5.3 php-composer
viewer 3.0.0 npm rubix/tensor 3.0.5 php-composer
vulkan-loader 1.3.261.1-r0 apk rullzer/easytotp v0.1.4 php-composer
wapmorgan/mp3info 0.1.0 php-composer rustix 0.38.28 rust-crate
wayland-libs-client 1.22.0-r4 apk sabre/dav 4.7.0 php-composer
web-auth/cose-lib 4.4.0 php-composer sabre/event 5.1.7 php-composer
web-auth/webauthn-lib 4.9.1 php-composer sabre/http 5.1.12 php-composer
x264-libs 0.164_git20231001-r0 apk sabre/uri 2.3.4 php-composer
x265-libs 3.6-r0 apk sabre/vobject 4.5.6 php-composer
xvidcore 1.3.7-r2 apk sabre/xml 2.2.11 php-composer
xz-libs 5.6.2-r0 apk samba-client 4.21.9-r1 apk
zimg 3.0.5-r2 apk samba-client-libs 4.21.9-r1 apk
zix-libs 0.4.2-r0 apk samba-common 4.21.9-r1 apk
zlib 1.3.1-r1 apk samba-libs 4.21.9-r1 apk
zstd-libs 1.5.6-r0 apk samba-util-libs 4.21.9-r1 apk
scan_fmt 0.2.6 rust-crate
scanelf 1.3.8-r1 apk
sdl2-compat 2.32.56-r0 apk
sdl3 3.2.16-r0 apk
serd-libs 0.32.4-r0 apk
shaderc 2024.4-r0 apk
shadow 4.17.3-r0 apk
signal-hook 0.3.17 rust-crate
signal-hook-registry 1.4.1 rust-crate
simd_helpers 0.1.0 rust-crate
skalibs-libs 2.14.4.0-r0 apk
sord-libs 0.16.18-r0 apk
soxr 0.1.3-r7 apk
speexdsp 1.2.1-r2 apk
spirv-tools 1.4.313.0-r0 apk
spomky-labs/cbor-php 3.0.4 php-composer
spomky-labs/pki-framework 1.2.1 php-composer
sqlite-libs 3.49.2-r1 apk
sratom 0.6.18-r0 apk
ssl_client 1.37.0-r20 apk
stecman/symfony-console-completion v0.14.0 php-composer
sudo 1.9.17_p2-r0 apk
support 5.0.0-dev.0 npm
symfony/console v6.4.17 php-composer
symfony/css-selector v6.4.13 php-composer
symfony/deprecation-contracts v3.6.0 php-composer (+1 duplicate)
symfony/dom-crawler v6.4.23 php-composer
symfony/event-dispatcher v6.4.8 php-composer
symfony/event-dispatcher-contracts v3.5.0 php-composer
symfony/filesystem v7.4.0 php-composer
symfony/http-foundation v6.4.29 php-composer
symfony/mailer v6.4.12 php-composer
symfony/mime v6.4.12 php-composer
symfony/polyfill-intl-grapheme v1.32.0 php-composer
symfony/polyfill-intl-idn v1.32.0 php-composer
symfony/polyfill-intl-normalizer v1.33.0 php-composer
symfony/polyfill-mbstring v1.31.0 php-composer
symfony/polyfill-php80 v1.31.0 php-composer
symfony/polyfill-php82 v1.31.0 php-composer
symfony/polyfill-php83 v1.31.0 php-composer
symfony/polyfill-php83 v1.33.0 php-composer
symfony/polyfill-php84 v1.33.0 php-composer (+1 duplicate)
symfony/polyfill-php85 v1.33.0 php-composer
symfony/polyfill-uuid v1.29.0 php-composer
symfony/process v6.4.31 php-composer
symfony/routing v6.4.12 php-composer
symfony/service-contracts v3.5.1 php-composer
symfony/string v6.4.15 php-composer
symfony/translation v6.4.4 php-composer
symfony/translation-contracts v3.4.2 php-composer
symfony/uid v6.4.3 php-composer
syn 2.0.48 rust-crate
talloc 2.4.2-r1 apk
tap 1.0.1 rust-crate
tdb-libs 1.4.12-r0 apk
teams 33.0.0-dev.0 npm
terminal_size 0.3.0 rust-crate
tevent 0.16.1-r0 apk
text 7.0.0-dev.1 npm
thiserror 1.0.56 rust-crate
thiserror-impl 1.0.56 rust-crate
tinyvec 1.9.0 rust-crate
twofactor_totp 15.0.0-dev.0 npm
tzdata 2025c-r0 apk
unicode-ident 1.0.12 rust-crate
unicode-width 0.1.11 rust-crate
utf8parse 0.2.1 rust-crate
utmps-libs 0.1.3.1-r0 apk
v4l-utils-libs 1.28.1-r1 apk
v_frame 0.3.7 rust-crate
vidstab 1.1.1-r0 apk
viewer 6.0.0-dev.0 npm
vulkan-loader 1.4.313.0-r0 apk
wamania/php-stemmer v4.0.0 php-composer
wapmorgan/mp3info 0.1.1 php-composer
wayland-libs-client 1.23.1-r3 apk
web-auth/cose-lib 4.3.0 php-composer
web-auth/webauthn-lib 4.9.1 php-composer
woltlab/webp-exif v0.1.2 php-composer
wyz 0.5.1 rust-crate
x264-libs 0.164.3108-r0 apk
x265-libs 3.6-r0 apk
xvidcore 1.3.7-r2 apk
xz-libs 5.8.1-r0 apk
y4m 0.8.0 rust-crate
zimg 3.0.5-r3 apk
zix-libs 0.6.2-r0 apk
zlib 1.3.1-r2 apk
zstd-libs 1.5.7-r0 apk
+50 -10
View File
@@ -18,6 +18,7 @@ development_versions: true
development_versions_items: development_versions_items:
- {tag: "latest", desc: "Stable Nextcloud releases"} - {tag: "latest", desc: "Stable Nextcloud releases"}
- {tag: "develop", desc: "Beta Nextcloud pre-releases *only*"} - {tag: "develop", desc: "Beta Nextcloud pre-releases *only*"}
- {tag: "previous", desc: "Nextcloud releases from the previous major version"}
# 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 }}"
@@ -28,11 +29,15 @@ param_volumes:
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"}
readonly_supported: false
nonroot_supported: false
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
Access the webui at `https://<your-ip>:443`, for more information check out [Nextcloud]({{ project_url }}). Access the webui at `https://<your-ip>:443`, for more information check out [Nextcloud]({{ project_url }}).
Note: `occ` should be run without prepending with `sudo -u abc php` or `sudo -u www-data php` ie; `docker exec -it nextcloud occ maintenance:mode --off`
### Updating Nextcloud ### Updating Nextcloud
Updating Nextcloud is done by pulling the new image, and recreating the container with it. Updating Nextcloud is done by pulling the new image, and recreating the container with it.
@@ -47,6 +52,34 @@ app_setup_block: |
If (auto) installed, those built-in packages may cause instability and should be removed. If (auto) installed, those built-in packages may cause instability and should be removed.
### HEIC Image Previews
In order to enable HEIC image preview generation you will need to add the following to your `config.php` file in your `config/www/nextcloud/config' directory;
```
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
'OC\Preview\PNG',
'OC\Preview\JPEG',
'OC\Preview\GIF',
'OC\Preview\BMP',
'OC\Preview\XBitmap',
'OC\Preview\MP3',
'OC\Preview\TXT',
'OC\Preview\MarkDown',
'OC\Preview\OpenDocument',
'OC\Preview\Krita',
'OC\Preview\HEIC',
),
```
You may need to log out and back in for the changes to come in to effect.
This fix was sourced from [Nextcloud Documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#enabledpreviewproviders)
Nextcloud state that HEIC preview is disabled by default due to performance or privacy concerns, so enable this at your own risk.
### Custom App Directories ### Custom App Directories
If you are [using custom app directories](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories) you will need to make the custom folder(s) you are using available to the web server. The recommended way to do this with our container is to add a volume. Ex: If you are [using custom app directories](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories) you will need to make the custom folder(s) you are using available to the web server. The recommended way to do this with our container is to add a volume. Ex:
@@ -75,32 +108,29 @@ init_diagram: |
init-nginx-end -> init-config init-nginx-end -> init-config
init-os-end -> init-config init-os-end -> init-config
init-config -> init-config-end init-config -> init-config-end
init-crontab-config -> init-config-end
init-nextcloud-config -> init-config-end init-nextcloud-config -> init-config-end
init-os-end -> init-crontab-config init-config -> init-crontab-config
init-mods-end -> init-custom-files init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile base -> init-envfile
init-os-end -> init-folders init-os-end -> init-folders
init-php -> init-keygen init-php -> init-keygen
base -> init-migrations base -> init-migrations
base -> init-mods
init-config-end -> init-mods init-config-end -> init-mods
init-version-checks -> init-mods
init-mods -> init-mods-end
init-mods-package-install -> init-mods-end init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install init-mods -> init-mods-package-install
init-nginx-end -> init-nextcloud-config init-nginx-end -> init-nextcloud-config
init-samples -> init-nginx init-samples -> init-nginx
init-permissions -> init-nginx-end init-version-checks -> init-nginx-end
base -> init-os-end
init-adduser -> init-os-end init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end init-envfile -> init-os-end
init-migrations -> init-os-end
init-keygen -> init-permissions init-keygen -> init-permissions
init-nginx -> init-php init-nginx -> init-php
init-folders -> init-samples init-folders -> init-samples
init-custom-files -> init-services init-custom-files -> init-services
init-mods-end -> init-services init-permissions -> init-version-checks
init-config-end -> init-version-checks
init-services -> svc-cron init-services -> svc-cron
svc-cron -> legacy-services svc-cron -> legacy-services
init-services -> svc-nginx init-services -> svc-nginx
@@ -109,12 +139,22 @@ init_diagram: |
svc-php-fpm -> legacy-services svc-php-fpm -> legacy-services
} }
Base Images: { Base Images: {
"baseimage-alpine-nginx:3.20" <- "baseimage-alpine:3.20" "baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22"
} }
"nextcloud:develop" <- Base Images "nextcloud:develop" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "08.02.26:", desc: "Existing users should update: site-confs/default.conf - Deny access to all dotfiles."}
- {date: "10.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "12.02.25:", desc: "Rebase to Alpine 3.21."}
- {date: "09.01.25:", desc: "Fix uploading large files. Existing users should update their nginx confs."}
- {date: "09.07.24:", desc: "Add `previous` tag for n-1 releases."}
- {date: "24.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."} - {date: "24.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- {date: "19.05.24:", desc: "Added util-linux package required for taskset."}
- {date: "10.04.24:", desc: "Added imagemagick-pdf."}
- {date: "05.04.24:", desc: "Added imagemagick-heic. Manual update to `config.php` required - see above."}
- {date: "02.04.24:", desc: "Existing users should update: site-confs/default.conf - Add support for the Client Push (notify_push) plugin and the [new mod](https://github.com/linuxserver/docker-mods/tree/nextcloud-notify-push)."}
- {date: "22.03.24:", desc: "Add imagemagick-svg module."}
- {date: "06.03.24:", desc: "Rebase to Alpine 3.19 with php 8.3."} - {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: "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: "22.12.23:", desc: "Site default conf updating to include mime.types for js and mjs and update location to include more file types."}
@@ -1,4 +1,4 @@
## Version 2024/07/16 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample ## Version 2026/05/05 - 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 {
@@ -11,6 +11,8 @@ server {
listen [::]:80 default_server; listen [::]:80 default_server;
listen 443 ssl default_server; listen 443 ssl default_server;
listen [::]:443 ssl default_server; listen [::]:443 ssl default_server;
listen 443 quic reuseport default_server;
listen [::]:443 quic reuseport default_server;
server_name _; server_name _;
@@ -18,6 +20,13 @@ server {
root /app/www/public; root /app/www/public;
# deny access to all dotfiles
location ~ /\. {
access_log off;
log_not_found off;
return 404;
}
# display real ip in nginx logs when connected through reverse proxy via docker network # display real ip in nginx logs when connected through reverse proxy via docker network
set_real_ip_from 172.16.0.0/12; set_real_ip_from 172.16.0.0/12;
real_ip_header X-Forwarded-For; real_ip_header X-Forwarded-For;
@@ -25,7 +34,7 @@ server {
# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html#nextcloud-in-the-webroot-of-nginx # https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html#nextcloud-in-the-webroot-of-nginx
# set max upload size and increase upload timeout: # set max upload size and increase upload timeout:
client_max_body_size 512M; client_max_body_size 0;
client_body_timeout 300s; client_body_timeout 300s;
fastcgi_buffers 64 4K; fastcgi_buffers 64 4K;
@@ -47,12 +56,12 @@ server {
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-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;
@@ -90,11 +99,19 @@ server {
# The rules in this block are an adaptation of the rules # The rules in this block are an adaptation of the rules
# in `.htaccess` that concern `/.well-known`. # in `.htaccess` that concern `/.well-known`.
location = /.well-known/carddav { return 301 /remote.php/dav/; } location = /.well-known/carddav {
location = /.well-known/caldav { return 301 /remote.php/dav/; } return 301 /remote.php/dav/;
}
location = /.well-known/caldav {
return 301 /remote.php/dav/;
}
location /.well-known/acme-challenge { try_files $uri $uri/ =404; } location /.well-known/acme-challenge {
location /.well-known/pki-validation { try_files $uri $uri/ =404; } try_files $uri $uri/ =404;
}
location /.well-known/pki-validation {
try_files $uri $uri/ =404;
}
# Let Nextcloud's API for `/.well-known` URIs handle all other # Let Nextcloud's API for `/.well-known` URIs handle all other
# requests by passing them to the front-end controller. # requests by passing them to the front-end controller.
@@ -102,8 +119,12 @@ server {
} }
# Rules borrowed from `.htaccess` to hide certain paths from clients # Rules borrowed from `.htaccess` to hide certain paths from clients
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) {
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
# Ensure this block, which passes PHP files to the PHP process, is above the blocks # Ensure this block, which passes PHP files to the PHP process, is above the blocks
# which handle static assets (as seen below). If this block is not declared first, # which handle static assets (as seen below). If this block is not declared first,
@@ -122,8 +143,8 @@ server {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info; fastcgi_param PATH_INFO $path_info;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_pass 127.0.0.1:9000; fastcgi_pass 127.0.0.1:9000;
fastcgi_intercept_errors on; fastcgi_intercept_errors on;
@@ -136,7 +157,7 @@ server {
location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ { 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
location ~ \.wasm$ { location ~ \.wasm$ {
default_type application/wasm; default_type application/wasm;
@@ -146,8 +167,8 @@ server {
location ~ \.woff2?$ { location ~ \.woff2?$ {
try_files $uri /index.php$request_uri; try_files $uri /index.php$request_uri;
expires 7d; # Cache-Control policy borrowed from `.htaccess` expires 7d; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets access_log off; # Optional: Don't log access to assets
} }
# Rule borrowed from `.htaccess` # Rule borrowed from `.htaccess`
@@ -155,6 +176,14 @@ server {
return 301 /remote.php$request_uri; return 301 /remote.php$request_uri;
} }
# Support for the Client Push (notify_push) plugin, needs mod installed https://github.com/linuxserver/docker-mods/tree/nextcloud-notify-push
location ^~ /push/ {
proxy_pass http://127.0.0.1:7867/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location / { location / {
# enable for basic auth # enable for basic auth
#auth_basic "Restricted"; #auth_basic "Restricted";
@@ -162,9 +191,4 @@ server {
try_files $uri $uri/ /index.php$request_uri; try_files $uri $uri/ /index.php$request_uri;
} }
# deny access to .htaccess/.htpasswd files
location ~ /\.ht {
deny all;
}
} }
@@ -10,7 +10,7 @@ mkdir -p \
/data /data
# migrate legacy install (copy inside container) # migrate legacy install (copy inside container)
if [ -f /config/www/nextcloud/version.php ]; then if [[ -f /config/www/nextcloud/version.php ]]; then
echo "Migrating legacy install (this can take a while) ...)" echo "Migrating legacy install (this can take a while) ...)"
rsync -rlD --remove-source-files --exclude-from=/app/upgrade.exclude /config/www/nextcloud/ /app/www/public/ rsync -rlD --remove-source-files --exclude-from=/app/upgrade.exclude /config/www/nextcloud/ /app/www/public/
rm -rf /config/www/nextcloud/updater/ rm -rf /config/www/nextcloud/updater/
@@ -26,7 +26,7 @@ fi
# symlink config folders # symlink config folders
for dir in apps config themes; do for dir in apps config themes; do
if [ "$(readlink /app/www/public/${dir})" != "/config/www/nextcloud/${dir}" ]; then if [[ "$(readlink /app/www/public/${dir})" != "/config/www/nextcloud/${dir}" ]]; then
rm -rf "/app/www/public/${dir}" rm -rf "/app/www/public/${dir}"
ln -s "/config/www/nextcloud/${dir}" "/app/www/public/${dir}" ln -s "/config/www/nextcloud/${dir}" "/app/www/public/${dir}"
lsiown abc:abc "/config/www/nextcloud/${dir}" "/app/www/public/${dir}" lsiown abc:abc "/config/www/nextcloud/${dir}" "/app/www/public/${dir}"
@@ -34,9 +34,9 @@ for dir in apps config themes; do
done done
# get versions # get versions
image_version=$(php -r "require '/app/www/src/version.php'; echo implode('.', \$OC_Version);" 2>/dev/null) image_version=$(php -r "require '/app/www/src/version.php'; echo implode('.', \$OC_Version);" 2>/dev/null | xargs)
installed_version=$(php -r "require '/config/www/nextcloud/config/config.php'; echo \$CONFIG['version'];" 2>/dev/null) installed_version=$(php -r "require '/config/www/nextcloud/config/config.php'; echo \$CONFIG['version'];" 2>/dev/null | xargs)
if [ "${installed_version}" = "" ]; then if [[ "${installed_version}" = "" ]]; then
installed_version="0.0.0.0" installed_version="0.0.0.0"
fi fi
image_major="${image_version%%.*}" image_major="${image_version%%.*}"
@@ -54,23 +54,23 @@ if vergt "${installed_version}" "${image_version}"; then
sleep infinity sleep infinity
fi fi
if [ "${installed_version}" != "0.0.0.0" ] && vergt "${image_major}" "${max_upgrade}"; then if [[ "${installed_version}" != "0.0.0.0" ]] && vergt "${image_major}" "${max_upgrade}"; then
echo "Can't start Nextcloud because the version of the data (${installed_version}) is more than one major version behind the docker image version (${image_version}) and upgrading more than one major version is not supported. Please run an image tagged for the major version ${max_upgrade} first." echo "Can't start Nextcloud because the version of the data (${installed_version}) is more than one major version behind the docker image version (${image_version}) and upgrading more than one major version is not supported. Please run an image tagged for the major version ${max_upgrade} first."
sleep infinity sleep infinity
fi fi
if [ "${installed_version}" = "0.0.0.0" ] || [ ! -f /app/www/public/version.php ] || [ -z "$(ls -A /config/www/nextcloud/apps 2>/dev/null)" ]; then if [[ "${installed_version}" = "0.0.0.0" ]] || [[ ! -f /app/www/public/version.php ]] || [[ -z "$(ls -A /config/www/nextcloud/apps 2>/dev/null)" ]]; then
touch /tmp/needs_install touch /tmp/needs_install
fi fi
if [ "${installed_version}" != "0.0.0.0" ] && vergt "${image_version}" "${installed_version}"; then if [[ "${installed_version}" != "0.0.0.0" ]] && vergt "${image_version}" "${installed_version}"; then
touch /tmp/needs_upgrade touch /tmp/needs_upgrade
fi fi
# initialize nextcloud # initialize nextcloud
if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_install ] || [ -f /tmp/needs_upgrade ]; then if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_install ]] || [[ -f /tmp/needs_upgrade ]]; then
echo "Initializing nextcloud ${image_version} (this can take a while) ..." echo "Initializing nextcloud ${image_version} (this can take a while) ..."
if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_upgrade ]; then if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_upgrade ]]; then
echo "Upgrading nextcloud from ${installed_version} ..." echo "Upgrading nextcloud from ${installed_version} ..."
shippedApps=$(jq -r .shippedApps[] /app/www/src/core/shipped.json) shippedApps=$(jq -r .shippedApps[] /app/www/src/core/shipped.json)
for app in ${shippedApps}; do for app in ${shippedApps}; do
@@ -80,11 +80,11 @@ if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_instal
rsync -rlD --exclude-from=/app/upgrade.exclude /app/www/src/ /app/www/public/ rsync -rlD --exclude-from=/app/upgrade.exclude /app/www/src/ /app/www/public/
for dir in apps config themes; do for dir in apps config themes; do
if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_upgrade ] || [ -z "$(ls -A /app/www/public/${dir} 2>/dev/null)" ]; then if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_upgrade ]] || [[ -z "$(ls -A /app/www/public/${dir} 2>/dev/null)" ]]; then
rsync -rlD --include "/${dir}" --exclude '/*' /app/www/src/ /config/www/nextcloud/ rsync -rlD --include "/${dir}" --exclude '/*' /app/www/src/ /config/www/nextcloud/
fi fi
done done
if [ -z "$(ls -A /data/ 2>/dev/null)" ]; then if [[ -z "$(ls -A /data/ 2>/dev/null)" ]]; then
rsync -rlD --include "/data" --exclude '/*' /app/www/src/ / rsync -rlD --include "/data" --exclude '/*' /app/www/src/ /
fi fi
@@ -94,11 +94,11 @@ if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_instal
/app/www/public \ /app/www/public \
/config/www/nextcloud /config/www/nextcloud
if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_upgrade ]; then if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_upgrade ]]; then
# Upgrade # Upgrade
occ upgrade occ upgrade
else else
if [ "${installed_version}" = "0.0.0.0" ]; then if [[ "${installed_version}" = "0.0.0.0" ]]; then
# Install # Install
echo "New nextcloud instance" echo "New nextcloud instance"
echo "Please run the web-based installer on first connect!" echo "Please run the web-based installer on first connect!"
@@ -148,14 +148,14 @@ for APP in richdocumentscode; do
echo "Removing ${APP}" echo "Removing ${APP}"
fi fi
APP_PATH=$(occ app:getpath "${APP}" 2>/dev/null) APP_PATH=$(occ app:getpath "${APP}" 2>/dev/null)
if [ -z "${APP_PATH}" ] || [ ! -d "${APP_PATH}" ]; then if [[ -z "${APP_PATH}" ]] || [[ ! -d "${APP_PATH}" ]]; then
APP_PATH="/app/www/public/apps/${APP}" APP_PATH="/app/www/public/apps/${APP}"
fi fi
if [ -d "${APP_PATH}" ]; then if [[ -d "${APP_PATH}" ]]; then
occ app:disable "${APP}" >/dev/null 2>&1 occ app:disable "${APP}" >/dev/null 2>&1
fi fi
APP_STATUS="$(occ config:app:get "${APP}" enabled 2>/dev/null)" APP_STATUS="$(occ config:app:get "${APP}" enabled 2>/dev/null)"
if [ "${APP_STATUS}" != "no" ] && [ -n "${APP_STATUS}" ]; then if [[ "${APP_STATUS}" != "no" ]] && [[ -n "${APP_STATUS}" ]]; then
occ config:app:set "${APP}" enabled --value="no" >/dev/null 2>&1 occ config:app:set "${APP}" enabled --value="no" >/dev/null 2>&1
fi fi
occ app:remove "${APP}" >/dev/null 2>&1 occ app:remove "${APP}" >/dev/null 2>&1
@@ -163,14 +163,14 @@ for APP in richdocumentscode; do
done done
# set data directory # set data directory
if [ ! -s /config/www/nextcloud/config/config.php ]; then if [[ ! -s /config/www/nextcloud/config/config.php ]]; then
echo -e "<?php\n\$CONFIG = array (\n 'datadirectory' => '/data',\n);" >/config/www/nextcloud/config/config.php echo -e "<?php\n\$CONFIG = array (\n 'datadirectory' => '/data',\n);" >/config/www/nextcloud/config/config.php
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 #modify javascript mime type and add .mjs support
if [ -s /etc/nginx/mime.types ]; then if [[ -s /etc/nginx/mime.types ]]; then
sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types
sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types
fi fi
View File