Compare commits

..

14 Commits

Author SHA1 Message Date
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
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
34 changed files with 1133 additions and 1776 deletions

0
.editorconfig Normal file → Executable file
View File

10
.github/CONTRIBUTING.md vendored Normal file → Executable file
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://linuxserver.io/discord) * 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)
## Common files ## Common files
@ -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)
@ -105,17 +105,17 @@ docker build \
-t linuxserver/nextcloud:latest . -t linuxserver/nextcloud:latest .
``` ```
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```bash ```bash
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset docker run --rm --privileged multiarch/qemu-user-static:register --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. 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:

0
.github/FUNDING.yml vendored Normal file → Executable file
View File

2
.github/ISSUE_TEMPLATE/config.yml vendored Normal file → Executable file
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://linuxserver.io/discord url: https://discord.gg/YWrKVTn
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

4
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file → Executable file
View File

@ -67,10 +67,10 @@ body:
- type: textarea - type: textarea
attributes: attributes:
description: | description: |
Provide a full docker log, output of "docker logs nextcloud" Provide a full docker log, output of "docker logs linuxserver.io"
label: Container logs label: Container logs
placeholder: | placeholder: |
Output of `docker logs nextcloud` Output of `docker logs linuxserver.io`
render: bash render: bash
validations: validations:
required: true required: true

0
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Normal file → Executable file
View File

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
------------------------------ ------------------------------

3
.github/workflows/call_issue_pr_tracker.yml vendored Normal file → Executable file
View File

@ -8,9 +8,6 @@ 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
.github/workflows/call_issues_cron.yml vendored Normal file → Executable file
View File

@ -4,9 +4,6 @@ on:
- cron: '35 2 * * *' - cron: '35 2 * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions: permissions:

159
.github/workflows/external_trigger.yml vendored Normal file → Executable file
View File

@ -3,86 +3,52 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-master: external-trigger-develop:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v3.1.0
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/develop'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
printf "# External trigger for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP }}" ]; then
if grep -q "^nextcloud_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP is set; skipping trigger. ****"
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^nextcloud_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> External trigger running off of master branch. To disable this trigger, add \`nextcloud_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $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)
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^nextcloud_master_${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 exit 0
fi fi
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 develop branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_NEXTCLOUD_DEVELOP\`" >> $GITHUB_STEP_SUMMARY
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)
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "**** Can't retrieve external version, exiting ****"
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY FAILURE_REASON="Can't retrieve external version for nextcloud branch develop"
FAILURE_REASON="Can't retrieve external version for nextcloud branch master"
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"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY echo "**** External version: ${EXT_RELEASE} ****"
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
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')
multidigest=$(curl -s \ multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# If there's a layer element it's a single-arch manifest so just get that digest
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then "https://ghcr.io/v2/${image}/manifests/${tag}" \
digest=$(jq -r '.config.digest' <<< "${digest}"); | jq -r 'first(.manifests[].digest)')
fi digest=$(curl -s \
fi --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
image_info=$(curl -sL \ image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}") "https://ghcr.io/v2/${image}/blobs/${digest}")
@ -94,54 +60,45 @@ jobs:
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
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 "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "**** Can't retrieve last pushed version, exiting ****"
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag develop"
FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag latest"
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 }}
exit 1 exit 1
fi fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY echo "**** Last pushed version: ${IMAGE_VERSION} ****"
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
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" >> $GITHUB_STEP_SUMMARY 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
exit 0 exit 0
else else
if [[ "${artifacts_found}" == "false" ]]; then echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY response=$(curl -iX POST \
FAILURE_REASON="New version ${EXT_RELEASE} for nextcloud tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later." https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/buildWithParameters?PACKAGE_CHECK=false \
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], echo "**** Jenkins job queue url: ${response%$'\r'} ****"
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} echo "**** Sleeping 10 seconds until job starts ****"
else sleep 10
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY buildurl="${buildurl%$'\r'}"
if [[ "${artifacts_found}" == "true" ]]; then echo "**** Jenkins job build url: ${buildurl} ****"
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
fi echo "**** Attempting to change the Jenkins job description ****"
response=$(curl -iX POST \ curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/buildWithParameters?PACKAGE_CHECK=false \ "${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY --data-urlencode "Submit=Submit"
sleep 10 echo "**** Notifying Discord ****"
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') TRIGGER_REASON="A version change was detected for nextcloud tag develop. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
buildurl="${buildurl%$'\r'}" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for nextcloud tag latest. 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,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi
fi fi

29
.github/workflows/external_trigger_scheduler.yml vendored Normal file → Executable file
View File

@ -5,44 +5,41 @@ 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
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v3.1.0
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: External Trigger Scheduler - name: External Trigger Scheduler
run: | run: |
printf "# External trigger scheduler for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY echo "**** Branches found: ****"
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY git for-each-ref --format='%(refname:short)' refs/remotes
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
if [[ "${br}" == "HEAD" ]]; then br=$(echo "$br" | sed 's|origin/||g')
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Evaluating branch ${br} ****"
continue
fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/jenkins-vars.yml) ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/jenkins-vars.yml)
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch') ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type') ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \ -d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-nextcloud/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-nextcloud/actions/workflows/external_trigger.yml/dispatches
else else
echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

8
.github/workflows/greetings.yml vendored Normal file → Executable file
View File

@ -2,18 +2,12 @@ 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
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 }}

42
.github/workflows/package_trigger.yml vendored Executable file
View File

@ -0,0 +1,42 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-develop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
- name: Package Trigger
if: github.ref == 'refs/heads/develop'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP is set; skipping trigger. ****"
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
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" >> $GITHUB_STEP_SUMMARY
exit 0
fi
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 develop branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_NEXTCLOUD_DEVELOP\`" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \
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|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"

107
.github/workflows/package_trigger_scheduler.yml vendored Normal file → Executable file
View File

@ -5,99 +5,46 @@ 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
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v3.1.0
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: Package Trigger Scheduler - name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: | run: |
printf "# Package trigger scheduler for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY echo "**** Branches found: ****"
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY git for-each-ref --format='%(refname:short)' refs/remotes
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
if [[ "${br}" == "HEAD" ]]; then br=$(echo "$br" | sed 's|origin/||g')
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Evaluating branch ${br} ****"
continue ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/jenkins-vars.yml | yq -r '.ls_branch')
fi if [ "${br}" == "${ls_branch}" ]; then
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Branch ${br} appears to be live; checking workflow. ****"
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/jenkins-vars.yml) if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/Jenkinsfile >/dev/null 2>&1; then echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-nextcloud/${br}/readme-vars.yml)
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif grep -q "^nextcloud_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`nextcloud_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
else
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY
printf "> To disable, add \`nextcloud_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " triggered_branches="${triggered_branches}${br} "
response=$(curl -iX POST \ curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/${br}/buildWithParameters?PACKAGE_CHECK=true \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") -H "Accept: application/vnd.github.v3+json" \
if [[ -z "${response}" ]]; then -d "{\"ref\":\"refs/heads/${br}\"}" \
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY https://api.github.com/repos/linuxserver/docker-nextcloud/actions/workflows/package_trigger.yml/dispatches
echo "> Jenkins build could not be triggered. Skipping branch." sleep 30
continue else
fi echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
if ! curl -ifX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
if [[ -n "${triggered_branches}" ]]; then echo "**** Notifying Discord ****"
NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-nextcloud/activity/ \n" "description": "**Package Check Build(s) Triggered for nextcloud** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-nextcloud/activity/"' \n"}],
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi
if [[ -n "${skipped_branches}" ]]; then
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
fi
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) for nextcloud** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi

2
.github/workflows/permissions.yml vendored Normal file → Executable file
View File

@ -5,8 +5,6 @@ on:
- '**/run' - '**/run'
- '**/finish' - '**/finish'
- '**/check' - '**/check'
- 'root/migrations/*'
jobs: jobs:
permission_check: permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.18
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -18,48 +18,46 @@ RUN \
ffmpeg \ ffmpeg \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
imagemagick-heic \
imagemagick-pdf \
imagemagick-svg \
libxml2 \ libxml2 \
php84-apcu \ php82-apcu \
php84-bcmath \ php82-bcmath \
php84-bz2 \ php82-bz2 \
php84-dom \ php82-dom \
php84-exif \ php82-exif \
php84-ftp \ php82-ftp \
php84-gd \ php82-gd \
php84-gmp \ php82-gmp \
php84-imap \ php82-imap \
php84-intl \ php82-intl \
php84-ldap \ php82-ldap \
php84-opcache \ php82-opcache \
php84-pcntl \ php82-pcntl \
php84-pdo_mysql \ php82-pdo_mysql \
php84-pdo_pgsql \ php82-pdo_pgsql \
php84-pdo_sqlite \ php82-pdo_sqlite \
php84-pecl-imagick \ php82-pecl-imagick \
php84-pecl-memcached \ php82-pecl-memcached \
php84-pecl-smbclient \ php82-pecl-smbclient \
php84-pgsql \ php82-pgsql \
php84-posix \ php82-posix \
php84-redis \ php82-redis \
php84-sodium \ php82-sodium \
php84-sqlite3 \ php82-sqlite3 \
php84-sysvsem \ php82-sysvsem \
php84-xmlreader \ php82-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
util-linux \
sudo && \ sudo && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php82-pecl-mcrypt && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php82/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 && \ grep -qxF 'clear_env = no' /etc/php82/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php82/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php82/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php84/conf.d/apcu.ini && \ } >> /etc/php82/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@ -69,33 +67,32 @@ 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/php84/conf.d/00_opcache.ini" && \ } >> "/etc/php82/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=-1'; \ echo 'memory_limit=512M'; \
echo 'upload_max_filesize=100G'; \ echo 'upload_max_filesize=512M'; \
echo 'post_max_size=100G'; \ echo 'post_max_size=512M'; \
echo 'max_input_time=3600'; \ echo 'max_input_time=300'; \
echo 'max_execution_time=3600'; \ echo 'max_execution_time=300'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php84/conf.d/nextcloud.ini" && \ } >> "/etc/php82/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/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 && \
mkdir -p /app/www/src/data && \ mkdir -p /app/www/src/data && \
chmod +x /app/www/src/occ && \ chmod +x /app/www/src/occ && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.18
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -18,48 +18,46 @@ RUN \
ffmpeg \ ffmpeg \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
imagemagick-heic \
imagemagick-pdf \
imagemagick-svg \
libxml2 \ libxml2 \
php84-apcu \ php82-apcu \
php84-bcmath \ php82-bcmath \
php84-bz2 \ php82-bz2 \
php84-dom \ php82-dom \
php84-exif \ php82-exif \
php84-ftp \ php82-ftp \
php84-gd \ php82-gd \
php84-gmp \ php82-gmp \
php84-imap \ php82-imap \
php84-intl \ php82-intl \
php84-ldap \ php82-ldap \
php84-opcache \ php82-opcache \
php84-pcntl \ php82-pcntl \
php84-pdo_mysql \ php82-pdo_mysql \
php84-pdo_pgsql \ php82-pdo_pgsql \
php84-pdo_sqlite \ php82-pdo_sqlite \
php84-pecl-imagick \ php82-pecl-imagick \
php84-pecl-memcached \ php82-pecl-memcached \
php84-pecl-smbclient \ php82-pecl-smbclient \
php84-pgsql \ php82-pgsql \
php84-posix \ php82-posix \
php84-redis \ php82-redis \
php84-sodium \ php82-sodium \
php84-sqlite3 \ php82-sqlite3 \
php84-sysvsem \ php82-sysvsem \
php84-xmlreader \ php82-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
util-linux \
sudo && \ sudo && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php82-pecl-mcrypt && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php82/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 && \ grep -qxF 'clear_env = no' /etc/php82/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php82/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php82/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php84/conf.d/apcu.ini && \ } >> /etc/php82/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@ -69,33 +67,32 @@ 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/php84/conf.d/00_opcache.ini" && \ } >> "/etc/php82/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=-1'; \ echo 'memory_limit=512M'; \
echo 'upload_max_filesize=100G'; \ echo 'upload_max_filesize=512M'; \
echo 'post_max_size=100G'; \ echo 'post_max_size=512M'; \
echo 'max_input_time=3600'; \ echo 'max_input_time=300'; \
echo 'max_execution_time=3600'; \ echo 'max_execution_time=300'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php84/conf.d/nextcloud.ini" && \ } >> "/etc/php82/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/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 && \
mkdir -p /app/www/src/data && \ mkdir -p /app/www/src/data && \
chmod +x /app/www/src/occ && \ chmod +x /app/www/src/occ && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*

829
Jenkinsfile vendored

File diff suppressed because it is too large Load Diff

0
LICENSE Normal file → Executable file
View File

221
README.md
View File

@ -1,10 +1,12 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-nextcloud/blob/master/.github/CONTRIBUTING.md --> <!-- Please read the 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!")
[![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.") [![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.")
[![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")
@ -19,14 +21,15 @@ 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://linuxserver.io/discord) - realtime support / chat with the community and the team. * [Discord](https://discord.gg/YWrKVTn) - 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
# [linuxserver/nextcloud](https://github.com/linuxserver/docker-nextcloud) # [linuxserver/nextcloud](https://github.com/linuxserver/docker-nextcloud)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fnextcloud?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh) [![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fnextcloud?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fnextcloud)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-nextcloud/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-nextcloud/packages) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-nextcloud/packages)
@ -34,7 +37,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.
@ -45,9 +48,9 @@ Where are your photos and documents? With Nextcloud you pick a server of your ch
## Supported Architectures ## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). 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:
@ -55,6 +58,7 @@ 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
@ -64,14 +68,10 @@ 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,34 +86,6 @@ 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:
@ -132,25 +104,23 @@ If you are using a reverse proxy which validates certificates, you need to [disa
## Usage ## Usage
To help you get started creating a container from this image you can either use docker-compose or the docker cli. Here are some example snippets to help you get started creating a container.
>[!NOTE]
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml ```yaml
--- ---
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
- PGID=1000 - PGID=1000
- TZ=Etc/UTC - TZ=Etc/UTC
volumes: volumes:
- /path/to/nextcloud/config:/config - /path/to/appdata:/config
- /path/to/data:/data - /path/to/data:/data
ports: ports:
- 443:443 - 443:443
@ -166,23 +136,24 @@ docker run -d \
-e PGID=1000 \ -e PGID=1000 \
-e TZ=Etc/UTC \ -e TZ=Etc/UTC \
-p 443:443 \ -p 443:443 \
-v /path/to/nextcloud/config:/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
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. 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.
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
| `-p 443:443` | WebUI | | `-p 443` | WebUI |
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-v /config` | Persistent config files | | `-v /config` | Nextcloud configs. |
| `-v /data` | Your personal data. | | `-v /data` | Your personal data. |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@ -192,10 +163,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__MYVAR=/run/secrets/mysecretvariable -e FILE__PASSWORD=/run/secrets/mysecretpassword
``` ```
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file. Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
## Umask for running applications ## Umask for running applications
@ -204,20 +175,15 @@ 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 your_user` as below: In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
```bash ```bash
id your_user $ id username
``` 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
@ -228,101 +194,53 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: * Shell access whilst the container is running: `docker exec -it nextcloud /bin/bash`
* To monitor the logs of the container in realtime: `docker logs -f nextcloud`
```bash * container version number
docker exec -it nextcloud /bin/bash * `docker inspect -f '{{ index .Config.Labels "build_version" }}' nextcloud`
``` * image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:develop`
* 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:latest
```
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
### Via Docker Compose ### Via Docker Compose
* Update images: * Update all images: `docker-compose pull`
* All images: * or update a single image: `docker-compose pull nextcloud`
* Let compose update all containers as necessary: `docker-compose up -d`
```bash * or update a single container: `docker-compose up -d nextcloud`
docker-compose pull * You can also remove the old dangling images: `docker image prune`
```
* 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: * Update the image: `docker pull lscr.io/linuxserver/nextcloud:develop`
* Stop the running container: `docker stop nextcloud`
```bash * Delete the container: `docker rm nextcloud`
docker pull lscr.io/linuxserver/nextcloud:latest
```
* 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: * You can also remove the old dangling images: `docker image prune`
```bash ### Via Watchtower auto-updater (only use if you don't remember the original parameters)
docker image prune
``` * Pull the latest image at its tag and replace it with the same env variables in one run:
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once nextcloud
```
* You can also remove the old dangling images: `docker image prune`
**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).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
>[!TIP] * We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
>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
@ -334,34 +252,19 @@ 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 and vice versa using `lscr.io/linuxserver/qemu-static` The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```bash ```bash
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset docker run --rm --privileged multiarch/qemu-user-static:register --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. 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.
* **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.
* **02.01.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.
* **22.12.23:** - Site default conf updating to include mime.types for js and mjs and update location to include more file types.
* **28.10.23:** - Disable web upgrades using occ during init.
* **31.08.23:** - Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image.
* **14.08.23:** - Add develop branch. * **14.08.23:** - Add develop branch.
* **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.

View File

@ -3,10 +3,11 @@
# 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
repo_vars: repo_vars:
- BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE' - BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE'
- LS_USER = 'linuxserver' - LS_USER = 'linuxserver'
@ -22,6 +23,6 @@ repo_vars:
- CI_PORT='443' - CI_PORT='443'
- CI_SSL='true' - CI_SSL='true'
- CI_DELAY='120' - CI_DELAY='120'
- CI_DOCKERENV='' - CI_DOCKERENV='TZ=US/Pacific'
- CI_AUTH='' - CI_AUTH='user:password'
- CI_WEBPATH='' - CI_WEBPATH=''

View File

@ -1,541 +1,391 @@
NAME VERSION TYPE NAME VERSION TYPE
Process Wrapper 0.0.0.0 binary (+1 duplicate) @nextcloud/text 27.0.0-alpha.1 npm
acl-libs 2.3.2-r1 apk Executes a command and passes the stdio streams of the created process to TCP sockets 1.0.0.0 dotnet
activity 6.0.0-dev.0 npm activity 2.19.0 npm
agetty 2.41-r9 apk alpine-baselayout 3.4.3-r1 apk
alpine-baselayout 3.7.0-r0 apk alpine-baselayout-data 3.4.3-r1 apk
alpine-baselayout-data 3.7.0-r0 apk alpine-keys 2.4-r1 apk
alpine-keys 2.5-r0 apk alpine-release 3.18.3-r0 apk
alpine-release 3.22.3-r0 apk alsa-lib 1.2.9-r1 apk
alsa-lib 1.2.14-r0 apk amphp/amp v2.6.2 php-composer
amphp/amp v2.6.5 php-composer amphp/byte-stream v1.8.1 php-composer
amphp/byte-stream v1.8.2 php-composer amphp/parallel v1.4.3 php-composer
amphp/parallel v1.4.4 php-composer amphp/parser v1.1.0 php-composer
amphp/parser v1.1.1 php-composer amphp/process v1.1.4 php-composer
amphp/process v1.1.9 php-composer amphp/serialization v1.0.0 php-composer
amphp/serialization v1.0.0 php-composer amphp/sync v1.4.2 php-composer
amphp/sync v1.4.2 php-composer aom-libs 3.6.1-r0 apk
andrewdalpino/okbloomer 1.0.0 php-composer apache2-utils 2.4.57-r3 apk
anstream 0.6.8 rust-crate apk-tools 2.14.0-r2 apk
anstyle 1.0.4 rust-crate apr 1.7.4-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-r4 apk
anyhow 1.0.79 rust-crate avahi-libs 0.8-r13 apk
anyhow 1.0.98 rust-crate aws/aws-crt-php v1.0.2 php-composer
aom-libs 3.12.1-r0 apk aws/aws-sdk-php 3.240.8 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.15-r5 apk
apr 1.7.5-r0 apk beberlei/assert v3.3.1 php-composer
apr-util 1.6.3-r1 apk brick/math 0.9.2 php-composer
arg_enum_proc_macro 0.3.4 rust-crate brotli-libs 1.0.9-r14 apk
argon2-libs 20190702-r5 apk bruteforcesettings 2.7.0 npm
arrayvec 0.7.4 rust-crate busybox 1.36.1-r2 apk
av-metrics 0.9.1 rust-crate busybox-binsh 1.36.1-r2 apk
av1-grain 0.2.3 rust-crate c-client 2007f-r15 apk
avahi-libs 0.8-r21 apk ca-certificates 20230506-r0 apk
aws/aws-crt-php v1.2.7 php-composer ca-certificates-bundle 20230506-r0 apk
aws/aws-sdk-php 3.369.9 php-composer cairo 1.17.8-r1 apk
bamarni/composer-bin-plugin 1.8.3 php-composer cairo-gobject 1.17.8-r1 apk
bantu/ini-get-wrapper v1.0.1 php-composer christian-riesen/base32 1.6.0 php-composer
bash 5.2.37-r0 apk christophwurst/id3parser v0.1.4 php-composer
bitflags 2.4.1 rust-crate cjson 1.7.15-r4 apk
bitstream-io 2.2.0 rust-crate coreutils 9.3-r1 apk
bitstream-io 2.6.0 rust-crate cups-libs 2.4.7-r0 apk
bitvec 1.0.1 rust-crate curl 8.2.1-r0 apk
bitvec_helpers 3.1.6 rust-crate cweagans/composer-patches 1.7.3 php-composer
blkid 2.41-r9 apk darsyn/ip 4.1.0 php-composer
brick/math 0.12.1 php-composer dbus-libs 1.14.8-r0 apk
brotli-libs 1.1.0-r2 apk deepdiver/zipstreamer 2.0.0 php-composer
busybox 1.37.0-r20 apk deepdiver1975/tarstreamer v2.1.0 php-composer
busybox-binsh 1.37.0-r20 apk doctrine/cache 2.2.0 php-composer
c-ares 1.34.6-r0 apk doctrine/dbal 3.3.8 php-composer
c-client 2007f-r15 apk doctrine/deprecations v1.0.0 php-composer
ca-certificates 20250911-r0 apk doctrine/event-manager 1.2.0 php-composer
ca-certificates-bundle 20250911-r0 apk doctrine/lexer 1.2.3 php-composer
cairo 1.18.4-r0 apk egulias/email-validator 3.2.5 php-composer
catatonit 0.2.1-r0 apk ffmpeg 6.0-r15 apk
cfdisk 2.41-r9 apk ffmpeg-libavcodec 6.0-r15 apk
cfg-if 1.0.0 rust-crate ffmpeg-libavdevice 6.0-r15 apk
christian-riesen/base32 1.6.0 php-composer ffmpeg-libavfilter 6.0-r15 apk
cjson 1.7.19-r0 apk ffmpeg-libavformat 6.0-r15 apk
clap 4.4.14 rust-crate ffmpeg-libavutil 6.0-r15 apk
clap_builder 4.4.14 rust-crate ffmpeg-libpostproc 6.0-r15 apk
clap_complete 4.4.6 rust-crate ffmpeg-libswresample 6.0-r15 apk
clap_derive 4.4.7 rust-crate ffmpeg-libswscale 6.0-r15 apk
clap_lex 0.6.0 rust-crate fgrosse/phpasn1 v2.3.0 php-composer
colorchoice 1.0.0 rust-crate files_pdfviewer 2.8.0 npm
composer 2.9.5 binary files_recommendation 1.6.0 npm
console 0.15.8 rust-crate firstrunwizard 2.16.0 npm
coreutils 9.7-r1 apk flac-libs 1.4.3-r0 apk
coreutils-env 9.7-r1 apk fontconfig 2.14.2-r3 apk
coreutils-fmt 9.7-r1 apk freetype 2.13.0-r5 apk
coreutils-sha512sum 9.7-r1 apk fribidi 1.0.13-r0 apk
crc 3.3.0 rust-crate fusonic/linq v1.1.0 php-composer
crc-catalog 2.4.0 rust-crate fusonic/opengraph v2.2.0 php-composer
crossbeam 0.8.4 rust-crate gdbm 1.23-r1 apk
crossbeam-channel 0.5.14 rust-crate gdk-pixbuf 2.42.10-r5 apk
crossbeam-deque 0.8.5 rust-crate ghostscript 10.01.2-r0 apk
crossbeam-epoch 0.9.18 rust-crate giggsey/libphonenumber-for-php 8.13.7 php-composer
crossbeam-queue 0.3.11 rust-crate giggsey/locale 2.3 php-composer
crossbeam-utils 0.8.19 rust-crate git 2.40.1-r0 apk
cups-libs 2.4.16-r0 apk glib 2.76.4-r0 apk
curl 8.14.1-r2 apk glslang-libs 1.3.243.0-r1 apk
cweagans/composer-patches 1.7.3 php-composer gmp 6.2.1-r3 apk
dbus-libs 1.16.2-r1 apk gnu-libiconv 1.17-r1 apk
deepdiver/zipstreamer v2.0.3 php-composer gnu-libiconv-libs 1.17-r1 apk
deepdiver1975/tarstreamer v2.1.0 php-composer gnutls 3.8.0-r2 apk
dmesg 2.41-r9 apk graphite2 1.3.14-r5 apk
doctrine/dbal 3.10.4 php-composer guzzlehttp/guzzle 7.5.0 php-composer
doctrine/deprecations 1.1.5 php-composer guzzlehttp/promises 1.5.2 php-composer
doctrine/event-manager 2.0.1 php-composer guzzlehttp/psr7 2.4.5 php-composer
doctrine/lexer 3.0.1 php-composer guzzlehttp/uri-template v0.2.0 php-composer
dolby_vision 3.3.1 rust-crate harfbuzz 7.3.0-r0 apk
egulias/email-validator 4.0.4 php-composer hexogen/kdtree v0.2.5 php-composer
either 1.9.0 rust-crate hwdata-pci 0.370-r0 apk
errno 0.3.8 rust-crate icewind/searchdav v3.0.1 php-composer
fern 0.6.2 rust-crate icewind/smb v3.5.4 php-composer
ffmpeg 6.1.2-r2 apk icewind/streams v0.7.7 php-composer
ffmpeg-libavcodec 6.1.2-r2 apk icu-data-en 73.2-r2 apk
ffmpeg-libavdevice 6.1.2-r2 apk icu-libs 73.2-r2 apk
ffmpeg-libavfilter 6.1.2-r2 apk imagemagick 7.1.1.13-r0 apk
ffmpeg-libavformat 6.1.2-r2 apk imagemagick-libs 7.1.1.13-r0 apk
ffmpeg-libavutil 6.1.2-r2 apk jansson 2.14-r3 apk
ffmpeg-libpostproc 6.1.2-r2 apk jbig2dec 0.19-r3 apk
ffmpeg-libswresample 6.1.2-r2 apk jq 1.6-r3 apk
ffmpeg-libswscale 6.1.2-r2 apk justinrainbow/json-schema 5.2.10 php-composer
fftw-double-libs 3.3.10-r6 apk lame-libs 3.100-r5 apk
files_downloadlimit 5.1.0-dev.0 npm laravel/serializable-closure v1.2.2 php-composer
files_pdfviewer 6.0.0-dev.0 npm lcms2 2.15-r2 apk
findmnt 2.41-r9 apk ldb 2.7.2-r1 apk
findutils 4.10.0-r0 apk league/flysystem 2.5.0 php-composer
firstrunwizard 6.0.0-dev.0 npm league/mime-type-detection 1.11.0 php-composer
flock 2.41-r9 apk league/uri 6.4.0 php-composer
fontconfig 2.15.0-r3 apk league/uri-interfaces 2.2.0 php-composer
freetype 2.13.3-r0 apk libacl 2.3.1-r3 apk
fribidi 1.0.16-r1 apk libarchive 3.7.2-r0 apk
fstrim 2.41-r9 apk libass 0.17.1-r0 apk
funty 2.0.0 rust-crate libasyncns 0.8-r1 apk
fusonic/opengraph v3.0.0 php-composer libattr 2.5.1-r4 apk
gdbm 1.24-r0 apk libavif 0.11.1-r2 apk
gdk-pixbuf 2.42.12-r1 apk libblkid 2.38.1-r8 apk
getrandom 0.2.12 rust-crate libbluray 1.3.4-r0 apk
ghostscript 10.05.1-r0 apk libbsd 0.11.7-r1 apk
giflib 5.2.2-r1 apk libbz2 1.0.8-r5 apk
giggsey/libphonenumber-for-php-lite 9.0.9 php-composer libc-utils 0.7.2-r5 apk
git 2.49.1-r0 apk libcap2 2.69-r0 apk
git-init-template 2.49.1-r0 apk libcrypto3 3.1.3-r0 apk
glib 2.84.4-r0 apk libcurl 8.2.1-r0 apk
glslang-libs 1.4.309.0-r0 apk libdav1d 1.2.1-r0 apk
gmp 6.3.0-r3 apk libde265 1.0.12-r0 apk
gnu-libiconv 1.17-r2 apk libdrm 2.4.115-r4 apk
gnu-libiconv-libs 1.17-r2 apk libedit 20221030.3.1-r1 apk
gnutls 3.8.8-r0 apk libevent 2.1.12-r6 apk
graphite2 1.3.14-r6 apk libexpat 2.5.0-r1 apk
guzzlehttp/guzzle 7.10.0 php-composer libffi 3.4.4-r2 apk
guzzlehttp/promises 2.3.0 php-composer libformw 6.4_p20230506-r0 apk
guzzlehttp/psr7 2.8.0 php-composer libgcc 12.2.1_git20220924-r10 apk
guzzlehttp/uri-template v1.0.4 php-composer libgomp 12.2.1_git20220924-r10 apk
harfbuzz 11.2.1-r0 apk libheif 1.16.2-r0 apk
heck 0.4.1 rust-crate libhwy 1.0.4-r1 apk
hexdump 2.41-r9 apk libice 1.1.1-r2 apk
hexogen/kdtree v0.2.6 php-composer libidn2 2.3.4-r1 apk
hwdata-pci 0.395-r0 apk libintl 0.21.1-r7 apk
icewind/searchdav v3.2.0 php-composer libjpeg-turbo 2.1.5.1-r3 apk
icewind/smb 3.8.1 php-composer libjxl 0.8.2-r0 apk
icewind/streams v0.7.8 php-composer libldap 2.6.5-r0 apk
icu-data-en 76.1-r1 apk libltdl 2.4.7-r2 apk
icu-libs 76.1-r1 apk libmcrypt 2.5.8-r10 apk
imagemagick 7.1.2.8-r0 apk libmd 1.0.4-r2 apk
imagemagick-heic 7.1.2.8-r0 apk libmemcached-libs 1.1.4-r1 apk
imagemagick-jpeg 7.1.2.8-r0 apk libmount 2.38.1-r8 apk
imagemagick-jxl 7.1.2.8-r0 apk libncursesw 6.4_p20230506-r0 apk
imagemagick-libs 7.1.2.8-r0 apk libogg 1.3.5-r4 apk
imagemagick-openexr 7.1.2.8-r0 apk libopenmpt 0.7.2-r0 apk
imagemagick-pango 7.1.2.8-r0 apk libpanelw 6.4_p20230506-r0 apk
imagemagick-pdf 7.1.2.8-r0 apk libpciaccess 0.17-r2 apk
imagemagick-svg 7.1.2.8-r0 apk libplacebo 5.264.1-r1 apk
imagemagick-tiff 7.1.2.8-r0 apk libpng 1.6.39-r3 apk
imagemagick-webp 7.1.2.8-r0 apk libpq 15.4-r0 apk
imath 3.1.12-r0 apk libproc2 4.0.4-r0 apk
interpolate_name 0.2.4 rust-crate libpulse 16.1-r10 apk
itertools 0.10.5 rust-crate libraw 0.21.1-r1 apk
itertools 0.12.0 rust-crate librist 0.2.7-r0 apk
ivf 0.1.3 rust-crate librsvg 2.56.3-r0 apk
jansson 2.14.1-r0 apk libsasl 2.1.28-r4 apk
jbig2dec 0.20-r0 apk libsm 1.2.4-r1 apk
joomla/string 3.0.4 php-composer libsmbclient 4.18.5-r0 apk
jq 1.8.1-r0 apk libsndfile 1.2.0-r2 apk
justinrainbow/json-schema 6.6.4 php-composer libsodium 1.0.18-r3 apk
kornrunner/blurhash v1.2.2 php-composer libsrt 1.5.2-r0 apk
lab 0.11.0 rust-crate libssh 0.10.5-r0 apk
lame-libs 3.100-r5 apk libssl3 3.1.3-r0 apk
laravel/serializable-closure v2.0.4 php-composer libstdc++ 12.2.1_git20220924-r10 apk
lazy_static 1.4.0 rust-crate libtasn1 4.19.0-r1 apk
lcms2 2.16-r0 apk libtheora 1.1.1-r17 apk
lcobucci/clock 3.0.0 php-composer libunibreak 5.1-r0 apk
ldb 4.21.9-r1 apk libunistring 1.1-r1 apk
libSvtAv1Enc 2.3.0-r0 apk libuuid 2.38.1-r8 apk
libapk2 2.14.9-r3 apk libva 2.18.0-r1 apk
libarchive 3.8.3-r0 apk libvdpau 1.5-r1 apk
libass 0.17.3-r0 apk libvorbis 1.3.7-r1 apk
libasyncns 0.8-r4 apk libvpx 1.13.0-r1 apk
libattr 2.5.2-r2 apk libwbclient 4.18.5-r0 apk
libauth-samba 4.21.9-r1 apk libwebp 1.3.2-r0 apk
libavif 1.3.0-r0 apk libx11 1.8.4-r4 apk
libblkid 2.41-r9 apk libxau 1.0.11-r2 apk
libbluray 1.3.4-r1 apk libxcb 1.15-r1 apk
libbsd 0.12.2-r0 apk libxdmcp 1.1.4-r2 apk
libbz2 1.0.8-r6 apk libxext 1.3.5-r2 apk
libc 0.2.155 rust-crate libxfixes 6.0.1-r2 apk
libc 0.2.172 rust-crate libxft 2.3.8-r1 apk
libcap-ng 0.8.5-r0 apk libxml2 2.11.4-r0 apk
libcap2 2.76-r0 apk libxpm 3.5.16-r1 apk
libcrypto3 3.5.5-r0 apk libxrender 0.9.11-r3 apk
libcurl 8.14.1-r2 apk libxt 1.3.0-r2 apk
libdav1d 1.5.1-r0 apk libxxhash 0.8.2-r0 apk
libde265 1.0.15-r1 apk libzip 1.9.2-r2 apk
libdeflate 1.23-r0 apk libzmq 4.3.4-r4 apk
libdovi 3.3.1-r1 apk linux-pam 1.5.2-r10 apk
libdrm 2.4.124-r0 apk lmdb 0.9.31-r0 apk
libeconf 0.6.3-r0 apk logrotate 3.21.0-r1 apk
libedit 20250104.3.1-r1 apk lz4-libs 1.9.4-r4 apk
libevent 2.1.12-r8 apk mbedtls 2.28.4-r0 apk
libexpat 2.7.4-r0 apk mexitek/phpcolors v1.0.4 php-composer
libfdisk 2.41-r9 apk microsoft/azure-storage-blob 1.5.4 php-composer
libffi 3.4.8-r0 apk microsoft/azure-storage-common 1.5.2 php-composer
libflac 1.4.3-r1 apk mlocati/ip-lib 1.18.0 php-composer
libformw 6.5_p20250503-r0 apk mpg123-libs 1.31.3-r1 apk
libgcc 14.2.0-r6 apk mtdowling/jmespath.php 2.6.1 php-composer
libgomp 14.2.0-r6 apk musl 1.2.4-r1 apk
libheif 1.19.8-r1 apk musl-utils 1.2.4-r1 apk
libhwy 1.0.7-r1 apk nano 7.2-r1 apk
libice 1.1.2-r0 apk ncurses-terminfo-base 6.4_p20230506-r0 apk
libidn2 2.3.7-r0 apk netcat-openbsd 1.219-r1 apk
libintl 0.24.1-r0 apk nettle 3.8.1-r2 apk
libjpeg-turbo 3.1.0-r0 apk nextcloud 1.0.0 npm
libjxl 0.10.3-r2 apk nextcloud/lognormalizer v1.0.0 php-composer
libldap 2.6.8-r0 apk nghttp2-libs 1.55.1-r0 apk
libltdl 2.5.4-r1 apk nginx 1.24.0-r6 apk
libmd 1.1.0-r0 apk notifications 2.15.0 npm
libmemcached-libs 1.1.4-r1 apk numactl 2.0.16-r4 apk
libmount 2.41-r9 apk onevpl-libs 2023.2.1-r0 apk
libncursesw 6.5_p20250503-r0 apk oniguruma 6.9.8-r1 apk
libogg 1.3.5-r5 apk openssl 3.1.3-r0 apk
libopenmpt 0.7.15-r0 apk opis/closure 3.6.3 php-composer
libpanelw 6.5_p20250503-r0 apk opus 1.4-r0 apk
libpciaccess 0.18.1-r0 apk orc 0.4.34-r0 apk
libplacebo 6.338.2-r3 apk p11-kit 0.24.1-r2 apk
libpng 1.6.54-r0 apk pango 1.50.14-r1 apk
libpq 17.8-r0 apk password_policy 1.17.0 npm
libproc2 4.0.4-r3 apk pcre 8.45-r3 apk
libpsl 0.21.5-r3 apk pcre2 10.42-r1 apk
libpulse 17.0-r5 apk pear/archive_tar 1.4.14 php-composer
librist 0.2.10-r1 apk pear/console_getopt v1.4.3 php-composer
librsvg 2.60.0-r0 apk pear/pear-core-minimal v1.10.10 php-composer
libsasl 2.1.28-r8 apk pear/pear_exception v1.0.2 php-composer
libsharpyuv 1.5.0-r0 apk photos 2.3.0 npm
libsm 1.2.5-r0 apk php-http/guzzle7-adapter 1.0.0 php-composer
libsmartcols 2.41-r9 apk php-http/httplug 2.2.0 php-composer
libsmbclient 4.21.9-r1 apk php-http/promise 1.1.0 php-composer
libsndfile 1.2.2-r2 apk php-opencloud/openstack v3.2.1 php-composer
libsodium 1.0.20-r1 apk php82 8.2.10-r0 apk
libsrt 1.5.3-r1 apk php82-bcmath 8.2.10-r0 apk
libssh 0.11.2-r0 apk php82-bz2 8.2.10-r0 apk
libssl3 3.5.5-r0 apk php82-common 8.2.10-r0 apk
libstdc++ 14.2.0-r6 apk php82-ctype 8.2.10-r0 apk
libtasn1 4.21.0-r0 apk php82-curl 8.2.10-r0 apk
libtheora 1.1.1-r18 apk php82-dom 8.2.10-r0 apk
libunibreak 6.1-r0 apk php82-exif 8.2.10-r0 apk
libunistring 1.3-r0 apk php82-fileinfo 8.2.10-r0 apk
libuuid 2.41-r9 apk php82-fpm 8.2.10-r0 apk
libva 2.22.0-r1 apk php82-ftp 8.2.10-r0 apk
libvdpau 1.5-r4 apk php82-gd 8.2.10-r0 apk
libvorbis 1.3.7-r2 apk php82-gmp 8.2.10-r0 apk
libvpx 1.15.0-r0 apk php82-iconv 8.2.10-r0 apk
libwbclient 4.21.9-r1 apk php82-imap 8.2.10-r0 apk
libwebp 1.5.0-r0 apk php82-intl 8.2.10-r0 apk
libwebpdemux 1.5.0-r0 apk php82-ldap 8.2.10-r0 apk
libwebpmux 1.5.0-r0 apk php82-mbstring 8.2.10-r0 apk
libx11 1.8.11-r0 apk php82-mysqlnd 8.2.10-r0 apk
libxau 1.0.12-r0 apk php82-opcache 8.2.10-r0 apk
libxcb 1.17.0-r0 apk php82-openssl 8.2.10-r0 apk
libxdmcp 1.1.5-r1 apk php82-pcntl 8.2.10-r0 apk
libxext 1.3.6-r2 apk php82-pdo 8.2.10-r0 apk
libxfixes 6.0.1-r4 apk php82-pdo_mysql 8.2.10-r0 apk
libxft 2.3.8-r3 apk php82-pdo_pgsql 8.2.10-r0 apk
libxml2 2.13.9-r0 apk php82-pdo_sqlite 8.2.10-r0 apk
libxpm 3.5.17-r0 apk php82-pecl-apcu 5.1.22-r0 apk
libxrender 0.9.12-r0 apk php82-pecl-igbinary 3.2.14-r0 apk
libxt 1.3.1-r0 apk php82-pecl-imagick 3.7.0-r5 apk
libxxhash 0.8.3-r0 apk php82-pecl-mcrypt 1.0.6-r0 apk
libyuv 0.0.1887.20251502-r1 apk php82-pecl-memcached 3.2.0-r1 apk
libzip 1.11.4-r0 apk php82-pecl-msgpack 2.2.0-r0 apk
libzmq 4.3.5-r2 apk php82-pecl-redis 6.0.0-r0 apk
lilv-libs 0.24.26-r0 apk php82-pecl-smbclient 1.1.1-r0 apk
linux-pam 1.7.0-r4 apk php82-pgsql 8.2.10-r0 apk
linux-raw-sys 0.4.12 rust-crate php82-phar 8.2.10-r0 apk
lmdb 0.9.33-r0 apk php82-posix 8.2.10-r0 apk
log 0.4.20 rust-crate php82-session 8.2.10-r0 apk
logger 2.41-r9 apk php82-simplexml 8.2.10-r0 apk
logreader 6.0.0 npm php82-sockets 8.2.10-r0 apk
logrotate 3.21.0-r1 apk php82-sodium 8.2.10-r0 apk
losetup 2.41-r9 apk php82-sqlite3 8.2.10-r0 apk
lsblk 2.41-r9 apk php82-sysvsem 8.2.10-r0 apk
lscpu 2.41-r9 apk php82-xml 8.2.10-r0 apk
lz4-libs 1.10.0-r0 apk php82-xmlreader 8.2.10-r0 apk
marc-mabe/php-enum v4.7.1 php-composer php82-xmlwriter 8.2.10-r0 apk
masterminds/html5 2.9.0 php-composer php82-zip 8.2.10-r0 apk
maybe-rayon 0.1.1 rust-crate phpseclib/phpseclib 2.0.40 php-composer
mbedtls 3.6.5-r0 apk pimple/pimple v3.5.0 php-composer
mcookie 2.41-r9 apk pixman 0.42.2-r1 apk
memchr 2.7.1 rust-crate pkgconf 1.9.5-r0 apk
mexitek/phpcolors v1.0.4 php-composer popt 1.19-r2 apk
microsoft/azure-storage-blob 1.5.4 php-composer privacy 1.11.0 npm
microsoft/azure-storage-common 1.5.2 php-composer procps-ng 4.0.4-r0 apk
minimal-lexical 0.2.1 rust-crate psr/cache 1.0.1 php-composer
mlocati/ip-lib 1.22.0 php-composer psr/clock 1.0.0 php-composer
mount 2.41-r9 apk psr/container 2.0.2 php-composer
mpg123-libs 1.32.10-r0 apk psr/event-dispatcher 1.0.0 php-composer
mtdowling/jmespath.php 2.8.0 php-composer psr/http-client 1.0.1 php-composer
musl 1.2.5-r10 apk psr/http-factory 1.0.1 php-composer
musl-utils 1.2.5-r10 apk psr/http-message 1.0.1 php-composer
nano 8.4-r0 apk psr/log 1.1.4 php-composer
ncurses-terminfo-base 6.5_p20250503-r0 apk punic/punic 1.6.5 php-composer
nelexa/buffer 1.3.0 php-composer ralouphie/getallheaders 3.0.3 php-composer
netcat-openbsd 1.229.1-r0 apk ramsey/collection 1.1.3 php-composer
nettle 3.10.1-r0 apk ramsey/uuid 4.1.1 php-composer
new_debug_unreachable 1.0.4 rust-crate readline 8.2.1-r1 apk
nextcloud 1.0.0 npm related_resources 1.2.0 npm
nextcloud/lognormalizer v3.0.0 php-composer rsync 3.2.7-r4 apk
nghttp2-libs 1.65.0-r0 apk rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer
nginx 1.28.2-r0 apk rubix/tensor 2.2.3 php-composer
nom 7.1.3 rust-crate rullzer/easytotp v0.1.4 php-composer
noop_proc_macro 0.3.0 rust-crate sabre/dav 4.4.0 php-composer
notifications 6.0.0-dev.0 npm sabre/event 5.1.4 php-composer
num-bigint 0.4.4 rust-crate sabre/http 5.1.10 php-composer
num-derive 0.4.1 rust-crate sabre/uri 2.2.2 php-composer
num-integer 0.1.45 rust-crate sabre/vobject 4.4.2 php-composer
num-rational 0.4.1 rust-crate sabre/xml 2.2.5 php-composer
num-traits 0.2.17 rust-crate samba-client 4.18.5-r0 apk
numactl 2.0.18-r0 apk samba-client-libs 4.18.5-r0 apk
once_cell 1.19.0 rust-crate samba-common 4.18.5-r0 apk
onevpl-libs 2023.3.1-r2 apk samba-libs 4.18.5-r0 apk
oniguruma 6.9.10-r0 apk samba-util-libs 4.18.5-r0 apk
openexr-libiex 3.3.2-r0 apk scanelf 1.3.7-r1 apk
openexr-libilmthread 3.3.2-r0 apk scssphp/scssphp v1.11.0 php-composer
openexr-libopenexr 3.3.2-r0 apk sdl2 2.26.5-r0 apk
openexr-libopenexrcore 3.3.2-r0 apk shaderc 2023.3-r1 apk
openjpeg 2.5.3-r0 apk shadow 4.13-r4 apk
openssl 3.5.5-r0 apk shared-mime-info 2.2-r5 apk
opus 1.5.2-r1 apk skalibs 2.13.1.1-r1 apk
orc 0.4.40-r1 apk soxr 0.1.3-r5 apk
p11-kit 0.25.5-r2 apk speexdsp 1.2.1-r1 apk
pango 1.56.3-r0 apk spirv-tools 1.3.243.0-r1 apk
paragonie/constant_time_encoding v2.6.3 php-composer spomky-labs/base64url v2.0.4 php-composer
partx 2.41-r9 apk spomky-labs/cbor-php v2.0.1 php-composer
password_policy 5.0.0-dev.0 npm sqlite-libs 3.41.2-r2 apk
paste 1.0.14 rust-crate ssl_client 1.36.1-r2 apk
pcre2 10.46-r0 apk stecman/symfony-console-completion 0.11.0 php-composer
pear/archive_tar 1.5.0 php-composer sudo 1.9.13_p3-r2 apk
pear/console_getopt v1.4.3 php-composer suspicious_login 5.0.0 npm
pear/pear-core-minimal v1.10.16 php-composer svt-av1-libs 1.6.0-r0 apk
pear/pear_exception v1.0.2 php-composer swiftmailer/swiftmailer v6.3.0 php-composer
photos 6.0.0-dev.0 npm symfony/console v5.4.19 php-composer
php-http/guzzle7-adapter 1.1.0 php-composer symfony/css-selector v5.4.11 php-composer
php-http/httplug 2.4.1 php-composer symfony/deprecation-contracts v2.5.2 php-composer
php-http/promise 1.3.1 php-composer symfony/dom-crawler v5.4.11 php-composer
php-opencloud/openstack v3.14.0 php-composer symfony/event-dispatcher v4.4.30 php-composer
php84 8.4.16-r0 apk symfony/event-dispatcher-contracts v1.1.9 php-composer
php84-bcmath 8.4.16-r0 apk symfony/http-foundation v5.4.10 php-composer
php84-bz2 8.4.16-r0 apk symfony/mailer v5.4.19 php-composer
php84-common 8.4.16-r0 apk symfony/mime v5.4.19 php-composer
php84-ctype 8.4.16-r0 apk symfony/polyfill-ctype v1.23.0 php-composer
php84-curl 8.4.16-r0 apk symfony/polyfill-iconv v1.27.0 php-composer
php84-dom 8.4.16-r0 apk symfony/polyfill-intl-grapheme v1.23.1 php-composer
php84-exif 8.4.16-r0 apk symfony/polyfill-intl-idn v1.27.0 php-composer
php84-fileinfo 8.4.16-r0 apk symfony/polyfill-intl-normalizer v1.27.0 php-composer
php84-fpm 8.4.16-r0 apk symfony/polyfill-mbstring v1.27.0 php-composer
php84-ftp 8.4.16-r0 apk symfony/polyfill-php72 v1.27.0 php-composer
php84-gd 8.4.16-r0 apk symfony/polyfill-php73 v1.23.0 php-composer
php84-gmp 8.4.16-r0 apk symfony/polyfill-php73 v1.26.0 php-composer
php84-iconv 8.4.16-r0 apk symfony/polyfill-php80 v1.26.0 php-composer
php84-intl 8.4.16-r0 apk symfony/polyfill-php80 v1.27.0 php-composer
php84-ldap 8.4.16-r0 apk symfony/process v4.4.30 php-composer
php84-mbstring 8.4.16-r0 apk symfony/routing v4.4.30 php-composer
php84-mysqlnd 8.4.16-r0 apk symfony/service-contracts v3.0.2 php-composer
php84-opcache 8.4.16-r0 apk symfony/string v6.0.19 php-composer
php84-openssl 8.4.16-r0 apk symfony/translation v4.4.41 php-composer
php84-pcntl 8.4.16-r0 apk symfony/translation-contracts v2.4.0 php-composer
php84-pdo 8.4.16-r0 apk talloc 2.4.0-r1 apk
php84-pdo_mysql 8.4.16-r0 apk tdb-libs 1.4.8-r1 apk
php84-pdo_pgsql 8.4.16-r0 apk tevent 0.14.1-r1 apk
php84-pdo_sqlite 8.4.16-r0 apk thecodingmachine/safe v1.3.3 php-composer
php84-pecl-apcu 5.1.27-r0 apk tiff 4.5.1-r0 apk
php84-pecl-igbinary 3.2.16-r1 apk twofactor_totp 9.0.0 npm
php84-pecl-imagick 3.8.0-r1 apk tzdata 2023c-r1 apk
php84-pecl-imap 1.0.3-r0 apk utmps-libs 0.1.2.1-r1 apk
php84-pecl-memcached 3.3.0-r0 apk v4l-utils-libs 1.24.1-r0 apk
php84-pecl-msgpack 3.0.0-r0 apk vidstab 1.1.1-r0 apk
php84-pecl-redis 6.3.0-r0 apk viewer 2.1.0 npm
php84-pecl-smbclient 1.2.0_pre-r0 apk vulkan-loader 1.3.243.0-r1 apk
php84-pgsql 8.4.16-r0 apk wayland-libs-client 1.22.0-r2 apk
php84-phar 8.4.16-r0 apk web-auth/cose-lib v3.3.9 php-composer
php84-posix 8.4.16-r0 apk web-auth/metadata-service v3.3.9 php-composer
php84-session 8.4.16-r0 apk web-auth/webauthn-lib v3.3.9 php-composer
php84-simplexml 8.4.16-r0 apk x264-libs 0.164_git20220602-r1 apk
php84-sockets 8.4.16-r0 apk x265-libs 3.5-r4 apk
php84-sodium 8.4.16-r0 apk xvidcore 1.3.7-r1 apk
php84-sqlite3 8.4.16-r0 apk xz-libs 5.4.3-r0 apk
php84-sysvsem 8.4.16-r0 apk zimg 3.0.5-r0 apk
php84-xml 8.4.16-r0 apk zlib 1.2.13-r1 apk
php84-xmlreader 8.4.16-r0 apk zstd-libs 1.5.5-r4 apk
php84-xmlwriter 8.4.16-r0 apk
php84-zip 8.4.16-r0 apk
phpseclib/phpseclib 2.0.47 php-composer
pimple/pimple v3.6.0 php-composer
pixman 0.46.4-r0 apk
pkgconf 2.4.3-r0 apk
popt 1.19-r4 apk
ppv-lite86 0.2.17 rust-crate
privacy 5.0.0-dev.0 npm
proc-macro2 1.0.76 rust-crate
procps-ng 4.0.4-r3 apk
profiling 1.0.13 rust-crate
profiling-procmacros 1.0.13 rust-crate
psr/cache 3.0.0 php-composer
psr/clock 1.0.0 php-composer
psr/container 2.0.2 php-composer
psr/event-dispatcher 1.0.0 php-composer
psr/http-client 1.0.3 php-composer
psr/http-factory 1.1.0 php-composer
psr/http-message 2.0 php-composer
psr/log 3.0.2 php-composer (+1 duplicate)
punic/punic 3.8.1 php-composer
quote 1.0.35 rust-crate
radium 0.7.0 rust-crate
ralouphie/getallheaders 3.0.3 php-composer
rand 0.8.5 rust-crate
rand_chacha 0.3.1 rust-crate
rand_core 0.6.4 rust-crate
rav1e 0.7.1 rust-crate
rav1e-libs 0.7.1-r2 apk
rayon 1.8.0 rust-crate
rayon-core 1.12.0 rust-crate
readline 8.2.13-r1 apk
recommendations 6.0.0-dev.0 npm
rsync 3.4.1-r1 apk
rubix/ml 2.5.3 php-composer
rubix/tensor 3.0.5 php-composer
rullzer/easytotp v0.1.4 php-composer
runuser 2.41-r9 apk
rustix 0.38.28 rust-crate
sabre/dav 4.7.0 php-composer
sabre/event 5.1.7 php-composer
sabre/http 5.1.12 php-composer
sabre/uri 2.3.4 php-composer
sabre/vobject 4.5.6 php-composer
sabre/xml 2.2.11 php-composer
samba-client 4.21.9-r1 apk
samba-client-libs 4.21.9-r1 apk
samba-common 4.21.9-r1 apk
samba-libs 4.21.9-r1 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
setarch 2.41-r9 apk
setpriv 2.41-r9 apk
sfdisk 2.41-r9 apk
shaderc 2024.4-r0 apk
shadow 4.17.3-r0 apk
shared-mime-info 2.4-r6 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
tiff 4.7.1-r0 apk
tinyvec 1.9.0 rust-crate
twofactor_totp 15.0.0-dev.0 npm
tzdata 2025c-r0 apk
umount 2.41-r9 apk
unicode-ident 1.0.12 rust-crate
unicode-width 0.1.11 rust-crate
utf8parse 0.2.1 rust-crate
util-linux 2.41-r9 apk
util-linux-misc 2.41-r9 apk
utmps-libs 0.1.3.1-r0 apk
uuidgen 2.41-r9 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
wipefs 2.41-r9 apk
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

View File

@ -9,36 +9,49 @@ project_blurb: |
Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Cloud,Documents" project_blurb_optional_extras_enabled: false
# supported architectures # supported architectures
available_architectures: available_architectures:
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# development version # development version
development_versions: true 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 }}"
param_usage_include_net: false
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." }
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files"} - { vol_path: "/config", vol_host_path: "/path/to/appdata", desc: "Nextcloud configs." }
- {vol_path: "/data", vol_host_path: "/path/to/data", desc: "Your personal data."} - { vol_path: "/data", vol_host_path: "/path/to/data", desc: "Your personal data." }
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- {external_port: "443", internal_port: "443", port_desc: "WebUI"} - { external_port: "443", internal_port: "443", port_desc: "WebUI" }
readonly_supported: false param_device_map: false
nonroot_supported: false cap_add_param: false
# optional container parameters
opt_param_usage_include_env: false
opt_param_usage_include_vols: false
opt_param_usage_include_ports: false
opt_param_device_map: false
opt_cap_add_param: false
optional_block_1: false
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
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.
@ -53,34 +66,6 @@ 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:
@ -91,121 +76,55 @@ app_setup_block: |
``` ```
Afterwards, you can set `"path" => OC::$SERVERROOT . "/your_custom_apps_folder",` in your `config.php` file, per the [official documentation](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories). Afterwards, you can set `"path" => OC::$SERVERROOT . "/your_custom_apps_folder",` in your `config.php` file, per the [official documentation](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories).
# init diagram
init_diagram: |
"nextcloud:latest": {
docker-mods
base {
fix-attr +\nlegacy cont-init
}
docker-mods -> base
legacy-services
custom services
init-services -> legacy-services
init-services -> custom services
custom services -> legacy-services
legacy-services -> ci-service-check
init-migrations -> init-adduser
init-nginx-end -> init-config
init-os-end -> init-config
init-config -> init-config-end
init-crontab-config -> init-config-end
init-nextcloud-config -> init-config-end
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
init-os-end -> init-folders
init-php -> init-keygen
base -> init-migrations
init-config-end -> init-mods
init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install
init-nginx-end -> init-nextcloud-config
init-samples -> init-nginx
init-version-checks -> init-nginx-end
init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end
init-keygen -> init-permissions
init-nginx -> init-php
init-folders -> init-samples
init-custom-files -> init-services
init-permissions -> init-version-checks
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-nginx
svc-nginx -> legacy-services
init-services -> svc-php-fpm
svc-php-fpm -> legacy-services
}
Base Images: {
"baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22"
}
"nextcloud:latest" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "10.07.25:", desc: "Rebase to Alpine 3.22."} - { date: "14.08.23:", desc: "Add develop branch." }
- {date: "12.02.25:", desc: "Rebase to Alpine 3.21."} - { 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: "09.01.25:", desc: "Fix uploading large files. Existing users should update their nginx confs."} - { date: "21.06.23:", desc: "Existing users should update `/config/nginx/site-confs/default.conf` - Security fix for real ip settings." }
- {date: "09.07.24:", desc: "Add `previous` tag for n-1 releases."} - { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." }
- {date: "24.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."} - { date: "13.04.23:", desc: "Move ssl.conf include to default.conf." }
- {date: "19.05.24:", desc: "Added util-linux package required for taskset."} - { date: "21.03.23:", desc: "Add php81-sysvsem as new dep for v26. Update default X-Robots-Tag to `noindex, nofollow``." }
- {date: "10.04.24:", desc: "Added imagemagick-pdf."} - { date: "02.03.23:", desc: "Set permissions on crontabs during init." }
- {date: "05.04.24:", desc: "Added imagemagick-heic. Manual update to `config.php` required - see above."} - { date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1." }
- {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: "10.10.22:", desc: "Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))." }
- {date: "22.03.24:", desc: "Add imagemagick-svg module."} - { date: "30.09.22:", desc: "Disabled `output_buffering` as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html" }
- {date: "06.03.24:", desc: "Rebase to Alpine 3.19 with php 8.3."} - { date: "21.05.22:", desc: "Update version check endpoint." }
- {date: "02.01.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."} - { date: "28.04.22:", desc: "Increase OPCache interned strings buffered setting to 16." }
- {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: "14.04.22:", desc: "Nginx default site config updated for v23 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container). Fix LDAP connection." }
- {date: "28.10.23:", desc: "Disable web upgrades using occ during init."} - { date: "11.09.21:", desc: "Rebasing to alpine 3.14" }
- {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: "21.03.21:", desc: "Publish `php8` tag for testing." }
- {date: "14.08.23:", desc: "Add develop branch."} - { date: "25.02.21:", desc: "Nginx default site config updated for v21 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)." }
- {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.01.21:", desc: "Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup." }
- {date: "21.06.23:", desc: "Existing users should update `/config/nginx/site-confs/default.conf` - Security fix for real ip settings."} - { date: "20.01.21:", desc: "Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)." }
- {date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf."} - { date: "16.01.21:", desc: "Rebasing to alpine 3.13. Users with issues on 32-bit arm, [see this article](https://docs.linuxserver.io/faq#my-host-is-incompatible-with-images-based-on-ubuntu-focal-and-alpine-3-13)." }
- {date: "13.04.23:", desc: "Move ssl.conf include to default.conf."} - { date: "12.08.20:", desc: "Various updates to default site config, including added support for webfinger (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)." }
- {date: "21.03.23:", desc: "Add php81-sysvsem as new dep for v26. Update default X-Robots-Tag to `noindex, nofollow``."} - { date: "03.06.20:", desc: "Rebasing to alpine 3.12" }
- {date: "02.03.23:", desc: "Set permissions on crontabs during init."} - { date: "03.06.20:", desc: "Add php7-bcmath and php7-fileinfo" }
- {date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1."} - { date: "31.05.20:", desc: "Add aliases for occ and updater.phar" }
- {date: "10.10.22:", desc: "Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))."} - { date: "31.03.20:", desc: "Allow crontab to be user customized, fix logrotate." }
- {date: "30.09.22:", desc: "Disabled `output_buffering` as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html"} - { date: "17.01.20:", desc: "Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)." }
- {date: "21.05.22:", desc: "Update version check endpoint."} - { date: "19.12.19:", desc: "Rebasing to alpine 3.11." }
- {date: "28.04.22:", desc: "Increase OPCache interned strings buffered setting to 16."} - { date: "18.11.19:", desc: "Nginx default site config updated for v17 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)." }
- {date: "14.04.22:", desc: "Nginx default site config updated for v23 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container). Fix LDAP connection."} - { date: "28.10.19:", desc: "Change cronjob to run every 5 minutes." }
- {date: "11.09.21:", desc: "Rebasing to alpine 3.14"} - { date: "24.10.19:", desc: "Nginx default site config updated due to CVE-2019-11043 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)." }
- {date: "21.03.21:", desc: "Publish `php8` tag for testing."} - { date: "14.07.19:", desc: "Download nextcloud during build time." }
- {date: "25.02.21:", desc: "Nginx default site config updated for v21 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)."} - { date: "28.06.19:", desc: "Rebasing to alpine 3.10." }
- {date: "21.01.21:", desc: "Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup."} - { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." }
- {date: "20.01.21:", desc: "Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)."} - { date: "27.02.19:", desc: "Updating base nginx config to sync up with v15 requirements." }
- {date: "16.01.21:", desc: "Rebasing to alpine 3.13. Users with issues on 32-bit arm, [see this article](https://docs.linuxserver.io/faq#my-host-is-incompatible-with-images-based-on-ubuntu-focal-and-alpine-3-13)."} - { date: "22.02.19:", desc: "Rebasing to alpine 3.9." }
- {date: "12.08.20:", desc: "Various updates to default site config, including added support for webfinger (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)."} - { date: "28.01.19:", desc: "Add pipeline logic and multi arch." }
- {date: "03.06.20:", desc: "Rebasing to alpine 3.12"} - { date: "25.01.19:", desc: "Add php7-phar for occ upgrades." }
- {date: "03.06.20:", desc: "Add php7-bcmath and php7-fileinfo"} - { date: "05.09.18:", desc: "Rebase to alpine 3.8." }
- {date: "31.05.20:", desc: "Add aliases for occ and updater.phar"} - { date: "11.06.18:", desc: "Use latest rather than specific version for initial install." }
- {date: "31.03.20:", desc: "Allow crontab to be user customized, fix logrotate."} - { date: "26.04.18:", desc: "Bump default install to 13.0.1." }
- {date: "17.01.20:", desc: "Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)."} - { date: "06.02.18:", desc: "Bump default install to 13.0.0." }
- {date: "19.12.19:", desc: "Rebasing to alpine 3.11."} - { date: "26.01.18:", desc: "Rebase to alpine 3.7, bump default install to 12.0.5." }
- {date: "18.11.19:", desc: "Nginx default site config updated for v17 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)."} - { date: "12.12.17:", desc: "Bump default install to 12.0.4, fix continuation lines." }
- {date: "28.10.19:", desc: "Change cronjob to run every 5 minutes."} - { date: "15.10.17:", desc: "Sed php.ini for opcache requirements in newer nextcloud versions." }
- {date: "24.10.19:", desc: "Nginx default site config updated due to CVE-2019-11043 (existing users should delete `/config/nginx/site-confs/default.conf` and restart the container)."} - { date: "20.09.17:", desc: "Bump default install to 12.0.3." }
- {date: "14.07.19:", desc: "Download nextcloud during build time."} - { date: "19.08.17:", desc: "Bump default install to 12.0.2." }
- {date: "28.06.19:", desc: "Rebasing to alpine 3.10."} - { date: "25.05.17:", desc: "Rebase to alpine 3.6." }
- {date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag."} - { date: "22.05.17:", desc: "Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line." }
- {date: "27.02.19:", desc: "Updating base nginx config to sync up with v15 requirements."} - { date: "03.05.17:", desc: "Use community repo of memcache." }
- {date: "22.02.19:", desc: "Rebasing to alpine 3.9."} - { date: "07.03.17:", desc: "Release into main repository and upgrade to php7 and Alpine 3.5." }
- {date: "28.01.19:", desc: "Add pipeline logic and multi arch."}
- {date: "25.01.19:", desc: "Add php7-phar for occ upgrades."}
- {date: "05.09.18:", desc: "Rebase to alpine 3.8."}
- {date: "11.06.18:", desc: "Use latest rather than specific version for initial install."}
- {date: "26.04.18:", desc: "Bump default install to 13.0.1."}
- {date: "06.02.18:", desc: "Bump default install to 13.0.0."}
- {date: "26.01.18:", desc: "Rebase to alpine 3.7, bump default install to 12.0.5."}
- {date: "12.12.17:", desc: "Bump default install to 12.0.4, fix continuation lines."}
- {date: "15.10.17:", desc: "Sed php.ini for opcache requirements in newer nextcloud versions."}
- {date: "20.09.17:", desc: "Bump default install to 12.0.3."}
- {date: "19.08.17:", desc: "Bump default install to 12.0.2."}
- {date: "25.05.17:", desc: "Rebase to alpine 3.6."}
- {date: "22.05.17:", desc: "Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line."}
- {date: "03.05.17:", desc: "Use community repo of memcache."}
- {date: "07.03.17:", desc: "Release into main repository and upgrade to php7 and Alpine 3.5."}

View File

@ -1,4 +1,4 @@
## Version 2025/07/10 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample ## Version 2023/06/23 - 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 {
@ -9,10 +9,9 @@ map $arg_v $asset_immutable {
server { server {
listen 80 default_server; listen 80 default_server;
listen [::]:80 default_server; listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server; listen 443 ssl http2 default_server;
listen 443 quic reuseport default_server; listen [::]:443 ssl http2 default_server;
listen [::]:443 quic reuseport default_server;
server_name _; server_name _;
@ -27,7 +26,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 0; client_max_body_size 512M;
client_body_timeout 300s; client_body_timeout 300s;
fastcgi_buffers 64 4K; fastcgi_buffers 64 4K;
@ -37,24 +36,25 @@ server {
gzip_comp_level 4; gzip_comp_level 4;
gzip_min_length 256; gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml text/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# Pagespeed is not supported by Nextcloud, so if your server is built # Pagespeed is not supported by Nextcloud, so if your server is built
# with the `ngx_pagespeed` module, uncomment this line to disable it. # with the `ngx_pagespeed` module, uncomment this line to disable it.
#pagespeed off; #pagespeed off;
# The settings allows you to optimize the HTTP2 bandwidth. # The settings allows you to optimize the HTTP2 bandwitdth.
# See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/ # See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/
# for tuning hints # for tunning hints
client_body_buffer_size 512k; client_body_buffer_size 512k;
# HTTP response headers borrowed from Nextcloud `.htaccess` # HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Referrer-Policy "no-referrer" always; add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always; add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Download-Options "noopen" always;
add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Robots-Tag "noindex, nofollow" always; add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-XSS-Protection "1; mode=block" always; add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak # Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By; fastcgi_hide_header X-Powered-By;
@ -66,7 +66,7 @@ server {
# that file is correctly served; if it doesn't, then the request is passed to # that file is correctly served; if it doesn't, then the request is passed to
# the front-end controller. This consistent behaviour means that we don't need # the front-end controller. This consistent behaviour means that we don't need
# to specify custom rules for certain paths (e.g. images and other assets, # to specify custom rules for certain paths (e.g. images and other assets,
# `/updater`, `/ocs-provider`), and thus # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus
# `try_files $uri $uri/ /index.php$request_uri` # `try_files $uri $uri/ /index.php$request_uri`
# always provides the desired behaviour. # always provides the desired behaviour.
index index.php index.html /index.php$request_uri; index index.php index.html /index.php$request_uri;
@ -113,7 +113,7 @@ server {
# to the URI, resulting in a HTTP 500 error response. # to the URI, resulting in a HTTP 500 error response.
location ~ \.php(?:$|/) { location ~ \.php(?:$|/) {
# Required for legacy support # Required for legacy support
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;
fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info; set $path_info $fastcgi_path_info;
@ -134,8 +134,7 @@ server {
fastcgi_max_temp_file_size 0; fastcgi_max_temp_file_size 0;
} }
# Serve static files location ~ \.(?:css|js|svg|gif|png|jpg|ico|wasm|tflite|map)$ {
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
@ -143,7 +142,6 @@ server {
location ~ \.wasm$ { location ~ \.wasm$ {
default_type application/wasm; default_type application/wasm;
} }
} }
location ~ \.woff2?$ { location ~ \.woff2?$ {
@ -157,14 +155,6 @@ 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";

View File

@ -1,2 +0,0 @@
# min hour day month weekday command
*/5 * * * * /usr/bin/php /app/www/public/cron.php 2>&1

9
root/etc/crontabs/root Normal file
View File

@ -0,0 +1,9 @@
# do daily/weekly/monthly maintenance
# min hour day month weekday command
*/15 * * * * run-parts /etc/periodic/15min
0 * * * * run-parts /etc/periodic/hourly
0 2 * * * run-parts /etc/periodic/daily
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
# nextcloud cron
*/5 * * * * s6-setuidgid abc php -f /app/www/public/cron.php

View File

@ -0,0 +1,23 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# make folders
mkdir -p \
/config/crontabs
## root
# if crontabs do not exist in config
if [[ ! -f /config/crontabs/root ]]; then
# copy crontab from system
if crontab -l -u root; then
crontab -l -u root >/config/crontabs/root
fi
# if crontabs still do not exist in config (were not copied from system)
# copy crontab from included defaults (using -n, do not overwrite an existing file)
cp -n /etc/crontabs/root /config/crontabs/
fi
sed -i "s|s6-setuidgid abc php[0-9]* -f /config/www/nextcloud/cron.php|s6-setuidgid abc php -f /app/www/public/cron.php|" /config/crontabs/root
# set permissions and import user crontabs
lsiown root:root /config/crontabs/root
crontab -u root /config/crontabs/root

View File

@ -0,0 +1 @@
oneshot

View File

@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-crontabs-config/run

View File

@ -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/
@ -21,12 +21,13 @@ if [[ -f /config/www/nextcloud/version.php ]]; then
! -path "/config/www/nextcloud/config" \ ! -path "/config/www/nextcloud/config" \
! -path "/config/www/nextcloud/themes" \ ! -path "/config/www/nextcloud/themes" \
-delete -delete
sed -i "s|/config/www/nextcloud/cron.php|/app/www/public/cron.php|g" /config/crontabs/root
touch /config/www/nextcloud/config/needs_migration touch /config/www/nextcloud/config/needs_migration
fi fi
# 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 +35,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 | xargs) image_version=$(php -r "require '/app/www/src/version.php'; echo implode('.', \$OC_Version);" 2>/dev/null)
installed_version=$(php -r "require '/config/www/nextcloud/config/config.php'; echo \$CONFIG['version'];" 2>/dev/null | xargs) installed_version=$(php -r "require '/config/www/nextcloud/config/config.php'; echo \$CONFIG['version'];" 2>/dev/null)
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 +55,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 +81,11 @@ if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_ins
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 +95,11 @@ if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_ins
/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!"
@ -124,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 --type=boolean occ config:system:set filelocking.enabled --value=true
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'
@ -132,9 +133,6 @@ 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:"
@ -143,19 +141,19 @@ else
fi fi
# remove problematic apps # remove problematic apps
for APP in richdocumentscode; do for APP in richdocumentscode updatenotification; 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
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 +161,8 @@ 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
if [[ -s /etc/nginx/mime.types ]]; then
sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types
sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types
fi

2
root/migrations/02-default-location Executable file → Normal file
View File

@ -5,7 +5,7 @@ DEFAULT_CONF="/config/nginx/site-confs/default.conf"
OLD_ROOT="root /config/www/nextcloud/;" OLD_ROOT="root /config/www/nextcloud/;"
NEW_ROOT="root /app/www/public;" NEW_ROOT="root /app/www/public;"
if [[ -f "${DEFAULT_CONF}" ]] && grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then if grep -q "${OLD_ROOT}" "${DEFAULT_CONF}"; then
echo "updating root in ${DEFAULT_CONF}" echo "updating root in ${DEFAULT_CONF}"
sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}" sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}"
fi fi