Compare commits

...

32 Commits

Author SHA1 Message Date
LinuxServer-CI
acb431bc9c Bot Updating Package Versions 2023-11-14 23:32:43 +00:00
LinuxServer-CI
2639cc28cd Bot Updating Package Versions 2023-11-14 11:49:59 +00:00
LinuxServer-CI
35919306ae Bot Updating Package Versions 2023-11-10 14:35:17 +00:00
LinuxServer-CI
355c1b33c1 Bot Updating Package Versions 2023-11-02 16:40:23 +00:00
LinuxServer-CI
5bb6b49068 Bot Updating Package Versions 2023-10-28 19:59:43 +00:00
LinuxServer-CI
96ae53f2fc Bot Updating Templated Files 2023-10-28 19:54:46 +00:00
Eric Nemchik
9755ecbbc5
Merge pull request #376 from linuxserver/disable-web-upgrade-develop
Disable web upgrades using occ during init develop
2023-10-28 14:53:12 -05:00
Eric Nemchik
e07f1ae896
Disable web upgrades using occ during init
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-10-28 14:25:07 -05:00
LinuxServer-CI
a810a8f45f Bot Updating Package Versions 2023-10-24 11:52:50 +00:00
LinuxServer-CI
4f772f8a0e Bot Updating Package Versions 2023-10-17 11:50:15 +00:00
LinuxServer-CI
eb988dcf54 Bot Updating Package Versions 2023-10-12 21:34:51 +00:00
LinuxServer-CI
c8441d7681 Bot Updating Package Versions 2023-10-10 11:54:28 +00:00
LinuxServer-CI
3caf64eb7e Bot Updating Templated Files 2023-10-10 11:50:24 +00:00
LinuxServer-CI
49474850dc Bot Updating Templated Files 2023-10-10 11:48:50 +00:00
LinuxServer-CI
373ee2efc0 Bot Updating Package Versions 2023-09-29 00:41:10 +00:00
Eric Nemchik
56ae57320b
Merge pull request #359 from linuxserver/develop-updatenotification-app
Re-add updatenotification app
2023-09-28 19:36:15 -05:00
LinuxServer-CI
26c0913d86 Bot Updating Package Versions 2023-09-28 14:38:09 +00:00
LinuxServer-CI
525efaa99a Bot Updating Package Versions 2023-09-26 11:50:04 +00:00
quietsy
50c57a68f9
Merge pull request #365 from linuxserver/fix-lsiown-develop
Fix lsiown -R order
2023-09-18 16:57:26 +03:00
quietsy
a1a8f070f1 Fix lsiown -R order 2023-09-18 16:39:12 +03:00
LinuxServer-CI
9f953af7ad Bot Updating Package Versions 2023-09-14 18:33:10 +00:00
LinuxServer-CI
4d74174b8c Bot Updating Package Versions 2023-09-12 09:35:12 +00:00
LinuxServer-CI
db66b6a2cc Bot Updating Package Versions 2023-09-07 14:33:34 +00:00
LinuxServer-CI
92378267ac Bot Updating Package Versions 2023-09-05 11:50:04 +00:00
LinuxServer-CI
7f08b006fe Bot Updating Package Versions 2023-08-31 15:33:10 +00:00
Eric Nemchik
cea5b826cc
Re-add updatenotification app
Closes https://github.com/linuxserver/docker-nextcloud/issues/356

Signed-off-by: GitHub <noreply@github.com>
2023-08-31 14:00:49 +00:00
LinuxServer-CI
e7cdf18d23 Bot Updating Package Versions 2023-08-29 11:51:13 +00:00
LinuxServer-CI
d935187cb3 Bot Updating Package Versions 2023-08-22 11:50:11 +00:00
LinuxServer-CI
24cb0878c4 Bot Updating Package Versions 2023-08-15 11:57:10 +00:00
LinuxServer-CI
d641ed8dba Bot Updating Package Versions 2023-08-15 11:52:53 +00:00
quietsy
9651cce68c
Merge pull request #352 from linuxserver/initial-develop
Add develop branch
2023-08-15 09:27:38 +03:00
quietsy
a7f9b4c842 Add develop branch 2023-08-15 08:52:29 +03:00
13 changed files with 636 additions and 541 deletions

View File

@ -24,7 +24,7 @@
## Readme ## Readme
If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit. If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit.
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-nextcloud/edit/master/readme-vars.yml). Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-nextcloud/edit/develop/readme-vars.yml).
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play. These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-nextcloud) Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-nextcloud)
@ -115,7 +115,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Update the changelog ## Update the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nextcloud/tree/master/root), add an entry to the changelog If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nextcloud/tree/develop/root), add an entry to the changelog
```yml ```yml
changelogs: changelogs:

View File

@ -21,7 +21,7 @@
------------------------------ ------------------------------
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-nextcloud/blob/master/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications - [ ] I have read the [contributing](https://github.com/linuxserver/docker-nextcloud/blob/develop/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
------------------------------ ------------------------------

View File

@ -4,26 +4,26 @@ on:
workflow_dispatch: workflow_dispatch:
jobs: jobs:
external-trigger-master: external-trigger-develop:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v3.1.0
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/develop'
run: | run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_MASTER }}" ]; then if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_MASTER is set; skipping trigger. ****" echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP is set; skipping trigger. ****"
echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_MASTER\". ****" echo "**** External trigger running off of develop branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP\". ****"
echo "External trigger running off of master branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_MASTER\`" >> $GITHUB_STEP_SUMMARY echo "External trigger running off of develop branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****" echo "**** Retrieving external version ****"
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)
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "**** Can't retrieve external version, exiting ****" echo "**** Can't retrieve external version, exiting ****"
FAILURE_REASON="Can't retrieve external version for nextcloud branch master" FAILURE_REASON="Can't retrieve external version for nextcloud branch develop"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-nextcloud/actions/runs/${{ github.run_id }}" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-nextcloud/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
@ -35,7 +35,7 @@ jobs:
echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****" echo "**** Retrieving last pushed version ****"
image="linuxserver/nextcloud" image="linuxserver/nextcloud"
tag="latest" tag="develop"
token=$(curl -sX GET \ token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fnextcloud%3Apull" \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fnextcloud%3Apull" \
| jq -r '.token') | jq -r '.token')
@ -61,7 +61,7 @@ jobs:
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then if [ -z "${IMAGE_VERSION}" ]; then
echo "**** Can't retrieve last pushed version, exiting ****" echo "**** Can't retrieve last pushed version, exiting ****"
FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag latest" FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag develop"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
@ -73,7 +73,7 @@ jobs:
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY echo "Version ${EXT_RELEASE} 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/master/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 ****" echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
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
exit 0 exit 0
@ -81,7 +81,7 @@ jobs:
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/buildWithParameters?PACKAGE_CHECK=false \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****" echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****" echo "**** Sleeping 10 seconds until job starts ****"
@ -97,7 +97,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 latest. 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}"
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 }}

View File

@ -9,5 +9,5 @@ jobs:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1
with: with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.' issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-nextcloud/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!' pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-nextcloud/blob/develop/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -4,28 +4,28 @@ on:
workflow_dispatch: workflow_dispatch:
jobs: jobs:
package-trigger-master: package-trigger-develop:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v3.1.0
- name: Package Trigger - name: Package Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/develop'
run: | run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_MASTER }}" ]; then if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_MASTER is set; skipping trigger. ****" echo "**** Github secret PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP is set; skipping trigger. ****"
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY echo "Github secret \`PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****" echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_MASTER\". ****" echo "**** Package trigger running off of develop branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP\". ****"
echo "Package trigger running off of master branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_MASTER\`" >> $GITHUB_STEP_SUMMARY echo "Package trigger running off of develop branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP\`" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/buildWithParameters?PACKAGE_CHECK=true \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****" echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****" echo "**** Sleeping 10 seconds until job starts ****"

View File

@ -82,12 +82,12 @@ RUN \
/app/www/src/ && \ /app/www/src/ && \
if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \ if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \
NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \ NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \
| jq -r '.[] | select(.prerelease != true) | .tag_name' \ | jq -r '.[] | select(.prerelease == true) | .tag_name' \
| sed 's|^v||g' | sort -rV | head -1); \ | sed 's|^v||g' | sort -rV | head -1); \
fi && \ fi && \
curl -o \ curl -o \
/tmp/nextcloud.tar.bz2 -L \ /tmp/nextcloud.tar.bz2 -L \
https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \ https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \
tar xf /tmp/nextcloud.tar.bz2 -C \ tar xf /tmp/nextcloud.tar.bz2 -C \
/app/www/src --strip-components=1 && \ /app/www/src --strip-components=1 && \
rm -rf /app/www/src/updater && \ rm -rf /app/www/src/updater && \

View File

@ -82,12 +82,12 @@ RUN \
/app/www/src/ && \ /app/www/src/ && \
if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \ if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \
NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \ NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \
| jq -r '.[] | select(.prerelease != true) | .tag_name' \ | jq -r '.[] | select(.prerelease == true) | .tag_name' \
| sed 's|^v||g' | sort -rV | head -1); \ | sed 's|^v||g' | sort -rV | head -1); \
fi && \ fi && \
curl -o \ curl -o \
/tmp/nextcloud.tar.bz2 -L \ /tmp/nextcloud.tar.bz2 -L \
https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \ https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \
tar xf /tmp/nextcloud.tar.bz2 -C \ tar xf /tmp/nextcloud.tar.bz2 -C \
/app/www/src --strip-components=1 && \ /app/www/src --strip-components=1 && \
rm -rf /app/www/src/updater && \ rm -rf /app/www/src/updater && \

173
Jenkinsfile vendored
View File

@ -16,7 +16,6 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id') GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
SCARF_TOKEN=credentials('scarf_api_key')
BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE' BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE'
LS_USER = 'linuxserver' LS_USER = 'linuxserver'
LS_REPO = 'docker-nextcloud' LS_REPO = 'docker-nextcloud'
@ -48,7 +47,7 @@ pipeline {
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''', script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:develop 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@ -72,7 +71,7 @@ pipeline {
script{ script{
env.LS_TAG_NUMBER = sh( env.LS_TAG_NUMBER = sh(
script: '''#! /bin/bash script: '''#! /bin/bash
tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null) tagsha=$(git rev-list -n 1 develop-${LS_RELEASE} 2>/dev/null)
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
echo ${LS_RELEASE_NUMBER} echo ${LS_RELEASE_NUMBER}
elif [ -z "${GIT_COMMIT}" ]; then elif [ -z "${GIT_COMMIT}" ]; then
@ -110,7 +109,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE = sh( env.EXT_RELEASE = sh(
script: ''' curl -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 ''', script: ''' curl -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 ''',
returnStdout: true).trim() returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command' env.RELEASE_LINK = 'custom_command'
} }
@ -150,10 +149,10 @@ pipeline {
} }
} }
} }
// If this is a master build use live docker endpoints // If this is a develop build use live docker endpoints
stage("Set ENV live build"){ stage("Set ENV live build"){
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
@ -163,20 +162,20 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.META_TAG = 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 = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
} }
} }
} }
// If this is a dev build use dev docker endpoints // If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){ stage("Set ENV dev build"){
when { when {
not {branch "master"} not {branch "develop"}
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
@ -186,13 +185,13 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = '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/'
} }
} }
@ -209,13 +208,13 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
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/'
} }
@ -250,7 +249,7 @@ pipeline {
// Use helper containers to render templated files // Use helper containers to render templated files
stage('Update-Templates') { stage('Update-Templates') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
expression { expression {
env.CONTAINER_NAME != null env.CONTAINER_NAME != null
@ -261,13 +260,13 @@ pipeline {
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=develop -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
# Stage 1 - Jenkinsfile update # Stage 1 - Jenkinsfile update
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile git add Jenkinsfile
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
@ -290,7 +289,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
for i in ${TEMPLATES_TO_DELETE}; do for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}" git rm "${i}"
done done
@ -311,7 +310,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
@ -329,12 +328,12 @@ pipeline {
else else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi fi
mkdir -p ${TEMPDIR}/gitbook mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/gitbook/docker-documentation/ cd ${TEMPDIR}/docs/docker-documentation
git add images/docker-${CONTAINER_NAME}.md git add docs/images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Documentation' git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi fi
@ -372,7 +371,7 @@ pipeline {
// Exit the build if the Templated files were just updated // Exit the build if the Templated files were just updated
stage('Template-exit') { stage('Template-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true' environment name: 'FILES_UPDATED', value: 'true'
expression { expression {
@ -385,10 +384,10 @@ pipeline {
} }
} }
} }
// If this is a master build check the S6 service file perms // If this is a develop build check the S6 service file perms
stage("Check S6 Service file Permissions"){ stage("Check S6 Service file Permissions"){
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@ -425,35 +424,6 @@ pipeline {
"visibility":"public"}' ''' "visibility":"public"}' '''
} }
} }
/* #######################
Scarf.sh package registry
####################### */
// Add package to Scarf.sh and set permissions
stage("Scarf.sh package registry"){
when {
branch "master"
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''#! /bin/bash
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/nextcloud") | .uuid' || :)
if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
-H "Authorization: Bearer ${SCARF_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"name":"linuxserver/nextcloud",\
"shortDescription":"example description",\
"libraryType":"docker",\
"website":"https://github.com/linuxserver/docker-nextcloud",\
"backendUrl":"https://ghcr.io/linuxserver/nextcloud",\
"publicUrl":"https://lscr.io/linuxserver/nextcloud"}' || :
else
echo "Package already exists on Scarf.sh"
fi
'''
}
}
/* ############### /* ###############
Build Container Build Container
############### */ ############### */
@ -559,7 +529,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison // Take the image we just built and dump package versions for comparison
stage('Update-packages') { stage('Update-packages') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@ -582,7 +552,7 @@ pipeline {
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"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f develop
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/ cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/ cd ${TEMPDIR}/${LS_REPO}/
wait wait
@ -606,7 +576,7 @@ pipeline {
// Exit the build if the package file was just updated // Exit the build if the package file was just updated
stage('PACKAGE-exit') { stage('PACKAGE-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true' environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@ -620,7 +590,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push // Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') { stage('PACKAGECHECK-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false' environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@ -713,12 +683,12 @@ pipeline {
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG} docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:develop
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG} docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER} docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
fi fi
docker push ${PUSHIMAGE}:latest docker push ${PUSHIMAGE}:develop
docker push ${PUSHIMAGE}:${META_TAG} docker push ${PUSHIMAGE}:${META_TAG}
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG} docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
@ -764,10 +734,10 @@ pipeline {
fi fi
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-develop
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-develop
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
@ -775,17 +745,17 @@ pipeline {
fi fi
docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-latest docker push ${MANIFESTIMAGE}:amd64-develop
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-latest docker push ${MANIFESTIMAGE}:arm64v8-develop
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker push ${MANIFESTIMAGE}:amd64-${SEMVER} docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker manifest push --purge ${MANIFESTIMAGE}:latest || : docker manifest push --purge ${MANIFESTIMAGE}:develop || :
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest docker manifest create ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:amd64-develop ${MANIFESTIMAGE}:arm64v8-develop
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:arm64v8-develop --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
@ -801,13 +771,13 @@ pipeline {
digest=$(curl -s \ digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest") "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-develop")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || : docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-develop || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest docker manifest create ${MANIFESTIMAGE}:arm32v7-develop ${MANIFESTIMAGE}:amd64-develop
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-develop
fi fi
docker manifest push --purge ${MANIFESTIMAGE}:latest docker manifest push --purge ${MANIFESTIMAGE}:develop
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
@ -822,7 +792,7 @@ pipeline {
// If this is a public release tag it in the LS Github // If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') { stage('Github-Tag-Push-Release') {
when { when {
branch "master" branch "develop"
expression { expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@ -834,21 +804,56 @@ pipeline {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \ sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\ -d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\ "object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to develop",\
"type": "commit",\ "type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' "tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag" echo "Pushing New release for Tag"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\ echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master",\ "target_commitish": "develop",\
"name": "'${META_TAG}'",\ "name": "'${META_TAG}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json printf '","draft": false,"prerelease": true}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done paste -d'\\0' start releasebody.json > 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''' 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
stage('Github-Release-Branch-Protection') {
when {
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Setting up protection for release branch develop"
sh '''#! /bin/bash
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/develop/protection \
-d $(jq -c . << EOF
{
"required_status_checks": null,
"enforce_admins": false,
"required_pull_request_reviews": {
"dismiss_stale_reviews": false,
"require_code_owner_reviews": false,
"require_last_push_approval": false,
"required_approving_review_count": 1
},
"restrictions": null,
"required_linear_history": false,
"allow_force_pushes": false,
"allow_deletions": false,
"block_creations": false,
"required_conversation_resolution": true,
"lock_branch": false,
"allow_fork_syncing": false,
"required_signatures": false
}
EOF
) '''
}
}
// Use helper container to sync the current README on master to the dockerhub endpoint // Use helper container to sync the current README on master to the dockerhub endpoint
stage('Sync-README') { stage('Sync-README') {
when { when {

157
README.md
View File

@ -1,6 +1,5 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-nextcloud/blob/master/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-nextcloud/blob/develop/.github/CONTRIBUTING.md -->
[![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!")
@ -37,7 +36,7 @@ Find us at:
[![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/nextcloud) [![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/nextcloud)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/nextcloud) [![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/nextcloud)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/nextcloud) [![Docker Stars](https://img.shields.io/docker/stars/linuxserver/nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/nextcloud)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-nextcloud%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/) [![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-nextcloud%2Fjob%2Fdevelop%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fnextcloud%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/nextcloud/latest/index.html) [![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fnextcloud%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/nextcloud/latest/index.html)
[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. [Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are.
@ -50,7 +49,7 @@ Where are your photos and documents? With Nextcloud you pick a server of your ch
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/nextcloud:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/nextcloud:develop` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are: The architectures supported by this image are:
@ -60,6 +59,15 @@ The architectures supported by this image are:
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | | | armhf | ❌ | |
## Version Tags
This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.
| Tag | Available | Description |
| :----: | :----: |--- |
| latest | ✅ | Stable Nextcloud releases |
| develop | ✅ | Beta Nextcloud pre-releases *only* |
## 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/).
@ -96,7 +104,7 @@ If you are using a reverse proxy which validates certificates, you need to [disa
## Usage ## Usage
Here are some example snippets to help you get started creating a container. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
@ -105,7 +113,7 @@ Here are some example snippets to help you get started creating a container.
version: "2.1" version: "2.1"
services: services:
nextcloud: nextcloud:
image: lscr.io/linuxserver/nextcloud:latest image: lscr.io/linuxserver/nextcloud:develop
container_name: nextcloud container_name: nextcloud
environment: environment:
- PUID=1000 - PUID=1000
@ -131,13 +139,12 @@ docker run -d \
-v /path/to/appdata:/config \ -v /path/to/appdata:/config \
-v /path/to/data:/data \ -v /path/to/data:/data \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/nextcloud:latest lscr.io/linuxserver/nextcloud:develop
``` ```
## Parameters ## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container. Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
@ -155,10 +162,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example: As an example:
```bash ```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword -e FILE__MYVAR=/run/secrets/mysecretvariable
``` ```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file. Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications ## Umask for running applications
@ -167,15 +174,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers ## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`. When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below: In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```bash ```bash
$ id username id your_user
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) ```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
``` ```
## Docker Mods ## Docker Mods
@ -186,12 +198,29 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: `docker exec -it nextcloud /bin/bash` * Shell access whilst the container is running:
* To monitor the logs of the container in realtime: `docker logs -f nextcloud`
* container version number ```bash
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' nextcloud` docker exec -it nextcloud /bin/bash
* image version number ```
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:latest`
* To monitor the logs of the container in realtime:
```bash
docker logs -f nextcloud
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' nextcloud
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:develop
```
## Updating Info ## Updating Info
@ -201,38 +230,83 @@ Below are the instructions for updating containers:
### Via Docker Compose ### Via Docker Compose
* Update all images: `docker-compose pull` * Update images:
* or update a single image: `docker-compose pull nextcloud` * All images:
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d nextcloud` ```bash
* You can also remove the old dangling images: `docker image prune` docker-compose pull
```
* Single image:
```bash
docker-compose pull nextcloud
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d nextcloud
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run ### Via Docker Run
* Update the image: `docker pull lscr.io/linuxserver/nextcloud:latest` * Update the image:
* Stop the running container: `docker stop nextcloud`
* Delete the container: `docker rm nextcloud` ```bash
docker pull lscr.io/linuxserver/nextcloud:develop
```
* Stop the running container:
```bash
docker stop nextcloud
```
* Delete the container:
```bash
docker rm nextcloud
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved) * Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune` * You can also remove the old dangling images:
```bash
docker image prune
```
### Via Watchtower auto-updater (only use if you don't remember the original parameters) ### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run: * Pull the latest image at its tag and replace it with the same env variables in one run:
```bash ```bash
docker run --rm \ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \ containrrr/watchtower \
--run-once nextcloud --run-once nextcloud
``` ```
* You can also remove the old dangling images: `docker image prune` * You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose). **warning**: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. **tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally ## Building locally
@ -244,7 +318,7 @@ cd docker-nextcloud
docker build \ docker build \
--no-cache \ --no-cache \
--pull \ --pull \
-t lscr.io/linuxserver/nextcloud:latest . -t lscr.io/linuxserver/nextcloud:develop .
``` ```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
@ -257,6 +331,9 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **28.10.23:** - Disable web upgrades using occ during init.
* **31.08.23:** - Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image.
* **14.08.23:** - Add develop branch.
* **25.06.23:** - Move Nextcloud installation inside container. Remove CLI updater. [See changes announcement](https://info.linuxserver.io/issues/2023-06-25-nextcloud/). * **25.06.23:** - Move Nextcloud installation inside container. Remove CLI updater. [See changes announcement](https://info.linuxserver.io/issues/2023-06-25-nextcloud/).
* **21.06.23:** - Existing users should update `/config/nginx/site-confs/default.conf` - Security fix for real ip settings. * **21.06.23:** - Existing users should update `/config/nginx/site-confs/default.conf` - Security fix for real ip settings.
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf. * **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.

View File

@ -3,10 +3,10 @@
# jenkins variables # jenkins variables
project_name: docker-nextcloud project_name: docker-nextcloud
external_type: na external_type: na
custom_version_command: "curl -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" custom_version_command: "curl -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"
release_type: stable release_type: prerelease
release_tag: latest release_tag: develop
ls_branch: master ls_branch: develop
build_armhf: false build_armhf: false
repo_vars: repo_vars:
- BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE' - BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE'

View File

@ -1,378 +1,384 @@
NAME VERSION TYPE NAME VERSION TYPE
Executes a command and passes the stdio streams of the created process to TCP sockets 1.0.0.0 dotnet @nextcloud/text 28.0.0-dev.1 npm
alpine-baselayout 3.4.3-r1 apk ExecutesacommandandpassesthestdiostreamsofthecreatedprocesstoTCPsockets 1.0.0.0 dotnet
alpine-baselayout-data 3.4.3-r1 apk activity 2.20.0 npm
alpine-keys 2.4-r1 apk alpine-baselayout 3.4.3-r1 apk
alpine-release 3.18.3-r0 apk alpine-baselayout-data 3.4.3-r1 apk
alsa-lib 1.2.9-r1 apk alpine-keys 2.4-r1 apk
amphp/amp v2.6.2 php-composer alpine-release 3.18.4-r0 apk
amphp/byte-stream v1.8.1 php-composer alsa-lib 1.2.9-r1 apk
amphp/parallel v1.4.3 php-composer amphp/amp v2.6.2 php-composer
amphp/parser v1.1.0 php-composer amphp/byte-stream v1.8.1 php-composer
amphp/process v1.1.4 php-composer amphp/parallel v1.4.3 php-composer
amphp/serialization v1.0.0 php-composer amphp/parser v1.1.0 php-composer
amphp/sync v1.4.2 php-composer amphp/process v1.1.4 php-composer
aom-libs 3.6.1-r0 apk amphp/serialization v1.0.0 php-composer
apache2-utils 2.4.57-r3 apk amphp/sync v1.4.2 php-composer
apk-tools 2.14.0-r2 apk aom-libs 3.6.1-r0 apk
apr 1.7.4-r0 apk apache2-utils 2.4.58-r0 apk
apr-util 1.6.3-r1 apk apk-tools 2.14.0-r2 apk
argon2-libs 20190702-r4 apk apr 1.7.4-r0 apk
avahi-libs 0.8-r13 apk apr-util 1.6.3-r1 apk
aws/aws-crt-php v1.0.2 php-composer argon2-libs 20190702-r4 apk
aws/aws-sdk-php 3.240.8 php-composer avahi-libs 0.8-r13 apk
bantu/ini-get-wrapper v1.0.1 php-composer aws/aws-crt-php v1.0.2 php-composer
bash 5.2.15-r5 apk aws/aws-sdk-php 3.240.8 php-composer
beberlei/assert v3.3.1 php-composer bantu/ini-get-wrapper v1.0.1 php-composer
brick/math 0.9.2 php-composer bash 5.2.15-r5 apk
brotli-libs 1.0.9-r14 apk beberlei/assert v3.3.1 php-composer
busybox 1.36.1-r2 apk brick/math 0.9.2 php-composer
busybox-binsh 1.36.1-r2 apk brotli-libs 1.0.9-r14 apk
c-client 2007f-r15 apk bruteforcesettings 2.8.0 npm
ca-certificates 20230506-r0 apk busybox 1.36.1-r4 apk
ca-certificates-bundle 20230506-r0 apk busybox-binsh 1.36.1-r4 apk
cairo 1.17.8-r1 apk c-client 2007f-r15 apk
cairo-gobject 1.17.8-r1 apk ca-certificates 20230506-r0 apk
christian-riesen/base32 1.6.0 php-composer ca-certificates-bundle 20230506-r0 apk
christophwurst/id3parser v0.1.4 php-composer cairo 1.17.8-r1 apk
cjson 1.7.15-r4 apk cairo-gobject 1.17.8-r1 apk
coreutils 9.3-r1 apk christian-riesen/base32 1.6.0 php-composer
cups-libs 2.4.6-r0 apk cjson 1.7.15-r4 apk
curl 8.2.1-r0 apk coreutils 9.3-r1 apk
cweagans/composer-patches 1.7.1 php-composer cups-libs 2.4.7-r0 apk
darsyn/ip 4.1.0 php-composer curl 8.4.0-r0 apk
dbus-libs 1.14.8-r0 apk cweagans/composer-patches 1.7.3 php-composer
deepdiver/zipstreamer 2.0.0 php-composer darsyn/ip 4.1.0 php-composer
deepdiver1975/tarstreamer 2.0.0 php-composer dbus-libs 1.14.8-r0 apk
doctrine/cache 2.2.0 php-composer deepdiver/zipstreamer 2.0.0 php-composer
doctrine/dbal 3.3.8 php-composer deepdiver1975/tarstreamer v2.1.0 php-composer
doctrine/deprecations v1.0.0 php-composer doctrine/cache 2.2.0 php-composer
doctrine/event-manager 1.2.0 php-composer doctrine/dbal 3.7.0 php-composer
doctrine/lexer 1.2.3 php-composer doctrine/deprecations 1.1.2 php-composer
egulias/email-validator 3.2.5 php-composer doctrine/event-manager 1.2.0 php-composer
ffmpeg 6.0-r15 apk doctrine/lexer 1.2.3 php-composer
ffmpeg-libavcodec 6.0-r15 apk egulias/email-validator 3.2.5 php-composer
ffmpeg-libavdevice 6.0-r15 apk ffmpeg 6.0-r15 apk
ffmpeg-libavfilter 6.0-r15 apk ffmpeg-libavcodec 6.0-r15 apk
ffmpeg-libavformat 6.0-r15 apk ffmpeg-libavdevice 6.0-r15 apk
ffmpeg-libavutil 6.0-r15 apk ffmpeg-libavfilter 6.0-r15 apk
ffmpeg-libpostproc 6.0-r15 apk ffmpeg-libavformat 6.0-r15 apk
ffmpeg-libswresample 6.0-r15 apk ffmpeg-libavutil 6.0-r15 apk
ffmpeg-libswscale 6.0-r15 apk ffmpeg-libpostproc 6.0-r15 apk
fgrosse/phpasn1 v2.3.0 php-composer ffmpeg-libswresample 6.0-r15 apk
flac-libs 1.4.3-r0 apk ffmpeg-libswscale 6.0-r15 apk
fontconfig 2.14.2-r3 apk fgrosse/phpasn1 v2.3.0 php-composer
freetype 2.13.0-r5 apk files_pdfviewer 2.9.0 npm
fribidi 1.0.13-r0 apk firstrunwizard 2.17.0 npm
fusonic/linq v1.1.0 php-composer flac-libs 1.4.3-r0 apk
fusonic/opengraph v2.2.0 php-composer fontconfig 2.14.2-r3 apk
gdbm 1.23-r1 apk freetype 2.13.0-r5 apk
gdk-pixbuf 2.42.10-r5 apk fribidi 1.0.13-r0 apk
ghostscript 10.01.2-r0 apk fusonic/linq v1.1.0 php-composer
giggsey/libphonenumber-for-php 8.13.7 php-composer fusonic/opengraph v2.2.0 php-composer
giggsey/locale 2.3 php-composer gdbm 1.23-r1 apk
git 2.40.1-r0 apk gdk-pixbuf 2.42.10-r5 apk
glib 2.76.4-r0 apk ghostscript 10.02.0-r0 apk
glslang-libs 1.3.243.0-r1 apk giggsey/libphonenumber-for-php-lite 8.13.12 php-composer
gmp 6.2.1-r3 apk git 2.40.1-r0 apk
gnu-libiconv 1.17-r1 apk glib 2.76.4-r0 apk
gnu-libiconv-libs 1.17-r1 apk glslang-libs 1.3.243.0-r1 apk
gnutls 3.8.0-r2 apk gmp 6.2.1-r3 apk
graphite2 1.3.14-r5 apk gnu-libiconv 1.17-r1 apk
guzzlehttp/guzzle 7.5.0 php-composer gnu-libiconv-libs 1.17-r1 apk
guzzlehttp/promises 1.5.2 php-composer gnutls 3.8.0-r2 apk
guzzlehttp/psr7 2.4.5 php-composer graphite2 1.3.14-r5 apk
guzzlehttp/uri-template v0.2.0 php-composer guzzlehttp/guzzle 7.5.0 php-composer
harfbuzz 7.3.0-r0 apk guzzlehttp/promises 1.5.2 php-composer
hexogen/kdtree v0.2.5 php-composer guzzlehttp/psr7 2.4.5 php-composer
hwdata-pci 0.370-r0 apk guzzlehttp/uri-template v0.2.0 php-composer
icewind/searchdav v3.0.1 php-composer harfbuzz 7.3.0-r0 apk
icewind/smb v3.5.4 php-composer hexogen/kdtree v0.2.5 php-composer
icewind/streams v0.7.7 php-composer hwdata-pci 0.370-r0 apk
icu-data-en 73.2-r2 apk icewind/searchdav v3.0.1 php-composer
icu-libs 73.2-r2 apk icewind/smb v3.5.4 php-composer
imagemagick 7.1.1.13-r0 apk icewind/streams v0.7.7 php-composer
imagemagick-libs 7.1.1.13-r0 apk icu-data-en 73.2-r2 apk
jansson 2.14-r3 apk icu-libs 73.2-r2 apk
jbig2dec 0.19-r3 apk imagemagick 7.1.1.13-r1 apk
jq 1.6-r3 apk imagemagick-libs 7.1.1.13-r1 apk
justinrainbow/json-schema 5.2.10 php-composer jansson 2.14-r3 apk
lame-libs 3.100-r5 apk jbig2dec 0.19-r3 apk
laravel/serializable-closure v1.2.2 php-composer jq 1.6-r3 apk
lcms2 2.15-r2 apk justinrainbow/json-schema 5.2.10 php-composer
ldb 2.7.2-r1 apk lame-libs 3.100-r5 apk
league/flysystem 2.5.0 php-composer laravel/serializable-closure v1.2.2 php-composer
league/mime-type-detection 1.11.0 php-composer lcms2 2.15-r2 apk
league/uri 6.4.0 php-composer ldb 2.7.2-r1 apk
league/uri-interfaces 2.2.0 php-composer league/flysystem 2.5.0 php-composer
libacl 2.3.1-r3 apk league/mime-type-detection 1.11.0 php-composer
libarchive 3.6.2-r2 apk league/uri 6.4.0 php-composer
libass 0.17.1-r0 apk league/uri-interfaces 2.2.0 php-composer
libasyncns 0.8-r1 apk libacl 2.3.1-r3 apk
libattr 2.5.1-r4 apk libarchive 3.7.2-r0 apk
libavif 0.11.1-r2 apk libass 0.17.1-r0 apk
libblkid 2.38.1-r8 apk libasyncns 0.8-r1 apk
libbluray 1.3.4-r0 apk libattr 2.5.1-r4 apk
libbsd 0.11.7-r1 apk libavif 0.11.1-r2 apk
libbz2 1.0.8-r5 apk libblkid 2.38.1-r8 apk
libc-utils 0.7.2-r5 apk libbluray 1.3.4-r0 apk
libcap2 2.69-r0 apk libbsd 0.11.7-r1 apk
libcrypto3 3.1.2-r0 apk libbz2 1.0.8-r5 apk
libcurl 8.2.1-r0 apk libc-utils 0.7.2-r5 apk
libdav1d 1.2.1-r0 apk libcap2 2.69-r0 apk
libde265 1.0.12-r0 apk libcrypto3 3.1.4-r0 apk
libdrm 2.4.115-r4 apk libcurl 8.4.0-r0 apk
libedit 20221030.3.1-r1 apk libdav1d 1.2.1-r0 apk
libevent 2.1.12-r6 apk libde265 1.0.12-r0 apk
libexpat 2.5.0-r1 apk libdrm 2.4.115-r4 apk
libffi 3.4.4-r2 apk libedit 20221030.3.1-r1 apk
libformw 6.4_p20230506-r0 apk libevent 2.1.12-r6 apk
libgcc 12.2.1_git20220924-r10 apk libexpat 2.5.0-r1 apk
libgomp 12.2.1_git20220924-r10 apk libffi 3.4.4-r2 apk
libheif 1.16.2-r0 apk libformw 6.4_p20230506-r0 apk
libhwy 1.0.4-r1 apk libgcc 12.2.1_git20220924-r10 apk
libice 1.1.1-r2 apk libgomp 12.2.1_git20220924-r10 apk
libidn2 2.3.4-r1 apk libheif 1.16.2-r0 apk
libintl 0.21.1-r7 apk libhwy 1.0.4-r1 apk
libjpeg-turbo 2.1.5.1-r3 apk libice 1.1.1-r2 apk
libjxl 0.8.2-r0 apk libidn2 2.3.4-r1 apk
libldap 2.6.5-r0 apk libintl 0.21.1-r7 apk
libltdl 2.4.7-r2 apk libjpeg-turbo 2.1.5.1-r3 apk
libmcrypt 2.5.8-r10 apk libjxl 0.8.2-r0 apk
libmd 1.0.4-r2 apk libldap 2.6.5-r0 apk
libmemcached-libs 1.1.4-r1 apk libltdl 2.4.7-r2 apk
libmount 2.38.1-r8 apk libmd 1.0.4-r2 apk
libncursesw 6.4_p20230506-r0 apk libmemcached-libs 1.1.4-r1 apk
libogg 1.3.5-r4 apk libmount 2.38.1-r8 apk
libopenmpt 0.7.2-r0 apk libncursesw 6.4_p20230506-r0 apk
libpanelw 6.4_p20230506-r0 apk libogg 1.3.5-r4 apk
libpciaccess 0.17-r2 apk libopenmpt 0.7.2-r0 apk
libplacebo 5.264.1-r1 apk libpanelw 6.4_p20230506-r0 apk
libpng 1.6.39-r3 apk libpciaccess 0.17-r2 apk
libpq 15.4-r0 apk libplacebo 5.264.1-r1 apk
libproc2 4.0.3-r1 apk libpng 1.6.39-r3 apk
libpulse 16.1-r10 apk libpq 15.4-r0 apk
libraw 0.21.1-r1 apk libproc2 4.0.4-r0 apk
librist 0.2.7-r0 apk libpulse 16.1-r10 apk
librsvg 2.56.3-r0 apk libraw 0.21.1-r1 apk
libsasl 2.1.28-r4 apk librist 0.2.7-r0 apk
libsm 1.2.4-r1 apk librsvg 2.56.3-r0 apk
libsmbclient 4.18.5-r0 apk libsasl 2.1.28-r4 apk
libsndfile 1.2.0-r2 apk libsm 1.2.4-r1 apk
libsodium 1.0.18-r3 apk libsmbclient 4.18.8-r0 apk
libsrt 1.5.2-r0 apk libsndfile 1.2.0-r2 apk
libssh 0.10.5-r0 apk libsodium 1.0.18-r3 apk
libssl3 3.1.2-r0 apk libsrt 1.5.2-r0 apk
libstdc++ 12.2.1_git20220924-r10 apk libssh 0.10.5-r0 apk
libtasn1 4.19.0-r1 apk libssl3 3.1.4-r0 apk
libtheora 1.1.1-r17 apk libstdc++ 12.2.1_git20220924-r10 apk
libunibreak 5.1-r0 apk libtasn1 4.19.0-r1 apk
libunistring 1.1-r1 apk libtheora 1.1.1-r17 apk
libuuid 2.38.1-r8 apk libunibreak 5.1-r0 apk
libva 2.18.0-r1 apk libunistring 1.1-r1 apk
libvdpau 1.5-r1 apk libuuid 2.38.1-r8 apk
libvorbis 1.3.7-r1 apk libva 2.18.0-r1 apk
libvpx 1.13.0-r1 apk libvdpau 1.5-r1 apk
libwbclient 4.18.5-r0 apk libvorbis 1.3.7-r1 apk
libwebp 1.3.1-r0 apk libvpx 1.13.0-r2 apk
libx11 1.8.4-r4 apk libwbclient 4.18.8-r0 apk
libxau 1.0.11-r2 apk libwebp 1.3.2-r0 apk
libxcb 1.15-r1 apk libx11 1.8.7-r0 apk
libxdmcp 1.1.4-r2 apk libxau 1.0.11-r2 apk
libxext 1.3.5-r2 apk libxcb 1.15-r1 apk
libxfixes 6.0.1-r2 apk libxdmcp 1.1.4-r2 apk
libxft 2.3.8-r1 apk libxext 1.3.5-r2 apk
libxml2 2.11.4-r0 apk libxfixes 6.0.1-r2 apk
libxpm 3.5.16-r1 apk libxft 2.3.8-r1 apk
libxrender 0.9.11-r3 apk libxml2 2.11.4-r0 apk
libxt 1.3.0-r2 apk libxpm 3.5.16-r1 apk
libxxhash 0.8.2-r0 apk libxrender 0.9.11-r3 apk
libzip 1.9.2-r2 apk libxt 1.3.0-r2 apk
libzmq 4.3.4-r4 apk libxxhash 0.8.2-r0 apk
linux-pam 1.5.2-r10 apk libzip 1.9.2-r2 apk
lmdb 0.9.31-r0 apk libzmq 4.3.4-r4 apk
logrotate 3.21.0-r1 apk linux-pam 1.5.2-r10 apk
lz4-libs 1.9.4-r4 apk lmdb 0.9.31-r0 apk
mbedtls 2.28.4-r0 apk logrotate 3.21.0-r1 apk
mexitek/phpcolors v1.0.4 php-composer lz4-libs 1.9.4-r4 apk
microsoft/azure-storage-blob 1.5.4 php-composer mbedtls 2.28.5-r0 apk
microsoft/azure-storage-common 1.5.2 php-composer mexitek/phpcolors v1.0.4 php-composer
mlocati/ip-lib 1.18.0 php-composer microsoft/azure-storage-blob 1.5.4 php-composer
mpg123-libs 1.31.3-r1 apk microsoft/azure-storage-common 1.5.2 php-composer
mtdowling/jmespath.php 2.6.1 php-composer mlocati/ip-lib 1.18.0 php-composer
musl 1.2.4-r1 apk mpg123-libs 1.31.3-r1 apk
musl-utils 1.2.4-r1 apk mtdowling/jmespath.php 2.6.1 php-composer
nano 7.2-r1 apk musl 1.2.4-r2 apk
ncurses-terminfo-base 6.4_p20230506-r0 apk musl-utils 1.2.4-r2 apk
netcat-openbsd 1.219-r1 apk nano 7.2-r1 apk
nettle 3.8.1-r2 apk ncurses-terminfo-base 6.4_p20230506-r0 apk
nextcloud/lognormalizer v1.0.0 php-composer netcat-openbsd 1.219-r1 apk
nghttp2-libs 1.55.1-r0 apk nettle 3.8.1-r2 apk
nginx 1.24.0 binary nextcloud 1.0.0 npm
nginx 1.24.0-r6 apk nextcloud/lognormalizer v1.0.0 php-composer
numactl 2.0.16-r4 apk nghttp2-libs 1.57.0-r0 apk
onevpl-libs 2023.2.1-r0 apk nginx 1.24.0-r7 apk
oniguruma 6.9.8-r1 apk notifications 2.16.0 npm
openssl 3.1.2-r0 apk numactl 2.0.16-r4 apk
opis/closure 3.6.3 php-composer onevpl-libs 2023.2.1-r0 apk
opus 1.4-r0 apk oniguruma 6.9.8-r1 apk
orc 0.4.34-r0 apk openssl 3.1.4-r0 apk
p11-kit 0.24.1-r2 apk opus 1.4-r0 apk
pango 1.50.14-r1 apk orc 0.4.34-r0 apk
pcre 8.45-r3 apk p11-kit 0.24.1-r2 apk
pcre2 10.42-r1 apk pango 1.50.14-r1 apk
pear/archive_tar 1.4.14 php-composer password_policy 1.18.0 npm
pear/console_getopt v1.4.3 php-composer pcre 8.45-r3 apk
pear/pear-core-minimal v1.10.10 php-composer pcre2 10.42-r1 apk
pear/pear_exception v1.0.2 php-composer pear/archive_tar 1.4.14 php-composer
php-fpm 8.2.8 binary pear/console_getopt v1.4.3 php-composer
php-http/guzzle7-adapter 1.0.0 php-composer pear/pear-core-minimal v1.10.10 php-composer
php-http/httplug 2.2.0 php-composer pear/pear_exception v1.0.2 php-composer
php-http/promise 1.1.0 php-composer photos 2.4.0 npm
php-opencloud/openstack v3.2.1 php-composer php-http/guzzle7-adapter 1.0.0 php-composer
php82 8.2.8-r0 apk php-http/httplug 2.2.0 php-composer
php82-bcmath 8.2.8-r0 apk php-http/promise 1.1.0 php-composer
php82-bz2 8.2.8-r0 apk php-opencloud/openstack v3.2.1 php-composer
php82-common 8.2.8-r0 apk php82 8.2.12-r0 apk
php82-ctype 8.2.8-r0 apk php82-bcmath 8.2.12-r0 apk
php82-curl 8.2.8-r0 apk php82-bz2 8.2.12-r0 apk
php82-dom 8.2.8-r0 apk php82-common 8.2.12-r0 apk
php82-exif 8.2.8-r0 apk php82-ctype 8.2.12-r0 apk
php82-fileinfo 8.2.8-r0 apk php82-curl 8.2.12-r0 apk
php82-fpm 8.2.8-r0 apk php82-dom 8.2.12-r0 apk
php82-ftp 8.2.8-r0 apk php82-exif 8.2.12-r0 apk
php82-gd 8.2.8-r0 apk php82-fileinfo 8.2.12-r0 apk
php82-gmp 8.2.8-r0 apk php82-fpm 8.2.12-r0 apk
php82-iconv 8.2.8-r0 apk php82-ftp 8.2.12-r0 apk
php82-imap 8.2.8-r0 apk php82-gd 8.2.12-r0 apk
php82-intl 8.2.8-r0 apk php82-gmp 8.2.12-r0 apk
php82-ldap 8.2.8-r0 apk php82-iconv 8.2.12-r0 apk
php82-mbstring 8.2.8-r0 apk php82-imap 8.2.12-r0 apk
php82-mysqlnd 8.2.8-r0 apk php82-intl 8.2.12-r0 apk
php82-opcache 8.2.8-r0 apk php82-ldap 8.2.12-r0 apk
php82-openssl 8.2.8-r0 apk php82-mbstring 8.2.12-r0 apk
php82-pcntl 8.2.8-r0 apk php82-mysqlnd 8.2.12-r0 apk
php82-pdo 8.2.8-r0 apk php82-opcache 8.2.12-r0 apk
php82-pdo_mysql 8.2.8-r0 apk php82-openssl 8.2.12-r0 apk
php82-pdo_pgsql 8.2.8-r0 apk php82-pcntl 8.2.12-r0 apk
php82-pdo_sqlite 8.2.8-r0 apk php82-pdo 8.2.12-r0 apk
php82-pecl-apcu 5.1.22-r0 apk php82-pdo_mysql 8.2.12-r0 apk
php82-pecl-igbinary 3.2.14-r0 apk php82-pdo_pgsql 8.2.12-r0 apk
php82-pecl-imagick 3.7.0-r5 apk php82-pdo_sqlite 8.2.12-r0 apk
php82-pecl-mcrypt 1.0.6-r0 apk php82-pecl-apcu 5.1.22-r0 apk
php82-pecl-memcached 3.2.0-r1 apk php82-pecl-igbinary 3.2.14-r0 apk
php82-pecl-msgpack 2.2.0-r0 apk php82-pecl-imagick 3.7.0-r5 apk
php82-pecl-redis 5.3.7-r2 apk php82-pecl-memcached 3.2.0-r1 apk
php82-pecl-smbclient 1.1.1-r0 apk php82-pecl-msgpack 2.2.0-r0 apk
php82-pgsql 8.2.8-r0 apk php82-pecl-redis 6.0.2-r0 apk
php82-phar 8.2.8-r0 apk php82-pecl-smbclient 1.1.1-r0 apk
php82-posix 8.2.8-r0 apk php82-pgsql 8.2.12-r0 apk
php82-session 8.2.8-r0 apk php82-phar 8.2.12-r0 apk
php82-simplexml 8.2.8-r0 apk php82-posix 8.2.12-r0 apk
php82-sockets 8.2.8-r0 apk php82-session 8.2.12-r0 apk
php82-sodium 8.2.8-r0 apk php82-simplexml 8.2.12-r0 apk
php82-sqlite3 8.2.8-r0 apk php82-sockets 8.2.12-r0 apk
php82-sysvsem 8.2.8-r0 apk php82-sodium 8.2.12-r0 apk
php82-xml 8.2.8-r0 apk php82-sqlite3 8.2.12-r0 apk
php82-xmlreader 8.2.8-r0 apk php82-sysvsem 8.2.12-r0 apk
php82-xmlwriter 8.2.8-r0 apk php82-xml 8.2.12-r0 apk
php82-zip 8.2.8-r0 apk php82-xmlreader 8.2.12-r0 apk
phpseclib/phpseclib 2.0.40 php-composer php82-xmlwriter 8.2.12-r0 apk
pimple/pimple v3.5.0 php-composer php82-zip 8.2.12-r0 apk
pixman 0.42.2-r1 apk phpseclib/phpseclib 2.0.45 php-composer
pkgconf 1.9.5-r0 apk pimple/pimple v3.5.0 php-composer
popt 1.19-r2 apk pixman 0.42.2-r1 apk
procps-ng 4.0.3-r1 apk pkgconf 1.9.5-r0 apk
psr/cache 1.0.1 php-composer popt 1.19-r2 apk
psr/clock 1.0.0 php-composer privacy 1.12.0 npm
psr/container 2.0.2 php-composer procps-ng 4.0.4-r0 apk
psr/event-dispatcher 1.0.0 php-composer psr/cache 3.0.0 php-composer
psr/http-client 1.0.1 php-composer psr/clock 1.0.0 php-composer
psr/http-factory 1.0.1 php-composer psr/container 2.0.2 php-composer
psr/http-message 1.0.1 php-composer psr/event-dispatcher 1.0.0 php-composer
psr/log 1.1.4 php-composer psr/http-client 1.0.1 php-composer
punic/punic 1.6.5 php-composer psr/http-factory 1.0.1 php-composer
ralouphie/getallheaders 3.0.3 php-composer psr/http-message 1.0.1 php-composer
ramsey/collection 1.1.3 php-composer psr/log 1.1.4 php-composer
ramsey/uuid 4.1.1 php-composer punic/punic 3.8.1 php-composer
readline 8.2.1-r1 apk ralouphie/getallheaders 3.0.3 php-composer
rsync 3.2.7-r4 apk ramsey/collection 1.1.3 php-composer
rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer ramsey/uuid 4.1.1 php-composer
rubix/tensor 2.2.3 php-composer readline 8.2.1-r1 apk
rullzer/easytotp v0.1.4 php-composer recommendations 2.0.0 npm
sabre/dav 4.4.0 php-composer related_resources 1.3.0 npm
sabre/event 5.1.4 php-composer rsync 3.2.7-r4 apk
sabre/http 5.1.5 php-composer rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer
sabre/uri 2.2.2 php-composer rubix/tensor 2.2.3 php-composer
sabre/vobject 4.4.2 php-composer rullzer/easytotp v0.1.4 php-composer
sabre/xml 2.2.5 php-composer sabre/dav 4.4.0 php-composer
samba-client 4.18.5-r0 apk sabre/event 5.1.4 php-composer
samba-client-libs 4.18.5-r0 apk sabre/http 5.1.10 php-composer
samba-common 4.18.5-r0 apk sabre/uri 2.3.3 php-composer
samba-libs 4.18.5-r0 apk sabre/vobject 4.5.4 php-composer
samba-util-libs 4.18.5-r0 apk sabre/xml 2.2.6 php-composer
scanelf 1.3.7-r1 apk samba-client 4.18.8-r0 apk
scssphp/scssphp v1.11.0 php-composer samba-client-libs 4.18.8-r0 apk
sdl2 2.26.5-r0 apk samba-common 4.18.8-r0 apk
shaderc 2023.3-r1 apk samba-libs 4.18.8-r0 apk
shadow 4.13-r4 apk samba-util-libs 4.18.8-r0 apk
shared-mime-info 2.2-r5 apk scanelf 1.3.7-r1 apk
skalibs 2.13.1.1-r1 apk scssphp/scssphp v1.11.0 php-composer
soxr 0.1.3-r5 apk sdl2 2.26.5-r0 apk
speexdsp 1.2.1-r1 apk shaderc 2023.3-r1 apk
spirv-tools 1.3.243.0-r1 apk shadow 4.13-r4 apk
spomky-labs/base64url v2.0.4 php-composer shared-mime-info 2.2-r5 apk
spomky-labs/cbor-php v2.0.1 php-composer skalibs 2.13.1.1-r1 apk
sqlite-libs 3.41.2-r2 apk soxr 0.1.3-r5 apk
ssl_client 1.36.1-r2 apk speexdsp 1.2.1-r1 apk
stecman/symfony-console-completion 0.11.0 php-composer spirv-tools 1.3.243.0-r1 apk
sudo 1.9.13_p3-r2 apk spomky-labs/base64url v2.0.4 php-composer
svt-av1-libs 1.6.0-r0 apk spomky-labs/cbor-php v2.0.1 php-composer
swiftmailer/swiftmailer v6.3.0 php-composer sqlite-libs 3.41.2-r2 apk
symfony/console v5.4.19 php-composer ssl_client 1.36.1-r4 apk
symfony/css-selector v5.4.11 php-composer stecman/symfony-console-completion 0.11.0 php-composer
symfony/deprecation-contracts v2.5.2 php-composer sudo 1.9.13_p3-r2 apk
symfony/dom-crawler v5.4.11 php-composer suspicious_login 6.0.0 npm
symfony/event-dispatcher v4.4.30 php-composer svt-av1-libs 1.6.0-r0 apk
symfony/event-dispatcher-contracts v1.1.9 php-composer symfony/console v5.4.24 php-composer
symfony/http-foundation v5.4.10 php-composer symfony/css-selector v5.4.11 php-composer
symfony/mailer v5.4.19 php-composer symfony/deprecation-contracts v3.0.2 php-composer
symfony/mime v5.4.19 php-composer symfony/dom-crawler v5.4.11 php-composer
symfony/polyfill-ctype v1.23.0 php-composer symfony/event-dispatcher v5.4.26 php-composer
symfony/polyfill-iconv v1.27.0 php-composer symfony/event-dispatcher-contracts v3.0.2 php-composer
symfony/polyfill-intl-grapheme v1.23.1 php-composer symfony/http-foundation v5.4.25 php-composer
symfony/polyfill-intl-idn v1.27.0 php-composer symfony/mailer v5.4.22 php-composer
symfony/polyfill-intl-normalizer v1.27.0 php-composer symfony/mime v5.4.19 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer symfony/polyfill-ctype v1.23.0 php-composer
symfony/polyfill-php72 v1.27.0 php-composer symfony/polyfill-intl-grapheme v1.23.1 php-composer
symfony/polyfill-php73 v1.23.0 php-composer symfony/polyfill-intl-idn v1.27.0 php-composer
symfony/polyfill-php73 v1.26.0 php-composer symfony/polyfill-intl-normalizer v1.27.0 php-composer
symfony/polyfill-php80 v1.26.0 php-composer symfony/polyfill-mbstring v1.27.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer symfony/polyfill-php72 v1.27.0 php-composer
symfony/process v4.4.30 php-composer symfony/polyfill-php73 v1.23.0 php-composer
symfony/routing v4.4.30 php-composer symfony/polyfill-php73 v1.26.0 php-composer
symfony/service-contracts v3.0.2 php-composer symfony/polyfill-php80 v1.27.0 php-composer
symfony/string v6.0.19 php-composer symfony/process v5.4.24 php-composer
symfony/translation v4.4.41 php-composer symfony/routing v5.4.25 php-composer
symfony/translation-contracts v2.4.0 php-composer symfony/service-contracts v3.0.2 php-composer
talloc 2.4.0-r1 apk symfony/string v6.0.19 php-composer
tdb-libs 1.4.8-r1 apk symfony/translation v5.4.24 php-composer
tevent 0.14.1-r1 apk symfony/translation-contracts v2.4.0 php-composer
thecodingmachine/safe v1.3.3 php-composer talloc 2.4.0-r1 apk
tiff 4.5.1-r0 apk tdb-libs 1.4.8-r1 apk
tzdata 2023c-r1 apk tevent 0.14.1-r1 apk
utmps-libs 0.1.2.1-r1 apk thecodingmachine/safe v1.3.3 php-composer
v4l-utils-libs 1.24.1-r0 apk tiff 4.5.1-r0 apk
vidstab 1.1.1-r0 apk twofactor_totp 10.0.0-beta2 npm
vulkan-loader 1.3.243.0-r1 apk tzdata 2023c-r1 apk
wayland-libs-client 1.22.0-r2 apk utmps-libs 0.1.2.1-r1 apk
web-auth/cose-lib v3.3.9 php-composer v4l-utils-libs 1.24.1-r0 apk
web-auth/metadata-service v3.3.9 php-composer vidstab 1.1.1-r0 apk
web-auth/webauthn-lib v3.3.9 php-composer viewer 2.2.0 npm
x264-libs 0.164_git20220602-r1 apk vulkan-loader 1.3.243.0-r1 apk
x265-libs 3.5-r4 apk wapmorgan/mp3info 0.1.0 php-composer
xvidcore 1.3.7-r1 apk wayland-libs-client 1.22.0-r2 apk
xz-libs 5.4.3-r0 apk web-auth/cose-lib v3.3.9 php-composer
zimg 3.0.5-r0 apk web-auth/metadata-service v3.3.9 php-composer
zlib 1.2.13-r1 apk web-auth/webauthn-lib v3.3.9 php-composer
zstd-libs 1.5.5-r4 apk x264-libs 0.164_git20220602-r1 apk
x265-libs 3.5-r4 apk
xvidcore 1.3.7-r1 apk
xz-libs 5.4.3-r0 apk
zimg 3.0.5-r0 apk
zlib 1.2.13-r1 apk
zstd-libs 1.5.5-r4 apk

View File

@ -17,9 +17,10 @@ available_architectures:
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# development version # development version
development_versions: false 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*" }
# container parameters # container parameters
common_param_env_vars_enabled: true common_param_env_vars_enabled: true
@ -78,6 +79,9 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "28.10.23:", desc: "Disable web upgrades using occ during init." }
- { date: "31.08.23:", desc: "Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image." }
- { date: "14.08.23:", desc: "Add develop branch." }
- { date: "25.06.23:", desc: "Move Nextcloud installation inside container. Remove CLI updater. [See changes announcement](https://info.linuxserver.io/issues/2023-06-25-nextcloud/)." } - { date: "25.06.23:", desc: "Move Nextcloud installation inside container. Remove CLI updater. [See changes announcement](https://info.linuxserver.io/issues/2023-06-25-nextcloud/)." }
- { date: "21.06.23:", desc: "Existing users should update `/config/nginx/site-confs/default.conf` - Security fix for real ip settings." } - { date: "21.06.23:", desc: "Existing users should update `/config/nginx/site-confs/default.conf` - Security fix for real ip settings." }
- { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } - { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." }

View File

@ -91,7 +91,7 @@ if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_instal
echo "Setting permissions" echo "Setting permissions"
lsiown abc:abc /data lsiown abc:abc /data
lsiown abc:abc -R \ lsiown -R abc:abc \
/app/www/public \ /app/www/public \
/config/www/nextcloud /config/www/nextcloud
@ -125,7 +125,7 @@ if occ config:system:get installed >/dev/null 2>&1; then
occ config:system:set memcache.local --value='\\OC\\Memcache\\APCu' occ config:system:set memcache.local --value='\\OC\\Memcache\\APCu'
fi fi
if ! occ config:system:get filelocking.enabled >/dev/null 2>&1; then if ! occ config:system:get filelocking.enabled >/dev/null 2>&1; then
occ config:system:set filelocking.enabled --value=true occ config:system:set filelocking.enabled --value=true --type=boolean
fi fi
if ! occ config:system:get memcache.locking >/dev/null 2>&1; then if ! occ config:system:get memcache.locking >/dev/null 2>&1; then
occ config:system:set memcache.locking --value='\\OC\\Memcache\\APCu' occ config:system:set memcache.locking --value='\\OC\\Memcache\\APCu'
@ -133,6 +133,9 @@ if occ config:system:get installed >/dev/null 2>&1; then
if ! occ config:system:get datadirectory >/dev/null 2>&1; then if ! occ config:system:get datadirectory >/dev/null 2>&1; then
occ config:system:set datadirectory --value='/data' occ config:system:set datadirectory --value='/data'
fi fi
if ! occ config:system:get upgrade.disable-web >/dev/null 2>&1; then
occ config:system:set upgrade.disable-web --value=true --type=boolean
fi
else else
echo "After completing the web-based installer, restart the Nextcloud container to apply default memory caching and transactional file locking configurations." echo "After completing the web-based installer, restart the Nextcloud container to apply default memory caching and transactional file locking configurations."
echo "Alternatively, you can apply your own configurations by editing /config/www/nextcloud/config/config.php following the documentation:" echo "Alternatively, you can apply your own configurations by editing /config/www/nextcloud/config/config.php following the documentation:"
@ -141,7 +144,7 @@ else
fi fi
# remove problematic apps # remove problematic apps
for APP in richdocumentscode updatenotification; do for APP in richdocumentscode; do
if (occ app:list | grep -q " - ${APP}:") 2>/dev/null; then if (occ app:list | grep -q " - ${APP}:") 2>/dev/null; then
echo "Removing ${APP}" echo "Removing ${APP}"
fi fi