Compare commits

...

295 Commits

Author SHA1 Message Date
Simon L.
7560694535 Merge pull request #7119 from nextcloud/enh/noid/fix-variable-types
nextcloud-entrypoint: fix variable types of fulltextsearch:configure
2025-11-13 11:44:23 +01:00
Simon L.
0b6496799c Merge pull request #7118 from nextcloud/enh/noid/disable-whiteboard
change whiteboard to be disabled by default
2025-11-13 11:44:14 +01:00
Simon L.
c3ab1cc4ba nextcloud-entrypoint: fix variable types of fulltextsearch:configure
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-13 11:42:57 +01:00
Simon L.
0320569260 change whiteboard to be disable by default
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-13 11:08:29 +01:00
Simon L.
eb31220606 Merge pull request #7117 from nextcloud/enh/noid/move-skip-domain-validation
domain-validation: move skipping domain validation log to a different place
2025-11-13 10:33:44 +01:00
Simon L.
e38a0d0a03 domain-validation: move skipping domain validation log to a different place
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-13 10:31:29 +01:00
Simon L.
34385374e5 Merge pull request #7115 from nextcloud/enh/noid/clamav-tmp
clamav: create `/tmp` directory
2025-11-12 14:44:37 +01:00
Simon L.
5a081faee1 clamav: create /tmp directory
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-12 14:44:05 +01:00
Simon L.
edd03058fd Merge pull request #7114 from nextcloud/watchtower-container-update
watchtower container update
2025-11-12 13:21:19 +01:00
Simon L.
58b12d04a5 Merge pull request #7113 from nextcloud/aio-dependency-update
PHP dependency updates
2025-11-12 13:21:03 +01:00
szaimen
5b2cd9d549 watchtower-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-12 12:11:53 +00:00
szaimen
a5fd4b2142 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-12 12:09:02 +00:00
Simon L.
73fb28096a Merge pull request #7110 from nextcloud/feat/workflow-auto-update-all
ci: update all workflow templates from organization template repository
2025-11-12 11:50:57 +01:00
Simon L.
fcba94e4d1 restore some details
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-12 11:49:46 +01:00
Nextcloud bot
1811ba1d38 ci: update all workflow templates from organization template repository
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-11-12 10:35:37 +00:00
Simon L.
2628d43ecd Revert "create dispatch-workflow-repo action"
This reverts commit 738022a936.
2025-11-12 11:14:07 +01:00
Simon L.
738022a936 create dispatch-workflow-repo action
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-12 11:13:06 +01:00
Simon L.
b43346e539 Merge pull request #7107 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.7
build(deps): bump elasticsearch from 8.19.6 to 8.19.7 in /Containers/fulltextsearch
2025-11-12 08:35:10 +01:00
dependabot[bot]
e152bc3e45 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.6 to 8.19.7.

---
updated-dependencies:
- dependency-name: elasticsearch
  dependency-version: 8.19.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 04:14:11 +00:00
Simon L.
0e4a633c24 Merge pull request #7104 from nextcloud/fix/whiteboard-recording-chrome-imprv
fix whiteboard recording chrome #2
2025-11-11 12:42:44 +01:00
Hoang Pham
ce74283f29 fix whiteboard recording chrome
Signed-off-by: Hoang Pham <hoangmaths96@gmail.com>
2025-11-11 18:28:50 +07:00
Simon L.
693fd9a516 Merge pull request #7103 from nextcloud/fix/whiteboard-recording-chrome
fix whiteboard recording chrome
2025-11-11 11:50:39 +01:00
Hoang Pham
d82e533a4b fix whiteboard recording chrome
Signed-off-by: Hoang Pham <hoangmaths96@gmail.com>
2025-11-11 17:39:10 +07:00
Simon L.
b8a8ea3685 Merge pull request #6548 from nextcloud/enh/noid/caddy-change-to-v3
aio-caddy: update to v3 and further adjustments
2025-11-11 11:27:19 +01:00
Simon L.
2d4d9d76d6 aio-caddy: change to v3 and further adjustments
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-11 11:21:55 +01:00
Simon L.
bf1df2f72e Merge pull request #7102 from nextcloud/enh/noid/fix-clamav
clamav: use default clamd.comf path
2025-11-11 10:46:23 +01:00
Simon L.
1d68592611 clamav: use default clamd.comf path
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-11 10:45:17 +01:00
Simon L.
be8645d319 Merge pull request #7101 from nextcloud/enh/noid/size-uses-M
clamav: size can only use M or K but not G as unit
2025-11-11 10:21:24 +01:00
Simon L.
e44a99ced2 clamav: size can only use M or K but not G as unit
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-11 10:20:47 +01:00
Simon L.
8da65e3dff Merge pull request #7100 from nextcloud/enh/noid/remove-checkduplicate
ConnectContainerIdToNetwork: remove `CheckDuplicate` as it is deprecated
2025-11-11 10:11:10 +01:00
Simon L.
673873da63 ConnectContainerIdToNetwork: remove CheckDuplicate as it is deprecated
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-11 10:07:06 +01:00
Simon L.
93a1ae834f Merge pull request #7099 from nextcloud/enh/7095/hardcode-clamav-size
clamav: set `StreamMaxLength` to `2G`
2025-11-11 09:54:45 +01:00
Simon L.
875ecbd110 Merge pull request #7098 from nextcloud/enh/noid/increase-api-version
increase API version to 1.44
2025-11-11 09:54:21 +01:00
Simon L.
8627366a39 clamav: hardcode StreamMaxLength to 2G
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-11 09:48:17 +01:00
Simon L.
de1f5aeac8 Merge pull request #7097 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.2.8-alpine
build(deps): bump haproxy from 3.2.7-alpine to 3.2.8-alpine in /Containers/docker-socket-proxy
2025-11-11 09:18:53 +01:00
Simon L.
03e3fd0b16 increase API version to 1.44
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-11 09:18:24 +01:00
dependabot[bot]
6cfa47e072 build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.2.7-alpine to 3.2.8-alpine.

---
updated-dependencies:
- dependency-name: haproxy
  dependency-version: 3.2.8-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 04:14:33 +00:00
Simon L.
767e0d4b9f fix some remaining issues with collabora
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-10 15:52:35 +01:00
Simon L.
cc65481d51 fix some paths and seccompprofile
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-10 15:29:22 +01:00
Simon L.
e15304e28f Merge pull request #7094 from nextcloud/watchtower-container-update
watchtower container update
2025-11-10 14:44:06 +01:00
szaimen
472cfdbcb8 watchtower-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-10 13:42:56 +00:00
Simon L.
6ab60592ad fix detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-10 14:42:29 +01:00
Simon L.
da5d4ee5af fix watchtower update script
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-10 14:39:53 +01:00
Simon L.
f7b8ca9757 Merge pull request #7093 from nextcloud/dependabot/github_actions/dot-github/workflows/softprops/turnstyle-3.2.1
build(deps): bump softprops/turnstyle from 3.2.0 to 3.2.1 in /.github/workflows
2025-11-10 14:30:55 +01:00
Simon L.
2137f4ee1e Merge pull request #7091 from nextcloud/imaginary-container-update
Imaginary update
2025-11-10 14:30:25 +01:00
dependabot[bot]
8cd5dd929c build(deps): bump softprops/turnstyle in /.github/workflows
Bumps [softprops/turnstyle](https://github.com/softprops/turnstyle) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/softprops/turnstyle/releases)
- [Changelog](https://github.com/softprops/turnstyle/blob/master/CHANGELOG.md)
- [Commits](9d692f15fa...2e4451ef94)

---
updated-dependencies:
- dependency-name: softprops/turnstyle
  dependency-version: 3.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 13:22:55 +00:00
szaimen
c2ea69a918 imaginary-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-09 12:03:08 +00:00
Simon L.
e5f744385b Merge pull request #7088 from nextcloud/enh/noid/simplify-domain-validation-logic
simplify `skip_domain_validation` logic a bit
2025-11-08 08:50:35 +01:00
Simon L.
5759d5d364 simplify skip_domain_validation logic a bit
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-08 08:48:29 +01:00
Simon L.
a267fe5cba Merge pull request #7086 from nextcloud/enh/6774/allow-skip-domain-validation
aio-interface: allow to skip domain validation via url-param
2025-11-07 18:09:32 +01:00
Simon L.
858717f740 aio-interface: allow to skip domain validation via url-param
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-07 16:44:15 +01:00
Simon L.
066e495dfe Merge pull request #7085 from nextcloud/dependabot/github_actions/dot-github/workflows/codespell-project/actions-codespell-2.2
build(deps): bump codespell-project/actions-codespell from 2.1 to 2.2 in /.github/workflows
2025-11-07 16:42:58 +01:00
Simon L.
93e59d0e25 Merge pull request #7083 from nextcloud/aio-dependency-update
PHP dependency updates
2025-11-07 16:42:38 +01:00
Simon L.
2c547178be Merge pull request #7084 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2025-11-07 16:42:20 +01:00
dependabot[bot]
72455ccae1 build(deps): bump codespell-project/actions-codespell
Bumps [codespell-project/actions-codespell](https://github.com/codespell-project/actions-codespell) from 2.1 to 2.2.
- [Release notes](https://github.com/codespell-project/actions-codespell/releases)
- [Commits](406322ec52...8f01853be1)

---
updated-dependencies:
- dependency-name: codespell-project/actions-codespell
  dependency-version: '2.2'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-07 12:42:49 +00:00
szaimen
72b504951a nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-07 12:13:22 +00:00
szaimen
82c2d06c72 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-07 12:03:28 +00:00
Simon L.
cc518d1cb2 Merge pull request #7081 from nextcloud/aio-dependency-update
PHP dependency updates
2025-11-06 13:31:18 +01:00
szaimen
5657530508 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-06 12:03:27 +00:00
Simon L.
6f9adffd41 Merge pull request #7080 from nextcloud/enh/noid/remove-delete-logic
borg-init: remove unnecessary delete logic
2025-11-06 12:00:03 +01:00
Simon L.
a7b9c95c6c borg-init: remove unnecessary delete logic
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-06 11:40:14 +01:00
Simon L.
849f052a41 Merge pull request #6814 from nextcloud/enh/noid/collabora-online
collabora: allow to use enterprise container image with support key
2025-11-06 11:24:23 +01:00
Simon L.
0a42584238 collabora: allow to use enterprise container image with support key
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-06 11:21:46 +01:00
Simon L.
d5c532fc27 Merge pull request #7078 from nextcloud/dependabot/docker/Containers/watchtower/golang-1.25.4-alpine3.22
build(deps): bump golang from 1.25.3-alpine3.22 to 1.25.4-alpine3.22 in /Containers/watchtower
2025-11-06 09:00:58 +01:00
Simon L.
fd6f2b663b Merge pull request #7077 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.5.2-cli
build(deps): bump docker from 28.5.1-cli to 28.5.2-cli in /Containers/mastercontainer
2025-11-06 09:00:38 +01:00
Simon L.
1d10ed0f9b Merge pull request #7076 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.25.4-alpine3.22
build(deps): bump golang from 1.25.3-alpine3.22 to 1.25.4-alpine3.22 in /Containers/imaginary
2025-11-06 09:00:13 +01:00
dependabot[bot]
2da872244c build(deps): bump golang in /Containers/watchtower
Bumps golang from 1.25.3-alpine3.22 to 1.25.4-alpine3.22.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 04:17:20 +00:00
dependabot[bot]
43a2b27180 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.5.1-cli to 28.5.2-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-version: 28.5.2-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 04:16:29 +00:00
dependabot[bot]
29831f4e4b build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.25.3-alpine3.22 to 1.25.4-alpine3.22.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 04:16:23 +00:00
Simon L.
1cd153e93e Merge pull request #7075 from nextcloud/watchtower-container-update
watchtower container update
2025-11-05 13:46:34 +01:00
szaimen
c57610b1b9 watchtower-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-05 12:11:43 +00:00
Simon L.
cc24fd4151 Merge pull request #7073 from nextcloud/enh/noid/fix-psalm-issues
fix further psalm issues
2025-11-05 13:00:14 +01:00
Simon L.
ab20433940 fix further psalm issues
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-05 12:58:18 +01:00
Simon L.
cbcc5259bd Merge pull request #6995 from nextcloud/enh/6964/load-seccomp-profile
collabora: load seccomp profile on the fly
2025-11-05 12:43:53 +01:00
Simon L.
6f945a2369 json_decode: always throw on error and fix other psalm issues
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-05 12:41:41 +01:00
Simon L.
df0f7b8d85 fix return type of dataconst
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-05 12:24:43 +01:00
Simon L.
897e3e7e6e move containers-definition-path to Dataconst
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-05 12:08:57 +01:00
Simon L.
4ba7f1ed64 collabora: load seccomp profile on the fly
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-05 12:08:47 +01:00
Simon L.
d5f40f9eeb Merge pull request #7072 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.7.1.1
build(deps): bump collabora/code from 25.04.6.2.1 to 25.04.7.1.1 in /Containers/collabora
2025-11-05 08:48:38 +01:00
dependabot[bot]
f1e7460f6e build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.6.2.1 to 25.04.7.1.1.

---
updated-dependencies:
- dependency-name: collabora/code
  dependency-version: 25.04.7.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 04:15:07 +00:00
Simon L.
e614202a94 increase to v12.0.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-04 16:17:44 +01:00
Simon L.
04f6ac1954 Merge pull request #6867 from Fly7113/aio-interface-relative
Make AIO interface not dependent on absolute location
2025-11-04 15:19:27 +01:00
Lorenzo Moscati
10529a597c Added suggested changes
Signed-off-by: Lorenzo Moscati <lorenzo@moscati.page>
2025-11-04 15:10:41 +01:00
Lorenzo Moscati
3bb9cdf31d Guard against null or missing keys.
Signed-off-by: Lorenzo Moscati <lorenzo@moscati.page>
2025-11-04 15:09:29 +01:00
Lorenzo Moscati
21fbb58c96 Rewrite all AIO interface paths to be relative
Signed-off-by: Lorenzo Moscati <lorenzo@moscati.page>
2025-11-04 15:09:29 +01:00
Simon L.
4581cf7649 Merge pull request #7070 from nextcloud/enh/6920/hide-upgrade-notice
aio-interface: hide upgrade notice
2025-11-04 14:16:29 +01:00
Simon L.
d24f5dd5ba Merge pull request #7069 from nextcloud/enh/6920/update-to-32.0.1
nextcloud: update to `32.0.1`
2025-11-04 14:02:46 +01:00
Simon L.
d17ed75d62 aio-interface: hide upgrade notice
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-04 14:02:37 +01:00
Simon L.
b10c9b74bf nextcloud: update to 32.0.1
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-04 14:00:16 +01:00
Simon L.
7ccf75f34a Merge pull request #7068 from nextcloud/enh/6920/update-app-version
app: update min and max versions
2025-11-04 13:58:33 +01:00
Simon L.
f179e5adad app: update min and max versions
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-04 13:57:22 +01:00
Simon L.
981d5b6092 Merge pull request #7067 from nextcloud/enh/6410/improve-docker-image-prune
docker-image-prune: only remove image with `label=org.label-schema.vendor=Nextcloud`
2025-11-04 13:51:47 +01:00
Simon L.
0ee5ec0036 docker-image-prune: only remove image with label=org.label-schema.vendor=Nextcloud
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-04 13:48:39 +01:00
Simon L.
abf0bbc431 dependabot: update redis also to new minor versions
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-04 13:44:33 +01:00
Simon L.
8627dbf3a2 Merge pull request #7066 from nextcloud/enh/noid/update-redis
update redis to v8.x
2025-11-04 13:43:03 +01:00
Simon L.
74933c6b83 update redis to v8.x
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-11-04 13:42:05 +01:00
Simon L.
2c9442bb10 Merge pull request #7005 from nextcloud/remove-libreoffice
remove libreoffice
2025-11-04 13:36:38 +01:00
Simon L.
e76478a94a Merge pull request #7048 from nextcloud/enh/noid/revert-watchtower-building
watchtower: switch back to building watchtower manually
2025-11-04 13:33:11 +01:00
Simon L.
37c2f65bb1 Merge pull request #7065 from nextcloud/dependabot/docker/Containers/whiteboard/nextcloud-releases/whiteboard-v1.4.1
build(deps): bump nextcloud-releases/whiteboard from v1.4.0 to v1.4.1 in /Containers/whiteboard
2025-11-04 09:06:10 +01:00
Simon L.
f0fcdaddf8 Merge pull request #7064 from nextcloud/dependabot/docker/Containers/redis/redis-7.2.12-alpine
build(deps): bump redis from 7.2.11-alpine to 7.2.12-alpine in /Containers/redis
2025-11-04 09:05:47 +01:00
dependabot[bot]
1f6c30b93a build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.4.0 to v1.4.1.

---
updated-dependencies:
- dependency-name: nextcloud-releases/whiteboard
  dependency-version: v1.4.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 04:14:11 +00:00
dependabot[bot]
f07b015a41 build(deps): bump redis in /Containers/redis
Bumps redis from 7.2.11-alpine to 7.2.12-alpine.

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 7.2.12-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 04:13:53 +00:00
Simon L.
ee7765ca6f Merge pull request #7029 from masterwoot/patch-1
borgbackup: fix typo in backupscript.sh
2025-10-31 15:36:17 +01:00
Simon L.
db5558a6b3 Merge pull request #7032 from winterrific/main
clamav: change clamav-milter OnInfected Action to Reject
2025-10-31 15:35:49 +01:00
Ruben D.
3475a7b5d3 Change Milter OnInfected action to Reject
Signed-off-by: Ruben D. <ruben@winterrific.net>
2025-10-31 15:30:44 +01:00
Simon L.
e4ad677a4c Merge pull request #7046 from nextcloud/aio-dependency-update
PHP dependency updates
2025-10-31 15:30:21 +01:00
Simon L.
dc9a9aed29 Merge pull request #7040 from nextcloud/dependabot/docker/Containers/whiteboard/nextcloud-releases/whiteboard-v1.4.0
build(deps): bump nextcloud-releases/whiteboard from v1.3.0 to v1.4.0 in /Containers/whiteboard
2025-10-31 15:29:34 +01:00
Simon L.
f0552d9d1a Merge pull request #7039 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.3.27-fpm-alpine3.22
build(deps): bump php from 8.3.26-fpm-alpine3.22 to 8.3.27-fpm-alpine3.22 in /Containers/nextcloud
2025-10-31 15:29:14 +01:00
Simon L.
462e42de93 Merge pull request #7038 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.2.7-alpine
build(deps): bump haproxy from 3.2.6-alpine to 3.2.7-alpine in /Containers/docker-socket-proxy
2025-10-31 15:28:54 +01:00
Simon L.
0f01279f41 Merge pull request #7037 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.4.14-fpm-alpine3.22
build(deps): bump php from 8.4.13-fpm-alpine3.22 to 8.4.14-fpm-alpine3.22 in /Containers/mastercontainer
2025-10-31 15:28:37 +01:00
Simon L.
505f4c3371 Merge pull request #7022 from nextcloud/jtr/docs-rp-i
docs: restructure and clarify reverse proxy documentation (part one)
2025-10-31 14:15:28 +01:00
Simon L.
296d3e37e8 Merge pull request #7055 from nextcloud/aio-helm-update
Helm Chart updates
2025-10-31 13:28:50 +01:00
szaimen
f88e4aef37 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-31 12:25:33 +00:00
szaimen
727d0d03db php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-31 12:03:38 +00:00
Josh
5289da58d6 docs: further enhance reverse proxy / secure tunnel docs
Further updated the guide to clarify the use of reverse proxies and secure tunnels with Nextcloud AIO.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-30 14:34:46 -04:00
Simon L.
dbaef1f154 Merge pull request #7049 from nextcloud/enh/noid/adjust-externalTrafficPolicy
helm: adjust externalTrafficPolicy only for nextcloud container
2025-10-29 15:01:04 +01:00
Simon L.
e2614defe0 helm: adjust externalTrafficPolicy to Local only for apache container
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-29 14:57:53 +01:00
Simon L.
68edc82bf4 watchtower: revert to building watchtower manually
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-29 13:42:53 +01:00
Simon L.
6c3f2e41ff add DeepWiki badge to auto-refresh the wiki
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-27 18:23:21 +01:00
Simon L.
a09f59bf79 Merge pull request #7042 from nextcloud/dependabot/github_actions/dot-github/workflows/actions/upload-artifact-5
build(deps): bump actions/upload-artifact from 4 to 5 in /.github/workflows
2025-10-27 15:59:07 +01:00
dependabot[bot]
8a3befaddd build(deps): bump actions/upload-artifact in /.github/workflows
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 14:04:50 +00:00
Simon L.
68f7958c12 update detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-27 11:37:12 +01:00
dependabot[bot]
b7c6ab018d build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.3.0 to v1.4.0.

---
updated-dependencies:
- dependency-name: nextcloud-releases/whiteboard
  dependency-version: v1.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 04:22:30 +00:00
dependabot[bot]
2598f1b983 build(deps): bump php in /Containers/nextcloud
Bumps php from 8.3.26-fpm-alpine3.22 to 8.3.27-fpm-alpine3.22.

---
updated-dependencies:
- dependency-name: php
  dependency-version: 8.3.27-fpm-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 04:22:17 +00:00
dependabot[bot]
19d5ad2a79 build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.2.6-alpine to 3.2.7-alpine.

---
updated-dependencies:
- dependency-name: haproxy
  dependency-version: 3.2.7-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 04:21:59 +00:00
dependabot[bot]
bf42de65da build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.4.13-fpm-alpine3.22 to 8.4.14-fpm-alpine3.22.

---
updated-dependencies:
- dependency-name: php
  dependency-version: 8.4.14-fpm-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 04:21:21 +00:00
masterwoot
5568c78293 Update backupscript.sh
Typo in string messages, changing from "Nextclouds data directory.." to "Nextcloud's data directory.." as it's in the possessive form.

Signed-off-by: masterwoot <company+github.com@maganti.se>
2025-10-24 09:59:57 +02:00
Simon L.
dbea2f8393 Merge pull request #7028 from nextcloud/enh/noid/download-from-github
nextcloud: download nextcloud archive file from github instead of download.nextcloud.com
2025-10-24 09:51:04 +02:00
Simon L.
fc9265653e nextcloud: download nextcloud archive file from github instead of download.nextcloud.com
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-24 09:48:00 +02:00
Simon L.
8fb2f84440 increase to 11.11.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-24 09:29:30 +02:00
Simon L.
de72356bdd Merge pull request #7026 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2025-10-24 09:26:32 +02:00
szaimen
152f1e375b nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-24 07:25:45 +00:00
Simon L.
203e26bc92 Merge pull request #7024 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.6
build(deps): bump elasticsearch from 8.19.5 to 8.19.6 in /Containers/fulltextsearch
2025-10-24 07:46:19 +02:00
dependabot[bot]
1968cd3b36 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.5 to 8.19.6.

---
updated-dependencies:
- dependency-name: elasticsearch
  dependency-version: 8.19.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-24 04:19:59 +00:00
Simon L.
61866ffb29 Merge pull request #7023 from nextcloud/enh/noid/update-aio-minio
update `nextcloud-aio-minio` to `v2`
2025-10-23 13:58:19 +02:00
Simon L.
c53308ab32 update nextcloud-aio-minio to v2
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-23 13:56:56 +02:00
Josh
d107cccb92 chore: fix typo
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-22 13:39:55 -04:00
Josh
3a7d77a766 fix: make headers consistent
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-22 12:36:09 -04:00
Josh
fb1ca10ab4 docs: Revise reverse proxy docs (first pass)
Updated the reverse proxy documentation for Nextcloud AIO, enhancing clarity and structure. 

Re-organized top section(s).

Added sections to provide context on integrated versus external reverse proxies versus secure tunnels/proxy platforms.

De-duplicated some content.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-22 12:29:55 -04:00
Simon L.
5ad08c27b6 Merge pull request #7020 from nextcloud/aio-dependency-update
PHP dependency updates
2025-10-22 14:05:57 +02:00
szaimen
330ca71de2 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-22 12:03:39 +00:00
Simon L.
46f5a9df3d Merge pull request #7019 from nextcloud/talk-container-update
talk container update
2025-10-21 14:52:15 +02:00
Simon L.
3284385628 Merge pull request #7018 from nextcloud/aio-dependency-update
PHP dependency updates
2025-10-21 14:51:57 +02:00
szaimen
6a54eb5a44 talk-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-21 12:05:17 +00:00
szaimen
1fbe2575d4 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-21 12:03:53 +00:00
Simon L.
c4245657e1 fix typo
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-21 11:52:01 +02:00
Simon L.
ec9f6e8f00 Merge pull request #7016 from nextcloud/dependabot/npm_and_yarn/php/tests/multi-a50d7f32cf
build(deps): bump playwright and @playwright/test in /php/tests
2025-10-20 21:18:42 +02:00
Simon L.
89267d7f77 Merge pull request #6983 from winterrific/main
clamav: Add clamav-milter service
2025-10-20 21:17:18 +02:00
dependabot[bot]
4690c8a4df build(deps): bump playwright and @playwright/test in /php/tests
Bumps [playwright](https://github.com/microsoft/playwright) to 1.56.1 and updates ancestor dependency [@playwright/test](https://github.com/microsoft/playwright). These dependencies need to be updated together.


Updates `playwright` from 1.51.1 to 1.56.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.51.1...v1.56.1)

Updates `@playwright/test` from 1.51.1 to 1.56.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.51.1...v1.56.1)

---
updated-dependencies:
- dependency-name: playwright
  dependency-version: 1.56.1
  dependency-type: indirect
- dependency-name: "@playwright/test"
  dependency-version: 1.56.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 19:04:20 +00:00
Simon L.
34ba8db5c2 Merge pull request #7003 from nextcloud/enh/noid/max-av-size-unlimited
nextcloud-entrypoint: set max av size back to unlimited by default
2025-10-20 15:05:00 +02:00
Simon L.
1a4c4bd89b Merge pull request #7001 from nextcloud/jtr/refactor-readme-how-to-use
docs: Revise "how to use this" section of README
2025-10-20 14:59:50 +02:00
Josh
79824ac83b docs: add link to TrueNAS SCALE guidance 2025-10-20 08:58:33 -04:00
Josh
fdb34bd01a Merge pull request #6949 from nextcloud/jtr/docs-containers-mastercontainer-readme
docs: Add README for `mastercontainer`
2025-10-20 14:10:25 +02:00
Simon L.
f465e916a4 Merge pull request #7008 from nextcloud/update/nextcloud-exporter
update nextcloud-exporter image tag to 0.9.0
2025-10-20 13:59:10 +02:00
Benjamin Brahmer
c2a040010c update nextcloud-exporter image tag to 0.9.0
Signed-off-by: Benjamin Brahmer <info@b-brahmer.de>
2025-10-18 10:37:00 +02:00
Zoey
a176ecdd9f remove librewolf from readme
Signed-off-by: Zoey <zoey@z0ey.de>
2025-10-17 20:30:05 +02:00
Zoey
91ade7ed94 remove libreoffice
see https://github.com/nextcloud/all-in-one/discussions/6997#discussioncomment-14712015

Signed-off-by: Zoey <zoey@z0ey.de>
2025-10-17 20:26:22 +02:00
Simon L.
8d67d300d3 nextcloud-entrypoint: set max av size back to unlimited by default
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-17 12:38:55 +02:00
Simon L.
3da9c4ff6a Merge pull request #7000 from nextcloud/mastercontainer-bind-localhost
mastercontainer: bind 8000 only to 127.0.0.1
2025-10-17 08:58:59 +02:00
Simon L.
12912c799e Merge pull request #7002 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.6.2.1
build(deps): bump collabora/code from 25.04.6.1.1 to 25.04.6.2.1 in /Containers/collabora
2025-10-17 08:04:01 +02:00
Zoey
2794fb3a7e apply suggestion
Signed-off-by: Zoey <zoey@z0ey.de>
2025-10-17 07:40:54 +02:00
dependabot[bot]
6624330ce5 build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.6.1.1 to 25.04.6.2.1.

---
updated-dependencies:
- dependency-name: collabora/code
  dependency-version: 25.04.6.2.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 04:21:14 +00:00
Josh
15ad146d9c docs: Revise "how to use this" section of README
Reorganized and updated instructions for clarity and approachability.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-16 22:42:27 -04:00
Zoey
f996afdb4a mastercontainer: bind 8000 only to 127.0.0.1
In my test it worked

Signed-off-by: Zoey <zoey@z0ey.de>
2025-10-16 21:09:58 +02:00
Simon L.
5dc85b09d4 Merge pull request #6950 from nextcloud/jtr/docs-containers-nextcloud-readme
docs: Add README.md for `nextcloud` container
2025-10-16 20:33:15 +02:00
Ruben D.
3a4dfaa4b6 Change --foreground option from supervisord to milter configuration file
Signed-off-by: Ruben D. <ruben@winterrific.net>
2025-10-16 19:31:16 +02:00
Josh
8ed64db45c fix: add manual install and Helm chart usage context
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-16 10:58:21 -04:00
Simon L.
6b3eac0be9 Merge pull request #6990 from nextcloud/dependabot/docker/Containers/talk/nats-2.12.1-scratch
build(deps): bump nats from 2.12.0-scratch to 2.12.1-scratch in /Containers/talk
2025-10-16 09:01:34 +02:00
Simon L.
26e2b63110 update OO
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-16 09:00:50 +02:00
Simon L.
615ca69805 Merge pull request #6988 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.25.3-alpine3.22
build(deps): bump golang from 1.25.2-alpine3.22 to 1.25.3-alpine3.22 in /Containers/imaginary
2025-10-16 08:16:24 +02:00
dependabot[bot]
a4320317d5 build(deps): bump nats in /Containers/talk
Bumps nats from 2.12.0-scratch to 2.12.1-scratch.

---
updated-dependencies:
- dependency-name: nats
  dependency-version: 2.12.1-scratch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-16 04:22:53 +00:00
dependabot[bot]
6bdd7bafdf build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.25.2-alpine3.22 to 1.25.3-alpine3.22.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-16 04:22:10 +00:00
Simon L.
bb34681300 Merge pull request #6931 from jameskimmel/patch-1
rp-docs: add link for nginx-proxy
2025-10-15 16:20:13 +02:00
jameskimmel
97af7b63e2 rp-docs: add link for nginx-proxy
Signed-off-by: jameskimmel <17176225+jameskimmel@users.noreply.github.com>
Co-Authored-By: Simon L. <szaimen@e.mail.de>
2025-10-15 16:18:57 +02:00
Simon L.
fcb69db36b Merge pull request #6978 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2025-10-15 16:12:02 +02:00
Simon L.
7bbdac12d9 Merge pull request #6959 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/watchtower
2025-10-15 16:11:50 +02:00
Simon L.
9608c5c01d Merge pull request #6958 from nextcloud/dependabot/docker/Containers/talk/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/talk
2025-10-15 16:11:39 +02:00
Simon L.
ba4ac09b46 Merge pull request #6957 from nextcloud/dependabot/docker/Containers/notify-push/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/notify-push
2025-10-15 16:11:27 +02:00
Simon L.
c867cc2e9f Merge pull request #6956 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.5.1-cli
build(deps): bump docker from 28.5.0-cli to 28.5.1-cli in /Containers/mastercontainer
2025-10-15 16:11:14 +02:00
Simon L.
3562ef3fc9 Merge pull request #6955 from nextcloud/dependabot/docker/Containers/imaginary/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/imaginary
2025-10-15 16:11:04 +02:00
Simon L.
3482a9b317 Merge pull request #6954 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/domaincheck
2025-10-15 16:10:52 +02:00
Simon L.
60b8598f8d Merge pull request #6953 from nextcloud/dependabot/docker/Containers/clamav/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/clamav
2025-10-15 16:10:42 +02:00
Simon L.
ebc23c63f0 Merge pull request #6952 from nextcloud/dependabot/docker/Containers/borgbackup/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/borgbackup
2025-10-15 16:10:31 +02:00
Simon L.
189eec1c53 Merge pull request #6951 from nextcloud/dependabot/docker/Containers/alpine/alpine-3.22.2
build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/alpine
2025-10-15 16:10:20 +02:00
Simon L.
17f8c980d2 Merge pull request #6966 from nextcloud/dependabot/docker/Containers/whiteboard/nextcloud-releases/whiteboard-v1.3.0
build(deps): bump nextcloud-releases/whiteboard from v1.2.1 to v1.3.0 in /Containers/whiteboard
2025-10-15 16:09:18 +02:00
Simon L.
a7d66ef003 Merge pull request #5735 from nextcloud/enh/noid/adjust-max-input-time
nextcloud: adjust `max_input_time` to `-1`
2025-10-15 16:08:46 +02:00
Simon L.
6d4b41d760 Merge pull request #6976 from nextcloud/enh/noid/allow-use-talk-recording-arm64
talk-recording: allow to use it on arm64
2025-10-15 16:07:11 +02:00
Simon L.
134c3d2c70 Merge pull request #6975 from nextcloud/talk-container-update
talk container update
2025-10-15 16:05:58 +02:00
Simon L.
544d96d6e5 Merge pull request #6986 from nextcloud/aio-dependency-update
PHP dependency updates
2025-10-15 16:00:09 +02:00
szaimen
c8b8740980 nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-15 12:14:36 +00:00
szaimen
12c9b68071 talk-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-15 12:05:06 +00:00
szaimen
b55b4aac1c php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-15 12:03:37 +00:00
Simon L.
9cd70294a2 Merge pull request #6985 from nextcloud/aio-helm-update
Helm Chart updates
2025-10-15 10:41:46 +02:00
szaimen
3fdd77e75d Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-15 08:40:45 +00:00
Ruben D.
2d86c0d788 Remove copying and omit checks for stalwart
Signed-off-by: Ruben D. <ruben@winterrific.net>
2025-10-14 21:10:48 +02:00
Ruben D.
28f7d3571c Add clamav milter packaged, configure it and use supervisord to start it up.
TODO: start milter only if community container stalwart is used.

Signed-off-by: Ruben D. <ruben@winterrific.net>
2025-10-14 20:59:42 +02:00
Simon L.
d83b9545f4 Merge pull request #6979 from nextcloud/dependabot/github_actions/dot-github/workflows/actions/setup-node-6
build(deps): bump actions/setup-node from 5 to 6 in /.github/workflows
2025-10-14 14:18:54 +02:00
dependabot[bot]
3137c43447 build(deps): bump actions/setup-node from 5 to 6 in /.github/workflows
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 12:16:14 +00:00
Simon L.
e940d47079 talk-recording: allow to use it on arm64
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-14 13:25:57 +02:00
dependabot[bot]
84288c4ac7 build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.2.1 to v1.3.0.

---
updated-dependencies:
- dependency-name: nextcloud-releases/whiteboard
  dependency-version: v1.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 04:19:54 +00:00
Simon L.
26bb93df91 fix typo
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-10 08:42:36 +02:00
dependabot[bot]
1f2e97a246 build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/watchtower
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:23:13 +00:00
dependabot[bot]
8e8580122d build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/talk
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:23:03 +00:00
dependabot[bot]
9d76e6486e build(deps): bump alpine in /Containers/notify-push
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:22:55 +00:00
dependabot[bot]
44659edf9c build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.5.0-cli to 28.5.1-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-version: 28.5.1-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:22:30 +00:00
dependabot[bot]
5c59bee1ee build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/imaginary
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:22:25 +00:00
dependabot[bot]
4946399905 build(deps): bump alpine in /Containers/domaincheck
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:22:22 +00:00
dependabot[bot]
8fb81686ba build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/clamav
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:22:17 +00:00
dependabot[bot]
a64237c9d6 build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/borgbackup
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:22:13 +00:00
dependabot[bot]
03413d9440 build(deps): bump alpine from 3.22.1 to 3.22.2 in /Containers/alpine
Bumps alpine from 3.22.1 to 3.22.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 04:22:08 +00:00
Josh
90d346ea65 docs: Add README.md for Nextcloud container
Added README.md for Nextcloud container.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-08 16:05:15 -04:00
Simon L.
436c6ff5b7 nextcloud: adjust max_input_time to -1
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-08 14:05:20 +02:00
Simon L.
9b345e9289 Merge pull request #6902 from nextcloud/jtr/refactor-cont-nc-entrypoint
refactor(nextcloud): Tidy up entrypoint.sh error/log output
2025-10-08 10:07:32 +02:00
Simon L.
bf7b4ba8e3 Merge pull request #6946 from nextcloud/dependabot/docker/Containers/talk-recording/python-3.14.0-alpine3.22
build(deps): bump python from 3.13.7-alpine3.22 to 3.14.0-alpine3.22 in /Containers/talk-recording
2025-10-08 08:19:07 +02:00
Simon L.
421b8bc260 Merge pull request #6945 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.25.2-alpine3.22
build(deps): bump golang from 1.25.1-alpine3.22 to 1.25.2-alpine3.22 in /Containers/imaginary
2025-10-08 08:18:41 +02:00
dependabot[bot]
7d923db448 build(deps): bump python in /Containers/talk-recording
Bumps python from 3.13.7-alpine3.22 to 3.14.0-alpine3.22.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.0-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 04:20:52 +00:00
dependabot[bot]
c35e0809bd build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.25.1-alpine3.22 to 1.25.2-alpine3.22.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.2-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 04:20:04 +00:00
jameskimmel
d09bcae60a Merge branch 'main' into patch-1 2025-10-07 16:08:41 +02:00
Simon L.
c1a99a6961 Merge pull request #6943 from nextcloud/dependabot/github_actions/dot-github/workflows/softprops/turnstyle-3.2.0
build(deps): bump softprops/turnstyle from 3.1.0 to 3.2.0 in /.github/workflows
2025-10-07 15:27:53 +02:00
dependabot[bot]
6d6183b9e8 build(deps): bump softprops/turnstyle in /.github/workflows
Bumps [softprops/turnstyle](https://github.com/softprops/turnstyle) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/softprops/turnstyle/releases)
- [Changelog](https://github.com/softprops/turnstyle/blob/master/CHANGELOG.md)
- [Commits](858c58d647...9d692f15fa)

---
updated-dependencies:
- dependency-name: softprops/turnstyle
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 13:08:54 +00:00
Simon L.
c9649f4b90 Merge pull request #6942 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.5
build(deps): bump elasticsearch from 8.19.4 to 8.19.5 in /Containers/fulltextsearch
2025-10-07 08:54:20 +02:00
dependabot[bot]
593379de56 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.4 to 8.19.5.

---
updated-dependencies:
- dependency-name: elasticsearch
  dependency-version: 8.19.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 04:18:34 +00:00
Simon L.
481604507c Merge pull request #6906 from nextcloud/dev/6892/fix
Change ui_secret to use LLDAP_LDAP_USER_PASS
2025-10-06 16:07:08 +02:00
Josh
c1949573c9 refactor(nextcloud): Tidy up entrypoint.sh error/log output
- Cleaned up error messages
- Reformatted some code for readability

No logic changes.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-06 16:04:28 +02:00
Simon L.
7fbc548d2d lldap: adjust hint how to retrieve the password
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-06 15:44:27 +02:00
Simon L.
3ad84e2ae0 Merge pull request #6916 from nextcloud/alexanderdd-patch-1
add comment about possibility of migration AIO->VM
2025-10-06 15:23:57 +02:00
Simon L.
a33ef5d1aa move the hint to a new line
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-06 15:12:31 +02:00
Simon L.
0d1c4e4a1c Merge pull request #6938 from nextcloud/dependabot/docker/Containers/watchtower/nicholas-fedor/watchtower-1.12.1
build(deps): bump nicholas-fedor/watchtower from 1.11.8 to 1.12.1 in /Containers/watchtower
2025-10-06 08:39:41 +02:00
Simon L.
d734475d7c Merge pull request #6937 from nextcloud/dependabot/docker/Containers/redis/redis-7.2.11-alpine
build(deps): bump redis from 7.2.10-alpine to 7.2.11-alpine in /Containers/redis
2025-10-06 08:39:21 +02:00
Simon L.
a5c273ad1d Merge pull request #6936 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.5.0-cli
build(deps): bump docker from 28.4.0-cli to 28.5.0-cli in /Containers/mastercontainer
2025-10-06 08:39:02 +02:00
Simon L.
ca93a01624 Merge pull request #6935 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.2.6-alpine
build(deps): bump haproxy from 3.2.5-alpine to 3.2.6-alpine in /Containers/docker-socket-proxy
2025-10-06 08:38:37 +02:00
Simon L.
51a1d433fc Merge pull request #6934 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.6.1.1
build(deps): bump collabora/code from 25.04.5.3.1 to 25.04.6.1.1 in /Containers/collabora
2025-10-06 08:38:10 +02:00
dependabot[bot]
ec07ef6fe7 build(deps): bump nicholas-fedor/watchtower in /Containers/watchtower
Bumps [nicholas-fedor/watchtower](https://github.com/nicholas-fedor/watchtower) from 1.11.8 to 1.12.1.
- [Release notes](https://github.com/nicholas-fedor/watchtower/releases)
- [Changelog](https://github.com/nicholas-fedor/watchtower/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nicholas-fedor/watchtower/compare/v1.11.8...v1.12.1)

---
updated-dependencies:
- dependency-name: nicholas-fedor/watchtower
  dependency-version: 1.12.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 04:21:19 +00:00
dependabot[bot]
7053a206e1 build(deps): bump redis in /Containers/redis
Bumps redis from 7.2.10-alpine to 7.2.11-alpine.

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 7.2.11-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 04:20:53 +00:00
dependabot[bot]
5a4ba1c350 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.4.0-cli to 28.5.0-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-version: 28.5.0-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 04:20:26 +00:00
dependabot[bot]
db66d618fd build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.2.5-alpine to 3.2.6-alpine.

---
updated-dependencies:
- dependency-name: haproxy
  dependency-version: 3.2.6-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 04:20:06 +00:00
dependabot[bot]
742e0906f0 build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.5.3.1 to 25.04.6.1.1.

---
updated-dependencies:
- dependency-name: collabora/code
  dependency-version: 25.04.6.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 04:20:04 +00:00
jameskimmel
85a068f679 nginx-proxy
Make it more clear what nginx-proxy is

Signed-off-by: jameskimmel <17176225+jameskimmel@users.noreply.github.com>
2025-10-03 07:03:40 +02:00
Simon L.
a8b4d1f0c9 Merge pull request #6928 from nextcloud/enh/noid/mino-follow-up
add minio storage to backup volumes and readme update
2025-10-01 15:27:25 +02:00
Simon L.
4153c692fd add minio storage to backup volumes and readme update
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-01 15:11:45 +02:00
Simon L.
2d3780d3b3 increase to v11.10.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-01 14:43:20 +02:00
Simon L.
0de8b9a550 Merge pull request #6927 from nextcloud/enh/noid/add-minio
add minio community container
2025-10-01 14:42:10 +02:00
Simon L.
36a39a3528 add minio community container
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-01 14:38:28 +02:00
Simon L.
816675e747 Merge pull request #6919 from nextcloud/enh/6893/delete-caddy-lock
delete caddy locks if existing on startup
2025-10-01 12:33:39 +02:00
Simon L.
fa06f1c425 delete caddy locks if existing on startup
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-10-01 12:29:14 +02:00
Simon L.
216d238625 Merge pull request #6903 from nextcloud/jtr/fix-s3-config-autocreate-ssl
fix: unify default initialization of s3 `autocreate`, `use_ssl`, `use_path_style` and `legacy_auth`
2025-09-29 11:20:03 +02:00
Simon L.
dbcd5d8955 also adjust use_path_style and legacy_auth
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-29 11:15:53 +02:00
Simon L.
a04a1a7336 Merge pull request #6913 from nextcloud/szaimen-patch-1
talk: update eturnal image tag to use alpine image
2025-09-29 11:11:32 +02:00
Simon L.
7c1cc4c2dd talk: update eturnal image tag to use alpine image
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-29 11:05:24 +02:00
Simon L.
b353ba0ab3 Merge pull request #6900 from nextcloud/enh/noid/blacklisted-files
nextcloud-entrypoint: allow to configure av_blocklisted_directories
2025-09-29 10:53:53 +02:00
Simon L.
7a5d3e7ec8 nextcloud-entrypoint: allow to configreav_blocklisted_directories
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-29 10:51:58 +02:00
Simon L.
cf4fb4d4a0 Merge pull request #6898 from nextcloud/enh/noid/postgres-rootcert
nextcloud: allow to define postgres root cert during install
2025-09-29 10:51:10 +02:00
Simon L.
b807a2c754 Merge pull request #6899 from nextcloud/enh/noid/allow-multibucket-s3-config
nextcloud-s3-config: allow multibucket config
2025-09-29 10:50:57 +02:00
Simon L.
74636bb509 Merge pull request #6894 from nextcloud/enh/noid/add-orbstack-recommendation
add recommendation to use orbstack on macOS
2025-09-29 09:05:36 +02:00
Simon L.
396085e6cd Merge pull request #6897 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.4.13-fpm-alpine3.22
build(deps): bump php from 8.4.12-fpm-alpine3.22 to 8.4.13-fpm-alpine3.22 in /Containers/mastercontainer
2025-09-29 09:05:09 +02:00
Simon L.
2b75746814 Merge pull request #6896 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.5.3.1
build(deps): bump collabora/code from 25.04.5.2.1 to 25.04.5.3.1 in /Containers/collabora
2025-09-29 09:04:51 +02:00
Simon L.
4be5772509 Merge pull request #6891 from nextcloud/dependabot/github_actions/dot-github/workflows/softprops/turnstyle-3.1.0
build(deps): bump softprops/turnstyle from 3.0.0 to 3.1.0 in /.github/workflows
2025-09-29 09:04:30 +02:00
Simon L.
b9b09b4a98 Merge pull request #6890 from nextcloud/aio-dependency-update
PHP dependency updates
2025-09-29 09:04:01 +02:00
Simon L.
f500b246aa Merge pull request #6889 from nextcloud/dependabot/docker/Containers/whiteboard/nextcloud-releases/whiteboard-v1.2.1
build(deps): bump nextcloud-releases/whiteboard from v1.2.0 to v1.2.1 in /Containers/whiteboard
2025-09-29 09:03:29 +02:00
Simon L.
f5f9b04190 Merge pull request #6888 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.2.5-alpine
build(deps): bump haproxy from 3.2.4-alpine to 3.2.5-alpine in /Containers/docker-socket-proxy
2025-09-29 09:03:07 +02:00
Simon L.
4a7b8862a6 Merge pull request #6885 from nextcloud/dependabot/docker/Containers/talk/nats-2.12.0-scratch
build(deps): bump nats from 2.11.9-scratch to 2.12.0-scratch in /Containers/talk
2025-09-29 09:02:38 +02:00
Simon L.
b3121b0dfa Merge pull request #6917 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.3.26-fpm-alpine3.22
build(deps): bump php from 8.3.25-fpm-alpine3.22 to 8.3.26-fpm-alpine3.22 in /Containers/nextcloud
2025-09-29 09:02:07 +02:00
dependabot[bot]
d5761aa52b build(deps): bump php in /Containers/nextcloud
Bumps php from 8.3.25-fpm-alpine3.22 to 8.3.26-fpm-alpine3.22.

---
updated-dependencies:
- dependency-name: php
  dependency-version: 8.3.26-fpm-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 04:34:41 +00:00
Alexander Müller
b77af1a2f8 add comment about possibility of migration AIO->VM
Signed-off-by: Alexander Müller <28591861+alexanderdd@users.noreply.github.com>
2025-09-28 14:10:59 -05:00
szaimen
25c80f470b php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-28 12:03:19 +00:00
Jean-Yves
f8cc109b7e Change ui_secret to use LLDAP_LDAP_USER_PASS
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2025-09-27 12:26:56 +02:00
Simon L.
2b50ce73be Merge pull request #6904 from nextcloud/aio-helm-update
Helm Chart updates
2025-09-27 10:19:01 +02:00
szaimen
cc1933b51f Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-27 08:18:03 +00:00
Josh
f3c666df9a fix: unify default initialization of s3 autocreate and use_ssl
Unify with micro-services image fix: nextcloud/docker#2309

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 15:53:28 -04:00
Simon L.
19b1469d85 nextcloud-s3-config: allow multibucket config
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-26 11:38:14 +02:00
Simon L.
b692c1d049 nextcloud: allow to define postgres root cert during install
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-26 10:34:07 +02:00
dependabot[bot]
4ab852204f build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.4.12-fpm-alpine3.22 to 8.4.13-fpm-alpine3.22.

---
updated-dependencies:
- dependency-name: php
  dependency-version: 8.4.13-fpm-alpine3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 04:23:15 +00:00
dependabot[bot]
4b0c78376d build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.5.2.1 to 25.04.5.3.1.

---
updated-dependencies:
- dependency-name: collabora/code
  dependency-version: 25.04.5.3.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 04:22:54 +00:00
Simon L.
37132d805e add recommendation to use orbstack on macOS
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-25 15:10:41 +02:00
dependabot[bot]
456a06d968 build(deps): bump softprops/turnstyle in /.github/workflows
Bumps [softprops/turnstyle](https://github.com/softprops/turnstyle) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/softprops/turnstyle/releases)
- [Changelog](https://github.com/softprops/turnstyle/blob/master/CHANGELOG.md)
- [Commits](bff8432276...858c58d647)

---
updated-dependencies:
- dependency-name: softprops/turnstyle
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 12:18:30 +00:00
dependabot[bot]
68317a1eb3 build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.2.0 to v1.2.1.

---
updated-dependencies:
- dependency-name: nextcloud-releases/whiteboard
  dependency-version: v1.2.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 04:24:33 +00:00
dependabot[bot]
21c62125f1 build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.2.4-alpine to 3.2.5-alpine.

---
updated-dependencies:
- dependency-name: haproxy
  dependency-version: 3.2.5-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 04:23:39 +00:00
dependabot[bot]
2324666591 build(deps): bump nats in /Containers/talk
Bumps nats from 2.11.9-scratch to 2.12.0-scratch.

---
updated-dependencies:
- dependency-name: nats
  dependency-version: 2.12.0-scratch
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-23 04:20:34 +00:00
Simon L.
1ce3b4ec06 Merge pull request #6879 from nextcloud/dependabot/github_actions/dot-github/workflows/shivammathur/setup-php-2.35.5
build(deps): bump shivammathur/setup-php from 2.35.4 to 2.35.5 in /.github/workflows
2025-09-19 14:37:52 +02:00
dependabot[bot]
caaf45143d build(deps): bump shivammathur/setup-php in /.github/workflows
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.35.4 to 2.35.5.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](ec406be512...bf6b4fbd49)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-version: 2.35.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-19 12:16:59 +00:00
Simon L.
2aeb7b5ae5 Merge pull request #6874 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.4
build(deps): bump elasticsearch from 8.19.3 to 8.19.4 in /Containers/fulltextsearch
2025-09-19 08:37:11 +02:00
dependabot[bot]
d937739ef0 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.3 to 8.19.4.

---
updated-dependencies:
- dependency-name: elasticsearch
  dependency-version: 8.19.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-19 04:20:39 +00:00
Simon L.
cda721d0dd Merge pull request #6870 from nextcloud/enh/6748/add-new-background
aio-interface: add new background for hub 25 Autumn
2025-09-18 11:46:24 +02:00
Simon L.
2bfae89461 Merge pull request #6869 from nextcloud/enh/noid/update-hub-version
aio-interface: to allow to install the latest hub version
2025-09-18 11:46:07 +02:00
Simon L.
f72546fada Merge pull request #6868 from nextcloud/enh/4380/add-languagetool
add LanguageTool for Collabora community container
2025-09-18 11:45:02 +02:00
Simon L.
5b76d6fac6 increase to 11.9.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-18 11:44:22 +02:00
Simon L.
beefc973c6 Merge pull request #6873 from nextcloud/aio-helm-update
Helm Chart updates
2025-09-18 11:33:26 +02:00
szaimen
bc92ebc65c Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-18 09:32:57 +00:00
Simon L.
c694177e27 aio-interface: add new background for hub 25 Autumn
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-16 13:32:20 +02:00
Simon L.
fae93b685b update AIO interface to allow to install the latest hub version
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-16 12:10:15 +02:00
Simon L.
c6911a228d add LanguageTool for Collabora community container
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-16 11:27:32 +02:00
Simon L.
4655294cfe Merge pull request #6628 from seclution/patch-1
rp-docs: increase Treafik timeout
2025-09-16 10:51:18 +02:00
Simon L.
c241ff57fb adjust traefik docs
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-09-16 10:49:57 +02:00
Verhoeckx
150ed0840a Added the section Removing the reverse proxy. (#6854)
* Added the section Removing the reverse proxy.
Signed-off-by: Verhoeckx <j.verhoeckx@protonmail.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2025-09-12 14:48:56 +02:00
Kai Biebel
99b5454676 Update reverse-proxy.md
Increase timeouts to prevent connection reset on uploads >100MB in clean Traefik setup

Signed-off-by: Kai Biebel <38378574+seclution@users.noreply.github.com>
2025-07-07 09:59:34 +02:00
110 changed files with 2163 additions and 628 deletions

View File

@@ -55,6 +55,6 @@ updates:
- dependency-name: "postgres"
update-types: ["version-update:semver-major"]
- dependency-name: "redis"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
update-types: ["version-update:semver-major"]
- dependency-name: "elasticsearch"
update-types: ["version-update:semver-major"]

View File

@@ -14,7 +14,7 @@ jobs:
- name: Check out code
uses: actions/checkout@v5
- name: Check spelling
uses: codespell-project/actions-codespell@406322ec52dd7b488e48c1c4b82e2a8b3a1bf630 # v2
uses: codespell-project/actions-codespell@8f01853be192eb0f849a5c7d721450e7a467c579 # v2
with:
check_filenames: true
check_hidden: true

29
.github/workflows/collabora.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
name: collabora-update
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
jobs:
collabora-update:
name: update collabora
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run collabora-profile-update
run: |
rm -f php/cool-seccomp-profile.json
wget https://raw.githubusercontent.com/CollaboraOnline/online/refs/heads/master/docker/cool-seccomp-profile.json
mv cool-seccomp-profile.json php/
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: collabora-seccomp-update automated change
signoff: true
title: collabora seccomp update
body: Automated collabora seccomp profile update
labels: dependencies, 3. to review
milestone: next
branch: collabora-seccomp-update

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2
- uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
with:
php-version: 8.4
extensions: apcu

View File

@@ -16,7 +16,7 @@ jobs:
uses: actions/checkout@v5
- name: Turnstyle
uses: softprops/turnstyle@bff843227669a0c34c7f791ebd53a4b7c2a3febd # v2
uses: softprops/turnstyle@2e4451ef94c5969eee533c487092052d4d1a53af # v2
with:
continue-after-seconds: 180
env:

View File

@@ -2,6 +2,9 @@
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Lint php
@@ -33,10 +36,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.1.1
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: ${{ matrix.php-versions }}
coverage: none

View File

@@ -18,7 +18,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
with:
php-version: 8.4
extensions: apcu

View File

@@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/setup-node@v6
with:
node-version: lts/*
@@ -82,7 +82,7 @@ jobs:
exit 1
fi
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v5
if: ${{ !cancelled() }}
with:
name: playwright-report

View File

@@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v5
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
with:
php-version: 8.4
extensions: apcu

View File

@@ -2,6 +2,9 @@
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Static analysis
@@ -19,6 +22,9 @@ concurrency:
group: psalm-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
static-analysis:
runs-on: ubuntu-latest
@@ -26,15 +32,19 @@ jobs:
name: static-psalm-analysis
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.1.1
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: 8.4
extensions: apcu
coverage: none
ini-file: development
# Temporary workaround for missing pcntl_* in PHP 8.3
ini-values: disable_functions=
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -27,7 +27,7 @@ jobs:
uses: actions/checkout@v5
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
with:
php-version: 8.4
extensions: apcu

37
.github/workflows/watchtower-update.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: watchtower-update
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
jobs:
watchtower-update:
name: update watchtower
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run watchtower-container-update
run: |
# Watchtower
watchtower_version="$(
git ls-remote https://github.com/nicholas-fedor/watchtower v* \
| cut -d/ -f3 \
| sort -V \
| grep -E "^v[0-9\.]+$" \
| tail -1
)"
watchtower_commit_hash="$(git ls-remote https://github.com/nicholas-fedor/watchtower $watchtower_version | sed 's/refs.*//')"
sed -i "s|^ENV WATCHTOWER_COMMIT_HASH.*$|ENV WATCHTOWER_COMMIT_HASH=$watchtower_commit_hash|" ./Containers/watchtower/Dockerfile
sed -i "s|\$WATCHTOWER_COMMIT_HASH.*$|\$WATCHTOWER_COMMIT_HASH # $watchtower_version|" ./Containers/watchtower/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: watchtower-update automated change
signoff: true
title: watchtower container update
body: Automated watchtower container update
labels: dependencies, 3. to review
milestone: next
branch: watchtower-container-update

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM alpine:3.22.1
FROM alpine:3.22.2
RUN set -ex; \
apk upgrade --no-cache -a

View File

@@ -66,6 +66,11 @@ caddy fmt --overwrite /tmp/Caddyfile
# Add caddy path
mkdir -p /mnt/data/caddy/
# Fix caddy startup
if [ -d "/mnt/data/caddy/locks" ]; then
rm -rf /mnt/data/caddy/locks/*
fi
# Fix apache startup
rm -f /usr/local/apache2/logs/httpd.pid

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM alpine:3.22.1
FROM alpine:3.22.2
RUN set -ex; \
\

View File

@@ -138,11 +138,6 @@ if [ "$BORG_MODE" = backup ]; then
NEW_REPOSITORY=1
if ! borg init --debug --encryption=repokey-blake2; then
echo "Could not initialize borg repository."
if [ -z "$BORG_REMOTE_REPO" ]; then
# Originally we checked for presence of the config file instead of calling `borg info`. Likely `borg info`
# will error on a partially initialized repo, so this line is probably no longer necessary
rm -f "$BORG_BACKUP_DIRECTORY/config"
fi
exit 1
fi
@@ -199,7 +194,7 @@ if [ "$BORG_MODE" = backup ]; then
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup" ]; then
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/")
BORG_INCLUDE+=(--pattern="+/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup")
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextclouds data directory. Excluding the data directory from backup!"
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextcloud's data directory. Excluding the data directory from backup!"
# Exclude preview folder if .noaiobackup file was found
elif [ -f /nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/.noaiobackup ]; then
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/")
@@ -344,7 +339,7 @@ if [ "$BORG_MODE" = restore ]; then
ADDITIONAL_RSYNC_EXCLUDES=(--exclude "nextcloud_aio_nextcloud_data/**")
ADDITIONAL_BORG_EXCLUDES=(--exclude "sh:nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/**")
ADDITIONAL_FIND_EXCLUDES=(-o -regex 'nextcloud_aio_volumes/nextcloud_aio_nextcloud_data\(/.*\)?')
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextclouds data directory. Excluding the data directory from restore!"
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextcloud's data directory. Excluding the data directory from restore!"
echo "You might run into problems due to this afterwards as potentially this makes the directory go out of sync with the database."
echo "You might be able to fix this by running 'occ files:scan --all' and 'occ maintenance:repair' and 'occ files:scan-app-data' after the restore."
echo "See https://github.com/nextcloud/all-in-one#how-to-run-occ-commands"

View File

@@ -1,18 +1,26 @@
# syntax=docker/dockerfile:latest
FROM alpine:3.22.1
FROM alpine:3.22.2
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache tzdata clamav supervisor bash; \
mkdir -p /var/lib/clamav /run/clamav /var/log/supervisord /var/run/supervisord; \
chmod 777 -R /run/clamav /var/log/clamav /var/log/supervisord /var/run/supervisord; \
apk add --no-cache tzdata clamav clamav-milter supervisor bash; \
mkdir -p /tmp /var/lib/clamav /run/clamav /var/log/supervisord /var/run/supervisord; \
chmod 777 -R /tmp /run/clamav /var/log/clamav /var/log/supervisord /var/run/supervisord; \
chown -R 100:100 /var/lib/clamav; \
sed -i "s|#\?MaxDirectoryRecursion.*|MaxDirectoryRecursion 30|g" /etc/clamav/clamd.conf; \
sed -i "s|#\?MaxFileSize.*|MaxFileSize 2G|g" /etc/clamav/clamd.conf; \
sed -i "s|#\?PCREMaxFileSize.*|PCREMaxFileSize aio-placeholder|g" /etc/clamav/clamd.conf; \
sed -i "s|#\?StreamMaxLength.*|StreamMaxLength aio-placeholder|g" /etc/clamav/clamd.conf; \
sed -i "s|#\?MaxScanSize.*|MaxScanSize 2000M|g" /etc/clamav/clamd.conf; \
sed -i "s|#\?MaxFileSize.*|MaxFileSize 2000M|g" /etc/clamav/clamd.conf; \
sed -i "s|#\?PCREMaxFileSize.*|PCREMaxFileSize 2000M|g" /etc/clamav/clamd.conf; \
# StreamMaxLength must be synced with av_stream_max_length inside the Nextcloud files_antivirus plugin
sed -i "s|#\?StreamMaxLength.*|StreamMaxLength 2000M|g" /etc/clamav/clamd.conf; \
sed -i "s|#\?TCPSocket|TCPSocket|g" /etc/clamav/clamd.conf; \
sed -i "s|^LocalSocket .*|LocalSocket /tmp/clamd.sock|g" /etc/clamav/clamd.conf
sed -i "s|^LocalSocket .*|LocalSocket /tmp/clamd.sock|g" /etc/clamav/clamd.conf; \
sed -i "s|Example| |g" /etc/clamav/clamav-milter.conf; \
sed -i "s|#\?MilterSocket inet:7357|MilterSocket inet:7357|g" /etc/clamav/clamav-milter.conf; \
sed -i "s|#\?ClamdSocket unix:/run/clamav/clamd.sock|ClamdSocket unix:/tmp/clamd.sock|g" /etc/clamav/clamav-milter.conf; \
sed -i "s|#\?OnInfected Quarantine|OnInfected Reject|g" /etc/clamav/clamav-milter.conf; \
sed -i "s|#\?AddHeader Replace|AddHeader Add|g" /etc/clamav/clamav-milter.conf; \
sed -i "s|#\?Foreground yes|Foreground yes|g" /etc/clamav/clamav-milter.conf
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh

View File

@@ -1,7 +1,5 @@
#!/bin/bash
sed "s|aio-placeholder|$MAX_SIZE|" /etc/clamav/clamd.conf > /tmp/clamd.conf
# Print out clamav version for compliance reasons
clamscan --version

View File

@@ -13,11 +13,18 @@ stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=freshclam --foreground --stdout --daemon --daemon-notify=/tmp/clamd.conf
command=freshclam --foreground --stdout --daemon --daemon-notify=/etc/clamav/clamd.conf
[program:clamd]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=clamd --foreground --config-file=/tmp/clamd.conf
command=clamd --foreground --config-file=/etc/clamav/clamd.conf
[program:milter]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=clamav-milter --config-file=/etc/clamav/clamav-milter.conf

View File

@@ -0,0 +1,15 @@
# syntax=docker/dockerfile:latest
# From https://gitlab.collabora.com/collabora-online/docker
# hadolint ignore=DL3007
FROM registry.gitlab.collabora.com/collabora-online/docker:latest
USER root
ARG DEBIAN_FRONTEND=noninteractive
COPY --chmod=775 healthcheck.sh /healthcheck.sh
USER 1001
HEALTHCHECK --start-period=60s --retries=9 CMD /healthcheck.sh
LABEL com.centurylinklabs.watchtower.enable="false" \
org.label-schema.vendor="Nextcloud"

View File

@@ -0,0 +1,7 @@
#!/bin/bash
# Unfortunately, no curl and no nc is installed in the container
# and packages can also not be added as the package list is broken.
# So always exiting 0 for now.
# nc http://127.0.0.1:9980 || exit 1
exit 0

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/blob/master/docker/from-packages/Dockerfile
FROM collabora/code:25.04.5.2.1
FROM collabora/code:25.04.7.1.1
USER root
ARG DEBIAN_FRONTEND=noninteractive

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM haproxy:3.2.4-alpine
FROM haproxy:3.2.8-alpine
# hadolint ignore=DL3002
USER root

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM alpine:3.22.1
FROM alpine:3.22.2
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash lighttpd netcat-openbsd; \

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
FROM elasticsearch:8.19.3
FROM elasticsearch:8.19.7
USER root

View File

@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:latest
FROM golang:1.25.1-alpine3.22 AS go
FROM golang:1.25.4-alpine3.22 AS go
ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
ENV IMAGINARY_HASH=6a274b488759a896aff02f52afee6e50b5e3a3ee
RUN set -ex; \
apk upgrade --no-cache -a; \
@@ -14,7 +14,7 @@ RUN set -ex; \
build-base; \
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
FROM alpine:3.22.1
FROM alpine:3.22.2
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \

View File

@@ -1,12 +1,12 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
FROM docker:28.4.0-cli AS docker
FROM docker:28.5.2-cli AS docker
# Caddy is a requirement
FROM caddy:2.10.2-alpine AS caddy
# From https://github.com/docker-library/php/blob/master/8.4/alpine3.22/fpm/Dockerfile
FROM php:8.4.12-fpm-alpine3.22
FROM php:8.4.14-fpm-alpine3.22
EXPOSE 80
EXPOSE 8080

View File

@@ -0,0 +1,69 @@
# Nextcloud All-in-One `mastercontainer`
This folder contains the OCI/Docker container definition, along with associated resources and
configuration files, for building the `mastercontainer` as part of the Nextcloud All-in-One
project. This container hosts [the Nextcloud AIO interface](
https://github.com/nextcloud/all-in-one/tree/main/php)[^app], and a dedicated PHP environment
for it (which is completely independent of the Nextcloud Server).
## Overview
The mastercontainer acts as the central orchestration service for the deployment and management
of all other containers in the Nextcloud All-in-One stack. It hosts:
- A dedicated PHP SAPI/backend (php-fpm) for AIO itself (not Nextcloud Server)
- An Apache service for accessing the AIO interface via a self-signed HTTPS VirtualHost on 8080/tcp
- A Caddy reverse proxy service enabling HTTPS access to the AIO frontend on port 8443/tcp.
- Caddy will automatically issue a Let's Encrypt issued certificate if port 80 and 8443
is open/forwarded and a domain pointer is in place; then, simply open the Nextcloud AIO interface using the
domain (`https://your-domain-that-points-to-this-server.tld:8443`). The Let's Encrypt certificate request will
use an [ACME HTTP-01](https://letsencrypt.org/docs/challenge-types/#http-01-challenge) challenge.
- Miscellaneous support services specific to AIO (backup management, health checks, etc.)
## Key Responsibilities
- Orchestrates the deployment and lifecycle of all Nextcloud service containers
- Handles initial setup and container configuration
- Coordinates image updates
- Monitors general system health
It triggers the initial installation and ensures the smooth operation of the Nextcloud
All-in-One stack.
## Contents
- **Dockerfile**: Instructions for building the mastercontainer image.
- **Entrypoint script**: The `start.sh` script is used for container initialization and runtime
configuration before starting supervisord.
- [**Nextcloud All-in-One Controller App**](https://github.com/nextcloud/all-in-one/tree/main/php): The
core AIO orchestrator that handles configuration and settings for the containers.
- **Supervisor**: The `supervisord.conf` file defines the long-running services hosted within
the container (php-fpm, cron, etc.)
## Usage
This container should be used as the trigger image when deploying the Nextcloud All-in-One
stack in a Docker or other OCI-compliant container environment. For detailed deployment
instructions, refer to the [project documentation](
https://github.com/nextcloud/all-in-one).
## Related Resources
- [Main Repository](https://github.com/nextcloud/all-in-one)
- [Documentation](https://github.com/nextcloud/all-in-one#readme)
## Contributing
Contributions are welcome! Please follow the Nextcloud project's guidelines and submit pull
requests or issues via the main repository.
## License
This folder and its contents are licensed under the
[GNU AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html), in line with the rest of Nextcloud
All-in-One.
[^app]: The Nextcloud All-in-One interface allows users to install, configure, and
manage their Nextcloud instance and related containers via a secure web interface and API.
It automates and simplifies complex tasks such as container orchestration, backups, updates,
and service management for users deploying Nextcloud in Docker environments.

View File

@@ -60,7 +60,7 @@ while true; do
fi
# Remove dangling images
sudo -u www-data docker image prune --force
sudo -u www-data docker image prune --filter "label=org.label-schema.vendor=Nextcloud" --force
# Check for available free space
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CheckFreeDiskSpace.php

View File

@@ -1,5 +1,5 @@
Listen 8000
Listen 8080
Listen 127.0.0.1:8000
Listen 8080 https
# Deny access to .ht files
<Files ".ht*">
@@ -7,8 +7,8 @@ Listen 8080
</Files>
# Http host
<VirtualHost *:8000>
ServerName localhost
<VirtualHost 127.0.0.1:8000>
ServerName 127.0.0.1
# Add error log
CustomLog /proc/self/fd/1 proxy

View File

@@ -375,6 +375,11 @@ export TZ=Etc/UTC
# Fix apache startup
rm -f /var/run/apache2/httpd.pid
# Fix caddy startup
if [ -d "/mnt/docker-aio-config/caddy/locks" ]; then
rm -rf /mnt/docker-aio-config/caddy/locks/*
fi
# Fix the Caddyfile format
caddy fmt --overwrite /Caddyfile

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM php:8.3.25-fpm-alpine3.22
FROM php:8.3.27-fpm-alpine3.22
ENV PHP_MEMORY_LIMIT=512M
ENV PHP_UPLOAD_LIMIT=16G
@@ -8,7 +8,7 @@ ENV SOURCE_LOCATION=/usr/src/nextcloud
ENV REDIS_DB_INDEX=0
# AIO settings start # Do not remove or change this line!
ENV NEXTCLOUD_VERSION=31.0.9
ENV NEXTCLOUD_VERSION=32.0.1
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!
@@ -84,8 +84,8 @@ RUN set -ex; \
# pecl will claim success even if one install fails, so we need to perform each install separately
pecl install -o igbinary-3.2.16; \
pecl install APCu-5.1.27; \
pecl install -D 'enable-memcached-igbinary="yes"' memcached-3.3.0; \
pecl install -oD 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis-6.2.0; \
pecl install -D 'enable-memcached-igbinary="yes"' memcached-3.4.0; \
pecl install -oD 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis-6.3.0; \
pecl install -o imagick-3.8.0; \
\
docker-php-ext-enable \
@@ -132,7 +132,7 @@ RUN set -ex; \
echo 'upload_max_filesize=${PHP_UPLOAD_LIMIT}'; \
echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \
echo 'max_execution_time=${PHP_MAX_TIME}'; \
echo 'max_input_time=${PHP_MAX_TIME}'; \
echo 'max_input_time=-1'; \
echo 'default_socket_timeout=${PHP_MAX_TIME}'; \
} > /usr/local/etc/php/conf.d/nextcloud.ini; \
\
@@ -156,7 +156,7 @@ RUN set -ex; \
; \
\
curl -fsSL -o nextcloud.tar.bz2 \
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
"https://github.com/nextcloud-releases/server/releases/download/v${NEXTCLOUD_VERSION}/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc \
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
@@ -230,7 +230,6 @@ RUN set -ex; \
sudo \
grep \
nodejs \
libreoffice \
bind-tools \
imagemagick \
imagemagick-svg \

View File

@@ -0,0 +1,35 @@
# Nextcloud All-in-One ``nextcloud`` Container
This folder contains the OCI/Docker container definition, along with associated resources and configuration files, for building the `nextcloud` container as part of the [Nextcloud All-in-One](https://github.com/nextcloud/all-in-one) project. This container hosts PHP and the Nextcloud Server application.
## Overview
The Nextcloud container provides the core Nextcloud application environment, including the necessary dependencies and configuration for seamless integration into the All-in-One stack. The container hosts:
- The PHP SAPI/backend (php-fpm)
- Nextcloud background jobs and scheduled tasks, which are handled via cron
- Miscellaneous minor support services specific to AIO's Nextcloud deployment (health and exec)
## Contents
- **Dockerfile**: Instructions for building the Nextcloud container image.
- **Entrypoint script**: The `start.sh` script is used for container initialization and runtime configuration before starting supervisord.
- **Nextcloud configuration files**: Specific to running in a containerized setting and/or within AIO.
- **Supervisor**: The `supervisord.conf` file defines the long-running services hosted within the container (php-fpm, cron, etc.).
## Usage
This container is intended to be used as part of the All-in-One deployment and is not meant to be used on its own. Among other requirements, it needs a web server container (which AIO provides in a dedicated Apache container). It is designed to be orchestrated by the [All-in-One mastercontainer](https://github.com/nextcloud/all-in-one/tree/main/Containers/mastercontainer) or used within an [AIO Manual Installation](https://github.com/nextcloud/all-in-one/tree/main/manual-install) or [AIO Helm chart](https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart).
## Documentation
- [Nextcloud All-in-One Documentation](https://github.com/nextcloud/all-in-one#readme)
- [Nextcloud Documentation](https://docs.nextcloud.com/)
## Contributing
Contributions are welcome! Please follow the Nextcloud project's guidelines and submit pull requests or issues via the main repository.
## License
This folder and its contents are licensed under the [GNU AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html), in line with the rest of Nextcloud All-in-One.

View File

@@ -0,0 +1,9 @@
<?php
if (getenv('NEXTCLOUD_TRUSTED_CERTIFICATES_POSTGRES')) {
$CONFIG = array(
'pgsql_ssl' => array(
'mode' => 'verify-ca',
'rootcert' => '/var/www/html/data/certificates/POSTGRES',
),
);
}

View File

@@ -4,8 +4,9 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
$use_path = getenv('OBJECTSTORE_S3_USEPATH_STYLE');
$use_legacyauth = getenv('OBJECTSTORE_S3_LEGACYAUTH');
$autocreate = getenv('OBJECTSTORE_S3_AUTOCREATE');
$multibucket = getenv('OBJECTSTORE_S3_MULTIBUCKET');
$CONFIG = array(
'objectstore' => array(
$multibucket === 'true' ? 'objectstore_multibucket' : 'objectstore' => array(
'class' => '\OC\Files\ObjectStore\S3',
'arguments' => array(
'bucket' => getenv('OBJECTSTORE_S3_BUCKET'),
@@ -16,12 +17,12 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
'port' => getenv('OBJECTSTORE_S3_PORT') ?: '',
'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '',
'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:",
'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true,
'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true,
'autocreate' => strtolower($autocreate) !== 'false',
'use_ssl' => strtolower($use_ssl) !== 'false',
// required for some non Amazon S3 implementations
'use_path_style' => $use_path == true && strtolower($use_path) !== 'false',
'use_path_style' => strtolower($use_path) === 'true',
// required for older protocol versions
'legacy_auth' => $use_legacyauth == true && strtolower($use_legacyauth) !== 'false'
'legacy_auth' => strtolower($use_legacyauth) === 'true'
)
)
);

View File

@@ -25,31 +25,34 @@ if [ "$DATABASE_TYPE" = postgres ]; then
export DATABASE_TYPE=pgsql
fi
# Only start container if redis is accessible
# Only start container if Redis is accessible
# shellcheck disable=SC2153
while ! nc -z "$REDIS_HOST" "6379"; do
echo "Waiting for redis to start..."
echo "Waiting for Redis to start..."
sleep 5
done
# Check permissions in ncdata
touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
echo "The www-data user doesn't seem to have access rights in the datadir.
Most likely are the files located on a drive that does not follow linux permissions.
Please adjust the permissions like mentioned below.
The found permissions are:
$(stat -c "%u:%g %a" "$NEXTCLOUD_DATA_DIR")
(userID:groupID permissions)
but they should be:
33:0 750
(userID:groupID permissions)
Also make sure that the parent directories on the host of the directory that you've chosen as datadir are publicly readable with e.g. 'sudo chmod +r /mnt' (adjust the command accordingly to your case) and the same for all subdirectories.
Additionally, if you want to use a Fuse-mount as datadir, set 'allow_other' as additional mount option.
For SMB/CIFS mounts as datadir, see https://github.com/nextcloud/all-in-one#can-i-use-a-cifssmb-share-as-nextclouds-datadir"
test_file="$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
touch "$test_file"
if ! [ -f "$test_file" ]; then
echo "The www-data user does not appear to have access rights to the data directory."
echo "It is possible that the files are on a filesystem that does not support standard Linux permissions,"
echo "or the permissions simply need to be adjusted. Please change the permissions as described below."
echo "Current permissions are:"
stat -c "%u:%g %a" "$NEXTCLOUD_DATA_DIR"
echo "(userID:groupID permissions)"
echo "They should be:"
echo "33:0 750"
echo "(userID:groupID permissions)"
echo "Also, ensure that all parent directories on the host of your chosen data directory are publicly readable."
echo "For example: sudo chmod +r /mnt (adjust this command as needed)."
echo "If you want to use a FUSE mount as the data directory, add 'allow_other' as an additional mount option."
echo "For SMB/CIFS mounts as the data directory, see:"
echo " https://github.com/nextcloud/all-in-one#can-i-use-a-cifssmb-share-as-nextclouds-datadir"
exit 1
fi
rm "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
rm -f "$test_file"
if [ -f /var/www/html/version.php ]; then
# shellcheck disable=SC2016
@@ -71,26 +74,31 @@ fi
# Don't start the container if Nextcloud is not compatible with the PHP version
if [ -f "/var/www/html/lib/versioncheck.php" ] && ! php /var/www/html/lib/versioncheck.php; then
echo "It seems like your installed Nextcloud is not compatible with the by the container provided PHP version."
echo "This most likely happened because you tried to restore an old Nextcloud version from backup that is not compatible with the PHP version that comes with the container."
echo "Please try to restore a more recent backup which contains a Nextcloud version that is compatible with the PHP version that comes with the container."
echo "If you do not have a more recent backup, feel free to have a look at this documentation: https://github.com/nextcloud/all-in-one/blob/main/manual-upgrade.md"
echo "Your installed Nextcloud version is not compatible with the PHP version provided by this image."
echo "This typically occurs when you restore an older Nextcloud backup that does not support the"
echo "PHP version included in this image."
echo "Please restore a more recent backup that includes a compatible Nextcloud version."
echo "If you do not have a more recent backup, refer to the manual upgrade documentation:"
echo " https://github.com/nextcloud/all-in-one/blob/main/manual-upgrade.md"
exit 1
fi
# Do not start the container if the last update failed
if [ -f "$NEXTCLOUD_DATA_DIR/update.failed" ]; then
echo "The last Nextcloud update failed."
echo "Please restore from backup and try again!"
echo "If you do not have a backup in place, you can simply delete the update.failed file in the datadir which will allow the container to start again."
echo "Please restore from a backup and try again."
echo "If you do not have a backup, you can delete the update.failed file in the data directory"
echo "to allow the container to start again."
exit 1
fi
# Do not start the container if the install failed
if [ -f "$NEXTCLOUD_DATA_DIR/install.failed" ]; then
echo "The initial Nextcloud installation failed."
echo "Please reset AIO properly and try again. For further clues what went wrong, check the logs above."
echo "See https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance"
echo "For more information about what went wrong, check the logs above."
echo "Please reset AIO properly and try again."
echo "See:"
echo " https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance"
exit 1
fi
@@ -143,7 +151,7 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
if [ "$installed_version" != "0.0.0.0" ]; then
# Check connection to appstore start # Do not remove or change this line!
while true; do
echo -e "Checking connection to appstore"
echo -e "Checking connection to the app store..."
APPSTORE_URL="https://apps.nextcloud.com/api/v1"
if grep -q appstoreurl /var/www/html/config/config.php; then
set -x
@@ -154,10 +162,10 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
CURL_STATUS="$(curl -LI "$APPSTORE_URL"/apps.json -o /dev/null -w '%{http_code}\n' -s)"
if [[ "$CURL_STATUS" = "200" ]]
then
echo "Appstore is reachable"
echo "App store is reachable."
break
else
echo "Curl didn't produce a 200 status, is appstore reachable?"
echo "Curl did not return a 200 status. Is the app store reachable?"
sleep 5
fi
done
@@ -167,21 +175,21 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
php /var/www/html/occ maintenance:mode --off
echo "Getting and backing up the status of apps for later, this might take a while..."
echo "Getting and backing up the status of apps for later; this might take a while..."
NC_APPS="$(find /var/www/html/custom_apps/ -type d -maxdepth 1 -mindepth 1 | sed 's|/var/www/html/custom_apps/||g')"
if [ -z "$NC_APPS" ]; then
echo "No apps detected, aborting export of app status..."
echo "No apps detected. Aborting export of app status..."
APPSTORAGE="no-export-done"
else
mapfile -t NC_APPS_ARRAY <<< "$NC_APPS"
declare -Ag APPSTORAGE
echo "Disabling apps before the update in order to make the update procedure more safe. This can take a while..."
echo "Disabling apps before the update to make the update procedure safer. This can take a while..."
for app in "${NC_APPS_ARRAY[@]}"; do
if APPSTORAGE[$app]="$(php /var/www/html/occ config:app:get "$app" enabled)"; then
php /var/www/html/occ app:disable "$app"
else
APPSTORAGE[$app]=""
echo "Not disabling $app because the occ command to get the enabled state was failing."
echo "Not disabling $app because the occ command to get its enabled state failed."
fi
done
fi
@@ -195,8 +203,13 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
run_upgrade_if_needed_due_to_app_update
fi
echo "Initializing nextcloud $image_version ..."
rsync -rlD --delete --exclude-from=/upgrade.exclude "$SOURCE_LOCATION/" /var/www/html/
echo "Initializing Nextcloud $image_version ..."
# Copy over initial data from Nextcloud archive
rsync -rlD --delete \
--exclude-from=/upgrade.exclude \
"$SOURCE_LOCATION/" \
/var/www/html/
# Copy custom_apps from Nextcloud archive
if ! directory_empty "$SOURCE_LOCATION/custom_apps"; then
@@ -204,22 +217,47 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
for app in "$SOURCE_LOCATION/custom_apps"/*; do
app_id="$(basename "$app")"
mkdir -p "/var/www/html/custom_apps/$app_id"
rsync -rlD --delete --include "/$app_id/" --exclude '/*' "$SOURCE_LOCATION/custom_apps/" /var/www/html/custom_apps/
rsync -rlD --delete \
--include "/$app_id/" \
--exclude '/*' \
"$SOURCE_LOCATION/custom_apps/" \
/var/www/html/custom_apps/
done
set +x
fi
# Copy over initial data from Nextcloud archive
# Copy these from Nextcloud archive if they don't exist yet (i.e. new install)
for dir in config data custom_apps themes; do
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
rsync -rlD --include "/$dir/" --exclude '/*' "$SOURCE_LOCATION/" /var/www/html/
rsync -rlD \
--include "/$dir/" \
--exclude '/*' \
"$SOURCE_LOCATION/" \
/var/www/html/
fi
done
rsync -rlD --delete --include '/config/' --exclude '/*' --exclude '/config/CAN_INSTALL' --exclude '/config/config.sample.php' --exclude '/config/config.php' "$SOURCE_LOCATION/" /var/www/html/
rsync -rlD --include '/version.php' --exclude '/*' "$SOURCE_LOCATION/" /var/www/html/
rsync -rlD --delete \
--include '/config/' \
--exclude '/*' \
--exclude '/config/CAN_INSTALL' \
--exclude '/config/config.sample.php' \
--exclude '/config/config.php' \
"$SOURCE_LOCATION/" \
/var/www/html/
rsync -rlD \
--include '/version.php' \
--exclude '/*' \
"$SOURCE_LOCATION/" \
/var/www/html/
echo "Initializing finished"
#install
################
# Fresh Install
################
if [ "$installed_version" = "0.0.0.0" ]; then
echo "New Nextcloud instance."
@@ -233,22 +271,37 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
INSTALL_OPTIONS+=(--data-dir "$NEXTCLOUD_DATA_DIR")
fi
# We do our own permission check so the permission check is not needed
cat << DATADIR_PERMISSION_CONF > /var/www/html/config/datadir.permission.config.php
# Skip the default permission check (we do our own)
cat > /var/www/html/config/datadir.permission.config.php <<'EOF'
<?php
\$CONFIG = array (
'check_data_directory_permissions' => false
);
DATADIR_PERMISSION_CONF
$CONFIG = array (
'check_data_directory_permissions' => false
);
EOF
# Write out postgres root cert
if [ -n "$NEXTCLOUD_TRUSTED_CERTIFICATES_POSTGRES" ]; then
mkdir /var/www/html/data/certificates
echo "$NEXTCLOUD_TRUSTED_CERTIFICATES_POSTGRES" > "/var/www/html/data/certificates/POSTGRES"
fi
echo "Installing with $DATABASE_TYPE database"
# Set a default value for POSTGRES_PORT
if [ -z "$POSTGRES_PORT" ]; then
POSTGRES_PORT=5432
POSTGRES_PORT=5432
fi
# shellcheck disable=SC2153
INSTALL_OPTIONS+=(--database "$DATABASE_TYPE" --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST" --database-port "$POSTGRES_PORT")
# Add database options to INSTALL_OPTIONS
# shellcheck disable=SC2153
INSTALL_OPTIONS+=(
--database "$DATABASE_TYPE"
--database-name "$POSTGRES_DB"
--database-user "$POSTGRES_USER"
--database-pass "$POSTGRES_PASSWORD"
--database-host "$POSTGRES_HOST"
--database-port "$POSTGRES_PORT"
)
echo "Starting Nextcloud installation..."
if ! php /var/www/html/occ maintenance:install "${INSTALL_OPTIONS[@]}"; then
echo "Installation of Nextcloud failed!"
@@ -270,7 +323,7 @@ DATADIR_PERMISSION_CONF
if [ "$try" -ge "$max_retries" ]; then
echo "Installation of Nextcloud failed!"
echo "Install errors: $(cat /var/www/html/data/nextcloud.log)"
echo "Installation errors: $(cat /var/www/html/data/nextcloud.log)"
touch "$NEXTCLOUD_DATA_DIR/install.failed"
exit 1
fi
@@ -306,10 +359,12 @@ DATADIR_PERMISSION_CONF
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
INSTALLED_MAJOR="${installed_version%%.*}"
IMAGE_MAJOR="${image_version%%.*}"
# If a valid upgrade path, trigger the Nextcloud built-in Updater
if ! [ "$INSTALLED_MAJOR" -gt "$IMAGE_MAJOR" ]; then
php /var/www/html/updater/updater.phar --no-interaction --no-backup
if ! php /var/www/html/occ -V || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
echo "Installation of Nextcloud failed!"
# TODO: Add a hint here about what to do / where to look / updater.log?
touch "$NEXTCLOUD_DATA_DIR/install.failed"
exit 1
fi
@@ -386,11 +441,11 @@ DATADIR_PERMISSION_CONF
#upgrade
else
touch "$NEXTCLOUD_DATA_DIR/update.failed"
echo "Upgrading nextcloud from $installed_version to $image_version..."
echo "Upgrading Nextcloud from $installed_version to $image_version..."
php /var/www/html/occ config:system:delete integrity.check.disabled
if ! php /var/www/html/occ upgrade || ! php /var/www/html/occ -V; then
echo "Upgrade failed. Please restore from backup."
bash /notify.sh "Nextcloud update to $image_version failed!" "Please restore from backup!"
bash /notify.sh "Nextcloud update to $image_version failed!" "Please restore from backup."
exit 1
fi
@@ -398,7 +453,7 @@ DATADIR_PERMISSION_CONF
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
rm "$NEXTCLOUD_DATA_DIR/update.failed"
bash /notify.sh "Nextcloud update to $image_version successful!" "Feel free to inspect the Nextcloud container logs for more info."
bash /notify.sh "Nextcloud update to $image_version successful!" "You may inspect the Nextcloud container logs for more information."
php /var/www/html/occ app:update --all
@@ -406,7 +461,7 @@ DATADIR_PERMISSION_CONF
# Restore app status
if [ "${APPSTORAGE[0]}" != "no-export-done" ]; then
echo "Restoring the status of apps. This can take a while..."
echo "Restoring app statuses. This may take a while..."
for app in "${!APPSTORAGE[@]}"; do
if [ -n "${APPSTORAGE[$app]}" ]; then
if [ "${APPSTORAGE[$app]}" != "no" ]; then
@@ -418,13 +473,13 @@ DATADIR_PERMISSION_CONF
php /var/www/html/occ maintenance:mode --off
fi
run_upgrade_if_needed_due_to_app_update
echo "The $app app could not get enabled. Probably because it is not compatible with the new Nextcloud version."
echo "The $app app could not be re-enabled, probably because it is not compatible with the new Nextcloud version."
if [ "$app" = apporder ]; then
CUSTOM_HINT="The apporder app was deprecated. A possible replacement is the side_menu app, aka 'Custom menu'."
else
CUSTOM_HINT="Most likely because it is not compatible with the new Nextcloud version."
CUSTOM_HINT="Most likely, it is not compatible with the new Nextcloud version."
fi
bash /notify.sh "Could not enable the $app app after the Nextcloud update!" "$CUSTOM_HINT Feel free to look at the Nextcloud update logs and force-enable the app again from the app-store UI."
bash /notify.sh "Could not re-enable the $app app after the Nextcloud update!" "$CUSTOM_HINT Feel free to review the Nextcloud update logs and force-enable the app again if you wish."
continue
fi
# Only restore the group settings, if the app was enabled (and is thus compatible with the new NC version)
@@ -446,7 +501,7 @@ DATADIR_PERMISSION_CONF
php /var/www/html/occ config:app:set updatenotification notify_groups --value="[]"
# Apply optimization
echo "Doing some optimizations..."
echo "Performing some optimizations..."
if [ "$NEXTCLOUD_SKIP_DATABASE_OPTIMIZATION" != yes ]; then
php /var/www/html/occ maintenance:repair --include-expensive
php /var/www/html/occ db:add-missing-indices
@@ -477,10 +532,10 @@ if [ -z "$OBJECTSTORE_S3_BUCKET" ] && [ -z "$OBJECTSTORE_SWIFT_URL" ]; then
# Check if appdata is present
# If not, something broke (e.g. changing ncdatadir after aio was first started)
if [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
echo "Appdata is not present. Did you maybe change the datadir after the initial Nextcloud installation? This is not supported!"
echo "Appdata is not present. Did you change the datadir after the initial Nextcloud installation? This is not supported!"
echo "See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir"
echo "If you adjusted the datadir to be located on an external drive, make sure that the drive is still mounted!"
echo "In the datadir was found:"
echo "If you moved the datadir to an external drive, make sure that the drive is still mounted."
echo "The following was found in the datadir:"
ls -la "$NEXTCLOUD_DATA_DIR/"
exit 1
fi
@@ -672,7 +727,7 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
fi
fi
else
echo "Warning: No ipv4-address found for $COLLABORA_HOST."
echo "Warning: No IPv4 address found for $COLLABORA_HOST."
fi
if [ -n "$COLLABORA_IPv6_ADDRESS" ]; then
if ! echo "$COLLABORA_ALLOW_LIST" | grep -q "$COLLABORA_IPv6_ADDRESS"; then
@@ -683,7 +738,7 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
fi
fi
else
echo "No ipv6-address found for $COLLABORA_HOST."
echo "No IPv6 address found for $COLLABORA_HOST."
fi
if [ -n "$COLLABORA_ALLOW_LIST" ]; then
PRIVATE_IP_RANGES='127.0.0.1/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8,fd00::/8,::1'
@@ -697,7 +752,7 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
fi
php /var/www/html/occ config:app:set richdocuments wopi_allowlist --value="$COLLABORA_ALLOW_LIST"
else
echo "Warning: wopi_allowlist is empty which should not be the case!"
echo "Warning: wopi_allowlist is empty; this should not be the case!"
fi
else
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/richdocuments" ]; then
@@ -707,15 +762,20 @@ fi
# OnlyOffice
if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
# Determine OnlyOffice port based on host pattern
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
ONLYOFFICE_PORT=80
else
ONLYOFFICE_PORT=443
fi
# Wait for OnlyOffice to become available
while ! nc -z "$ONLYOFFICE_HOST" "$ONLYOFFICE_PORT"; do
echo "waiting for OnlyOffice to become available..."
echo "Waiting for OnlyOffice to become available..."
sleep 5
done
# Install or enable OnlyOffice app as needed
if ! [ -d "/var/www/html/custom_apps/onlyoffice" ]; then
php /var/www/html/occ app:install onlyoffice
elif [ "$(php /var/www/html/occ config:app:get onlyoffice enabled)" != "yes" ]; then
@@ -723,16 +783,25 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update onlyoffice
fi
# Set OnlyOffice configuration
php /var/www/html/occ config:system:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
php /var/www/html/occ config:app:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
php /var/www/html/occ config:system:set onlyoffice jwt_header --value="AuthorizationJwt"
# Adjust the OnlyOffice host if using internal pattern
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
ONLYOFFICE_HOST="$NC_DOMAIN/onlyoffice"
export ONLYOFFICE_HOST
fi
php /var/www/html/occ config:app:set onlyoffice DocumentServerUrl --value="https://$ONLYOFFICE_HOST"
else
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/onlyoffice" ] && [ -n "$ONLYOFFICE_SECRET" ] && [ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
# Remove OnlyOffice app if disabled and removal is requested
if [ "$REMOVE_DISABLED_APPS" = yes ] && \
[ -d "/var/www/html/custom_apps/onlyoffice" ] && \
[ -n "$ONLYOFFICE_SECRET" ] && \
[ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
php /var/www/html/occ app:remove onlyoffice
fi
fi
@@ -778,7 +847,7 @@ fi
if [ -d "/var/www/html/custom_apps/spreed" ]; then
if [ "$TALK_RECORDING_ENABLED" = 'yes' ]; then
while ! nc -z "$TALK_RECORDING_HOST" 1234; do
echo "waiting for Talk Recording to become available..."
echo "Waiting for Talk Recording to become available..."
sleep 5
done
# TODO: migrate to occ command if that becomes available
@@ -793,12 +862,12 @@ fi
if [ "$CLAMAV_ENABLED" = 'yes' ]; then
count=0
while ! nc -z "$CLAMAV_HOST" 3310 && [ "$count" -lt 90 ]; do
echo "waiting for clamav to become available..."
echo "Waiting for ClamAV to become available..."
count=$((count+5))
sleep 5
done
if [ "$count" -ge 90 ]; then
echo "Clamav did not start in time. Skipping initialization and disabling files_antivirus app."
echo "ClamAV did not start in time. Skipping initialization and disabling files_antivirus app."
php /var/www/html/occ app:disable files_antivirus
else
if ! [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
@@ -811,9 +880,13 @@ if [ "$CLAMAV_ENABLED" = 'yes' ]; then
php /var/www/html/occ config:app:set files_antivirus av_mode --value="daemon"
php /var/www/html/occ config:app:set files_antivirus av_port --value="3310"
php /var/www/html/occ config:app:set files_antivirus av_host --value="$CLAMAV_HOST"
php /var/www/html/occ config:app:set files_antivirus av_stream_max_length --value="$CLAMAV_MAX_SIZE"
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="$CLAMAV_MAX_SIZE"
# av_stream_max_length must be synced with StreamMaxLength inside clamav
php /var/www/html/occ config:app:set files_antivirus av_stream_max_length --value="2147483648"
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="-1"
php /var/www/html/occ config:app:set files_antivirus av_infected_action --value="only_log"
if [ -n "$CLAMAV_BLOCKLISTED_DIRECTORIES" ]; then
php /var/www/html/occ config:app:set files_antivirus av_blocklisted_directories --value="$CLAMAV_BLOCKLISTED_DIRECTORIES"
fi
fi
else
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
@@ -842,7 +915,7 @@ fi
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
count=0
while ! nc -z "$FULLTEXTSEARCH_HOST" "$FULLTEXTSEARCH_PORT" && [ "$count" -lt 90 ]; do
echo "waiting for Fulltextsearch to become available..."
echo "Waiting for Fulltextsearch to become available..."
count=$((count+5))
sleep 5
done
@@ -875,18 +948,18 @@ if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
fi
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_USER:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:$FULLTEXTSEARCH_PORT\",\"elastic_index\":\"$FULLTEXTSEARCH_INDEX\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":true,\"files_office\":true}"
# Do the index
if ! [ -f "$NEXTCLOUD_DATA_DIR/fts-index.done" ]; then
echo "Waiting 10s before activating FTS..."
echo "Waiting 10 seconds before activating fulltextsearch..."
sleep 10
echo "Activating fulltextsearch..."
if php /var/www/html/occ fulltextsearch:test && php /var/www/html/occ fulltextsearch:index "{\"errors\": \"reset\"}" --no-readline; then
touch "$NEXTCLOUD_DATA_DIR/fts-index.done"
else
echo "Fulltextsearch failed. Could not index."
echo "Feel free to follow https://github.com/nextcloud/all-in-one/discussions/1709 if you want to skip the indexing in the future."
echo "If you want to skip indexing in the future, see https://github.com/nextcloud/all-in-one/discussions/1709"
fi
fi
fi

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM alpine:3.22.1
FROM alpine:3.22.2
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh

View File

@@ -66,8 +66,13 @@ if [ "$POSTGRES_USER" = nextcloud ]; then
export POSTGRES_USER
fi
# Postgres root cert
if [ -f "/nextcloud/data/certificates/POSTGRES" ]; then
POSTGRES_CERT="?sslmode=verify-ca&sslrootcert=/nextcloud/data/certificates/POSTGRES"
fi
# Set sensitive values as env
export DATABASE_URL="$DATABASE_TYPE://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB"
export DATABASE_URL="$DATABASE_TYPE://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB$POSTGRES_CERT"
export REDIS_URL="redis://$REDIS_USER:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
# Run it

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
FROM onlyoffice/documentserver:9.0.4.1
FROM onlyoffice/documentserver:9.1.0.1
# USER root is probably used

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From https://github.com/docker-library/redis/blob/master/7.2/alpine/Dockerfile
FROM redis:7.2.10-alpine
# From https://github.com/redis/docker-library-redis/blob/release/8.2/alpine/Dockerfile
FROM redis:8.2.3-alpine
COPY --chmod=775 start.sh /start.sh

View File

@@ -1,10 +1,10 @@
# syntax=docker/dockerfile:latest
FROM python:3.13.7-alpine3.22
FROM python:3.14.0-alpine3.22
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
ENV RECORDING_VERSION=v0.1
ENV RECORDING_VERSION=v0.2.0
ENV ALLOW_ALL=false
ENV HPB_PROTOCOL=https
ENV NC_PROTOCOL=https

View File

@@ -1,3 +1,5 @@
# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
[logs]
# Log level based on numeric values of Python logging levels:
# - Critical: 50
@@ -12,6 +14,11 @@
# IP and port to listen on for HTTP requests.
#listen = 127.0.0.1:8000
[app]
# Comma separated list of trusted proxies (IPs or CIDR networks) that may set
# the "X-Forwarded-For" header.
#trustedproxies =
[backend]
# Allow any hostname as backend endpoint. This is extremely insecure and should
# only be used during development.
@@ -100,6 +107,18 @@
# ffmpeg. The options given here fully override the default global options.
#common = ffmpeg -loglevel level+warning -n
# The (additional) options given to ffmpeg for the audio input. The options
# given here extend the default options for the audio input, although they do
# not override them.
# Default options: '-f pulse -i {AUDIO_SOURCE}'
#inputaudio =
# The (additional) options given to ffmpeg for the video input. The options
# given here extend the default options for the video input, although they do
# not override them.
# Default options: '-f x11grab -draw_mouse 0 -video_size {WIDTH}x{HEIGHT} -i {VIDEO_SOURCE}'
#inputvideo =
# The options given to ffmpeg to encode the audio output. The options given here
# fully override the default options for the audio output.
#outputaudio = -c:a libopus
@@ -120,4 +139,31 @@
# will use Google Chrome, or Chromium if Google Chrome is not installed.
# Allowed values: firefox, chrome
# Defaults to firefox
# browser = firefox
#browser = firefox
# Path to the Selenium driver to use for recordings.
# If set the driver must match the browser being used (for example,
# "/usr/bin/geckodriver" for "firefox"). If no driver is explicitly set Selenium
# Manager will try to find the right one in $PATH, downloading it as a fallback.
# Note that Selenium Manager does not work in some architectures (for example,
# Linux on arm64/aarch64), so in those architectures the driver must be
# explicitly set.
#driverPath =
# Path to the browser executable to use for recordings.
# If set the executable must match the browser being used (for example,
# "/usr/bin/firefox-esr" for "firefox"). If no executable is explicitly set
# Selenium Manager will try to find the right one in $PATH. Depending on the
# installed Selenium version if the executable is not found Selenium Manager may
# also download the browser as a fallback.
# Note that Selenium Manager does not work in some architectures (for example,
# Linux on arm64/aarch64); in those architectures the Selenium driver will try
# to find the executable, but the executable may need to be explicitly set if
# not found by the driver.
#browserPath =
[stats]
# Comma-separated list of IP addresses (or CIDR networks) that are allowed to
# access the stats endpoint.
# Leave commented to only allow access from "127.0.0.1".
#allowed_ips =

View File

@@ -59,6 +59,8 @@ extensionvideo = .webm
[recording]
browser = firefox
driverPath = /usr/bin/geckodriver
browserPath = /usr/bin/firefox
RECORDING_CONF
exec "$@"

View File

@@ -1,10 +1,10 @@
# syntax=docker/dockerfile:latest
FROM nats:2.11.9-scratch AS nats
FROM eturnal/eturnal:1.12.1 AS eturnal
FROM nats:2.12.1-scratch AS nats
FROM eturnal/eturnal:1.12.2-alpine AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.0.4 AS signaling
FROM alpine:3.22.1 AS janus
FROM alpine:3.22.2 AS janus
ARG JANUS_VERSION=v1.3.2
ARG JANUS_VERSION=v1.3.3
WORKDIR /src
RUN set -ex; \
apk upgrade --no-cache -a; \
@@ -35,7 +35,7 @@ RUN set -ex; \
make configs; \
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
FROM alpine:3.22.1
FROM alpine:3.22.2
ENV ETURNAL_ETC_DIR="/conf"
ENV SKIP_CERT_VERIFY=false
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local

View File

@@ -1,13 +1,21 @@
# syntax=docker/dockerfile:latest
FROM ghcr.io/nicholas-fedor/watchtower:1.11.8 AS watchtower
FROM golang:1.25.4-alpine3.22 AS go
FROM alpine:3.22.1
ENV WATCHTOWER_COMMIT_HASH=87b5518858f6a96e8edf784bdc855d29951643e6
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \
build-base; \
go install github.com/nicholas-fedor/watchtower@$WATCHTOWER_COMMIT_HASH # v1.12.2
FROM alpine:3.22.2
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash ca-certificates tzdata
COPY --from=watchtower /watchtower /watchtower
COPY --from=go /go/bin/watchtower /watchtower
COPY --chmod=775 start.sh /start.sh

View File

@@ -1,12 +1,18 @@
# syntax=docker/dockerfile:latest
# Probably from this file: https://github.com/nextcloud/whiteboard/blob/main/Dockerfile
FROM ghcr.io/nextcloud-releases/whiteboard:v1.2.0
FROM ghcr.io/nextcloud-releases/whiteboard:v1.4.1
USER root
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash; \
chmod 777 -R /tmp
chmod 777 -R /tmp; \
if [ -f /usr/lib/chromium/chrome_crashpad_handler ]; then \
rm -f /usr/lib/chromium/chrome_crashpad_handler.real; \
mv /usr/lib/chromium/chrome_crashpad_handler /usr/lib/chromium/chrome_crashpad_handler.real; \
printf '%s\n' '#!/bin/sh' "exec /usr/lib/chromium/chrome_crashpad_handler.real --no-periodic-tasks --database=\"\${CRASHPAD_DATABASE:-/tmp/chrome-crashpad}\" \"\$@\"" >/usr/lib/chromium/chrome_crashpad_handler; \
chmod +x /usr/lib/chromium/chrome_crashpad_handler; \
fi
USER 65534
COPY --chmod=775 start.sh /start.sh

View File

@@ -13,7 +13,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/all-in-one/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="31"/>
<nextcloud min-version="31" max-version="32"/>
</dependencies>
<settings>

View File

@@ -5,7 +5,7 @@
"display_name": "Caddy with geoblocking",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy",
"image": "ghcr.io/szaimen/aio-caddy",
"image_tag": "v2",
"image_tag": "v3",
"internal_port": "443",
"restart": "unless-stopped",
"ports": [
@@ -24,7 +24,9 @@
"TZ=%TIMEZONE%",
"NC_DOMAIN=%NC_DOMAIN%",
"APACHE_PORT=%APACHE_PORT%",
"NEXTCLOUD_EXPORTER_CADDY_PASSWORD=%NEXTCLOUD_EXPORTER_CADDY_PASSWORD%"
"NEXTCLOUD_EXPORTER_CADDY_PASSWORD=%NEXTCLOUD_EXPORTER_CADDY_PASSWORD%",
"turn_domain=turn.%NC_DOMAIN%",
"talk_port=443"
],
"volumes": [
{

View File

@@ -4,6 +4,8 @@ This container bundles caddy and auto-configures it for you. It also covers [vau
### Notes
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
- Make sure that no other service is using port 443 on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep 443` before installing AIO.
- Starting with AIO v12, the Talk port that was usually exposed on port 3478 is now set to port 443 udp and tcp and reachable via `turn.your-nc-domain.com`. So instead of opening port 3478, you need to configure the mentioned subdomain by using a cname record.
- Starting with AIO v12, you can also limit vaultwarden, stalwart and lldap to certain ip-addresses. You can do so by creating a `allowed-IPs-vaultwarden.txt`, `allowed-IPs-stalwart.txt`, or `allowed-IPs-lldap.txt` file in the `nextcloud-aio-caddy` directory of your admin user and adding the ip-addresses in these files.
- If you want to use this with [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden), make sure that you point `bw.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for vaultwarden.
- If you want to use this with [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart), make sure that you point `mail.your-nc-domain.com` to your server using an A, AAAA or CNAME record so that caddy can get a certificate automatically for stalwart.
- If you want to use this with [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin), make sure that you point `media.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyfin.

View File

@@ -2,7 +2,7 @@
This container packages calcardbackup which is a tool that exports calendars and addressbooks from Nextcloud to .ics and .vcf files and saves them to a compressed file.
### Notes
- Backups will be created at 00:00 CEST every day. Make sure that this does not conflict with the configured daily backups inside AIO.
- Backups will be created at 00:00 UTC every day. Make sure that this does not conflict with the configured daily backups inside AIO.
- All the exports will be included in AIOs backup solution
- You can find the exports in the nextcloud_aio_calcardbackup volume
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack

View File

@@ -0,0 +1,16 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-languagetool",
"display_name": "LanguageTool for Collabora",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/languagetool",
"image": "erikvl87/languagetool",
"image_tag": "latest",
"internal_port": "8010",
"restart": "unless-stopped",
"environment": [
"TZ=%TIMEZONE%"
]
}
]
}

View File

@@ -0,0 +1,13 @@
## LanguageTool for Collabora
This container bundles a LanguageTool for Collabora which adds spell checking functionality to Collabora.
### Notes
- Make sure to have collabora enabled via the AIO interface
- After adding this container via the AIO Interface, while all containers are still stopped, you need to scroll down to the `Additional Collabora options` section and enter `--o:languagetool.enabled=true --o:languagetool.base_url=http://nextcloud-aio-languagetool:8010/v2`.
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/Erikvl87/docker-languagetool
### Maintainer
https://github.com/szaimen

View File

@@ -27,7 +27,7 @@
"LLDAP_JWT_SECRET",
"LLDAP_LDAP_USER_PASS"
],
"ui_secret": "LLDAP_JWT_SECRET",
"ui_secret": "LLDAP_LDAP_USER_PASS",
"volumes": [
{
"source": "nextcloud_aio_lldap",

View File

@@ -18,10 +18,7 @@ Functionality with this configuration:
> For simplicity, this configuration is done via the command line (don't worry, it's very simple).
First, you need to retrieve the LLDAP admin password, this will be used later on. Which you need to type in or copy and paste:
```bash
sudo docker inspect nextcloud-aio-lldap | grep LLDAP_LDAP_USER_PASS
```
First, you need to retrieve the LLDAP admin password that you can see next to the container in the AIO interface. There you can configure smtp first and then invite users via mail.
Now go into the Nextcloud container:<br>
**Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management. This script below can be run from inside the container-management container via `bash /lldap.sh`.

View File

@@ -0,0 +1,41 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-minio",
"image_tag": "v2",
"display_name": "Minio S3 Storage",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/minio",
"image": "ghcr.io/szaimen/aio-minio",
"internal_port": "9000",
"environment": [
"MINIO_ROOT_USER=nextcloud",
"MINIO_ROOT_PASSWORD=%MINIO_ROOT_PASSWORD%"
],
"secrets": [
"MINIO_ROOT_PASSWORD"
],
"volumes": [
{
"source": "nextcloud_aio_minio",
"destination": "/data",
"writeable": true
}
],
"backup_volumes": [
"nextcloud_aio_minio"
],
"nextcloud_exec_commands": [
"php /var/www/html/occ config:system:set objectstore class --value 'OC\\Files\\ObjectStore\\S3'",
"php /var/www/html/occ config:system:set objectstore arguments autocreate --value true --type bool",
"php /var/www/html/occ config:system:set objectstore arguments use_path_style --value true --type bool",
"php /var/www/html/occ config:system:set objectstore arguments use_ssl --value false --type bool",
"php /var/www/html/occ config:system:set objectstore arguments region --value ''",
"php /var/www/html/occ config:system:set objectstore arguments bucket --value nextcloud",
"php /var/www/html/occ config:system:set objectstore arguments key --value nextcloud",
"php /var/www/html/occ config:system:set objectstore arguments secret --value %MINIO_ROOT_PASSWORD%",
"php /var/www/html/occ config:system:set objectstore arguments port --value 9000",
"php /var/www/html/occ config:system:set objectstore arguments hostname --value nextcloud-aio-minio"
]
}
]
}

View File

@@ -0,0 +1,18 @@
## Minio
This container bundles minio s3 storage and auto-configures it for you.
>[!WARNING]
> Enabling this container will remove access to all the files formerly written to the data directory.
> So only enable this on a clean instance directly after installing AIO.
> All additional users that are added via Nextcloud afterwards are going to work correctly.
> Also, after enabling and using it, make sure to not disable the container as you cannot migrate from s3 to local storage anymore and s3 is a critical part of your infrastructure from then on.
### Notes
- The data of Minio will be automatically included in AIOs backup solution!
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/szaimen/aio-minio
### Maintainer
https://github.com/szaimen

View File

@@ -5,7 +5,7 @@
"display_name": "Prometheus Nextcloud Exporter",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter",
"image": "ghcr.io/xperimental/nextcloud-exporter",
"image_tag": "0.8.0",
"image_tag": "0.9.0",
"internal_port": "9205",
"restart": "unless-stopped",
"ports": [

View File

@@ -67,6 +67,6 @@ docker buildx build --file Containers/nextcloud/Dockerfile --tag ghcr.io/nextclo
# For all other containers
docker buildx build --file Containers/{container}/Dockerfile --tag ghcr.io/nextcloud-releases/aio-{container}:develop --load Containers/{container}
```
1. Stop the containers using the AIO admin interface.
1. Reload the AIO admin interface with the param `bypass_container_update` to avoid overwriting your local changes, e.g. `https://localhost:8080/containers?bypass_container_update`.
1. Stop the containers using the AIO interface.
1. Reload the AIO interface with the param `bypass_container_update` to avoid overwriting your local changes, e.g. `https://localhost:8080/containers?bypass_container_update`.
1. Click "Start and update containers" and test your changes. Containers will not be updated, despite the button text.

View File

@@ -46,6 +46,7 @@ sed -i '/AIO_TOKEN/d' containers.yml
sed -i '/AIO_URL/d' containers.yml
sed -i '/DOCKER_SOCKET_PROXY_ENABLED/d' containers.yml
sed -i '/ADDITIONAL_TRUSTED_PROXY/d' containers.yml
sed -i '/TURN_DOMAIN/d' containers.yml
TCP="$(grep -oP '[%A-Z0-9_]+/tcp' containers.yml | sort -u)"
mapfile -t TCP <<< "$TCP"

View File

@@ -108,7 +108,7 @@ However, if you are unsure check the ghcr.io (https://github.com/nextcloud-relea
Once you see no more activities in the logs or a message like ```NOTICE: ready to handle connections```, we've done it!
#### Now you can handle everything through the AIO admin interface and stop and restart the containers normally.
#### Now you can handle everything through the AIO interface and stop and restart the containers normally.
---

View File

@@ -1,6 +1,6 @@
name: nextcloud-aio-helm-chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
version: 11.7.0
version: 11.11.0
apiVersion: v2
keywords:
- latest

View File

@@ -1,7 +1,7 @@
# Nextcloud AIO Helm-chart
> [!NOTE]
> For an enterprise-ready and scalable deployment method based on Helm Charts (also available for Podman), please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/).
> For an enterprise-ready and scalable deployment method based on Helm Charts (also available for Podman and OpenShift), please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/).
> [!IMPORTANT]
> This Helm-Chart is not intended to be used with Ingress as it handles TLS itself via the built-in apache container and exposes a Loadbalancer port itself on the Cluster. See the [apache service](https://github.com/nextcloud/all-in-one/blob/main/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-service.yaml). However if the Cluster is used behind NAT, you can adjust `APACHE_PORT` to a different one than 443 and do the TLS offloading on an external Reverse Proxy that forwards the traffic to the configured port via http. If you really need the Ingress feature, please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/) as we offer an enterprise-ready and scalable deployment method based on Helm Charts that also allows Ingress to be used.

View File

@@ -61,7 +61,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
image: ghcr.io/nextcloud-releases/aio-apache:20250905_100617
image: ghcr.io/nextcloud-releases/aio-apache:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -36,7 +36,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
image: ghcr.io/nextcloud-releases/aio-alpine:20250905_100617
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
command:
- mkdir
- "-p"
@@ -59,7 +59,7 @@ spec:
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-clamav:20250905_100617
image: ghcr.io/nextcloud-releases/aio-clamav:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -28,14 +28,14 @@ spec:
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- name: aliasgroup1
value: https://{{ .Values.NC_DOMAIN }}:443
value: https://{{ .Values.NC_DOMAIN }}:443,http://nextcloud-aio-apache:23973
- name: dictionaries
value: "{{ .Values.COLLABORA_DICTIONARIES }}"
- name: extra_params
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
image: ghcr.io/nextcloud-releases/aio-collabora:20250905_100617
image: ghcr.io/nextcloud-releases/aio-collabora:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -35,7 +35,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
image: ghcr.io/nextcloud-releases/aio-alpine:20250905_100617
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
command:
- mkdir
- "-p"
@@ -64,7 +64,7 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-postgresql:20250905_100617
image: ghcr.io/nextcloud-releases/aio-postgresql:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20250905_100617
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
command:
- chmod
- "777"
@@ -54,7 +54,7 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250905_100617
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -38,7 +38,7 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-imaginary:20250905_100617
image: ghcr.io/nextcloud-releases/aio-imaginary:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -38,7 +38,7 @@ spec:
# AIO settings start # Do not remove or change this line!
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20250905_100617
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
command:
- chmod
- "777"
@@ -188,7 +188,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
image: ghcr.io/nextcloud-releases/aio-nextcloud:20250905_100617
image: ghcr.io/nextcloud-releases/aio-nextcloud:20251031_122139
{{- if eq (.Values.RPSS_ENABLED | default "no") "yes" }} # AIO-config - do not change this comment!
securityContext:
# The items below only work in container context

View File

@@ -55,7 +55,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-notify-push:20250905_100617
image: ghcr.io/nextcloud-releases/aio-notify-push:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20250905_100617
image: ghcr.io/nextcloud-releases/aio-alpine:20251031_122139
command:
- chmod
- "777"
@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-onlyoffice:20250905_100617
image: ghcr.io/nextcloud-releases/aio-onlyoffice:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -39,7 +39,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-redis:20250905_100617
image: ghcr.io/nextcloud-releases/aio-redis:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -52,7 +52,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk:20250905_100617
image: ghcr.io/nextcloud-releases/aio-talk:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -44,7 +44,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk-recording:20250905_100617
image: ghcr.io/nextcloud-releases/aio-talk-recording:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -12,7 +12,6 @@ metadata:
spec:
ipFamilyPolicy: PreferDualStack
type: LoadBalancer
externalTrafficPolicy: Local
ports:
- name: "{{ .Values.TALK_PORT }}"
port: {{ .Values.TALK_PORT }}

View File

@@ -48,7 +48,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-whiteboard:20250905_100617
image: ghcr.io/nextcloud-releases/aio-whiteboard:20251031_122139
readinessProbe:
exec:
command:

View File

@@ -27,7 +27,7 @@ cp latest.yml latest.yml.backup
# Additional config
# shellcheck disable=SC1083
sed -i -E '/^( *- )(NET_RAW|SYS_NICE|MKNOD|SYS_ADMIN|CHOWN|SYS_CHROOT|FOWNER)$/!s/( *- )([A-Z_]+)$/\1\2=${\2}/' latest.yml
sed -i -E '/^( *- )(NET_RAW|SYS_NICE|MKNOD|SYS_ADMIN|CHOWN|SYS_CHROOT|FOWNER|MAC_OVERRIDE|BLOCK_SUSPEND|AUDIT_READ)$/!s/( *- )([A-Z_]+)$/\1\2=${\2}/' latest.yml
cp sample.conf /tmp/
sed -i 's|^|export |' /tmp/sample.conf
# shellcheck disable=SC1091
@@ -252,7 +252,7 @@ find ./ -name '*talk-service.yaml' -exec grep -v '{{ .Values.TALK.*}}\|protocol:
# shellcheck disable=SC1083
find ./ -name '*talk-service.yaml' -exec mv /tmp/talk-service.copy \{} \;
# shellcheck disable=SC1083
find ./ -name '*service.yaml' -exec sed -i "/type: LoadBalancer/a\ \ externalTrafficPolicy: Local" \{} \;
find ./ -name '*apache-service.yaml' -exec sed -i "/type: LoadBalancer/a\ \ externalTrafficPolicy: Local" \{} \;
# shellcheck disable=SC1083
find ./ -name '*service.yaml' -exec sed -i "/^spec:/a\ \ ipFamilyPolicy: PreferDualStack" \{} \;
# shellcheck disable=SC1083
@@ -343,6 +343,21 @@ EOL
# shellcheck disable=SC1083
find ./ -name '*talk-deployment.yaml' -exec sed -i "/^.*\- env:/r /tmp/additional-talk.config" \{} \;
# Additional collabora config
# shellcheck disable=SC1083
find ./ -name '*collabora-deployment.yaml' -exec sed -i "s/image: ghcr.io.*/IMAGE_PLACEHOLDER/" \{} \;
cat << EOL > /tmp/additional-collabora.config
{{- if contains "--o:support_key=" (join " " (.Values.ADDITIONAL_COLLABORA_OPTIONS | default list)) }}
image: ghcr.io/nextcloud-releases/aio-collabora-online:$DOCKER_TAG
{{- else }}
image: ghcr.io/nextcloud-releases/aio-collabora:$DOCKER_TAG
{{- end }}
EOL
# shellcheck disable=SC1083
find ./ -name '*collabora-deployment.yaml' -exec sed -i "/IMAGE_PLACEHOLDER/r /tmp/additional-collabora.config" \{} \;
# shellcheck disable=SC1083
find ./ -name '*collabora-deployment.yaml' -exec sed -i "/IMAGE_PLACEHOLDER/d" \{} \;
cat << EOL > templates/nextcloud-aio-networkpolicy.yaml
{{- if eq .Values.NETWORK_POLICY_ENABLED "yes" }}
# https://github.com/ahmetb/kubernetes-network-policy-recipes/blob/master/04-deny-traffic-from-other-namespaces.md

149
php/composer.lock generated
View File

@@ -391,16 +391,16 @@
},
{
"name": "laravel/serializable-closure",
"version": "v2.0.4",
"version": "v2.0.6",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841"
"reference": "038ce42edee619599a1debb7e81d7b3759492819"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841",
"reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/038ce42edee619599a1debb7e81d7b3759492819",
"reference": "038ce42edee619599a1debb7e81d7b3759492819",
"shasum": ""
},
"require": {
@@ -448,7 +448,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2025-03-19T13:51:03+00:00"
"time": "2025-10-09T13:42:30+00:00"
},
{
"name": "nikic/fast-route",
@@ -1092,16 +1092,16 @@
},
{
"name": "slim/csrf",
"version": "1.5.0",
"version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/slimphp/Slim-Csrf.git",
"reference": "179cbcf40ee1d246d4906aefed42d3e62066974b"
"reference": "a476a61e38451e138c400f6b4ca96037f3c2dd39"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/179cbcf40ee1d246d4906aefed42d3e62066974b",
"reference": "179cbcf40ee1d246d4906aefed42d3e62066974b",
"url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/a476a61e38451e138c400f6b4ca96037f3c2dd39",
"reference": "a476a61e38451e138c400f6b4ca96037f3c2dd39",
"shasum": ""
},
"require": {
@@ -1112,8 +1112,6 @@
"psr/http-server-middleware": "^1.0"
},
"require-dev": {
"phpspec/prophecy": "^1.19",
"phpspec/prophecy-phpunit": "^2.2",
"phpunit/phpunit": "^9.6",
"squizlabs/php_codesniffer": "^3.10"
},
@@ -1144,9 +1142,9 @@
],
"support": {
"issues": "https://github.com/slimphp/Slim-Csrf/issues",
"source": "https://github.com/slimphp/Slim-Csrf/tree/1.5.0"
"source": "https://github.com/slimphp/Slim-Csrf/tree/1.5.1"
},
"time": "2024-06-08T16:37:18+00:00"
"time": "2025-11-02T14:58:28+00:00"
},
{
"name": "slim/slim",
@@ -1646,16 +1644,16 @@
},
{
"name": "twig/twig",
"version": "v3.21.1",
"version": "v3.22.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d"
"reference": "4509984193026de413baf4ba80f68590a7f2c51d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d",
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d",
"reference": "4509984193026de413baf4ba80f68590a7f2c51d",
"shasum": ""
},
"require": {
@@ -1709,7 +1707,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.21.1"
"source": "https://github.com/twigphp/Twig/tree/v3.22.0"
},
"funding": [
{
@@ -1721,7 +1719,7 @@
"type": "tidelift"
}
],
"time": "2025-05-03T07:21:55+00:00"
"time": "2025-10-29T15:56:47+00:00"
}
],
"packages-dev": [
@@ -3338,16 +3336,16 @@
},
{
"name": "nikic/php-parser",
"version": "v5.6.1",
"version": "v5.6.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
"reference": "3a454ca033b9e06b63282ce19562e892747449bb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
"reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb",
"reference": "3a454ca033b9e06b63282ce19562e892747449bb",
"shasum": ""
},
"require": {
@@ -3390,9 +3388,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
"source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2"
},
"time": "2025-08-13T20:13:15+00:00"
"time": "2025-10-21T19:32:17+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -3757,16 +3755,16 @@
},
{
"name": "spatie/array-to-xml",
"version": "3.4.0",
"version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
"reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67"
"reference": "6a740f39415aee8886aea10333403adc77d50791"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
"reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
"url": "https://api.github.com/repos/spatie/array-to-xml/zipball/6a740f39415aee8886aea10333403adc77d50791",
"reference": "6a740f39415aee8886aea10333403adc77d50791",
"shasum": ""
},
"require": {
@@ -3809,7 +3807,7 @@
"xml"
],
"support": {
"source": "https://github.com/spatie/array-to-xml/tree/3.4.0"
"source": "https://github.com/spatie/array-to-xml/tree/3.4.1"
},
"funding": [
{
@@ -3821,7 +3819,7 @@
"type": "github"
}
],
"time": "2024-12-16T12:45:15+00:00"
"time": "2025-11-12T10:32:50+00:00"
},
{
"name": "sserbin/twig-linter",
@@ -3883,16 +3881,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.25",
"version": "v6.4.27",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae"
"reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
"reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae",
"url": "https://api.github.com/repos/symfony/console/zipball/13d3176cf8ad8ced24202844e9f95af11e2959fc",
"reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc",
"shasum": ""
},
"require": {
@@ -3957,7 +3955,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.25"
"source": "https://github.com/symfony/console/tree/v6.4.27"
},
"funding": [
{
@@ -3977,20 +3975,20 @@
"type": "tidelift"
}
],
"time": "2025-08-22T10:21:53+00:00"
"time": "2025-10-06T10:25:16+00:00"
},
{
"name": "symfony/filesystem",
"version": "v7.3.2",
"version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd"
"reference": "e9bcfd7837928ab656276fe00464092cc9e1826a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd",
"reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a",
"reference": "e9bcfd7837928ab656276fe00464092cc9e1826a",
"shasum": ""
},
"require": {
@@ -4027,7 +4025,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v7.3.2"
"source": "https://github.com/symfony/filesystem/tree/v7.3.6"
},
"funding": [
{
@@ -4047,20 +4045,20 @@
"type": "tidelift"
}
],
"time": "2025-07-07T08:17:47+00:00"
"time": "2025-11-05T09:52:27+00:00"
},
{
"name": "symfony/finder",
"version": "v6.4.24",
"version": "v6.4.27",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "73089124388c8510efb8d2d1689285d285937b08"
"reference": "a1b6aa435d2fba50793b994a839c32b6064f063b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08",
"reference": "73089124388c8510efb8d2d1689285d285937b08",
"url": "https://api.github.com/repos/symfony/finder/zipball/a1b6aa435d2fba50793b994a839c32b6064f063b",
"reference": "a1b6aa435d2fba50793b994a839c32b6064f063b",
"shasum": ""
},
"require": {
@@ -4095,7 +4093,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v6.4.24"
"source": "https://github.com/symfony/finder/tree/v6.4.27"
},
"funding": [
{
@@ -4115,7 +4113,7 @@
"type": "tidelift"
}
],
"time": "2025-07-15T12:02:45+00:00"
"time": "2025-10-15T18:32:00+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
@@ -4366,16 +4364,16 @@
},
{
"name": "symfony/service-contracts",
"version": "v3.6.0",
"version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
"reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
"reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
"shasum": ""
},
"require": {
@@ -4429,7 +4427,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
"source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -4440,25 +4438,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-04-25T09:37:31+00:00"
"time": "2025-07-15T11:30:57+00:00"
},
{
"name": "symfony/string",
"version": "v7.3.3",
"version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c"
"reference": "f96476035142921000338bad71e5247fbc138872"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
"reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
"url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872",
"reference": "f96476035142921000338bad71e5247fbc138872",
"shasum": ""
},
"require": {
@@ -4473,7 +4475,6 @@
},
"require-dev": {
"symfony/emoji": "^7.1",
"symfony/error-handler": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
@@ -4516,7 +4517,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v7.3.3"
"source": "https://github.com/symfony/string/tree/v7.3.4"
},
"funding": [
{
@@ -4536,7 +4537,7 @@
"type": "tidelift"
}
],
"time": "2025-08-25T06:35:40+00:00"
"time": "2025-09-11T14:36:48+00:00"
},
{
"name": "vimeo/psalm",
@@ -4725,28 +4726,28 @@
},
{
"name": "webmozart/assert",
"version": "1.11.0",
"version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
"reference": "9be6926d8b485f55b9229203f962b51ed377ba68"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68",
"reference": "9be6926d8b485f55b9229203f962b51ed377ba68",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-date": "*",
"ext-filter": "*",
"php": "^7.2 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
"vimeo/psalm": "<4.6.1 || 4.6.2"
},
"require-dev": {
"phpunit/phpunit": "^8.5.13"
"suggest": {
"ext-intl": "",
"ext-simplexml": "",
"ext-spl": ""
},
"type": "library",
"extra": {
@@ -4777,9 +4778,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
"source": "https://github.com/webmozarts/assert/tree/1.12.1"
},
"time": "2022-06-03T18:03:27+00:00"
"time": "2025-10-29T15:56:20+00:00"
}
],
"aliases": [],

View File

@@ -229,9 +229,9 @@
"UPDATE_NEXTCLOUD_APPS=%UPDATE_NEXTCLOUD_APPS%",
"TZ=%TIMEZONE%",
"TALK_PORT=%TALK_PORT%",
"TURN_DOMAIN=%TURN_DOMAIN%",
"IMAGINARY_ENABLED=%IMAGINARY_ENABLED%",
"IMAGINARY_HOST=nextcloud-aio-imaginary",
"CLAMAV_MAX_SIZE=%APACHE_MAX_SIZE%",
"PHP_UPLOAD_LIMIT=%NEXTCLOUD_UPLOAD_LIMIT%",
"PHP_MEMORY_LIMIT=%NEXTCLOUD_MEMORY_LIMIT%",
"FULLTEXTSEARCH_ENABLED=%FULLTEXTSEARCH_ENABLED%",
@@ -380,7 +380,7 @@
"internal_port": "9980",
"environment": [
"aliasgroup1=https://%NC_DOMAIN%:443,http://nextcloud-aio-apache:23973",
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+",
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.disable_server_audit=true --o:logging.level=warning --o:logging.level_startup=warning --o:welcome.enable=false %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%",
"server_name=%NC_DOMAIN%",
@@ -399,7 +399,10 @@
"SYS_ADMIN",
"SYS_CHROOT",
"FOWNER",
"CHOWN"
"CHOWN",
"MAC_OVERRIDE",
"BLOCK_SUSPEND",
"AUDIT_READ"
],
"cap_drop": [
"NET_RAW"

View File

@@ -0,0 +1,844 @@
{
"defaultAction": "SCMP_ACT_ERRNO",
"defaultErrnoRet": 1,
"archMap": [
{
"architecture": "SCMP_ARCH_X86_64",
"subArchitectures": [
"SCMP_ARCH_X86",
"SCMP_ARCH_X32"
]
},
{
"architecture": "SCMP_ARCH_AARCH64",
"subArchitectures": [
"SCMP_ARCH_ARM"
]
},
{
"architecture": "SCMP_ARCH_MIPS64",
"subArchitectures": [
"SCMP_ARCH_MIPS",
"SCMP_ARCH_MIPS64N32"
]
},
{
"architecture": "SCMP_ARCH_MIPS64N32",
"subArchitectures": [
"SCMP_ARCH_MIPS",
"SCMP_ARCH_MIPS64"
]
},
{
"architecture": "SCMP_ARCH_MIPSEL64",
"subArchitectures": [
"SCMP_ARCH_MIPSEL",
"SCMP_ARCH_MIPSEL64N32"
]
},
{
"architecture": "SCMP_ARCH_MIPSEL64N32",
"subArchitectures": [
"SCMP_ARCH_MIPSEL",
"SCMP_ARCH_MIPSEL64"
]
},
{
"architecture": "SCMP_ARCH_S390X",
"subArchitectures": [
"SCMP_ARCH_S390"
]
},
{
"architecture": "SCMP_ARCH_RISCV64",
"subArchitectures": null
}
],
"syscalls": [
{
"names": [
"unshare",
"mount",
"setns",
"clone",
"chroot",
"umount2"
],
"action": "SCMP_ACT_ALLOW"
},
{
"names": [
"accept",
"accept4",
"access",
"adjtimex",
"alarm",
"bind",
"brk",
"cachestat",
"capget",
"capset",
"chdir",
"chmod",
"chown",
"chown32",
"clock_adjtime",
"clock_adjtime64",
"clock_getres",
"clock_getres_time64",
"clock_gettime",
"clock_gettime64",
"clock_nanosleep",
"clock_nanosleep_time64",
"close",
"close_range",
"connect",
"copy_file_range",
"creat",
"dup",
"dup2",
"dup3",
"epoll_create",
"epoll_create1",
"epoll_ctl",
"epoll_ctl_old",
"epoll_pwait",
"epoll_pwait2",
"epoll_wait",
"epoll_wait_old",
"eventfd",
"eventfd2",
"execve",
"execveat",
"exit",
"exit_group",
"faccessat",
"faccessat2",
"fadvise64",
"fadvise64_64",
"fallocate",
"fanotify_mark",
"fchdir",
"fchmod",
"fchmodat",
"fchmodat2",
"fchown",
"fchown32",
"fchownat",
"fcntl",
"fcntl64",
"fdatasync",
"fgetxattr",
"flistxattr",
"flock",
"fork",
"fremovexattr",
"fsetxattr",
"fstat",
"fstat64",
"fstatat64",
"fstatfs",
"fstatfs64",
"fsync",
"ftruncate",
"ftruncate64",
"futex",
"futex_requeue",
"futex_time64",
"futex_wait",
"futex_waitv",
"futex_wake",
"futimesat",
"getcpu",
"getcwd",
"getdents",
"getdents64",
"getegid",
"getegid32",
"geteuid",
"geteuid32",
"getgid",
"getgid32",
"getgroups",
"getgroups32",
"getitimer",
"getpeername",
"getpgid",
"getpgrp",
"getpid",
"getppid",
"getpriority",
"getrandom",
"getresgid",
"getresgid32",
"getresuid",
"getresuid32",
"getrlimit",
"get_robust_list",
"getrusage",
"getsid",
"getsockname",
"getsockopt",
"get_thread_area",
"gettid",
"gettimeofday",
"getuid",
"getuid32",
"getxattr",
"inotify_add_watch",
"inotify_init",
"inotify_init1",
"inotify_rm_watch",
"io_cancel",
"ioctl",
"io_destroy",
"io_getevents",
"io_pgetevents",
"io_pgetevents_time64",
"ioprio_get",
"ioprio_set",
"io_setup",
"io_submit",
"ipc",
"kill",
"landlock_add_rule",
"landlock_create_ruleset",
"landlock_restrict_self",
"lchown",
"lchown32",
"lgetxattr",
"link",
"linkat",
"listen",
"listxattr",
"llistxattr",
"_llseek",
"lremovexattr",
"lseek",
"lsetxattr",
"lstat",
"lstat64",
"madvise",
"map_shadow_stack",
"membarrier",
"memfd_create",
"memfd_secret",
"mincore",
"mkdir",
"mkdirat",
"mknod",
"mknodat",
"mlock",
"mlock2",
"mlockall",
"mmap",
"mmap2",
"mprotect",
"mq_getsetattr",
"mq_notify",
"mq_open",
"mq_timedreceive",
"mq_timedreceive_time64",
"mq_timedsend",
"mq_timedsend_time64",
"mq_unlink",
"mremap",
"msgctl",
"msgget",
"msgrcv",
"msgsnd",
"msync",
"munlock",
"munlockall",
"munmap",
"name_to_handle_at",
"nanosleep",
"newfstatat",
"_newselect",
"open",
"openat",
"openat2",
"pause",
"pidfd_open",
"pidfd_send_signal",
"pipe",
"pipe2",
"pkey_alloc",
"pkey_free",
"pkey_mprotect",
"poll",
"ppoll",
"ppoll_time64",
"prctl",
"pread64",
"preadv",
"preadv2",
"prlimit64",
"process_mrelease",
"pselect6",
"pselect6_time64",
"pwrite64",
"pwritev",
"pwritev2",
"read",
"readahead",
"readlink",
"readlinkat",
"readv",
"recv",
"recvfrom",
"recvmmsg",
"recvmmsg_time64",
"recvmsg",
"remap_file_pages",
"removexattr",
"rename",
"renameat",
"renameat2",
"restart_syscall",
"rmdir",
"rseq",
"rt_sigaction",
"rt_sigpending",
"rt_sigprocmask",
"rt_sigqueueinfo",
"rt_sigreturn",
"rt_sigsuspend",
"rt_sigtimedwait",
"rt_sigtimedwait_time64",
"rt_tgsigqueueinfo",
"sched_getaffinity",
"sched_getattr",
"sched_getparam",
"sched_get_priority_max",
"sched_get_priority_min",
"sched_getscheduler",
"sched_rr_get_interval",
"sched_rr_get_interval_time64",
"sched_setaffinity",
"sched_setattr",
"sched_setparam",
"sched_setscheduler",
"sched_yield",
"seccomp",
"select",
"semctl",
"semget",
"semop",
"semtimedop",
"semtimedop_time64",
"send",
"sendfile",
"sendfile64",
"sendmmsg",
"sendmsg",
"sendto",
"setfsgid",
"setfsgid32",
"setfsuid",
"setfsuid32",
"setgid",
"setgid32",
"setgroups",
"setgroups32",
"setitimer",
"setpgid",
"setpriority",
"setregid",
"setregid32",
"setresgid",
"setresgid32",
"setresuid",
"setresuid32",
"setreuid",
"setreuid32",
"setrlimit",
"set_robust_list",
"setsid",
"setsockopt",
"set_thread_area",
"set_tid_address",
"setuid",
"setuid32",
"setxattr",
"shmat",
"shmctl",
"shmdt",
"shmget",
"shutdown",
"sigaltstack",
"signalfd",
"signalfd4",
"sigprocmask",
"sigreturn",
"socketcall",
"socketpair",
"splice",
"stat",
"stat64",
"statfs",
"statfs64",
"statx",
"symlink",
"symlinkat",
"sync",
"sync_file_range",
"syncfs",
"sysinfo",
"tee",
"tgkill",
"time",
"timer_create",
"timer_delete",
"timer_getoverrun",
"timer_gettime",
"timer_gettime64",
"timer_settime",
"timer_settime64",
"timerfd_create",
"timerfd_gettime",
"timerfd_gettime64",
"timerfd_settime",
"timerfd_settime64",
"times",
"tkill",
"truncate",
"truncate64",
"ugetrlimit",
"umask",
"uname",
"unlink",
"unlinkat",
"utime",
"utimensat",
"utimensat_time64",
"utimes",
"vfork",
"vmsplice",
"wait4",
"waitid",
"waitpid",
"write",
"writev"
],
"action": "SCMP_ACT_ALLOW"
},
{
"names": [
"process_vm_readv",
"process_vm_writev",
"ptrace"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"minKernel": "4.8"
}
},
{
"names": [
"socket"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 40,
"op": "SCMP_CMP_NE"
}
]
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 0,
"op": "SCMP_CMP_EQ"
}
]
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 8,
"op": "SCMP_CMP_EQ"
}
]
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 131072,
"op": "SCMP_CMP_EQ"
}
]
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 131080,
"op": "SCMP_CMP_EQ"
}
]
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 4294967295,
"op": "SCMP_CMP_EQ"
}
]
},
{
"names": [
"sync_file_range2",
"swapcontext"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"arches": [
"ppc64le"
]
}
},
{
"names": [
"arm_fadvise64_64",
"arm_sync_file_range",
"sync_file_range2",
"breakpoint",
"cacheflush",
"set_tls"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"arches": [
"arm",
"arm64"
]
}
},
{
"names": [
"arch_prctl"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"arches": [
"amd64",
"x32"
]
}
},
{
"names": [
"modify_ldt"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"arches": [
"amd64",
"x32",
"x86"
]
}
},
{
"names": [
"s390_pci_mmio_read",
"s390_pci_mmio_write",
"s390_runtime_instr"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"arches": [
"s390",
"s390x"
]
}
},
{
"names": [
"riscv_flush_icache"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"arches": [
"riscv64"
]
}
},
{
"names": [
"open_by_handle_at"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_DAC_READ_SEARCH"
]
}
},
{
"names": [
"bpf",
"clone",
"clone3",
"fanotify_init",
"fsconfig",
"fsmount",
"fsopen",
"fspick",
"lookup_dcookie",
"mount",
"mount_setattr",
"move_mount",
"open_tree",
"perf_event_open",
"quotactl",
"quotactl_fd",
"setdomainname",
"sethostname",
"setns",
"syslog",
"umount",
"umount2",
"unshare"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_ADMIN"
]
}
},
{
"names": [
"clone"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 2114060288,
"op": "SCMP_CMP_MASKED_EQ"
}
],
"excludes": {
"caps": [
"CAP_SYS_ADMIN"
],
"arches": [
"s390",
"s390x"
]
}
},
{
"names": [
"clone"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 1,
"value": 2114060288,
"op": "SCMP_CMP_MASKED_EQ"
}
],
"comment": "s390 parameter ordering for clone is different",
"includes": {
"arches": [
"s390",
"s390x"
]
},
"excludes": {
"caps": [
"CAP_SYS_ADMIN"
]
}
},
{
"names": [
"clone3"
],
"action": "SCMP_ACT_ERRNO",
"errnoRet": 38,
"excludes": {
"caps": [
"CAP_SYS_ADMIN"
]
}
},
{
"names": [
"reboot"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_BOOT"
]
}
},
{
"names": [
"chroot"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_CHROOT"
]
}
},
{
"names": [
"delete_module",
"init_module",
"finit_module"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_MODULE"
]
}
},
{
"names": [
"acct"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_PACCT"
]
}
},
{
"names": [
"kcmp",
"pidfd_getfd",
"process_madvise",
"process_vm_readv",
"process_vm_writev",
"ptrace"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_PTRACE"
]
}
},
{
"names": [
"iopl",
"ioperm"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_RAWIO"
]
}
},
{
"names": [
"settimeofday",
"stime",
"clock_settime",
"clock_settime64"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_TIME"
]
}
},
{
"names": [
"vhangup"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_TTY_CONFIG"
]
}
},
{
"names": [
"get_mempolicy",
"mbind",
"set_mempolicy",
"set_mempolicy_home_node"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYS_NICE"
]
}
},
{
"names": [
"syslog"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_SYSLOG"
]
}
},
{
"names": [
"bpf"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_BPF"
]
}
},
{
"names": [
"perf_event_open"
],
"action": "SCMP_ACT_ALLOW",
"includes": {
"caps": [
"CAP_PERFMON"
]
}
}
]
}

View File

@@ -1,23 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="6.13.1@1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51">
<file src="src/ContainerDefinitionFetcher.php">
<PossiblyFalseArgument>
<code><![CDATA[file_get_contents($path)]]></code>
<code><![CDATA[file_get_contents(__DIR__ . '/../containers.json')]]></code>
</PossiblyFalseArgument>
</file>
<file src="src/Controller/DockerController.php">
<InvalidOperand>
<code><![CDATA[$port]]></code>
</InvalidOperand>
</file>
<file src="src/Data/ConfigurationManager.php">
<FalsableReturnStatement>
<code><![CDATA[$additionalBackupDirectories]]></code>
</FalsableReturnStatement>
<InvalidFalsableReturnType>
<code><![CDATA[string]]></code>
</InvalidFalsableReturnType>
<PossiblyFalseArgument>
<code><![CDATA[$ch]]></code>
<code><![CDATA[$ch]]></code>
@@ -25,26 +13,8 @@
<code><![CDATA[$ch]]></code>
<code><![CDATA[$ch]]></code>
<code><![CDATA[$ch]]></code>
<code><![CDATA[$configContent]]></code>
<code><![CDATA[$content]]></code>
<code><![CDATA[$content]]></code>
<code><![CDATA[$dailyBackupFile]]></code>
<code><![CDATA[$dailyBackupFile]]></code>
<code><![CDATA[file_get_contents(DataConst::GetBackupPublicKey())]]></code>
</PossiblyFalseArgument>
</file>
<file src="src/Data/DataConst.php">
<FalsableReturnStatement>
<code><![CDATA[realpath(__DIR__ . '/../../../community-containers/')]]></code>
<code><![CDATA[realpath(__DIR__ . '/../../data/')]]></code>
<code><![CDATA[realpath(__DIR__ . '/../../session/')]]></code>
</FalsableReturnStatement>
<InvalidFalsableReturnType>
<code><![CDATA[string]]></code>
<code><![CDATA[string]]></code>
<code><![CDATA[string]]></code>
</InvalidFalsableReturnType>
</file>
<file src="src/Docker/DockerActionManager.php">
<PossiblyFalseArgument>
<code><![CDATA[$line]]></code>

7
php/public/base_path.js Normal file
View File

@@ -0,0 +1,7 @@
document.addEventListener("DOMContentLoaded", function() {
basePath = document.getElementById("base_path")
if (basePath) {
// Remove '/containers' from the end of the path, to get the base path only
basePath.value = window.location.pathname.slice(0, -11);
}
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@@ -87,6 +87,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
$params = $request->getQueryParams();
$bypass_mastercontainer_update = isset($params['bypass_mastercontainer_update']);
$bypass_container_update = isset($params['bypass_container_update']);
$skip_domain_validation = isset($params['skip_domain_validation']);
return $view->render($response, 'containers.twig', [
'domain' => $configurationManager->GetDomain(),
@@ -116,7 +117,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
'daily_backup_time' => $configurationManager->GetDailyBackupTime(),
'is_daily_backup_running' => $configurationManager->isDailyBackupRunning(),
'timezone' => $configurationManager->GetTimezone(),
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped(),
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped($skip_domain_validation),
'talk_port' => $configurationManager->GetTalkPort(),
'collabora_dictionaries' => $configurationManager->GetCollaboraDictionaries(),
'collabora_additional_options' => $configurationManager->GetAdditionalCollaboraOptions(),
@@ -178,17 +179,17 @@ $app->get('/', function (\Psr\Http\Message\RequestInterface $request, Response $
$setup = $container->get(\AIO\Data\Setup::class);
if($setup->CanBeInstalled()) {
return $response
->withHeader('Location', '/setup')
->withHeader('Location', 'setup')
->withStatus(302);
}
if($authManager->IsAuthenticated()) {
return $response
->withHeader('Location', '/containers')
->withHeader('Location', 'containers')
->withStatus(302);
} else {
return $response
->withHeader('Location', '/login')
->withHeader('Location', 'login')
->withStatus(302);
}
});

View File

@@ -251,7 +251,7 @@ svg:not(:has(use)) .fallback-text {
min-width: 100vw;
position: fixed;
width: 100vw;
background-image: url("img/jenna-kim-the-globe.webp");
background-image: url("img/jo-myoung-hee-fluid.webp");
background-position: center;
background-repeat: no-repeat;
background-size: cover;
@@ -260,7 +260,7 @@ svg:not(:has(use)) .fallback-text {
}
html[data-theme="dark"] .wrapper {
background-image: url("img/jenna-kim-the-globe-dark.webp");
background-image: url("img/jo-myoung-hee-fluid-dark.webp");
}
form {

View File

@@ -38,13 +38,13 @@ readonly class ContainerDefinitionFetcher {
*/
private function GetDefinition(): array
{
$data = json_decode(file_get_contents(__DIR__ . '/../containers.json'), true);
$data = json_decode((string)file_get_contents(DataConst::GetContainersDefinitionPath()), true, 512, JSON_THROW_ON_ERROR);
$additionalContainerNames = [];
foreach ($this->configurationManager->GetEnabledCommunityContainers() as $communityContainer) {
if ($communityContainer !== '') {
$path = DataConst::GetCommunityContainersDirectory() . '/' . $communityContainer . '/' . $communityContainer . '.json';
$additionalData = json_decode(file_get_contents($path), true);
$additionalData = json_decode((string)file_get_contents($path), true, 512, JSON_THROW_ON_ERROR);
$data = array_merge_recursive($data, $additionalData);
if (isset($additionalData['aio_services_v1'][0]['display_name']) && $additionalData['aio_services_v1'][0]['display_name'] !== '') {
// Store container_name of community containers in variable for later
@@ -67,6 +67,9 @@ readonly class ContainerDefinitionFetcher {
if (!$this->configurationManager->isCollaboraEnabled()) {
continue;
}
if ($this->configurationManager->isCollaboraSubscriptionEnabled()) {
$entry['image'] = 'ghcr.io/nextcloud-releases/aio-collabora-online';
}
} elseif ($entry['container_name'] === 'nextcloud-aio-talk') {
if (!$this->configurationManager->isTalkEnabled()) {
continue;

View File

@@ -19,7 +19,8 @@ readonly class ConfigurationController {
try {
if (isset($request->getParsedBody()['domain'])) {
$domain = $request->getParsedBody()['domain'] ?? '';
$this->configurationManager->SetDomain($domain);
$skipDomainValidation = isset($request->getParsedBody()['skip_domain_validation']);
$this->configurationManager->SetDomain($domain, $skipDomainValidation);
}
if (isset($request->getParsedBody()['current-master-password']) || isset($request->getParsedBody()['new-master-password'])) {
@@ -161,7 +162,7 @@ readonly class ConfigurationController {
$this->configurationManager->DeleteBorgBackupLocationVars();
}
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
} catch (InvalidSettingConfigurationException $ex) {
$response->getBody()->write($ex->getMessage());
return $response->withStatus(422);

View File

@@ -85,7 +85,7 @@ readonly class DockerController {
public function StartBackupContainerBackup(Request $request, Response $response, array $args) : Response {
$forceStopNextcloud = true;
$this->startBackup($forceStopNextcloud);
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function startBackup(bool $forceStopNextcloud = false) : void {
@@ -102,7 +102,7 @@ readonly class DockerController {
public function StartBackupContainerCheck(Request $request, Response $response, array $args) : Response {
$this->checkBackup();
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function checkBackup() : void {
@@ -132,7 +132,7 @@ readonly class DockerController {
$id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id);
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function StartBackupContainerCheckRepair(Request $request, Response $response, array $args) : Response {
@@ -148,7 +148,7 @@ readonly class DockerController {
$config['backup-mode'] = 'check';
$this->configurationManager->WriteConfig($config);
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function StartBackupContainerTest(Request $request, Response $response, array $args) : Response {
@@ -163,7 +163,7 @@ readonly class DockerController {
$id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id);
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function StartContainer(Request $request, Response $response, array $args) : Response
@@ -171,20 +171,21 @@ readonly class DockerController {
$uri = $request->getUri();
$host = $uri->getHost();
$port = $uri->getPort();
$path = $request->getParsedBody()['base_path'] ?? '';
if ($port === 8000) {
error_log('The AIO_URL-port was discovered to be 8000 which is not expected. It is now set to 443.');
$port = 443;
}
if (isset($request->getParsedBody()['install_latest_major'])) {
$installLatestMajor = 31;
$installLatestMajor = 32;
} else {
$installLatestMajor = "";
}
$config = $this->configurationManager->GetConfig();
// set AIO_URL
$config['AIO_URL'] = $host . ':' . $port;
$config['AIO_URL'] = $host . ':' . $port . $path;
// set wasStartButtonClicked
$config['wasStartButtonClicked'] = 1;
// set install_latest_major
@@ -204,7 +205,7 @@ readonly class DockerController {
// Temporarily disabled as it leads much faster to docker rate limits
// apcu_clear_cache();
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function startTopContainer(bool $pullImage) : void {
@@ -223,7 +224,7 @@ readonly class DockerController {
public function StartWatchtowerContainer(Request $request, Response $response, array $args) : Response {
$this->startWatchtower();
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function startWatchtower() : void {
@@ -261,7 +262,7 @@ readonly class DockerController {
$forceStopNextcloud = true;
$this->PerformRecursiveContainerStop($id, $forceStopNextcloud);
return $response->withStatus(201)->withHeader('Location', '/');
return $response->withStatus(201)->withHeader('Location', '.');
}
public function stopTopContainer() : void {

View File

@@ -19,33 +19,33 @@ readonly class LoginController {
public function TryLogin(Request $request, Response $response, array $args) : Response {
if (!$this->dockerActionManager->isLoginAllowed()) {
$response->getBody()->write("The login is blocked since Nextcloud is running.");
return $response->withHeader('Location', '/')->withStatus(422);
return $response->withHeader('Location', '.')->withStatus(422);
}
$password = $request->getParsedBody()['password'] ?? '';
if($this->authManager->CheckCredentials($password)) {
$this->authManager->SetAuthState(true);
return $response->withHeader('Location', '/')->withStatus(201);
return $response->withHeader('Location', '.')->withStatus(201);
}
$response->getBody()->write("The password is incorrect.");
return $response->withHeader('Location', '/')->withStatus(422);
return $response->withHeader('Location', '.')->withStatus(422);
}
public function GetTryLogin(Request $request, Response $response, array $args) : Response {
$token = $request->getQueryParams()['token'] ?? '';
if($this->authManager->CheckToken($token)) {
$this->authManager->SetAuthState(true);
return $response->withHeader('Location', '/')->withStatus(302);
return $response->withHeader('Location', '../..')->withStatus(302);
}
return $response->withHeader('Location', '/')->withStatus(302);
return $response->withHeader('Location', '../..')->withStatus(302);
}
public function Logout(Request $request, Response $response, array $args) : Response
{
$this->authManager->SetAuthState(false);
return $response
->withHeader('Location', '/')
->withHeader('Location', '../..')
->withStatus(302);
}
}

View File

@@ -13,7 +13,7 @@ class ConfigurationManager
{
if(file_exists(DataConst::GetConfigFile()))
{
$configContent = file_get_contents(DataConst::GetConfigFile());
$configContent = (string)file_get_contents(DataConst::GetConfigFile());
return json_decode($configContent, true, 512, JSON_THROW_ON_ERROR);
}
@@ -80,10 +80,7 @@ class ConfigurationManager
return '';
}
$content = file_get_contents(DataConst::GetBackupArchivesList());
if ($content === '') {
return '';
}
$content = (string)file_get_contents(DataConst::GetBackupArchivesList());
$lastBackupLines = explode("\n", $content);
$lastBackupLine = "";
@@ -108,10 +105,7 @@ class ConfigurationManager
return [];
}
$content = file_get_contents(DataConst::GetBackupArchivesList());
if ($content === '') {
return [];
}
$content = (string)file_get_contents(DataConst::GetBackupArchivesList());
$backupLines = explode("\n", $content);
$backupTimes = [];
@@ -170,10 +164,10 @@ class ConfigurationManager
public function isWhiteboardEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isWhiteboardEnabled']) && $config['isWhiteboardEnabled'] === 0) {
return false;
} else {
if (isset($config['isWhiteboardEnabled']) && $config['isWhiteboardEnabled'] === 1) {
return true;
} else {
return false;
}
}
@@ -286,11 +280,6 @@ class ConfigurationManager
$value = 0;
}
// Currently only works on x64. See https://github.com/nextcloud/nextcloud-talk-recording/issues/17
if (!$this->isx64Platform()) {
$value = 0;
}
$config = $this->GetConfig();
$config['isTalkRecordingEnabled'] = $value;
$this->WriteConfig($config);
@@ -299,7 +288,7 @@ class ConfigurationManager
/**
* @throws InvalidSettingConfigurationException
*/
public function SetDomain(string $domain) : void {
public function SetDomain(string $domain, bool $skipDomainValidation) : void {
// Validate that at least one dot is contained
if (!str_contains($domain, '.')) {
throw new InvalidSettingConfigurationException("Domain must contain at least one dot!");
@@ -326,8 +315,9 @@ class ConfigurationManager
}
// Skip domain validation if opted in to do so
if (!$this->shouldDomainValidationBeSkipped()) {
if ($this->shouldDomainValidationBeSkipped($skipDomainValidation)) {
error_log('Skipping domain validation');
} else {
$dnsRecordIP = gethostbyname($domain);
if ($dnsRecordIP === $domain) {
$dnsRecordIP = '';
@@ -580,6 +570,15 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetTurnDomain() : string {
$config = $this->GetConfig();
if(!isset($config['turn_domain'])) {
$config['turn_domain'] = '';
}
return $config['turn_domain'];
}
/**
* @throws InvalidSettingConfigurationException
*/
@@ -641,7 +640,7 @@ class ConfigurationManager
return "";
}
return trim(file_get_contents(DataConst::GetBackupPublicKey()));
return trim((string)file_get_contents(DataConst::GetBackupPublicKey()));
}
public function GetBorgRestorePassword() : string {
@@ -800,7 +799,7 @@ class ConfigurationManager
if (!file_exists(DataConst::GetDailyBackupTimeFile())) {
return '';
}
$dailyBackupFile = file_get_contents(DataConst::GetDailyBackupTimeFile());
$dailyBackupFile = (string)file_get_contents(DataConst::GetDailyBackupTimeFile());
$dailyBackupFileArray = explode("\n", $dailyBackupFile);
return $dailyBackupFileArray[0];
}
@@ -809,7 +808,7 @@ class ConfigurationManager
if (!file_exists(DataConst::GetDailyBackupTimeFile())) {
return false;
}
$dailyBackupFile = file_get_contents(DataConst::GetDailyBackupTimeFile());
$dailyBackupFile = (string)file_get_contents(DataConst::GetDailyBackupTimeFile());
$dailyBackupFileArray = explode("\n", $dailyBackupFile);
if (isset($dailyBackupFileArray[1]) && $dailyBackupFileArray[1] === 'automaticUpdatesAreNotEnabled') {
return false;
@@ -860,8 +859,7 @@ class ConfigurationManager
if (!file_exists(DataConst::GetAdditionalBackupDirectoriesFile())) {
return '';
}
$additionalBackupDirectories = file_get_contents(DataConst::GetAdditionalBackupDirectoriesFile());
return $additionalBackupDirectories;
return (string)file_get_contents(DataConst::GetAdditionalBackupDirectoriesFile());
}
public function GetAdditionalBackupDirectoriesArray() : array {
@@ -910,8 +908,8 @@ class ConfigurationManager
$this->WriteConfig($config);
}
public function shouldDomainValidationBeSkipped() : bool {
if (getenv('SKIP_DOMAIN_VALIDATION') === 'true') {
public function shouldDomainValidationBeSkipped(bool $skipDomainValidation) : bool {
if ($skipDomainValidation || getenv('SKIP_DOMAIN_VALIDATION') === 'true') {
return true;
}
return false;
@@ -983,6 +981,13 @@ class ConfigurationManager
return $config['collabora_additional_options'];
}
public function isCollaboraSubscriptionEnabled() : bool {
if (str_contains($this->GetAdditionalCollaboraOptions(), '--o:support_key=')) {
return true;
}
return false;
}
public function DeleteAdditionalCollaboraOptions() : void {
$config = $this->GetConfig();
$config['collabora_additional_options'] = '';
@@ -1045,7 +1050,7 @@ class ConfigurationManager
apcu_add($filePath, $fileContents);
}
}
$json = is_string($fileContents) ? json_decode($fileContents, true) : false;
$json = is_string($fileContents) ? json_decode($fileContents, true, 512, JSON_THROW_ON_ERROR) : false;
if(is_array($json) && is_array($json['aio_services_v1'])) {
foreach ($json['aio_services_v1'] as $service) {
$documentation = is_string($service['documentation']) ? $service['documentation'] : '';

View File

@@ -8,7 +8,7 @@ class DataConst {
return '/mnt/docker-aio-config/data/';
}
return realpath(__DIR__ . '/../../data/');
return (string)realpath(__DIR__ . '/../../data/');
}
public static function GetSessionDirectory() : string {
@@ -16,7 +16,7 @@ class DataConst {
return '/mnt/docker-aio-config/session/';
}
return realpath(__DIR__ . '/../../session/');
return (string)realpath(__DIR__ . '/../../session/');
}
public static function GetConfigFile() : string {
@@ -56,6 +56,14 @@ class DataConst {
}
public static function GetCommunityContainersDirectory() : string {
return realpath(__DIR__ . '/../../../community-containers/');
return (string)realpath(__DIR__ . '/../../../community-containers/');
}
public static function GetCollaboraSeccompProfilePath() : string {
return (string)realpath(__DIR__ . '/../../cool-seccomp-profile.json');
}
public static function GetContainersDefinitionPath() : string {
return (string)realpath(__DIR__ . '/../../containers.json');
}
}

View File

@@ -7,12 +7,13 @@ use AIO\Container\ContainerState;
use AIO\Container\VersionState;
use AIO\ContainerDefinitionFetcher;
use AIO\Data\ConfigurationManager;
use AIO\Data\DataConst;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use http\Env\Response;
readonly class DockerActionManager {
private const string API_VERSION = 'v1.41';
private const string API_VERSION = 'v1.44';
private Client $guzzleClient;
public function __construct(
@@ -47,7 +48,7 @@ readonly class DockerActionManager {
throw $e;
}
$responseBody = json_decode((string)$response->getBody(), true);
$responseBody = json_decode((string)$response->getBody(), true, 512, JSON_THROW_ON_ERROR);
if ($responseBody['State']['Running'] === true) {
return ContainerState::Running;
@@ -67,7 +68,7 @@ readonly class DockerActionManager {
throw $e;
}
$responseBody = json_decode((string)$response->getBody(), true);
$responseBody = json_decode((string)$response->getBody(), true, 512, JSON_THROW_ON_ERROR);
if ($responseBody['State']['Restarting'] === true) {
return ContainerState::Restarting;
@@ -282,6 +283,10 @@ readonly class DockerActionManager {
}
} else if ($port === '%TALK_PORT%') {
$port = $this->configurationManager->GetTalkPort();
// Skip publishing talk port if it is set to the same value like the apache port
if ($port === $this->configurationManager->GetApachePort()) {
continue;
}
}
$ipBinding = $value->ipBinding;
if ($ipBinding === '%APACHE_IP_BINDING%') {
@@ -383,9 +388,10 @@ readonly class DockerActionManager {
}
}
}
// Special things for the talk container which should not be exposed in the containers.json
// Special things for the talk container which should not be exposed in the containers.json
} elseif ($container->GetIdentifier() === 'nextcloud-aio-talk') {
// This is needed due to a bug in libwebsockets which cannot handle unlimited ulimits
// This is needed due to a bug in libwebsockets used in Janus which cannot handle unlimited ulimits
$requestBody['HostConfig']['Ulimits'] = [["Name" => "nofile", "Hard" => 200000, "Soft" => 200000]];
// // Special things for the nextcloud container which should not be exposed in the containers.json
// } elseif ($container->GetIdentifier() === 'nextcloud-aio-nextcloud') {
@@ -395,11 +401,18 @@ readonly class DockerActionManager {
// }
// $mounts[] = ["Type" => "bind", "Source" => $volume->name, "Target" => $volume->mountPoint, "ReadOnly" => !$volume->isWritable, "BindOptions" => [ "Propagation" => "rshared"]];
// }
// Special things for the caddy community container
// Special things for the caddy community container
} elseif ($container->GetIdentifier() === 'nextcloud-aio-caddy') {
$requestBody['HostConfig']['ExtraHosts'] = ['host.docker.internal:host-gateway'];
// Special things for the collabora container which should not be exposed in the containers.json
// Special things for the collabora container which should not be exposed in the containers.json
} elseif ($container->GetIdentifier() === 'nextcloud-aio-collabora') {
// Load reference seccomp profile for collabora
$seccompProfile = (string)file_get_contents(DataConst::GetCollaboraSeccompProfilePath());
$requestBody['HostConfig']['SecurityOpt'] = ["label:disable", "seccomp=$seccompProfile"];
// Additional Collabora options
if ($this->configurationManager->GetAdditionalCollaboraOptions() !== '') {
$requestBody['Cmd'] = [$this->configurationManager->GetAdditionalCollaboraOptions()];
}
@@ -529,6 +542,7 @@ readonly class DockerActionManager {
'RESTORE_EXCLUDE_PREVIEWS' => $this->configurationManager->GetRestoreExcludePreviews(),
'APACHE_PORT' => $this->configurationManager->GetApachePort(),
'TALK_PORT' => $this->configurationManager->GetTalkPort(),
'TURN_DOMAIN' => $this->configurationManager->GetTurnDomain(),
'NEXTCLOUD_MOUNT' => $this->configurationManager->GetNextcloudMount(),
'BACKUP_RESTORE_PASSWORD' => $this->configurationManager->GetBorgRestorePassword(),
'CLAMAV_ENABLED' => $this->configurationManager->isClamavEnabled() ? 'yes' : '',
@@ -633,11 +647,11 @@ readonly class DockerActionManager {
private function GetRepoDigestsOfContainer(string $containerName): ?array {
try {
$containerUrl = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));
$containerOutput = json_decode($this->guzzleClient->get($containerUrl)->getBody()->getContents(), true);
$containerOutput = json_decode($this->guzzleClient->get($containerUrl)->getBody()->getContents(), true, 512, JSON_THROW_ON_ERROR);
$imageName = $containerOutput['Image'];
$imageUrl = $this->BuildApiUrl(sprintf('images/%s/json', $imageName));
$imageOutput = json_decode($this->guzzleClient->get($imageUrl)->getBody()->getContents(), true);
$imageOutput = json_decode($this->guzzleClient->get($imageUrl)->getBody()->getContents(), true, 512, JSON_THROW_ON_ERROR);
if (!isset($imageOutput['RepoDigests'])) {
error_log('RepoDigests is not set of container ' . $containerName);
@@ -681,7 +695,7 @@ readonly class DockerActionManager {
$containerName = 'nextcloud-aio-mastercontainer';
$url = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));
try {
$output = json_decode($this->guzzleClient->get($url)->getBody()->getContents(), true);
$output = json_decode($this->guzzleClient->get($url)->getBody()->getContents(), true, 512, JSON_THROW_ON_ERROR);
$imageNameArray = explode(':', $output['Config']['Image']);
if (count($imageNameArray) === 2) {
$imageName = $imageNameArray[0];
@@ -708,7 +722,7 @@ readonly class DockerActionManager {
$containerName = 'nextcloud-aio-mastercontainer';
$url = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));
try {
$output = json_decode($this->guzzleClient->get($url)->getBody()->getContents(), true);
$output = json_decode($this->guzzleClient->get($url)->getBody()->getContents(), true, 512, JSON_THROW_ON_ERROR);
$tagArray = explode(':', $output['Config']['Image']);
if (count($tagArray) === 2) {
$tag = $tagArray[1];
@@ -772,7 +786,9 @@ readonly class DockerActionManager {
],
]
)->getBody()->getContents(),
true
true,
512,
JSON_THROW_ON_ERROR,
);
$id = $response['Id'];
@@ -826,7 +842,6 @@ readonly class DockerActionManager {
[
'json' => [
'Name' => $network,
'CheckDuplicate' => true,
'Driver' => 'bridge',
'Internal' => false,
]
@@ -914,7 +929,7 @@ readonly class DockerActionManager {
throw $e;
}
$responseBody = json_decode((string)$response->getBody(), true);
$responseBody = json_decode((string)$response->getBody(), true, 512, JSON_THROW_ON_ERROR);
$exitCode = $responseBody['State']['ExitCode'];
if (is_int($exitCode)) {
@@ -936,7 +951,7 @@ readonly class DockerActionManager {
throw $e;
}
$responseBody = json_decode((string)$response->getBody(), true);
$responseBody = json_decode((string)$response->getBody(), true, 512, JSON_THROW_ON_ERROR);
$exitCode = $responseBody['State']['ExitCode'];
if (is_int($exitCode)) {
@@ -968,7 +983,7 @@ readonly class DockerActionManager {
$imageName = $imageName . ':' . $this->GetCurrentChannel();
try {
$imageUrl = $this->BuildApiUrl(sprintf('images/%s/json', $imageName));
$imageOutput = json_decode($this->guzzleClient->get($imageUrl)->getBody()->getContents(), true);
$imageOutput = json_decode($this->guzzleClient->get($imageUrl)->getBody()->getContents(), true, 512, JSON_THROW_ON_ERROR);
if (!isset($imageOutput['Created'])) {
error_log('Created is not set of image ' . $imageName);

View File

@@ -30,7 +30,7 @@ readonly class DockerHubManager {
'https://auth.docker.io/token?service=registry.docker.io&scope=repository:' . $name . ':pull'
);
$body = $authTokenRequest->getBody()->getContents();
$decodedBody = json_decode($body, true);
$decodedBody = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
if(isset($decodedBody['token'])) {
$authToken = $decodedBody['token'];
$manifestRequest = $this->guzzleClient->request(

View File

@@ -31,7 +31,7 @@ readonly class GitHubContainerRegistryManager
'https://ghcr.io/token?scope=repository:' . $name . ':pull'
);
$body = $authTokenRequest->getBody()->getContents();
$decodedBody = json_decode($body, true);
$decodedBody = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
if (isset($decodedBody['token'])) {
$authToken = $decodedBody['token'];
$manifestRequest = $this->guzzleClient->request(

View File

@@ -27,7 +27,24 @@ readonly class AuthMiddleware {
if(!in_array($request->getUri()->getPath(), $publicRoutes)) {
if(!$this->authManager->IsAuthenticated()) {
$status = 302;
$headers = ['Location' => '/'];
// Check the url of the request: split the string by '/' and count the number of elements
// Note that the path that gets to this middleware is not aware of any base path managed by a reverse proxy, so if the url is 'https://example.com/AIO/somepage', the path will be 'https://mastercontainer/somepage'
if (count(explode('/', $request->getUri()->getPath())) < 2) {
// If there are less than 2 elements it means we are somewhere in the root folder (no '/', so no subfolder), so we redirect to the same folder level to offload the redirection to the appropriate page to 'index.php' (specifically, once in the root level the login page will be loaded since we are not authenticated)
$location = '.';
} else {
// If there are 2 or more elements it means we are in a subfolder, so we need to go back to the root folder
// In the best case we need to go back by 1 level only
$location = '..';
// In the worst case we need to go back by n levels, where n is the number of elements - 2 (the first element is not a folder, the second element is already accounted for by the initial '..')
for ($i = 1; $i < count(explode('/', $request->getUri()->getPath())) - 2; $i++) {
// For each extra level we need to go back by another level
$location = $location . '/..';
}
}
$headers = ['Location' => $location];
$response = new Response($status, $headers);
return $response;
}

View File

@@ -3,11 +3,11 @@
{% block body %}
<div class="login">
<svg class="nextcloud-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 100" width="142" height="100">
<use href="/img/nextcloud-logo.svg#logo"></use>
<use href="/img/nextcloud-logo.svg#Nextcloud"></use>
<use href="img/nextcloud-logo.svg#logo"></use>
<use href="img/nextcloud-logo.svg#Nextcloud"></use>
<text x="10" y="50" fill="var(--color-nextcloud-logo)" class="fallback-text">Nextcloud Logo</text>
</svg>
<h2>Nextcloud All-In-One is already installed</h2>
<a href="/" class="button">Open Nextcloud AIO</a>
<a href="." class="button">Open Nextcloud AIO</a>
</div>
{% endblock %}

View File

@@ -4,15 +4,15 @@
{% if c.GetStartingState().value == 'starting' %}
<span class="status running"></span>
{{ c.GetDisplayName() }}
(<a href="/api/docker/logs?id={{ c.GetIdentifier() }}" target="_blank">Starting</a>)
(<a href="api/docker/logs?id={{ c.GetIdentifier() }}" target="_blank">Starting</a>)
{% elseif c.GetRunningState().value == 'running' %}
<span class="status success"></span>
{{ c.GetDisplayName() }}
(<a href="/api/docker/logs?id={{ c.GetIdentifier() }}" target="_blank">Running</a>)
(<a href="api/docker/logs?id={{ c.GetIdentifier() }}" target="_blank">Running</a>)
{% else %}
<span class="status error"></span>
{{ c.GetDisplayName() }}
(<a href="/api/docker/logs?id={{ c.GetIdentifier() }}" target="_blank">Stopped</a>)
(<a href="api/docker/logs?id={{ c.GetIdentifier() }}" target="_blank">Stopped</a>)
{% endif %}
{% if c.GetDocumentation() != '' %}
(<a target="_blank" href="{{ c.GetDocumentation() }}">docs</a>)

Some files were not shown because too many files have changed in this diff Show More