Compare commits

..

153 Commits

Author SHA1 Message Date
LinuxServer-CI
31bdc55111
Bot Updating Package Versions 2025-01-09 13:00:07 +00:00
quietsy
4c50f935e9
Merge pull request #481 from linuxserver/fix-large-files-develop
Fix uploading large files
2025-01-09 13:05:40 +02:00
quietsy
77f8176c20 Fix uploading large files 2025-01-09 12:43:08 +02:00
LinuxServer-CI
2e9473a1d6
Bot Updating Package Versions 2025-01-07 11:51:01 +00:00
LinuxServer-CI
b80003caa4
Bot Updating Package Versions 2024-12-24 11:50:56 +00:00
LinuxServer-CI
447a77ebc7
Bot Updating Package Versions 2024-12-17 11:56:09 +00:00
LinuxServer-CI
04e96fdd76
Bot Updating Templated Files 2024-12-17 11:51:18 +00:00
LinuxServer-CI
95febfb1e8
Bot Updating Templated Files 2024-12-17 11:49:28 +00:00
LinuxServer-CI
a90c6096ba
Bot Updating Templated Files 2024-12-05 14:00:00 +00:00
LinuxServer-CI
4f5f890fdd
Bot Updating Templated Files 2024-12-03 11:54:02 +00:00
LinuxServer-CI
a6b2ac9b27
Bot Updating Templated Files 2024-12-03 11:52:21 +00:00
LinuxServer-CI
097f73a1e6
Bot Updating Templated Files 2024-12-03 11:48:38 +00:00
LinuxServer-CI
0aad6a0fe5
Bot Updating Package Versions 2024-11-26 11:50:40 +00:00
LinuxServer-CI
b0182fbb72
Bot Updating Package Versions 2024-11-19 11:51:25 +00:00
LinuxServer-CI
acf5cd8105
Bot Updating Templated Files 2024-11-12 11:50:24 +00:00
LinuxServer-CI
091f478f34
Bot Updating Templated Files 2024-11-12 11:48:30 +00:00
LinuxServer-CI
ad7ade282f
Bot Updating Package Versions 2024-11-05 11:49:49 +00:00
LinuxServer-CI
47e8542612
Bot Updating Package Versions 2024-10-31 16:45:01 +00:00
LinuxServer-CI
2e9430603a
Bot Updating Package Versions 2024-10-29 11:50:16 +00:00
LinuxServer-CI
ce4f4e0df1
Bot Updating Package Versions 2024-10-22 11:51:25 +00:00
LinuxServer-CI
f09bc760ae
Bot Updating Package Versions 2024-10-08 11:49:45 +00:00
LinuxServer-CI
7b8466802d
Bot Updating Package Versions 2024-10-04 13:40:12 +00:00
LinuxServer-CI
f1566c4926
Bot Updating Package Versions 2024-10-01 11:56:36 +00:00
LinuxServer-CI
5cd8bd9fdb
Bot Updating Templated Files 2024-10-01 11:51:28 +00:00
LinuxServer-CI
2e23cd4063
Bot Updating Templated Files 2024-10-01 11:49:55 +00:00
LinuxServer-CI
e6fe3252d1
Bot Updating Templated Files 2024-10-01 11:48:29 +00:00
LinuxServer-CI
d19b41e55c
Bot Updating Package Versions 2024-09-24 11:49:50 +00:00
LinuxServer-CI
0f73a9da0e
Bot Updating Package Versions 2024-09-17 11:51:05 +00:00
Eric Nemchik
0545e001d4
Merge pull request #456 from linuxserver/ipv6-listen-develop
separate ipv6 listen in default site-conf [develop]
2024-09-14 09:04:24 -07:00
LinuxServer-CI
3e3b671d26
Bot Updating Package Versions 2024-09-12 19:33:12 +00:00
LinuxServer-CI
f521d58c68
Bot Updating Package Versions 2024-09-10 11:50:57 +00:00
LinuxServer-CI
ecf6ad56b4
Bot Updating Package Versions 2024-09-05 20:36:57 +00:00
LinuxServer-CI
875d8b435b
Bot Updating Package Versions 2024-09-03 11:50:16 +00:00
LinuxServer-CI
c0df3febbf
Bot Updating Package Versions 2024-08-27 11:50:53 +00:00
LinuxServer-CI
7bd3ac412f
Bot Updating Package Versions 2024-08-20 11:57:03 +00:00
LinuxServer-CI
a74e879b57
Bot Updating Templated Files 2024-08-20 11:51:35 +00:00
LinuxServer-CI
931bb3580f Bot Updating Templated Files 2024-08-20 11:49:18 +00:00
LinuxServer-CI
95f63060e0 Bot Updating Package Versions 2024-08-14 18:40:37 +00:00
LinuxServer-CI
a005ca269f Bot Updating Package Versions 2024-08-08 22:36:18 +00:00
LinuxServer-CI
2164d84c52 Bot Updating Package Versions 2024-08-06 16:41:13 +00:00
LinuxServer-CI
82ae5a23aa Bot Updating Package Versions 2024-08-06 11:49:49 +00:00
LinuxServer-CI
a4fddd90ab Bot Updating Package Versions 2024-08-01 19:34:13 +00:00
LinuxServer-CI
6f99c81c7d Bot Updating Package Versions 2024-07-25 22:37:13 +00:00
LinuxServer-CI
e59909addc Bot Updating Package Versions 2024-07-23 11:54:34 +00:00
Eric Nemchik
32c9f3ba1e
separate ipv6 listen in default site-conf [develop] 2024-07-16 20:40:32 -05:00
LinuxServer-CI
c690639528 Bot Updating Templated Files 2024-07-16 11:50:55 +00:00
LinuxServer-CI
5aebb77566 Bot Updating Templated Files 2024-07-16 11:48:24 +00:00
LinuxServer-CI
85e673015c Bot Updating Package Versions 2024-07-12 08:38:03 +00:00
LinuxServer-CI
e372bf8c1f Bot Updating Package Versions 2024-07-09 11:53:27 +00:00
LinuxServer-CI
9888ec10bb Bot Updating Package Versions 2024-07-02 11:52:22 +00:00
LinuxServer-CI
746fc2314f Bot Updating Package Versions 2024-06-25 14:57:41 +00:00
Adam
2ebf64ed79
Merge pull request #445 from linuxserver/develop-3.20
Rebase to 3.20 (develop)
2024-06-25 15:50:18 +01:00
thespad
62d13eaf3b
Rebase to 3.20 2024-06-24 20:36:45 +01:00
LinuxServer-CI
4adc904193 Bot Updating Package Versions 2024-06-21 14:36:12 +00:00
LinuxServer-CI
dbe99cc569 Bot Updating Package Versions 2024-06-17 21:34:18 +00:00
LinuxServer-CI
abba10c24c Bot Updating Package Versions 2024-06-11 11:50:49 +00:00
LinuxServer-CI
4513213b97 Bot Updating Package Versions 2024-06-04 11:50:59 +00:00
LinuxServer-CI
e25462f5d6 Bot Updating Package Versions 2024-05-28 11:52:42 +00:00
LinuxServer-CI
93c0ad7d37 Bot Updating Templated Files 2024-05-21 11:51:56 +00:00
LinuxServer-CI
c2921714b2 Bot Updating Templated Files 2024-05-21 11:49:39 +00:00
LinuxServer-CI
e4147b179b Bot Updating Package Versions 2024-05-18 08:36:32 +00:00
LinuxServer-CI
6838676b53 Bot Updating Package Versions 2024-05-14 11:53:21 +00:00
LinuxServer-CI
2687e98212 Bot Updating Templated Files 2024-05-14 11:48:35 +00:00
LinuxServer-CI
419c882f73 Bot Updating Package Versions 2024-05-07 11:53:07 +00:00
LinuxServer-CI
e5f9510fed Bot Updating Templated Files 2024-05-07 11:48:40 +00:00
LinuxServer-CI
222b58c99c Bot Updating Package Versions 2024-04-30 11:56:53 +00:00
LinuxServer-CI
e355bcbe6a Bot Updating Templated Files 2024-04-30 11:48:41 +00:00
LinuxServer-CI
4f00b831d3 Bot Updating Package Versions 2024-04-23 11:50:13 +00:00
LinuxServer-CI
7a8248f3cd Bot Updating Package Versions 2024-04-16 11:50:06 +00:00
LinuxServer-CI
915ab07cd9 Bot Updating Package Versions 2024-04-08 13:35:02 +00:00
LinuxServer-CI
afb828d4da Bot Updating Package Versions 2024-04-02 11:50:18 +00:00
LinuxServer-CI
f7056138b6 Bot Updating Package Versions 2024-03-26 11:53:11 +00:00
LinuxServer-CI
70f6155bbf Bot Updating Package Versions 2024-03-21 21:33:06 +00:00
LinuxServer-CI
b9cf966878 Bot Updating Package Versions 2024-03-19 11:52:47 +00:00
LinuxServer-CI
dead6f366e Bot Updating Package Versions 2024-03-14 21:33:06 +00:00
LinuxServer-CI
c2c4010ffb Bot Updating Templated Files 2024-03-12 20:31:37 +00:00
LinuxServer-CI
150c587dff Bot Updating Package Versions 2024-03-07 22:34:05 +00:00
LinuxServer-CI
671cf6fe6c Bot Updating Package Versions 2024-03-06 18:32:28 +00:00
LinuxServer-CI
a7da03b8d8 Bot Updating Templated Files 2024-03-06 18:25:39 +00:00
Eric Nemchik
7c8251110c
Rebase to Alpine 3.19 (#399)
* Rebase to Alpine 3.19

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

* update date and edge repo

---------

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

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

Signed-off-by: GitHub <noreply@github.com>
2023-08-31 14:00:49 +00:00
LinuxServer-CI
e7cdf18d23 Bot Updating Package Versions 2023-08-29 11:51:13 +00:00
Eric Nemchik
74f9122ab6
Merge branch 'standard-cron' into standard-cron-develop 2023-08-26 09:59:51 -05: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
25 changed files with 664 additions and 971 deletions

0
.editorconfig Normal file → Executable file
View File

6
.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)
@ -115,7 +115,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Update the changelog ## Update the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nextcloud/tree/master/root), add an entry to the changelog If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nextcloud/tree/develop/root), add an entry to the changelog
```yml ```yml
changelogs: changelogs:

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

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

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:

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

@ -3,54 +3,43 @@ 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@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/develop'
env: env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }} SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
printf "# External trigger for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY printf "# External trigger for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY
if grep -q "^nextcloud_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then if grep -q "^nextcloud_develop" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_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 "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_develop\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY 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 echo "> External trigger running off of develop branch. To disable this trigger, add \`nextcloud_develop\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1) EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease == true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1)
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^nextcloud_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
fi
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve external version for nextcloud branch master" FAILURE_REASON="Can't retrieve external version for nextcloud branch develop"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-nextcloud/actions/runs/${{ github.run_id }}" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-nextcloud/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
"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}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/nextcloud" image="linuxserver/nextcloud"
tag="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')
@ -96,35 +85,35 @@ jobs:
if [ -z "${IMAGE_VERSION}" ]; then if [ -z "${IMAGE_VERSION}" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag latest" FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag develop"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
if [[ "${artifacts_found}" == "false" ]]; then if [[ "${artifacts_found}" == "false" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
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." FAILURE_REASON="New version ${EXT_RELEASE} for nextcloud tag develop is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**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 }}
else else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi fi
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/buildWithParameters?PACKAGE_CHECK=false \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/develop/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
@ -139,7 +128,7 @@ jobs:
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit" --data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****" echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for nextcloud tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}" TRIGGER_REASON="A version change was detected for nextcloud tag develop. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}

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

@ -5,9 +5,6 @@ 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

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

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

@ -5,9 +5,6 @@ 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

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

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.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -18,48 +18,45 @@ RUN \
ffmpeg \ ffmpeg \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
imagemagick-heic \
imagemagick-pdf \
imagemagick-svg \
libxml2 \ libxml2 \
php84-apcu \ php83-apcu \
php84-bcmath \ php83-bcmath \
php84-bz2 \ php83-bz2 \
php84-dom \ php83-dom \
php84-exif \ php83-exif \
php84-ftp \ php83-ftp \
php84-gd \ php83-gd \
php84-gmp \ php83-gmp \
php84-imap \ php83-imap \
php84-intl \ php83-intl \
php84-ldap \ php83-ldap \
php84-opcache \ php83-opcache \
php84-pcntl \ php83-pcntl \
php84-pdo_mysql \ php83-pdo_mysql \
php84-pdo_pgsql \ php83-pdo_pgsql \
php84-pdo_sqlite \ php83-pdo_sqlite \
php84-pecl-imagick \ php83-pecl-imagick \
php84-pecl-memcached \ php83-pecl-mcrypt \
php84-pecl-smbclient \ php83-pecl-memcached \
php84-pgsql \ php83-pecl-smbclient \
php84-posix \ php83-pgsql \
php84-redis \ php83-posix \
php84-sodium \ php83-redis \
php84-sqlite3 \ php83-sodium \
php84-sysvsem \ php83-sqlite3 \
php84-xmlreader \ php83-sysvsem \
php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
util-linux \
sudo && \ sudo && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php83/php-fpm.d/www.conf && \
if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \ grep -qxF 'clear_env = no' /etc/php83/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php83/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php84/conf.d/apcu.ini && \ } >> /etc/php83/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@ -69,7 +66,7 @@ RUN \
echo 'opcache.revalidate_freq=60'; \ echo 'opcache.revalidate_freq=60'; \
echo 'opcache.jit=1255'; \ echo 'opcache.jit=1255'; \
echo 'opcache.jit_buffer_size=128M'; \ echo 'opcache.jit_buffer_size=128M'; \
} >> "/etc/php84/conf.d/00_opcache.ini" && \ } >> "/etc/php83/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=-1'; \ echo 'memory_limit=-1'; \
echo 'upload_max_filesize=100G'; \ echo 'upload_max_filesize=100G'; \
@ -78,18 +75,18 @@ RUN \
echo 'max_execution_time=3600'; \ echo 'max_execution_time=3600'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php84/conf.d/nextcloud.ini" && \ } >> "/etc/php83/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/app/www/src/ && \ /app/www/src/ && \
if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \ if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \
NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \ NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \
| jq -r '.[] | select(.prerelease != true) | .tag_name' \ | jq -r '.[] | select(.prerelease == true) | .tag_name' \
| sed 's|^v||g' | sort -rV | head -1); \ | sed 's|^v||g' | sort -rV | head -1); \
fi && \ fi && \
curl -o \ curl -o \
/tmp/nextcloud.tar.bz2 -L \ /tmp/nextcloud.tar.bz2 -L \
https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \ https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \
tar xf /tmp/nextcloud.tar.bz2 -C \ tar xf /tmp/nextcloud.tar.bz2 -C \
/app/www/src --strip-components=1 && \ /app/www/src --strip-components=1 && \
rm -rf /app/www/src/updater && \ rm -rf /app/www/src/updater && \

View File

@ -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.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -18,48 +18,45 @@ RUN \
ffmpeg \ ffmpeg \
gnu-libiconv \ gnu-libiconv \
imagemagick \ imagemagick \
imagemagick-heic \
imagemagick-pdf \
imagemagick-svg \
libxml2 \ libxml2 \
php84-apcu \ php83-apcu \
php84-bcmath \ php83-bcmath \
php84-bz2 \ php83-bz2 \
php84-dom \ php83-dom \
php84-exif \ php83-exif \
php84-ftp \ php83-ftp \
php84-gd \ php83-gd \
php84-gmp \ php83-gmp \
php84-imap \ php83-imap \
php84-intl \ php83-intl \
php84-ldap \ php83-ldap \
php84-opcache \ php83-opcache \
php84-pcntl \ php83-pcntl \
php84-pdo_mysql \ php83-pdo_mysql \
php84-pdo_pgsql \ php83-pdo_pgsql \
php84-pdo_sqlite \ php83-pdo_sqlite \
php84-pecl-imagick \ php83-pecl-imagick \
php84-pecl-memcached \ php83-pecl-mcrypt \
php84-pecl-smbclient \ php83-pecl-memcached \
php84-pgsql \ php83-pecl-smbclient \
php84-posix \ php83-pgsql \
php84-redis \ php83-posix \
php84-sodium \ php83-redis \
php84-sqlite3 \ php83-sodium \
php84-sysvsem \ php83-sqlite3 \
php84-xmlreader \ php83-sysvsem \
php83-xmlreader \
rsync \ rsync \
samba-client \ samba-client \
util-linux \
sudo && \ sudo && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php83/php-fpm.d/www.conf && \
if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \ grep -qxF 'clear_env = no' /etc/php83/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php83/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \ echo "**** configure php for nextcloud ****" && \
{ \ { \
echo 'apc.enable_cli=1'; \ echo 'apc.enable_cli=1'; \
} >> /etc/php84/conf.d/apcu.ini && \ } >> /etc/php83/conf.d/apcu.ini && \
{ \ { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@ -69,7 +66,7 @@ RUN \
echo 'opcache.revalidate_freq=60'; \ echo 'opcache.revalidate_freq=60'; \
echo 'opcache.jit=1255'; \ echo 'opcache.jit=1255'; \
echo 'opcache.jit_buffer_size=128M'; \ echo 'opcache.jit_buffer_size=128M'; \
} >> "/etc/php84/conf.d/00_opcache.ini" && \ } >> "/etc/php83/conf.d/00_opcache.ini" && \
{ \ { \
echo 'memory_limit=-1'; \ echo 'memory_limit=-1'; \
echo 'upload_max_filesize=100G'; \ echo 'upload_max_filesize=100G'; \
@ -78,18 +75,18 @@ RUN \
echo 'max_execution_time=3600'; \ echo 'max_execution_time=3600'; \
echo 'output_buffering=0'; \ echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \ echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php84/conf.d/nextcloud.ini" && \ } >> "/etc/php83/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \ echo "**** install nextcloud ****" && \
mkdir -p \ mkdir -p \
/app/www/src/ && \ /app/www/src/ && \
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 && \

256
Jenkinsfile vendored
View File

@ -56,27 +56,15 @@ pipeline {
steps{ steps{
echo "Running on node: ${NODE_NAME}" echo "Running on node: ${NODE_NAME}"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Pruning builder" containers=$(docker ps -aq)
docker builder prune -f --builder container || :
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit') docker stop ${containers}
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi fi
docker system prune -f --volumes || : docker system prune -af --volumes || : '''
docker image prune -af || :
'''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''', script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:develop 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@ -94,11 +82,7 @@ pipeline {
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
if ( env.SYFT_IMAGE_TAG == null ) {
env.SYFT_IMAGE_TAG = 'latest'
}
} }
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
@ -109,7 +93,7 @@ pipeline {
script{ script{
env.LS_TAG_NUMBER = sh( env.LS_TAG_NUMBER = sh(
script: '''#! /bin/bash script: '''#! /bin/bash
tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null) tagsha=$(git rev-list -n 1 develop-${LS_RELEASE} 2>/dev/null)
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
echo ${LS_RELEASE_NUMBER} echo ${LS_RELEASE_NUMBER}
elif [ -z "${GIT_COMMIT}" ]; then elif [ -z "${GIT_COMMIT}" ]; then
@ -147,7 +131,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE = sh( env.EXT_RELEASE = sh(
script: ''' curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1 ''', script: ''' curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease == true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1 ''',
returnStdout: true).trim() returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command' env.RELEASE_LINK = 'custom_command'
} }
@ -187,10 +171,10 @@ pipeline {
} }
} }
} }
// If this is a master build use live docker endpoints // If this is a develop build use live docker endpoints
stage("Set ENV live build"){ stage("Set ENV live build"){
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
@ -200,22 +184,21 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
} }
} }
} }
// If this is a dev build use dev docker endpoints // If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){ stage("Set ENV dev build"){
when { when {
not {branch "master"} not {branch "develop"}
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
@ -225,16 +208,15 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@ -250,17 +232,16 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@ -283,7 +264,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \ apk add --no-cache python3 && \
python3 -m venv /lsiopy && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \ pip install --no-cache-dir -U pip && \
@ -295,7 +276,7 @@ pipeline {
// Use helper containers to render templated files // Use helper containers to render templated files
stage('Update-Templates') { stage('Update-Templates') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
expression { expression {
env.CONTAINER_NAME != null env.CONTAINER_NAME != null
@ -307,24 +288,24 @@ pipeline {
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest docker pull ghcr.io/linuxserver/jenkins-builder:latest
# Cloned repo paths for templating: # Cloned repo paths for templating:
# ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch master of ${LS_USER}/${LS_REPO} for running the jenkins builder on # ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch develop of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch master of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github # ${TEMPDIR}/repo/${LS_REPO}: Cloned branch develop of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
# ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github # ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos # ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github # ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
git clone --branch master --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME} git clone --branch develop --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest
echo "Starting Stage 1 - Jenkinsfile update" echo "Starting Stage 1 - Jenkinsfile update"
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile git add Jenkinsfile
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit" echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
@ -343,13 +324,13 @@ pipeline {
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
for i in ${TEMPLATES_TO_DELETE}; do for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}" git rm "${i}"
done done
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit" echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
@ -364,20 +345,20 @@ pipeline {
sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml
fi fi
mkdir -p ${TEMPDIR}/d2 mkdir -p ${TEMPDIR}/d2
docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:latest docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:develop
ls -al ${TEMPDIR}/d2 ls -al ${TEMPDIR}/d2
yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-latest.d2\\")" readme-vars.yml yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-develop.d2\\")" readme-vars.yml
if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then
echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit." echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit."
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml
git add readme-vars.yml git add readme-vars.yml
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit" echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
@ -394,7 +375,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
@ -407,8 +388,8 @@ pipeline {
fi fi
git add readme-vars.yml ${TEMPLATED_FILES} git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit" echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
@ -509,7 +490,7 @@ pipeline {
// Exit the build if the Templated files were just updated // Exit the build if the Templated files were just updated
stage('Template-exit') { stage('Template-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true' environment name: 'FILES_UPDATED', value: 'true'
expression { expression {
@ -522,10 +503,10 @@ pipeline {
} }
} }
} }
// If this is a master build check the S6 service file perms // If this is a develop build check the S6 service file perms
stage("Check S6 Service file Permissions"){ stage("Check S6 Service file Permissions"){
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@ -618,16 +599,13 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in "${!pids[@]}"; do for p in $(jobs -p); do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } wait "$p" || { echo "job $p failed" >&2; exit 1; }
done done
fi fi
''' '''
@ -687,16 +665,13 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in "${!pids[@]}"; do for p in $(jobs -p); do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } wait "$p" || { echo "job $p failed" >&2; exit 1; }
done done
fi fi
''' '''
@ -750,14 +725,12 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in "${!pids[@]}"; do for p in $(jobs -p); do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } wait "$p" || { echo "job $p failed" >&2; exit 1; }
done done
fi fi
''' '''
@ -768,8 +741,7 @@ pipeline {
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
docker stop ${containers} docker stop ${containers}
fi fi
docker system prune -f --volumes || : docker system prune -af --volumes || :
docker image prune -af || :
''' '''
} }
} }
@ -778,7 +750,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison // Take the image we just built and dump package versions for comparison
stage('Update-packages') { stage('Update-packages') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@ -795,20 +767,20 @@ pipeline {
docker run --rm \ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \ -v ${TEMPDIR}:/tmp \
ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \ ghcr.io/anchore/syft:latest \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt ${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 ) NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github" echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f develop
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/ cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/ cd ${TEMPDIR}/${LS_REPO}/
wait wait
git add package_versions.txt git add package_versions.txt
git commit -m 'Bot Updating Package Versions' git commit -m 'Bot Updating Package Versions'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process" echo "Package tag updated, stopping build process"
else else
@ -826,7 +798,7 @@ pipeline {
// Exit the build if the package file was just updated // Exit the build if the package file was just updated
stage('PACKAGE-exit') { stage('PACKAGE-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true' environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@ -840,7 +812,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push // Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') { stage('PACKAGECHECK-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false' environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@ -882,7 +854,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true" CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi fi
fi fi
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@ -894,7 +866,7 @@ pipeline {
-e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \ -e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \ -e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \ -e META_TAG=\"${META_TAG}\" \
-e RELEASE_TAG=\"latest\" \ -e RELEASE_TAG=\"develop\" \
-e PORT=\"${CI_PORT}\" \ -e PORT=\"${CI_PORT}\" \
-e SSL=\"${CI_SSL}\" \ -e SSL=\"${CI_SSL}\" \
-e BASE=\"${DIST_IMAGE}\" \ -e BASE=\"${DIST_IMAGE}\" \
@ -905,10 +877,7 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \ -e NODE_NAME=\"${NODE_NAME}\" \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \ -t ghcr.io/linuxserver/ci:latest \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py''' python3 test_build.py'''
} }
} }
@ -934,11 +903,9 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:develop -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@ -963,27 +930,20 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-develop -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-develop -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \ docker buildx imagetools create -t ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:amd64-develop ${MANIFESTIMAGE}:arm64v8-develop
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \ docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@ -993,7 +953,7 @@ pipeline {
// If this is a public release tag it in the LS Github // If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') { stage('Github-Tag-Push-Release') {
when { when {
branch "master" branch "develop"
expression { expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@ -1001,54 +961,36 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to develop",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
jq -n \ echo '{"tag_name":"'${META_TAG}'",\
--arg tag_name "$META_TAG" \ "target_commitish": "develop",\
--arg target_commitish "master" \ "name": "'${META_TAG}'",\
--arg ci_url "${CI_URL:-N/A}" \ "body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
--arg ls_notes "$AUTO_RELEASE_NOTES" \ printf '","draft": false,"prerelease": true}' >> releasebody.json
--arg remote_notes "$(cat releasebody.json)" \ paste -d'\\0' start releasebody.json > releasebody.json.done
'{ curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
"tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": false }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
} }
} }
// Add protection to the release branch // Add protection to the release branch
stage('Github-Release-Branch-Protection') { stage('Github-Release-Branch-Protection') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
echo "Setting up protection for release branch master" echo "Setting up protection for release branch develop"
sh '''#! /bin/bash sh '''#! /bin/bash
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \ curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/develop/protection \
-d $(jq -c . << EOF -d $(jq -c . << EOF
{ {
"required_status_checks": null, "required_status_checks": null,
@ -1210,22 +1152,12 @@ EOF
} }
cleanup { cleanup {
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Pruning builder!!" echo "Performing docker system prune!!"
docker builder prune -f --builder container || : containers=$(docker ps -aq)
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit') docker stop ${containers}
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi fi
docker system prune -f --volumes || : docker system prune -af --volumes || :
docker image prune -af || :
''' '''
cleanWs() cleanWs()
} }

0
LICENSE Normal file → Executable file
View File

View File

@ -1,10 +1,11 @@
<!-- 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 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,8 +20,9 @@ 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
@ -34,8 +36,8 @@ 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%2Fdevelop%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/nextcloud/develop/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.
@ -47,7 +49,7 @@ Where are your photos and documents? With Nextcloud you pick a server of your ch
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://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://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/nextcloud: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 +57,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 +67,11 @@ 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:
@ -135,7 +107,7 @@ If you are using a reverse proxy which validates certificates, you need to [disa
To help you get started creating a container from this image you can either use docker-compose or the docker cli. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE] >[!NOTE]
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided. >Unless a parameter is flaged 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))
@ -143,7 +115,7 @@ To help you get started creating a container from this image you can either use
--- ---
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
@ -169,7 +141,7 @@ docker run -d \
-v /path/to/nextcloud/config:/config \ -v /path/to/nextcloud/config:/config \
-v /path/to/data:/data \ -v /path/to/data:/data \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/nextcloud:latest lscr.io/linuxserver/nextcloud:develop
``` ```
## Parameters ## Parameters
@ -249,7 +221,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
* Image version number: * Image version number:
```bash ```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:latest docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:develop
``` ```
## Updating Info ## Updating Info
@ -297,7 +269,7 @@ Below are the instructions for updating containers:
* Update the image: * Update the image:
```bash ```bash
docker pull lscr.io/linuxserver/nextcloud:latest docker pull lscr.io/linuxserver/nextcloud:develop
``` ```
* Stop the running container: * Stop the running container:
@ -334,7 +306,7 @@ cd docker-nextcloud
docker build \ docker build \
--no-cache \ --no-cache \
--pull \ --pull \
-t lscr.io/linuxserver/nextcloud:latest . -t lscr.io/linuxserver/nextcloud:develop .
``` ```
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
@ -347,16 +319,8 @@ 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.01.25:** - Fix uploading large files. Existing users should update their nginx confs.
* **09.07.24:** - Add `previous` tag for n-1 releases.
* **24.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings. * **24.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **19.05.24:** - Added util-linux package required for taskset.
* **10.04.24:** - Added imagemagick-pdf.
* **05.04.24:** - Added imagemagick-heic. Manual update to `config.php` required - see above.
* **02.04.24:** - Existing users should update: site-confs/default.conf - Add support for the Client Push (notify_push) plugin and the [new mod](https://github.com/linuxserver/docker-mods/tree/nextcloud-notify-push).
* **22.03.24:** - Add imagemagick-svg module.
* **06.03.24:** - Rebase to Alpine 3.19 with php 8.3. * **06.03.24:** - Rebase to Alpine 3.19 with php 8.3.
* **02.01.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf. * **02.01.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.
* **22.12.23:** - Site default conf updating to include mime.types for js and mjs and update location to include more file types. * **22.12.23:** - Site default conf updating to include mime.types for js and mjs and update location to include more file types.

View File

@ -3,10 +3,10 @@
# jenkins variables # jenkins variables
project_name: docker-nextcloud project_name: docker-nextcloud
external_type: na external_type: na
custom_version_command: "curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1" custom_version_command: "curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease == true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1"
release_type: stable release_type: prerelease
release_tag: latest release_tag: develop
ls_branch: master ls_branch: develop
repo_vars: repo_vars:
- BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE' - BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE'
- LS_USER = 'linuxserver' - LS_USER = 'linuxserver'

View File

@ -1,541 +1,422 @@
NAME VERSION TYPE NAME VERSION TYPE
Process Wrapper 0.0.0.0 binary (+1 duplicate) Hidden Input 1, 0, 0, 0 dotnet
acl-libs 2.3.2-r1 apk Process Wrapper 1.0.0.0 dotnet (+1 duplicate)
activity 6.0.0-dev.0 npm activity 4.0.0 npm
agetty 2.41-r9 apk alpine-baselayout 3.6.5-r0 apk
alpine-baselayout 3.7.0-r0 apk alpine-baselayout-data 3.6.5-r0 apk
alpine-baselayout-data 3.7.0-r0 apk alpine-keys 2.4-r1 apk
alpine-keys 2.5-r0 apk alpine-release 3.20.3-r0 apk
alpine-release 3.22.3-r0 apk alsa-lib 1.2.11-r0 apk
alsa-lib 1.2.14-r0 apk amphp/amp v2.6.4 php-composer (+1 duplicate)
amphp/amp v2.6.5 php-composer amphp/byte-stream v1.8.2 php-composer (+1 duplicate)
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.1 php-composer
amphp/parser v1.1.1 php-composer amphp/process v1.1.7 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.9.1-r0 apk
andrewdalpino/okbloomer 1.0.0 php-composer apache2-utils 2.4.62-r0 apk
anstream 0.6.8 rust-crate apk-tools 2.14.4-r1 apk
anstyle 1.0.4 rust-crate app_api 1.0.0 npm
anstyle-parse 0.2.3 rust-crate apr 1.7.5-r0 apk
anstyle-query 1.0.2 rust-crate apr-util 1.6.3-r1 apk
anyhow 1.0.79 rust-crate argon2-libs 20190702-r5 apk
anyhow 1.0.98 rust-crate aws/aws-crt-php v1.2.7 php-composer
aom-libs 3.12.1-r0 apk aws/aws-sdk-php 3.324.13 php-composer
apache2-utils 2.4.66-r0 apk bamarni/composer-bin-plugin 1.8.2 php-composer (+1 duplicate)
apk-tools 2.14.9-r3 apk bantu/ini-get-wrapper v1.0.1 php-composer
apr 1.7.5-r0 apk bash 5.2.26-r0 apk
apr-util 1.6.3-r1 apk brick/math 0.12.1 php-composer
arg_enum_proc_macro 0.3.4 rust-crate brotli-libs 1.1.0-r2 apk
argon2-libs 20190702-r5 apk bruteforcesettings 4.0.0 npm
arrayvec 0.7.4 rust-crate busybox 1.36.1-r29 apk
av-metrics 0.9.1 rust-crate busybox-binsh 1.36.1-r29 apk
av1-grain 0.2.3 rust-crate c-ares 1.33.1-r0 apk
avahi-libs 0.8-r21 apk c-client 2007f-r15 apk
aws/aws-crt-php v1.2.7 php-composer ca-certificates 20241121-r0 apk
aws/aws-sdk-php 3.369.9 php-composer ca-certificates-bundle 20241121-r0 apk
bamarni/composer-bin-plugin 1.8.3 php-composer catatonit 0.2.0-r0 apk
bantu/ini-get-wrapper v1.0.1 php-composer christian-riesen/base32 1.6.0 php-composer
bash 5.2.37-r0 apk cjson 1.7.18-r0 apk
bitflags 2.4.1 rust-crate composer 2.8.4 binary
bitstream-io 2.2.0 rust-crate composer/pcre 3.3.1 php-composer
bitstream-io 2.6.0 rust-crate composer/semver 3.4.2 php-composer
bitvec 1.0.1 rust-crate composer/xdebug-handler 3.0.5 php-composer
bitvec_helpers 3.1.6 rust-crate coreutils 9.5-r1 apk
blkid 2.41-r9 apk coreutils-env 9.5-r1 apk
brick/math 0.12.1 php-composer coreutils-fmt 9.5-r1 apk
brotli-libs 1.1.0-r2 apk coreutils-sha512sum 9.5-r1 apk
busybox 1.37.0-r20 apk curl 8.11.1-r0 apk
busybox-binsh 1.37.0-r20 apk cweagans/composer-patches 1.7.3 php-composer
c-ares 1.34.6-r0 apk dbus-libs 1.14.10-r1 apk
c-client 2007f-r15 apk deepdiver/zipstreamer v2.0.3 php-composer
ca-certificates 20250911-r0 apk deepdiver1975/tarstreamer v2.1.0 php-composer
ca-certificates-bundle 20250911-r0 apk dnoegel/php-xdg-base-dir v0.1.1 php-composer
cairo 1.18.4-r0 apk doctrine/cache 2.2.0 php-composer
catatonit 0.2.1-r0 apk doctrine/dbal 3.9.1 php-composer
cfdisk 2.41-r9 apk doctrine/deprecations 1.1.3 php-composer (+1 duplicate)
cfg-if 1.0.0 rust-crate doctrine/event-manager 1.2.0 php-composer
christian-riesen/base32 1.6.0 php-composer doctrine/lexer 3.0.1 php-composer
cjson 1.7.19-r0 apk egulias/email-validator 4.0.2 php-composer
clap 4.4.14 rust-crate felixfbecker/advanced-json-rpc v3.2.1 php-composer
clap_builder 4.4.14 rust-crate felixfbecker/language-server-protocol v1.5.2 php-composer
clap_complete 4.4.6 rust-crate ffmpeg 6.1.1-r8 apk
clap_derive 4.4.7 rust-crate ffmpeg-libavcodec 6.1.1-r8 apk
clap_lex 0.6.0 rust-crate ffmpeg-libavdevice 6.1.1-r8 apk
colorchoice 1.0.0 rust-crate ffmpeg-libavfilter 6.1.1-r8 apk
composer 2.9.5 binary ffmpeg-libavformat 6.1.1-r8 apk
console 0.15.8 rust-crate ffmpeg-libavutil 6.1.1-r8 apk
coreutils 9.7-r1 apk ffmpeg-libpostproc 6.1.1-r8 apk
coreutils-env 9.7-r1 apk ffmpeg-libswresample 6.1.1-r8 apk
coreutils-fmt 9.7-r1 apk ffmpeg-libswscale 6.1.1-r8 apk
coreutils-sha512sum 9.7-r1 apk fftw-double-libs 3.3.10-r5 apk
crc 3.3.0 rust-crate fidry/cpu-core-counter 1.2.0 php-composer
crc-catalog 2.4.0 rust-crate files_downloadlimit 4.0.0 npm
crossbeam 0.8.4 rust-crate files_pdfviewer 4.0.0 npm
crossbeam-channel 0.5.14 rust-crate findutils 4.9.0-r5 apk
crossbeam-deque 0.8.5 rust-crate firstrunwizard 4.0.0 npm
crossbeam-epoch 0.9.18 rust-crate fontconfig 2.15.0-r1 apk
crossbeam-queue 0.3.11 rust-crate freetype 2.13.2-r0 apk
crossbeam-utils 0.8.19 rust-crate fribidi 1.0.15-r0 apk
cups-libs 2.4.16-r0 apk fusonic/opengraph v2.3.0 php-composer
curl 8.14.1-r2 apk gdbm 1.23-r1 apk
cweagans/composer-patches 1.7.3 php-composer giflib 5.2.2-r0 apk
dbus-libs 1.16.2-r1 apk giggsey/libphonenumber-for-php-lite 8.13.48 php-composer
deepdiver/zipstreamer v2.0.3 php-composer git 2.45.2-r0 apk
deepdiver1975/tarstreamer v2.1.0 php-composer git-init-template 2.45.2-r0 apk
dmesg 2.41-r9 apk glib 2.80.5-r0 apk
doctrine/dbal 3.10.4 php-composer glslang-libs 1.3.261.1-r0 apk
doctrine/deprecations 1.1.5 php-composer gmp 6.3.0-r1 apk
doctrine/event-manager 2.0.1 php-composer gnu-libiconv 1.17-r2 apk
doctrine/lexer 3.0.1 php-composer gnu-libiconv-libs 1.17-r2 apk
dolby_vision 3.3.1 rust-crate gnutls 3.8.5-r0 apk
egulias/email-validator 4.0.4 php-composer graphite2 1.3.14-r6 apk
either 1.9.0 rust-crate guzzlehttp/guzzle 7.9.2 php-composer
errno 0.3.8 rust-crate guzzlehttp/promises 2.0.4 php-composer
fern 0.6.2 rust-crate guzzlehttp/psr7 2.7.0 php-composer
ffmpeg 6.1.2-r2 apk guzzlehttp/uri-template v1.0.3 php-composer
ffmpeg-libavcodec 6.1.2-r2 apk harfbuzz 8.5.0-r0 apk
ffmpeg-libavdevice 6.1.2-r2 apk hexogen/kdtree v0.2.6 php-composer
ffmpeg-libavfilter 6.1.2-r2 apk hwdata-pci 0.382-r0 apk
ffmpeg-libavformat 6.1.2-r2 apk icewind/searchdav v3.1.0 php-composer
ffmpeg-libavutil 6.1.2-r2 apk icewind/smb v3.5.4 php-composer
ffmpeg-libpostproc 6.1.2-r2 apk icewind/streams v0.7.7 php-composer (+1 duplicate)
ffmpeg-libswresample 6.1.2-r2 apk icu-data-en 74.2-r0 apk
ffmpeg-libswscale 6.1.2-r2 apk icu-libs 74.2-r0 apk
fftw-double-libs 3.3.10-r6 apk imagemagick 7.1.1.32-r2 apk
files_downloadlimit 5.1.0-dev.0 npm imagemagick-jpeg 7.1.1.32-r2 apk
files_pdfviewer 6.0.0-dev.0 npm imagemagick-jxl 7.1.1.32-r2 apk
findmnt 2.41-r9 apk imagemagick-libs 7.1.1.32-r2 apk
findutils 4.10.0-r0 apk imagemagick-webp 7.1.1.32-r2 apk
firstrunwizard 6.0.0-dev.0 npm imath 3.1.12-r0 apk
flock 2.41-r9 apk jansson 2.14-r4 apk
fontconfig 2.15.0-r3 apk jq 1.7.1-r0 apk
freetype 2.13.3-r0 apk justinrainbow/json-schema 5.3.0 php-composer
fribidi 1.0.16-r1 apk kornrunner/blurhash v1.2.2 php-composer
fstrim 2.41-r9 apk lame-libs 3.100-r5 apk
funty 2.0.0 rust-crate laravel/serializable-closure v1.3.5 php-composer
fusonic/opengraph v3.0.0 php-composer lcms2 2.16-r0 apk
gdbm 1.24-r0 apk lcobucci/clock 3.0.0 php-composer
gdk-pixbuf 2.42.12-r1 apk ldb 2.8.2-r0 apk
getrandom 0.2.12 rust-crate league/flysystem 2.5.0 php-composer
ghostscript 10.05.1-r0 apk league/mime-type-detection 1.15.0 php-composer
giflib 5.2.2-r1 apk libSvtAv1Enc 2.0.0-r1 apk
giggsey/libphonenumber-for-php-lite 9.0.9 php-composer libacl 2.3.2-r0 apk
git 2.49.1-r0 apk libarchive 3.7.7-r0 apk
git-init-template 2.49.1-r0 apk libass 0.17.2-r0 apk
glib 2.84.4-r0 apk libasyncns 0.8-r3 apk
glslang-libs 1.4.309.0-r0 apk libattr 2.5.2-r0 apk
gmp 6.3.0-r3 apk libauth-samba 4.19.9-r0 apk
gnu-libiconv 1.17-r2 apk libavif 1.0.4-r0 apk
gnu-libiconv-libs 1.17-r2 apk libblkid 2.40.1-r1 apk
gnutls 3.8.8-r0 apk libbluray 1.3.4-r1 apk
graphite2 1.3.14-r6 apk libbsd 0.12.2-r0 apk
guzzlehttp/guzzle 7.10.0 php-composer libbz2 1.0.8-r6 apk
guzzlehttp/promises 2.3.0 php-composer libcap2 2.70-r0 apk
guzzlehttp/psr7 2.8.0 php-composer libcrypto3 3.3.2-r1 apk
guzzlehttp/uri-template v1.0.4 php-composer libcurl 8.11.1-r0 apk
harfbuzz 11.2.1-r0 apk libdav1d 1.4.2-r0 apk
heck 0.4.1 rust-crate libdovi 3.3.0-r0 apk
hexdump 2.41-r9 apk libdrm 2.4.120-r0 apk
hexogen/kdtree v0.2.6 php-composer libeconf 0.6.3-r0 apk
hwdata-pci 0.395-r0 apk libedit 20240517.3.1-r0 apk
icewind/searchdav v3.2.0 php-composer libevent 2.1.12-r7 apk
icewind/smb 3.8.1 php-composer libexpat 2.6.4-r0 apk
icewind/streams v0.7.8 php-composer libffi 3.4.6-r0 apk
icu-data-en 76.1-r1 apk libflac 1.4.3-r1 apk
icu-libs 76.1-r1 apk libformw 6.4_p20240420-r2 apk
imagemagick 7.1.2.8-r0 apk libgcc 13.2.1_git20240309-r0 apk
imagemagick-heic 7.1.2.8-r0 apk libgomp 13.2.1_git20240309-r0 apk
imagemagick-jpeg 7.1.2.8-r0 apk libhwy 1.0.7-r0 apk
imagemagick-jxl 7.1.2.8-r0 apk libice 1.1.1-r6 apk
imagemagick-libs 7.1.2.8-r0 apk libidn2 2.3.7-r0 apk
imagemagick-openexr 7.1.2.8-r0 apk libintl 0.22.5-r0 apk
imagemagick-pango 7.1.2.8-r0 apk libjpeg-turbo 3.0.3-r0 apk
imagemagick-pdf 7.1.2.8-r0 apk libjxl 0.10.2-r0 apk
imagemagick-svg 7.1.2.8-r0 apk libldap 2.6.8-r0 apk
imagemagick-tiff 7.1.2.8-r0 apk libltdl 2.4.7-r3 apk
imagemagick-webp 7.1.2.8-r0 apk libmcrypt 2.5.8-r10 apk
imath 3.1.12-r0 apk libmd 1.1.0-r0 apk
interpolate_name 0.2.4 rust-crate libmemcached-libs 1.1.4-r1 apk
itertools 0.10.5 rust-crate libmount 2.40.1-r1 apk
itertools 0.12.0 rust-crate libncursesw 6.4_p20240420-r2 apk
ivf 0.1.3 rust-crate libogg 1.3.5-r5 apk
jansson 2.14.1-r0 apk libopenmpt 0.7.7-r0 apk
jbig2dec 0.20-r0 apk libpanelw 6.4_p20240420-r2 apk
joomla/string 3.0.4 php-composer libpciaccess 0.18.1-r0 apk
jq 1.8.1-r0 apk libplacebo 6.338.2-r1 apk
justinrainbow/json-schema 6.6.4 php-composer libpng 1.6.44-r0 apk
kornrunner/blurhash v1.2.2 php-composer libpq 16.6-r0 apk
lab 0.11.0 rust-crate libproc2 4.0.4-r0 apk
lame-libs 3.100-r5 apk libpsl 0.21.5-r1 apk
laravel/serializable-closure v2.0.4 php-composer libpulse 17.0-r0 apk
lazy_static 1.4.0 rust-crate librist 0.2.10-r1 apk
lcms2 2.16-r0 apk libsasl 2.1.28-r6 apk
lcobucci/clock 3.0.0 php-composer libsharpyuv 1.3.2-r0 apk
ldb 4.21.9-r1 apk libsm 1.2.4-r4 apk
libSvtAv1Enc 2.3.0-r0 apk libsmbclient 4.19.9-r0 apk
libapk2 2.14.9-r3 apk libsndfile 1.2.2-r1 apk
libarchive 3.8.3-r0 apk libsodium 1.0.19-r0 apk
libass 0.17.3-r0 apk libsrt 1.5.3-r0 apk
libasyncns 0.8-r4 apk libssh 0.10.6-r0 apk
libattr 2.5.2-r2 apk libssl3 3.3.2-r1 apk
libauth-samba 4.21.9-r1 apk libstdc++ 13.2.1_git20240309-r0 apk
libavif 1.3.0-r0 apk libtasn1 4.19.0-r2 apk
libblkid 2.41-r9 apk libtheora 1.1.1-r18 apk
libbluray 1.3.4-r1 apk libunibreak 6.1-r0 apk
libbsd 0.12.2-r0 apk libunistring 1.2-r0 apk
libbz2 1.0.8-r6 apk libuuid 2.40.1-r1 apk
libc 0.2.155 rust-crate libva 2.21.0-r0 apk
libc 0.2.172 rust-crate libvdpau 1.5-r3 apk
libcap-ng 0.8.5-r0 apk libvorbis 1.3.7-r2 apk
libcap2 2.76-r0 apk libvpx 1.14.1-r0 apk
libcrypto3 3.5.5-r0 apk libwbclient 4.19.9-r0 apk
libcurl 8.14.1-r2 apk libwebp 1.3.2-r0 apk
libdav1d 1.5.1-r0 apk libwebpdemux 1.3.2-r0 apk
libde265 1.0.15-r1 apk libwebpmux 1.3.2-r0 apk
libdeflate 1.23-r0 apk libx11 1.8.9-r1 apk
libdovi 3.3.1-r1 apk libxau 1.0.11-r4 apk
libdrm 2.4.124-r0 apk libxcb 1.16.1-r0 apk
libeconf 0.6.3-r0 apk libxdmcp 1.1.5-r1 apk
libedit 20250104.3.1-r1 apk libxext 1.3.6-r2 apk
libevent 2.1.12-r8 apk libxfixes 6.0.1-r4 apk
libexpat 2.7.4-r0 apk libxml2 2.12.7-r0 apk
libfdisk 2.41-r9 apk libxpm 3.5.17-r0 apk
libffi 3.4.8-r0 apk libxt 1.3.0-r5 apk
libflac 1.4.3-r1 apk libxxhash 0.8.2-r2 apk
libformw 6.5_p20250503-r0 apk libzip 1.10.1-r0 apk
libgcc 14.2.0-r6 apk libzmq 4.3.5-r2 apk
libgomp 14.2.0-r6 apk lilv-libs 0.24.24-r1 apk
libheif 1.19.8-r1 apk linux-pam 1.6.0-r0 apk
libhwy 1.0.7-r1 apk lmdb 0.9.32-r0 apk
libice 1.1.2-r0 apk logreader 4.0.0 npm
libidn2 2.3.7-r0 apk logrotate 3.21.0-r1 apk
libintl 0.24.1-r0 apk lz4-libs 1.9.4-r5 apk
libjpeg-turbo 3.1.0-r0 apk masterminds/html5 2.9.0 php-composer
libjxl 0.10.3-r2 apk mbedtls 3.6.2-r0 apk
libldap 2.6.8-r0 apk mexitek/phpcolors v1.0.4 php-composer
libltdl 2.5.4-r1 apk microsoft/azure-storage-blob 1.5.4 php-composer
libmd 1.1.0-r0 apk microsoft/azure-storage-common 1.5.2 php-composer
libmemcached-libs 1.1.4-r1 apk mlocati/ip-lib 1.18.1 php-composer
libmount 2.41-r9 apk mpg123-libs 1.32.8-r0 apk
libncursesw 6.5_p20250503-r0 apk mtdowling/jmespath.php 2.8.0 php-composer
libogg 1.3.5-r5 apk musl 1.2.5-r0 apk
libopenmpt 0.7.15-r0 apk musl-utils 1.2.5-r0 apk
libpanelw 6.5_p20250503-r0 apk nano 8.0-r0 apk
libpciaccess 0.18.1-r0 apk ncurses-terminfo-base 6.4_p20240420-r2 apk
libplacebo 6.338.2-r3 apk netcat-openbsd 1.226-r0 apk
libpng 1.6.54-r0 apk netresearch/jsonmapper v4.5.0 php-composer
libpq 17.8-r0 apk nettle 3.9.1-r0 apk
libproc2 4.0.4-r3 apk nextcloud 1.0.0 npm
libpsl 0.21.5-r3 apk nextcloud/coding-standard v1.2.1 php-composer
libpulse 17.0-r5 apk nextcloud/lognormalizer v1.0.0 php-composer
librist 0.2.10-r1 apk nextcloud/ocp dev-master php-composer
librsvg 2.60.0-r0 apk nghttp2-libs 1.62.1-r0 apk
libsasl 2.1.28-r8 apk nginx 1.26.2-r0 apk
libsharpyuv 1.5.0-r0 apk nikic/php-parser v4.19.2 php-composer
libsm 1.2.5-r0 apk notifications 4.0.0 npm
libsmartcols 2.41-r9 apk numactl 2.0.18-r0 apk
libsmbclient 4.21.9-r1 apk onevpl-libs 2023.3.1-r2 apk
libsndfile 1.2.2-r2 apk oniguruma 6.9.9-r0 apk
libsodium 1.0.20-r1 apk openexr-libiex 3.1.13-r1 apk
libsrt 1.5.3-r1 apk openexr-libilmthread 3.1.13-r1 apk
libssh 0.11.2-r0 apk openexr-libopenexr 3.1.13-r1 apk
libssl3 3.5.5-r0 apk openssl 3.3.2-r1 apk
libstdc++ 14.2.0-r6 apk opus 1.5.2-r0 apk
libtasn1 4.21.0-r0 apk orc 0.4.40-r0 apk
libtheora 1.1.1-r18 apk p11-kit 0.25.3-r0 apk
libunibreak 6.1-r0 apk paragonie/constant_time_encoding v2.6.3 php-composer
libunistring 1.3-r0 apk password_policy 3.0.0 npm
libuuid 2.41-r9 apk pcre 8.45-r3 apk
libva 2.22.0-r1 apk pcre2 10.43-r0 apk
libvdpau 1.5-r4 apk pear/archive_tar 1.5.0 php-composer
libvorbis 1.3.7-r2 apk pear/console_getopt v1.4.3 php-composer
libvpx 1.15.0-r0 apk pear/pear-core-minimal v1.10.15 php-composer
libwbclient 4.21.9-r1 apk pear/pear_exception v1.0.2 php-composer
libwebp 1.5.0-r0 apk photos 4.0.0 npm
libwebpdemux 1.5.0-r0 apk php-cs-fixer/shim v3.62.0 php-composer
libwebpmux 1.5.0-r0 apk php-http/guzzle7-adapter 1.0.0 php-composer
libx11 1.8.11-r0 apk php-http/httplug 2.2.0 php-composer
libxau 1.0.12-r0 apk php-http/promise 1.1.0 php-composer
libxcb 1.17.0-r0 apk php-opencloud/openstack v3.10.0 php-composer
libxdmcp 1.1.5-r1 apk php83 8.3.15-r0 apk
libxext 1.3.6-r2 apk php83-bcmath 8.3.15-r0 apk
libxfixes 6.0.1-r4 apk php83-bz2 8.3.15-r0 apk
libxft 2.3.8-r3 apk php83-common 8.3.15-r0 apk
libxml2 2.13.9-r0 apk php83-ctype 8.3.15-r0 apk
libxpm 3.5.17-r0 apk php83-curl 8.3.15-r0 apk
libxrender 0.9.12-r0 apk php83-dom 8.3.15-r0 apk
libxt 1.3.1-r0 apk php83-exif 8.3.15-r0 apk
libxxhash 0.8.3-r0 apk php83-fileinfo 8.3.15-r0 apk
libyuv 0.0.1887.20251502-r1 apk php83-fpm 8.3.15-r0 apk
libzip 1.11.4-r0 apk php83-ftp 8.3.15-r0 apk
libzmq 4.3.5-r2 apk php83-gd 8.3.15-r0 apk
lilv-libs 0.24.26-r0 apk php83-gmp 8.3.15-r0 apk
linux-pam 1.7.0-r4 apk php83-iconv 8.3.15-r0 apk
linux-raw-sys 0.4.12 rust-crate php83-imap 8.3.15-r0 apk
lmdb 0.9.33-r0 apk php83-intl 8.3.15-r0 apk
log 0.4.20 rust-crate php83-ldap 8.3.15-r0 apk
logger 2.41-r9 apk php83-mbstring 8.3.15-r0 apk
logreader 6.0.0 npm php83-mysqlnd 8.3.15-r0 apk
logrotate 3.21.0-r1 apk php83-opcache 8.3.15-r0 apk
losetup 2.41-r9 apk php83-openssl 8.3.15-r0 apk
lsblk 2.41-r9 apk php83-pcntl 8.3.15-r0 apk
lscpu 2.41-r9 apk php83-pdo 8.3.15-r0 apk
lz4-libs 1.10.0-r0 apk php83-pdo_mysql 8.3.15-r0 apk
marc-mabe/php-enum v4.7.1 php-composer php83-pdo_pgsql 8.3.15-r0 apk
masterminds/html5 2.9.0 php-composer php83-pdo_sqlite 8.3.15-r0 apk
maybe-rayon 0.1.1 rust-crate php83-pecl-apcu 5.1.23-r0 apk
mbedtls 3.6.5-r0 apk php83-pecl-igbinary 3.2.15-r0 apk
mcookie 2.41-r9 apk php83-pecl-imagick 3.7.0-r0 apk
memchr 2.7.1 rust-crate php83-pecl-mcrypt 1.0.7-r0 apk
mexitek/phpcolors v1.0.4 php-composer php83-pecl-memcached 3.3.0-r0 apk
microsoft/azure-storage-blob 1.5.4 php-composer php83-pecl-msgpack 2.2.0-r2 apk
microsoft/azure-storage-common 1.5.2 php-composer php83-pecl-redis 6.1.0-r0 apk
minimal-lexical 0.2.1 rust-crate php83-pecl-smbclient 1.1.1-r0 apk
mlocati/ip-lib 1.22.0 php-composer php83-pgsql 8.3.15-r0 apk
mount 2.41-r9 apk php83-phar 8.3.15-r0 apk
mpg123-libs 1.32.10-r0 apk php83-posix 8.3.15-r0 apk
mtdowling/jmespath.php 2.8.0 php-composer php83-session 8.3.15-r0 apk
musl 1.2.5-r10 apk php83-simplexml 8.3.15-r0 apk
musl-utils 1.2.5-r10 apk php83-sockets 8.3.15-r0 apk
nano 8.4-r0 apk php83-sodium 8.3.15-r0 apk
ncurses-terminfo-base 6.5_p20250503-r0 apk php83-sqlite3 8.3.15-r0 apk
nelexa/buffer 1.3.0 php-composer php83-sysvsem 8.3.15-r0 apk
netcat-openbsd 1.229.1-r0 apk php83-xml 8.3.15-r0 apk
nettle 3.10.1-r0 apk php83-xmlreader 8.3.15-r0 apk
new_debug_unreachable 1.0.4 rust-crate php83-xmlwriter 8.3.15-r0 apk
nextcloud 1.0.0 npm php83-zip 8.3.15-r0 apk
nextcloud/lognormalizer v3.0.0 php-composer phpdocumentor/reflection-common 2.2.0 php-composer
nghttp2-libs 1.65.0-r0 apk phpdocumentor/reflection-docblock 5.4.1 php-composer
nginx 1.28.2-r0 apk phpdocumentor/type-resolver 1.8.2 php-composer
nom 7.1.3 rust-crate phpseclib/phpseclib 2.0.47 php-composer
noop_proc_macro 0.3.0 rust-crate phpstan/phpdoc-parser 1.30.1 php-composer
notifications 6.0.0-dev.0 npm pimple/pimple v3.5.0 php-composer
num-bigint 0.4.4 rust-crate popt 1.19-r3 apk
num-derive 0.4.1 rust-crate privacy 3.0.0 npm
num-integer 0.1.45 rust-crate procps-ng 4.0.4-r0 apk
num-rational 0.4.1 rust-crate psr/cache 3.0.0 php-composer
num-traits 0.2.17 rust-crate psr/clock 1.0.0 php-composer (+1 duplicate)
numactl 2.0.18-r0 apk psr/container 2.0.2 php-composer (+1 duplicate)
once_cell 1.19.0 rust-crate psr/event-dispatcher 1.0.0 php-composer (+1 duplicate)
onevpl-libs 2023.3.1-r2 apk psr/http-client 1.0.3 php-composer
oniguruma 6.9.10-r0 apk psr/http-factory 1.1.0 php-composer
openexr-libiex 3.3.2-r0 apk psr/http-message 1.1 php-composer
openexr-libilmthread 3.3.2-r0 apk psr/log 1.1.4 php-composer (+1 duplicate)
openexr-libopenexr 3.3.2-r0 apk psr/log 3.0.2 php-composer
openexr-libopenexrcore 3.3.2-r0 apk punic/punic 3.8.1 php-composer
openjpeg 2.5.3-r0 apk ralouphie/getallheaders 3.0.3 php-composer
openssl 3.5.5-r0 apk rav1e-libs 0.7.1-r0 apk
opus 1.5.2-r1 apk readline 8.2.10-r0 apk
orc 0.4.40-r1 apk recommendations 4.0.0 npm
p11-kit 0.25.5-r2 apk related_resources 2.0.0 npm
pango 1.56.3-r0 apk rsync 3.3.0-r0 apk
paragonie/constant_time_encoding v2.6.3 php-composer rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer
partx 2.41-r9 apk rubix/tensor 2.2.3 php-composer
password_policy 5.0.0-dev.0 npm rullzer/easytotp v0.1.4 php-composer
paste 1.0.14 rust-crate sabre/dav 4.7.0 php-composer
pcre2 10.46-r0 apk sabre/event 5.1.7 php-composer
pear/archive_tar 1.5.0 php-composer sabre/http 5.1.12 php-composer
pear/console_getopt v1.4.3 php-composer sabre/uri 2.3.4 php-composer
pear/pear-core-minimal v1.10.16 php-composer sabre/vobject 4.5.6 php-composer
pear/pear_exception v1.0.2 php-composer sabre/xml 2.2.11 php-composer
photos 6.0.0-dev.0 npm samba-client 4.19.9-r0 apk
php-http/guzzle7-adapter 1.1.0 php-composer samba-client-libs 4.19.9-r0 apk
php-http/httplug 2.4.1 php-composer samba-common 4.19.9-r0 apk
php-http/promise 1.3.1 php-composer samba-libs 4.19.9-r0 apk
php-opencloud/openstack v3.14.0 php-composer samba-util-libs 4.19.9-r0 apk
php84 8.4.16-r0 apk scanelf 1.3.7-r2 apk
php84-bcmath 8.4.16-r0 apk scssphp/scssphp v1.12.1 php-composer
php84-bz2 8.4.16-r0 apk sdl2 2.28.5-r1 apk
php84-common 8.4.16-r0 apk sebastian/diff 5.1.1 php-composer
php84-ctype 8.4.16-r0 apk serd-libs 0.32.2-r0 apk
php84-curl 8.4.16-r0 apk shaderc 2024.0-r0 apk
php84-dom 8.4.16-r0 apk shadow 4.15.1-r0 apk
php84-exif 8.4.16-r0 apk skalibs 2.14.1.1-r0 apk
php84-fileinfo 8.4.16-r0 apk sord-libs 0.16.16-r0 apk
php84-fpm 8.4.16-r0 apk soxr 0.1.3-r7 apk
php84-ftp 8.4.16-r0 apk spatie/array-to-xml 3.3.0 php-composer
php84-gd 8.4.16-r0 apk speexdsp 1.2.1-r2 apk
php84-gmp 8.4.16-r0 apk spirv-tools 1.3.261.1-r0 apk
php84-iconv 8.4.16-r0 apk spomky-labs/cbor-php 3.0.4 php-composer
php84-intl 8.4.16-r0 apk spomky-labs/pki-framework 1.2.1 php-composer
php84-ldap 8.4.16-r0 apk sqlite-libs 3.45.3-r1 apk
php84-mbstring 8.4.16-r0 apk sratom 0.6.16-r0 apk
php84-mysqlnd 8.4.16-r0 apk ssl_client 1.36.1-r29 apk
php84-opcache 8.4.16-r0 apk stecman/symfony-console-completion v0.13.0 php-composer
php84-openssl 8.4.16-r0 apk sudo 1.9.15_p5-r0 apk
php84-pcntl 8.4.16-r0 apk support 3.0.0 npm
php84-pdo 8.4.16-r0 apk symfony/console v6.4.11 php-composer
php84-pdo_mysql 8.4.16-r0 apk symfony/console v6.4.12 php-composer
php84-pdo_pgsql 8.4.16-r0 apk symfony/css-selector v6.4.3 php-composer
php84-pdo_sqlite 8.4.16-r0 apk symfony/deprecation-contracts v3.5.0 php-composer (+1 duplicate)
php84-pecl-apcu 5.1.27-r0 apk symfony/dom-crawler v6.4.4 php-composer
php84-pecl-igbinary 3.2.16-r1 apk symfony/event-dispatcher v6.4.8 php-composer
php84-pecl-imagick 3.8.0-r1 apk symfony/event-dispatcher-contracts v3.5.0 php-composer
php84-pecl-imap 1.0.3-r0 apk symfony/filesystem v6.4.9 php-composer
php84-pecl-memcached 3.3.0-r0 apk symfony/http-foundation v6.4.12 php-composer
php84-pecl-msgpack 3.0.0-r0 apk symfony/mailer v6.4.12 php-composer
php84-pecl-redis 6.3.0-r0 apk symfony/mime v6.4.12 php-composer
php84-pecl-smbclient 1.2.0_pre-r0 apk symfony/polyfill-ctype v1.31.0 php-composer (+1 duplicate)
php84-pgsql 8.4.16-r0 apk symfony/polyfill-intl-grapheme v1.31.0 php-composer (+1 duplicate)
php84-phar 8.4.16-r0 apk symfony/polyfill-intl-idn v1.31.0 php-composer
php84-posix 8.4.16-r0 apk symfony/polyfill-intl-normalizer v1.31.0 php-composer (+1 duplicate)
php84-session 8.4.16-r0 apk symfony/polyfill-mbstring v1.31.0 php-composer (+2 duplicates)
php84-simplexml 8.4.16-r0 apk symfony/polyfill-php73 v1.30.0 php-composer
php84-sockets 8.4.16-r0 apk symfony/polyfill-php80 v1.31.0 php-composer (+1 duplicate)
php84-sodium 8.4.16-r0 apk symfony/polyfill-php83 v1.31.0 php-composer
php84-sqlite3 8.4.16-r0 apk symfony/polyfill-uuid v1.29.0 php-composer
php84-sysvsem 8.4.16-r0 apk symfony/process v6.4.12 php-composer
php84-xml 8.4.16-r0 apk symfony/routing v6.4.12 php-composer
php84-xmlreader 8.4.16-r0 apk symfony/service-contracts v3.5.0 php-composer (+1 duplicate)
php84-xmlwriter 8.4.16-r0 apk symfony/string v6.4.11 php-composer
php84-zip 8.4.16-r0 apk symfony/string v6.4.13 php-composer
phpseclib/phpseclib 2.0.47 php-composer symfony/translation v6.4.4 php-composer
pimple/pimple v3.6.0 php-composer symfony/translation-contracts v3.4.2 php-composer
pixman 0.46.4-r0 apk symfony/uid v6.4.3 php-composer
pkgconf 2.4.3-r0 apk talloc 2.4.2-r1 apk
popt 1.19-r4 apk tdb-libs 1.4.9-r1 apk
ppv-lite86 0.2.17 rust-crate tevent 0.16.1-r0 apk
privacy 5.0.0-dev.0 npm text 5.0.0 npm
proc-macro2 1.0.76 rust-crate twofactor_nextcloud_notification 5.0.0 npm
procps-ng 4.0.4-r3 apk twofactor_totp 13.0.0-dev.0 npm
profiling 1.0.13 rust-crate tzdata 2024b-r0 apk
profiling-procmacros 1.0.13 rust-crate utmps-libs 0.1.2.2-r1 apk
psr/cache 3.0.0 php-composer v4l-utils-libs 1.24.1-r1 apk
psr/clock 1.0.0 php-composer vidstab 1.1.1-r0 apk
psr/container 2.0.2 php-composer viewer 4.0.0 npm
psr/event-dispatcher 1.0.0 php-composer vimeo/psalm 5.26.1 php-composer
psr/http-client 1.0.3 php-composer vulkan-loader 1.3.261.1-r0 apk
psr/http-factory 1.1.0 php-composer wapmorgan/mp3info 0.1.0 php-composer
psr/http-message 2.0 php-composer wayland-libs-client 1.22.0-r4 apk
psr/log 3.0.2 php-composer (+1 duplicate) web-auth/cose-lib 4.3.0 php-composer
punic/punic 3.8.1 php-composer web-auth/webauthn-lib 4.9.1 php-composer
quote 1.0.35 rust-crate webmozart/assert 1.11.0 php-composer
radium 0.7.0 rust-crate x264-libs 0.164_git20231001-r0 apk
ralouphie/getallheaders 3.0.3 php-composer x265-libs 3.6-r0 apk
rand 0.8.5 rust-crate xvidcore 1.3.7-r2 apk
rand_chacha 0.3.1 rust-crate xz-libs 5.6.2-r0 apk
rand_core 0.6.4 rust-crate zimg 3.0.5-r2 apk
rav1e 0.7.1 rust-crate zix-libs 0.4.2-r0 apk
rav1e-libs 0.7.1-r2 apk zlib 1.3.1-r1 apk
rayon 1.8.0 rust-crate zstd-libs 1.5.6-r0 apk
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,7 +9,6 @@ project_blurb: |
Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Cloud,Documents"
# supported architectures # supported architectures
available_architectures: available_architectures:
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
@ -19,7 +18,6 @@ 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 }}"
@ -30,15 +28,11 @@ param_volumes:
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- {external_port: "443", internal_port: "443", port_desc: "WebUI"} - {external_port: "443", internal_port: "443", port_desc: "WebUI"}
readonly_supported: false
nonroot_supported: false
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
Access the webui at `https://<your-ip>:443`, for more information check out [Nextcloud]({{ project_url }}). Access the webui at `https://<your-ip>:443`, for more information check out [Nextcloud]({{ project_url }}).
Note: `occ` should be run without prepending with `sudo -u abc php` or `sudo -u www-data php` ie; `docker exec -it nextcloud occ maintenance:mode --off`
### Updating Nextcloud ### Updating Nextcloud
Updating Nextcloud is done by pulling the new image, and recreating the container with it. Updating Nextcloud is done by pulling the new image, and recreating the container with it.
@ -53,34 +47,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:
@ -93,7 +59,7 @@ 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
init_diagram: | init_diagram: |
"nextcloud:latest": { "nextcloud:develop": {
docker-mods docker-mods
base { base {
fix-attr +\nlegacy cont-init fix-attr +\nlegacy cont-init
@ -109,29 +75,32 @@ init_diagram: |
init-nginx-end -> init-config init-nginx-end -> init-config
init-os-end -> init-config init-os-end -> init-config
init-config -> init-config-end init-config -> init-config-end
init-crontab-config -> init-config-end
init-nextcloud-config -> init-config-end init-nextcloud-config -> init-config-end
init-config -> init-crontab-config init-os-end -> init-crontab-config
init-mods-end -> init-custom-files init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile base -> init-envfile
init-os-end -> init-folders init-os-end -> init-folders
init-php -> init-keygen init-php -> init-keygen
base -> init-migrations base -> init-migrations
base -> init-mods
init-config-end -> init-mods init-config-end -> init-mods
init-version-checks -> init-mods
init-mods -> init-mods-end
init-mods-package-install -> init-mods-end init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install init-mods -> init-mods-package-install
init-nginx-end -> init-nextcloud-config init-nginx-end -> init-nextcloud-config
init-samples -> init-nginx init-samples -> init-nginx
init-version-checks -> init-nginx-end init-permissions -> init-nginx-end
base -> init-os-end
init-adduser -> init-os-end init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end init-envfile -> init-os-end
init-migrations -> init-os-end
init-keygen -> init-permissions init-keygen -> init-permissions
init-nginx -> init-php init-nginx -> init-php
init-folders -> init-samples init-folders -> init-samples
init-custom-files -> init-services init-custom-files -> init-services
init-permissions -> init-version-checks init-mods-end -> init-services
init-config-end -> init-version-checks
init-services -> svc-cron init-services -> svc-cron
svc-cron -> legacy-services svc-cron -> legacy-services
init-services -> svc-nginx init-services -> svc-nginx
@ -140,21 +109,13 @@ init_diagram: |
svc-php-fpm -> legacy-services svc-php-fpm -> legacy-services
} }
Base Images: { Base Images: {
"baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22" "baseimage-alpine-nginx:3.20" <- "baseimage-alpine:3.20"
} }
"nextcloud:latest" <- Base Images "nextcloud:develop" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "10.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "12.02.25:", desc: "Rebase to Alpine 3.21."}
- {date: "09.01.25:", desc: "Fix uploading large files. Existing users should update their nginx confs."} - {date: "09.01.25:", desc: "Fix uploading large files. Existing users should update their nginx confs."}
- {date: "09.07.24:", desc: "Add `previous` tag for n-1 releases."}
- {date: "24.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."} - {date: "24.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- {date: "19.05.24:", desc: "Added util-linux package required for taskset."}
- {date: "10.04.24:", desc: "Added imagemagick-pdf."}
- {date: "05.04.24:", desc: "Added imagemagick-heic. Manual update to `config.php` required - see above."}
- {date: "02.04.24:", desc: "Existing users should update: site-confs/default.conf - Add support for the Client Push (notify_push) plugin and the [new mod](https://github.com/linuxserver/docker-mods/tree/nextcloud-notify-push)."}
- {date: "22.03.24:", desc: "Add imagemagick-svg module."}
- {date: "06.03.24:", desc: "Rebase to Alpine 3.19 with php 8.3."} - {date: "06.03.24:", desc: "Rebase to Alpine 3.19 with php 8.3."}
- {date: "02.01.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."} - {date: "02.01.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."}
- {date: "22.12.23:", desc: "Site default conf updating to include mime.types for js and mjs and update location to include more file types."} - {date: "22.12.23:", desc: "Site default conf updating to include mime.types for js and mjs and update location to include more file types."}

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 2024/07/16 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample
# Set the `immutable` cache control options only for assets with a cache busting `v` argument # Set the `immutable` cache control options only for assets with a cache busting `v` argument
map $arg_v $asset_immutable { map $arg_v $asset_immutable {
@ -11,8 +11,6 @@ server {
listen [::]:80 default_server; listen [::]:80 default_server;
listen 443 ssl default_server; listen 443 ssl default_server;
listen [::]:443 ssl default_server; listen [::]:443 ssl default_server;
listen 443 quic reuseport default_server;
listen [::]:443 quic reuseport default_server;
server_name _; server_name _;
@ -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

@ -10,7 +10,7 @@ mkdir -p \
/data /data
# migrate legacy install (copy inside container) # migrate legacy install (copy inside container)
if [[ -f /config/www/nextcloud/version.php ]]; then if [ -f /config/www/nextcloud/version.php ]; then
echo "Migrating legacy install (this can take a while) ...)" echo "Migrating legacy install (this can take a while) ...)"
rsync -rlD --remove-source-files --exclude-from=/app/upgrade.exclude /config/www/nextcloud/ /app/www/public/ rsync -rlD --remove-source-files --exclude-from=/app/upgrade.exclude /config/www/nextcloud/ /app/www/public/
rm -rf /config/www/nextcloud/updater/ rm -rf /config/www/nextcloud/updater/
@ -26,7 +26,7 @@ fi
# symlink config folders # symlink config folders
for dir in apps config themes; do for dir in apps config themes; do
if [[ "$(readlink /app/www/public/${dir})" != "/config/www/nextcloud/${dir}" ]]; then if [ "$(readlink /app/www/public/${dir})" != "/config/www/nextcloud/${dir}" ]; then
rm -rf "/app/www/public/${dir}" rm -rf "/app/www/public/${dir}"
ln -s "/config/www/nextcloud/${dir}" "/app/www/public/${dir}" ln -s "/config/www/nextcloud/${dir}" "/app/www/public/${dir}"
lsiown abc:abc "/config/www/nextcloud/${dir}" "/app/www/public/${dir}" lsiown abc:abc "/config/www/nextcloud/${dir}" "/app/www/public/${dir}"
@ -34,9 +34,9 @@ for dir in apps config themes; do
done done
# get versions # get versions
image_version=$(php -r "require '/app/www/src/version.php'; echo implode('.', \$OC_Version);" 2>/dev/null | 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 +54,23 @@ if vergt "${installed_version}" "${image_version}"; then
sleep infinity sleep infinity
fi fi
if [[ "${installed_version}" != "0.0.0.0" ]] && vergt "${image_major}" "${max_upgrade}"; then if [ "${installed_version}" != "0.0.0.0" ] && vergt "${image_major}" "${max_upgrade}"; then
echo "Can't start Nextcloud because the version of the data (${installed_version}) is more than one major version behind the docker image version (${image_version}) and upgrading more than one major version is not supported. Please run an image tagged for the major version ${max_upgrade} first." echo "Can't start Nextcloud because the version of the data (${installed_version}) is more than one major version behind the docker image version (${image_version}) and upgrading more than one major version is not supported. Please run an image tagged for the major version ${max_upgrade} first."
sleep infinity sleep infinity
fi fi
if [[ "${installed_version}" = "0.0.0.0" ]] || [[ ! -f /app/www/public/version.php ]] || [[ -z "$(ls -A /config/www/nextcloud/apps 2>/dev/null)" ]]; then if [ "${installed_version}" = "0.0.0.0" ] || [ ! -f /app/www/public/version.php ] || [ -z "$(ls -A /config/www/nextcloud/apps 2>/dev/null)" ]; then
touch /tmp/needs_install touch /tmp/needs_install
fi fi
if [[ "${installed_version}" != "0.0.0.0" ]] && vergt "${image_version}" "${installed_version}"; then if [ "${installed_version}" != "0.0.0.0" ] && vergt "${image_version}" "${installed_version}"; then
touch /tmp/needs_upgrade touch /tmp/needs_upgrade
fi fi
# initialize nextcloud # initialize nextcloud
if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_install ]] || [[ -f /tmp/needs_upgrade ]]; then if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_install ] || [ -f /tmp/needs_upgrade ]; then
echo "Initializing nextcloud ${image_version} (this can take a while) ..." echo "Initializing nextcloud ${image_version} (this can take a while) ..."
if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_upgrade ]]; then if [ -f /config/www/nextcloud/config/needs_migration ] || [ -f /tmp/needs_upgrade ]; then
echo "Upgrading nextcloud from ${installed_version} ..." echo "Upgrading nextcloud from ${installed_version} ..."
shippedApps=$(jq -r .shippedApps[] /app/www/src/core/shipped.json) shippedApps=$(jq -r .shippedApps[] /app/www/src/core/shipped.json)
for app in ${shippedApps}; do for app in ${shippedApps}; do
@ -80,11 +80,11 @@ if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_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 +94,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!"
@ -148,14 +148,14 @@ for APP in richdocumentscode; do
echo "Removing ${APP}" echo "Removing ${APP}"
fi fi
APP_PATH=$(occ app:getpath "${APP}" 2>/dev/null) APP_PATH=$(occ app:getpath "${APP}" 2>/dev/null)
if [[ -z "${APP_PATH}" ]] || [[ ! -d "${APP_PATH}" ]]; then if [ -z "${APP_PATH}" ] || [ ! -d "${APP_PATH}" ]; then
APP_PATH="/app/www/public/apps/${APP}" APP_PATH="/app/www/public/apps/${APP}"
fi fi
if [[ -d "${APP_PATH}" ]]; then if [ -d "${APP_PATH}" ]; then
occ app:disable "${APP}" >/dev/null 2>&1 occ app:disable "${APP}" >/dev/null 2>&1
fi fi
APP_STATUS="$(occ config:app:get "${APP}" enabled 2>/dev/null)" APP_STATUS="$(occ config:app:get "${APP}" enabled 2>/dev/null)"
if [[ "${APP_STATUS}" != "no" ]] && [[ -n "${APP_STATUS}" ]]; then if [ "${APP_STATUS}" != "no" ] && [ -n "${APP_STATUS}" ]; then
occ config:app:set "${APP}" enabled --value="no" >/dev/null 2>&1 occ config:app:set "${APP}" enabled --value="no" >/dev/null 2>&1
fi fi
occ app:remove "${APP}" >/dev/null 2>&1 occ app:remove "${APP}" >/dev/null 2>&1
@ -163,14 +163,14 @@ for APP in richdocumentscode; do
done done
# set data directory # set data directory
if [[ ! -s /config/www/nextcloud/config/config.php ]]; then if [ ! -s /config/www/nextcloud/config/config.php ]; then
echo -e "<?php\n\$CONFIG = array (\n 'datadirectory' => '/data',\n);" >/config/www/nextcloud/config/config.php echo -e "<?php\n\$CONFIG = array (\n 'datadirectory' => '/data',\n);" >/config/www/nextcloud/config/config.php
elif [[ -f /config/www/nextcloud/config/config.php ]]; then elif [ -f /config/www/nextcloud/config/config.php ]; then
sed -i "s|/app/www/public/data|/data|g" /config/www/nextcloud/config/config.php sed -i "s|/app/www/public/data|/data|g" /config/www/nextcloud/config/config.php
fi fi
#modify javascript mime type and add .mjs support #modify javascript mime type and add .mjs support
if [[ -s /etc/nginx/mime.types ]]; then if [ -s /etc/nginx/mime.types ]; then
sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types
sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types
fi fi

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