Compare commits

..

227 Commits

Author SHA1 Message Date
Simon L.
9f5710917d restore-instance test: try to fix timeout problem
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-11 12:50:07 +02:00
Simon L.
cc0ff39357 increase to 10.12.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-11 11:14:10 +02:00
Simon L.
d01af0a5fb Merge pull request #6282 from nextcloud/enh/noid/update-30.0.9
nextcloud: update to 30.0.9
2025-04-11 11:08:26 +02:00
Simon L.
9550135e3a nextcloud: update to 30.0.9
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-11 11:07:20 +02:00
Simon L.
f49de27ca3 Merge pull request #6280 from nextcloud/enh/noid/improve-button-description
aio-interface: improve description of daily-backup buttons
2025-04-10 13:45:49 +02:00
Simon L.
ae00778180 aio-interface: improve description of daily-backup buttons
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-10 13:44:20 +02:00
Simon L.
fd033ff328 Merge pull request #6279 from nextcloud/enh/noid/press-submit-button
aio-interface: describe that the submit button needs to be pressed in a few places
2025-04-10 13:31:51 +02:00
Simon L.
417af36b5f aio-interface: describe that the submit button needs to be pressed in a few places
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-10 13:29:25 +02:00
Simon L.
9255ff4387 Merge pull request #6278 from nextcloud/enh/noid/remove-prefilled-daily-backup-value
aio-interface: daily-backup: remove the pre-filled value
2025-04-10 12:49:21 +02:00
Simon L.
71b932e910 aio-interface: daily-backup: remove the pre-filled value
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-10 12:48:15 +02:00
Simon L.
d495c1910e Merge pull request #6277 from nextcloud/dependabot/docker/Containers/talk-recording/python-3.13.3-alpine3.21
build(deps): bump python from 3.13.2-alpine3.21 to 3.13.3-alpine3.21 in /Containers/talk-recording
2025-04-10 08:33:38 +02:00
dependabot[bot]
b05d22aa81 build(deps): bump python in /Containers/talk-recording
Bumps python from 3.13.2-alpine3.21 to 3.13.3-alpine3.21.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.3-alpine3.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-10 05:08:57 +00:00
Simon L.
5564f8be5f Merge pull request #6275 from nextcloud/enh/noid/connect-mastercontainer-to-network
daily-backup.sh: connect mastercontainer to nextcloud-aio network
2025-04-09 16:34:05 +02:00
Simon L.
b82943046d daily-backup.sh: connect mastercontainer to nextcloud-aio network
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-09 16:32:15 +02:00
Simon L.
ca0af37eaa Merge pull request #6274 from nextcloud/dependabot/github_actions/dot-github/workflows/softprops/turnstyle-2.3.2
build(deps): bump softprops/turnstyle from 2.3.1 to 2.3.2 in /.github/workflows
2025-04-09 15:14:29 +02:00
dependabot[bot]
72fe74da71 build(deps): bump softprops/turnstyle in /.github/workflows
Bumps [softprops/turnstyle](https://github.com/softprops/turnstyle) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/softprops/turnstyle/releases)
- [Changelog](https://github.com/softprops/turnstyle/blob/master/CHANGELOG.md)
- [Commits](25dcee5c3f...f9f8ef3f63)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-09 12:57:07 +00:00
Simon L.
45a3f6ad36 Merge pull request #6271 from nextcloud/dependabot/docker/Containers/talk/nats-2.11.1-scratch
build(deps): bump nats from 2.11.0-scratch to 2.11.1-scratch in /Containers/talk
2025-04-09 08:48:30 +02:00
dependabot[bot]
9d9ef6e4b8 build(deps): bump nats in /Containers/talk
Bumps nats from 2.11.0-scratch to 2.11.1-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-09 05:00:12 +00:00
Simon L.
23f7b405ce Merge pull request #6266 from nextcloud/aio-dependency-update
PHP dependency updates
2025-04-08 14:23:02 +02:00
szaimen
25c31323c6 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-08 12:03:09 +00:00
Simon L.
7ce74e36e6 fix detail with new aio-alpine syntax
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-08 10:30:33 +02:00
Simon L.
ec20ff8318 Merge pull request #6265 from nextcloud/aio-helm-update
Helm Chart updates
2025-04-08 10:22:05 +02:00
szaimen
4eed6b6f38 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-08 08:20:51 +00:00
Simon L.
b6b5d59228 Merge pull request #6255 from nextcloud/enh/noid/improve-ghcr.io-check
mastercontainer: improve check for ghcr.io
2025-04-08 10:19:09 +02:00
Simon L.
30cdddebb8 Merge pull request #6256 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.24.2-alpine3.21
build(deps): bump golang from 1.24.1-alpine3.21 to 1.24.2-alpine3.21 in /Containers/imaginary
2025-04-08 10:18:51 +02:00
Simon L.
2a2df5b12b Merge pull request #6257 from nextcloud/dependabot/docker/Containers/watchtower/golang-1.24.2-alpine3.21
build(deps): bump golang from 1.24.1-alpine3.21 to 1.24.2-alpine3.21 in /Containers/watchtower
2025-04-08 10:18:41 +02:00
Simon L.
3345e9a357 rp-docs-apache: adjust comment
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-07 19:24:06 +02:00
Simon L.
4f25a8ff10 Merge pull request #6264 from nextcloud/enh/noid/fix-apache-config
rp-docs: fix apache config
2025-04-07 19:09:14 +02:00
Simon L.
a5c44aae9a rp-docs: fix apache config
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-07 19:07:34 +02:00
Simon L.
1b8d80b204 Merge pull request #6259 from nextcloud/enh/noid/add-libretranslate-warning
libretranslate-cc: add warning that it is deprecated
2025-04-04 12:48:06 +02:00
Simon L.
6dac917936 libretranslate-cc: add warning that it is deprecated
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-03 11:09:06 +02:00
dependabot[bot]
df40236217 build(deps): bump golang in /Containers/watchtower
Bumps golang from 1.24.1-alpine3.21 to 1.24.2-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 04:39:41 +00:00
dependabot[bot]
855a1d00dc build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.24.1-alpine3.21 to 1.24.2-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 04:38:53 +00:00
Simon L.
3dd5407301 mastercontainer: improve check for ghcr.io
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-01 23:49:55 +02:00
Simon L.
6ebc5de9b4 Merge pull request #6252 from nextcloud/enh/noid/remove-check-for-nextcloud.com
mastercontainer: remove check for nextcloud.com as we check for ghcr.io instead
2025-04-01 14:35:17 +02:00
Simon L.
c011488111 mastercontainer: remove check for nextcloud.com as we check for ghcr.io instead
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 16:02:30 +02:00
Simon L.
74c498238d Merge pull request #6248 from nextcloud/imaginary-container-update
Imaginary update
2025-03-31 15:29:31 +02:00
Simon L.
c8bb751847 Merge pull request #6251 from nextcloud/enh/noid/fix-collabora-user
collabora: fix permissions correctly
2025-03-31 15:14:31 +02:00
Simon L.
f0fd6bb445 collabora: fix permissions correctly
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 15:11:03 +02:00
Simon L.
d501b7cfcb fix detail in update helm script
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 14:42:41 +02:00
Simon L.
10e9cae12d Merge pull request #6250 from nextcloud/enh/noid/fix-collabora-permissions
collabora: fix permissions for /etc/coolwsd/coolwsd.xml file
2025-03-31 14:39:01 +02:00
Simon L.
ae5f4b7999 collabora: fix permissions for /etc/coolwsd/coolwsd.xml file
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 14:37:14 +02:00
szaimen
d04d7c9fab imaginary-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-31 12:03:03 +00:00
Simon L.
c0835f49a9 increase to 10.11.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 11:47:04 +02:00
Simon L.
32ed64bc4a Merge pull request #6246 from nextcloud/dependabot/docker/Containers/alpine/alpine-3.21.3
build(deps): bump alpine from 3.21.2 to 3.21.3 in /Containers/alpine
2025-03-31 11:08:33 +02:00
Simon L.
2516938702 Merge pull request #6232 from nextcloud/enh/noid/install-watchtower-from-github
watchtower: install from github repo to fix some security issues
2025-03-31 11:04:18 +02:00
Simon L.
631253ef71 fix detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 11:03:43 +02:00
Simon L.
203d196e9e Merge pull request #6223 from nextcloud/enh/noid/move-szaimen-cc
move szaimens community containers to ghcr.io
2025-03-31 11:02:08 +02:00
Simon L.
496365e107 also use ghcr image for vaultwarden
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 11:01:20 +02:00
dependabot[bot]
95491af7bd build(deps): bump alpine from 3.21.2 to 3.21.3 in /Containers/alpine
Bumps alpine from 3.21.2 to 3.21.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 09:00:37 +00:00
Simon L.
242179f079 alpine dockerfile: change tag to 3.21.2 and add dependabot
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 10:58:22 +02:00
Simon L.
faef75dafd Merge pull request #6236 from nextcloud/enh/noid/create-alpine-image
helm-chart: move alpine init-container image to containers folder
2025-03-31 10:55:43 +02:00
Simon L.
2e2a7dd302 Merge pull request #6243 from nextcloud/enh/noid/exclude-lost+found-dir
borg: exclude lost+found directory from backup
2025-03-31 10:53:26 +02:00
Simon L.
847f0c28cb Merge pull request #6231 from nextcloud/close-6230-freshclam-conf
clamav: use correct clamd.conf in freshclam
2025-03-31 10:52:36 +02:00
Simon L.
1175cf8f58 Merge pull request #6235 from nextcloud/borg-logs-while-backup-running
link to borg logs while borg is running
2025-03-31 10:51:56 +02:00
Simon L.
266254a226 Merge pull request #6222 from nextcloud/enh/noid/rename-function
aio-interface: rename `isDockerHubReachable` to `isRegistryReachable`
2025-03-31 10:51:11 +02:00
Simon L.
b163229723 Merge pull request #6170 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-24.04.13.2.1
build(deps): bump collabora/code from 24.04.12.4.1 to 24.04.13.2.1 in /Containers/collabora
2025-03-31 10:50:14 +02:00
Simon L.
41ec77438a Merge pull request #6174 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2025-03-31 10:49:59 +02:00
Simon L.
1a5efefd62 revert imagick commit hash
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 10:49:29 +02:00
Simon L.
72e0150897 Merge pull request #6228 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.0.4-cli
build(deps): bump docker from 28.0.2-cli to 28.0.4-cli in /Containers/mastercontainer
2025-03-31 10:48:37 +02:00
Simon L.
8754533fd6 Merge pull request #6227 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.17.4
build(deps): bump elasticsearch from 8.17.3 to 8.17.4 in /Containers/fulltextsearch
2025-03-31 10:48:23 +02:00
Simon L.
65f721601d Merge pull request #6240 from nextcloud/aio-dependency-update
PHP dependency updates
2025-03-31 10:46:59 +02:00
Simon L.
9245aa1dd5 Merge pull request #6245 from nextcloud/aio-helm-update
Helm Chart updates
2025-03-31 10:46:44 +02:00
szaimen
f88b123cc3 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-31 08:46:12 +00:00
Simon L.
33fac7d67a fix update-helm workflow
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-31 10:45:29 +02:00
Simon L.
e04696c97c Merge pull request #6221 from nextcloud/aio-yaml-update
Yaml updates
2025-03-31 10:29:58 +02:00
Simon L.
c24cebba12 Merge pull request #6218 from nextcloud/enh/6123/move-to-ghcr.io
docs: nextcloud/all-in-one moved to ghcr.io
2025-03-31 10:29:27 +02:00
Simon L.
0852b00cc8 borg: exclude lost+found directory from backup
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-30 17:53:42 +02:00
szaimen
19ab4ae308 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-29 12:02:52 +00:00
dependabot[bot]
dbe73ab0db build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.0.2-cli to 28.0.4-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-28 04:19:42 +00:00
szaimen
55f77ade81 nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-27 12:12:18 +00:00
szaimen
0f92f8e40c Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-27 12:03:21 +00:00
Zoey
62b03a1de2 Apply suggestion
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2025-03-27 06:29:03 +01:00
Simon L.
9a9ea694b2 helm-chart: move alpine init-container image to containers folder
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-26 23:42:51 +01:00
Zoey
f415bba72b link to borg logs while borg is running
Not sure if mastercontainer is wanted, but I think it should link to borgs logs

Signed-off-by: Zoey <zoey@z0ey.de>
2025-03-26 21:28:05 +01:00
Simon L.
25c580bca3 fix update-helm by removing spaces
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-26 19:00:31 +01:00
Simon L.
80920778fb update update-helm with correct syntax
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-26 18:55:50 +01:00
Simon L.
c5a9da8bb3 run apk upgrade everywhere
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-26 18:39:32 +01:00
Simon L.
ca151e86ac watchtower: install from github repo to fix some security issues
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-26 18:27:44 +01:00
Zoey
9e0f5b31d2 fix #6230
Signed-off-by: Zoey <zoey@z0ey.de>
2025-03-26 12:21:45 +01:00
Simon L.
d3ac48f352 add a note to NEXTCLOUD_TRUSTED_CACERTS_DIR
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-26 10:45:15 +01:00
dependabot[bot]
627c2d3192 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.17.3 to 8.17.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-26 04:38:04 +00:00
Simon L.
23d0fd0cef move szaimens community containers to ghcr.io
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-25 15:15:21 +01:00
Simon L.
328a85511f docs: nextcloud/all-in-one moved to ghcr.io
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-25 12:17:07 +01:00
Simon L.
f7183b8d32 aio-interface: rename isDockerHubReachable to isRegistryReachable
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-25 12:13:31 +01:00
Simon L.
13e9829a85 fix detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-25 11:01:42 +01:00
Simon L.
7cb96aed74 Merge pull request #6203 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.0.2-cli
build(deps): bump docker from 28.0.1-cli to 28.0.2-cli in /Containers/mastercontainer
2025-03-25 10:50:44 +01:00
Simon L.
ecb2e1ad87 Merge pull request #6202 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.1.6-alpine
build(deps): bump haproxy from 3.1.5-alpine to 3.1.6-alpine in /Containers/docker-socket-proxy
2025-03-25 10:50:31 +01:00
Simon L.
378346c9c1 Merge pull request #6204 from nextcloud/enh/noid/increase-default-socket-timeout
nextcloud: adjust `default_socket_timeout` to `${PHP_MAX_TIME}` in order to make it configurable
2025-03-25 10:50:03 +01:00
Simon L.
edbdac6af4 Merge pull request #6205 from nextcloud/dsp/more-struct-regexes
docker-socket-proxy: more strict rules for the container creation
2025-03-25 10:49:27 +01:00
Simon L.
a4fa22ec22 increase to 10.10.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-25 10:49:03 +01:00
Simon L.
fa87a5ca6a Merge pull request #6200 from nextcloud/enh/noid/allow-set-skeletondir
helm: allow to set the skeleton directory
2025-03-25 10:47:56 +01:00
Simon L.
c65eb16a15 Revert "Revert changes to helm-chart updates"
This reverts commit ac2c97a08e.
2025-03-25 10:47:12 +01:00
Simon L.
3dffd46e8b Merge pull request #6219 from nextcloud/aio-helm-update
Helm Chart updates
2025-03-25 10:46:54 +01:00
szaimen
7f76f622e1 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-25 09:46:29 +00:00
Simon L.
ac2c97a08e Revert changes to helm-chart updates
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-25 10:45:35 +01:00
Simon L.
d5c195aa0c Merge pull request #6217 from nextcloud/enh/6123/move-images-to-ghcr.io
move images to ghcr.io
2025-03-25 10:41:36 +01:00
Simon L.
5d090018f9 move images to ghcr.io
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-25 10:36:25 +01:00
Simon L.
b8d08fc77b Merge pull request #6139 from nextcloud/aio-yaml-update
Yaml updates
2025-03-25 09:48:17 +01:00
Simon L.
4669ad430c helm: allow to set the skeleton directory
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-24 18:31:03 +01:00
Oleksander Piskun
348a08a720 more strict rules for the container creation
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
2025-03-21 18:45:00 +02:00
szaimen
167c2dc389 Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-21 12:03:18 +00:00
Simon L.
4c14fa9b13 nextcloud: adjust default_socket_timeout to ${PHP_MAX_TIME} in order to make it configurable
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-21 10:06:41 +01:00
dependabot[bot]
9b8a9de565 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.0.1-cli to 28.0.2-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 04:26:03 +00:00
dependabot[bot]
b9a04858ca build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.1.5-alpine to 3.1.6-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 04:25:41 +00:00
Simon L.
91e99dcba9 Update develop.md
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 17:30:49 +01:00
Simon L.
6b9e68d55f fix typo
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 13:19:49 +01:00
Simon L.
0ed524baba modify two details in initial-setup test
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 13:13:09 +01:00
Simon L.
7eabc59328 adjust some details to actually do what the test is intended to do
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 13:08:54 +01:00
Simon L.
8ddd123568 fix removing tests from aio-interface
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 12:45:05 +01:00
Simon L.
b1f2d6f691 increase to 10.9.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 12:42:03 +01:00
Simon L.
2cc4c6813f Merge pull request #6178 from nextcloud/enh/noid/test-file
nextcloud-entrypoint: output error message if touch failed
2025-03-20 12:41:04 +01:00
Simon L.
91ca184262 Merge pull request #6196 from nextcloud/enh/noid/update-nc-30.0.8
nextcloud: update to 30.0.8
2025-03-20 12:37:37 +01:00
Simon L.
6d1f1c1aeb nextcloud: update to 30.0.8
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 12:36:57 +01:00
Simon L.
f876b23c0b develop.md: add note how to run E2EE tests
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 12:23:33 +01:00
Simon L.
d6446d5f03 Merge pull request #6189 from nextcloud/test/e2e-tests
aio-interface: add e2e tests via playwright
2025-03-20 12:14:24 +01:00
Simon L.
c1b60f9a51 Dockerfile: remove tests subfolder
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 12:12:57 +01:00
Richard Steinmetz
e37611a759 test: add e2e tests via playwright
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-03-20 12:08:32 +01:00
Simon L.
4f68d3ed1c Merge pull request #6195 from nextcloud/test/more-ids
test: add more ids for e2e tests
2025-03-20 10:56:11 +01:00
Simon L.
43f73ccbfe Merge pull request #6194 from nextcloud/dependabot/docker/Containers/talk/nats-2.11.0-scratch
build(deps): bump nats from 2.10.26-scratch to 2.11.0-scratch in /Containers/talk
2025-03-20 10:55:03 +01:00
Simon L.
a4aa1baf54 update OO
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-20 10:54:34 +01:00
Richard Steinmetz
38254f76ab test: add more ids for e2e tests
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-03-20 10:52:38 +01:00
dependabot[bot]
80ae736633 build(deps): bump nats in /Containers/talk
Bumps nats from 2.10.26-scratch to 2.11.0-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-20 04:31:25 +00:00
Simon L.
0e0dc0da6f Merge pull request #6172 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.3.19-fpm-alpine3.21
build(deps): bump php from 8.3.17-fpm-alpine3.21 to 8.3.19-fpm-alpine3.21 in /Containers/nextcloud
2025-03-19 15:31:52 +01:00
Simon L.
4e922c0943 Merge pull request #6171 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.3.19-fpm-alpine3.21
build(deps): bump php from 8.3.17-fpm-alpine3.21 to 8.3.19-fpm-alpine3.21 in /Containers/mastercontainer
2025-03-19 15:31:43 +01:00
Simon L.
1fbc3074dd Merge pull request #6167 from nextcloud/enh/noid/stalwart
Change stalwart tag
2025-03-19 15:31:33 +01:00
Simon L.
4cb258e7d2 Merge pull request #6190 from nextcloud/test/e2e-prep
test: prepare for e2e tests
2025-03-19 14:48:08 +01:00
Richard Steinmetz
f90631125e test: prepare for e2e tests
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-03-19 14:46:41 +01:00
Simon L.
7062b6aa90 add about info to documentation about aio section
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-18 23:44:03 +01:00
Simon L.
38a11c4624 Update config.yml
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-18 22:39:17 +01:00
Simon L.
c525f802d5 Update Bug_report.md
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-18 22:34:50 +01:00
Simon L.
c973834733 Merge pull request #6183 from nextcloud/dependabot/github_actions/dot-github/workflows/shivammathur/setup-php-2.32.0
build(deps): bump shivammathur/setup-php from 2.30.0 to 2.32.0 in /.github/workflows
2025-03-17 13:23:29 +01:00
dependabot[bot]
ccc6487877 build(deps): bump shivammathur/setup-php in /.github/workflows
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.30.0 to 2.32.0.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](a4e22b60bb...9e72090525)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 12:09:48 +00:00
Simon L.
1b6524b904 Update dependabot.yml
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-17 13:06:18 +01:00
Simon L.
47964fc16c Merge pull request #6181 from nextcloud/enh/noid/update-GA
update Github Actions to use commit hashes for 3rd party actions instead of version tags
2025-03-17 11:17:36 +01:00
Simon L.
63d9343972 update Github Actions to use commit hashes for 3rd party actions instead of version tags
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-17 11:15:23 +01:00
Simon L.
d164eea1ee nextcloud-entrypoint: output error message if touch failed
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-16 14:05:12 +01:00
dependabot[bot]
fbb71586e8 build(deps): bump php in /Containers/nextcloud
Bumps php from 8.3.17-fpm-alpine3.21 to 8.3.19-fpm-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 04:44:11 +00:00
dependabot[bot]
8fe6821038 build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.3.17-fpm-alpine3.21 to 8.3.19-fpm-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 04:43:55 +00:00
dependabot[bot]
5004a46e2a build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 24.04.12.4.1 to 24.04.13.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 04:43:29 +00:00
Jean-Yves
36dc60e9d2 Update stalwart.json
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2025-03-13 17:45:35 +01:00
Simon L.
77dd56bade Merge pull request #6165 from nextcloud/enh/noid/update-nc-30.0.7
update Nextcloud to 30.0.7
2025-03-13 17:03:00 +01:00
Simon L.
4b644d2fe7 update Nextcloud to 30.0.7
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-13 17:02:19 +01:00
Simon L.
b5132b14ff Merge pull request #6163 from nextcloud/npmplus-ghcr
pull npmplus from ghcr
2025-03-13 15:49:38 +01:00
Zoey
af4700d863 pull npmplus from ghcr
Signed-off-by: Zoey <zoey@z0ey.de>
2025-03-13 15:38:04 +01:00
Jean-Yves
016dde1e47 Update docjyJ's community container images (#6157)
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2025-03-13 13:02:19 +01:00
Jean-Yves
e97d4b0a3e Add support for ghcr.io (#6134)
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2025-03-13 12:55:18 +01:00
Simon L.
a6246f9544 Improve small detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-12 19:12:45 +01:00
Simon L.
04224e8745 Merge pull request #6162 from nextcloud/enh/noid/add-smb-server
community-containers: add smb-server
2025-03-12 18:44:47 +01:00
Simon L.
be0a738e8c community-containers: add smb-server
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-12 17:55:40 +01:00
Simon L.
a0c8724d98 Merge pull request #6141 from nextcloud/fix-collabora-npmplus-example
rp-docs: add workaround to NPMplus reverse proxy example
2025-03-10 10:18:02 +01:00
Zoey
47df5053c8 Update reverse-proxy.md
Signed-off-by: Zoey <zoey@z0ey.de>
2025-03-08 18:30:29 +01:00
Zoey
113cd76c6a add workarround to NPMplus reverse proxy example to fix collabora #6104
Signed-off-by: Zoey <zoey@z0ey.de>
2025-03-08 18:28:07 +01:00
Simon L.
8d1a4653a0 container-state-template: change order to old logic as it is not interchangabel
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-06 17:35:44 +01:00
Simon L.
a661b488c3 clamav: adjust a few more things
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-06 16:58:25 +01:00
Simon L.
aa452b4613 Merge pull request #6135 from nextcloud/revert-6124-dependabot/docker/Containers/collabora/collabora/code-24.04.13.1.1
Revert "build(deps): bump collabora/code from 24.04.12.4.1 to 24.04.13.1.1 in /Containers/collabora"
2025-03-06 16:51:12 +01:00
Simon L.
fe310624ed Revert "build(deps): bump collabora/code from 24.04.12.4.1 to 24.04.13.1.1 in /Containers/collabora" 2025-03-06 16:50:57 +01:00
Simon L.
405fc57bf4 fix another detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-06 16:20:11 +01:00
Simon L.
0b02764897 fix supervisor package name
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-06 16:17:56 +01:00
Simon L.
945f1341fd increase to 10.8.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-06 16:14:46 +01:00
Simon L.
5b6990dfbc Merge pull request #6108 from nextcloud/enh/noid/password-ui
Hide password by default
2025-03-06 16:12:00 +01:00
Zoey
9e95d96656 Merge pull request #6094 from nextcloud/clamav-alpine-aarch64
clamav: build the container also for aarch64/arm64 by using the alpine package
2025-03-06 16:00:53 +01:00
Jean-Yves
e6bf224a9a Fix request
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2025-03-06 16:00:39 +01:00
Jean-Yves
06b31c5680 Update php/templates/components/container-state.twig
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2025-03-06 15:54:53 +01:00
Simon L.
53abc41cde Merge pull request #6133 from nextcloud/fix/notify-push-db-user
notify-push: handle custom database users in the notify_push container
2025-03-06 14:02:15 +01:00
Simon L.
30b9a05263 adjust detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-06 14:00:17 +01:00
Richard Steinmetz
0615fe2250 fix: handle custom database users in the notify_push container
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-03-06 12:40:10 +01:00
Simon L.
37d6241550 Merge pull request #6130 from nextcloud/talk-container-update
talk container update
2025-03-06 11:02:20 +01:00
Simon L.
5ab4a4da4e Merge pull request #6128 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.24.1-alpine3.21
build(deps): bump golang from 1.24.0-alpine3.21 to 1.24.1-alpine3.21 in /Containers/imaginary
2025-03-06 11:02:02 +01:00
Simon L.
b0c191079d Merge pull request #6127 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.17.3
build(deps): bump elasticsearch from 8.17.2 to 8.17.3 in /Containers/fulltextsearch
2025-03-06 11:01:47 +01:00
Simon L.
d21ade09d3 Merge pull request #6124 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-24.04.13.1.1
build(deps): bump collabora/code from 24.04.12.4.1 to 24.04.13.1.1 in /Containers/collabora
2025-03-06 11:01:33 +01:00
Simon L.
6bab6712ce Merge pull request #6111 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.4.2-29
build(deps): bump clamav/clamav from 1.4.2-28 to 1.4.2-29 in /Containers/clamav
2025-03-06 11:01:20 +01:00
Simon L.
b3261d908a Merge pull request #6107 from nextcloud/aio-dependency-update
PHP dependency updates
2025-03-06 11:01:07 +01:00
Simon L.
3083458245 Merge pull request #6132 from nextcloud/aio-helm-update
Helm Chart updates
2025-03-06 10:45:44 +01:00
szaimen
a03622ce0a Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-06 09:37:11 +00:00
szaimen
f55ef08c73 talk-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-05 12:04:12 +00:00
szaimen
88127f607b php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-05 12:03:06 +00:00
Simon L.
1ed7e54ca6 Merge pull request #6129 from nextcloud/enh/6126/add-ingress-note
helm-chart: add docs that ingress is not built-in
2025-03-05 11:26:19 +01:00
Simon L.
c2ac5c64d6 helm-chart: add docs that ingress is not built-in
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-03-05 11:25:33 +01:00
dependabot[bot]
0a4eac4d4b build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.24.0-alpine3.21 to 1.24.1-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 05:00:04 +00:00
dependabot[bot]
4893a0dfc1 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.17.2 to 8.17.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 04:59:57 +00:00
dependabot[bot]
a7861f2dca build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 24.04.12.4.1 to 24.04.13.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-04 04:16:08 +00:00
dependabot[bot]
bf4636e8d6 build(deps): bump clamav/clamav in /Containers/clamav
Bumps clamav/clamav from 1.4.2-28 to 1.4.2-29.

---
updated-dependencies:
- dependency-name: clamav/clamav
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 05:07:02 +00:00
Jean-Yves
0e88a15edb Add container state component for improved status display and hide password by default
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2025-03-01 20:57:21 +01:00
Simon L.
2ca49f8962 Merge pull request #6102 from nextcloud/enh/noid/fix-cmd-options
DockerActionManager: fix setting CMD options for collabora
2025-02-28 15:19:21 +01:00
Simon L.
de053c9b7d DockerActionManager: fix setting CMD options for collabora
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-28 15:14:22 +01:00
Simon L.
2942af2a22 Merge pull request #6101 from nextcloud/enh/noid/whiteboard-default
Enable whiteboard by default
2025-02-28 15:04:05 +01:00
Simon L.
68ffa35d6f Enable whiteboard by default
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-28 14:49:35 +01:00
Simon L.
ace709c485 aio-interface: fix broken link
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-28 14:46:12 +01:00
Simon L.
91aeae9825 increase to 10.7.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-28 14:30:25 +01:00
Simon L.
7e3b07e782 update OO
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-28 14:29:40 +01:00
Simon L.
6ae4263654 Merge pull request #6097 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.0.1-cli
build(deps): bump docker from 27.5.1-cli to 28.0.1-cli in /Containers/mastercontainer
2025-02-27 14:50:15 +01:00
Simon L.
c5c19129ba Merge pull request #6085 from nextcloud/enh/noid/collabora-additional-options
collabora: allow to configure additional options
2025-02-27 12:40:54 +01:00
Simon L.
d01dc6ad8a address review
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-27 11:52:34 +01:00
dependabot[bot]
1759f14c37 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 27.5.1-cli to 28.0.1-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-27 04:41:43 +00:00
Simon L.
4e84080f56 collabora: allow to configure additional options
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-26 14:30:55 +01:00
Simon L.
d74614cba9 Merge pull request #6060 from nextcloud/enh/noid/adjust-aio-interface
aio-interface: adjust applicable links to always open in a new tab
2025-02-26 13:38:03 +01:00
Simon L.
eda345865e Merge pull request #6077 from nextcloud/dependabot/docker/Containers/postgresql/postgres-16.8-alpine
build(deps): bump postgres from 16.7-alpine to 16.8-alpine in /Containers/postgresql
2025-02-26 13:35:58 +01:00
Simon L.
44bbdd8cc5 Merge pull request #6076 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.1.5-alpine
build(deps): bump haproxy from 3.1.3-alpine to 3.1.5-alpine in /Containers/docker-socket-proxy
2025-02-26 13:35:40 +01:00
Simon L.
f40c39722e Merge pull request #6075 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.4.2-28
build(deps): bump clamav/clamav from 1.4.2-27 to 1.4.2-28 in /Containers/clamav
2025-02-26 13:35:19 +01:00
Simon L.
29fb9f6378 Merge pull request #6071 from nextcloud/Anvil5465-patch-2
caddy-cc-readme: Add missing info about Jellyseerr
2025-02-26 13:34:55 +01:00
Simon L.
147630df6d make readme better readable by adjusting links
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-26 13:33:37 +01:00
Simon L.
6a22a986a4 Merge pull request #6070 from davidhund/pi-hole-v6-config-env-changes
fix: `pihole/pihole@latest` Web Admin interface
2025-02-26 13:29:49 +01:00
Simon L.
221cf9efbd Merge pull request #6067 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-24.04.12.4.1
build(deps): bump collabora/code from 24.04.12.3.1 to 24.04.12.4.1 in /Containers/collabora
2025-02-26 13:29:14 +01:00
Simon L.
9eeeac66a9 Merge pull request #6063 from nextcloud/aio-dependency-update
PHP dependency updates
2025-02-26 13:28:58 +01:00
Simon L.
19d6352b35 Merge pull request #6092 from nextcloud/dependabot/docker/Containers/talk/nats-2.10.26-scratch
build(deps): bump nats from 2.10.25-scratch to 2.10.26-scratch in /Containers/talk
2025-02-26 13:28:10 +01:00
szaimen
6764b03eeb php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-26 12:03:08 +00:00
dependabot[bot]
2631b3922a build(deps): bump nats in /Containers/talk
Bumps nats from 2.10.25-scratch to 2.10.26-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 04:16:07 +00:00
Simon L.
4efaddb0ad Merge pull request #6089 from nextcloud/aio-helm-update
Helm Chart updates
2025-02-25 14:00:33 +01:00
szaimen
d74b0da0ee Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-25 12:59:30 +00:00
Simon L.
4837de43e0 remove rel="noopener" as it is implied by target="_blank"
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-25 10:25:02 +01:00
dependabot[bot]
647c2ca93d build(deps): bump postgres in /Containers/postgresql
Bumps postgres from 16.7-alpine to 16.8-alpine.

---
updated-dependencies:
- dependency-name: postgres
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 04:47:42 +00:00
dependabot[bot]
c509118457 build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.1.3-alpine to 3.1.5-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 04:47:11 +00:00
dependabot[bot]
1325393805 build(deps): bump clamav/clamav in /Containers/clamav
Bumps clamav/clamav from 1.4.2-27 to 1.4.2-28.

---
updated-dependencies:
- dependency-name: clamav/clamav
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 04:47:06 +00:00
Anvil5465
68e278d651 Update readme.md
Add mention of jellyseerr at the beginning

Signed-off-by: Anvil5465 <119350594+Anvil5465@users.noreply.github.com>
2025-02-22 17:11:43 -05:00
David Hund
4e56d89ea6 fix: pihole/pihole@latest Web Admin interface
See: https://github.com/nextcloud/all-in-one/discussions/6064

`pihole/pihole@latest` has been updated to `v6`,
breaking the Web Admin interface at (http://192.168.x.x:8573/admin)
(Pi-hole itself continues working fine, it seems)

**Cause:** V6 replaced `lighttpd` with an *embedded webserver*
and changed most `pi-hole.json` *environment variables*.

**Fix:** This PR updates the environment variables to match the new v6 configuration.

Stopping and starting the container will apply the changes and
should fix the Web Admin interface.

Signed-off-by: David Hund <david.hund@gmail.com>
2025-02-21 16:29:57 +01:00
dependabot[bot]
64cd9acbce build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 24.04.12.3.1 to 24.04.12.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-21 04:57:30 +00:00
Simon L.
072010467f increase to 10.6.1
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-19 13:14:21 +01:00
Simon L.
8f047c5841 Merge pull request #6059 from nextcloud/aio-dependency-update
PHP dependency updates
2025-02-19 13:11:53 +01:00
Simon L.
cea7b11d49 Merge pull request #6056 from nextcloud/dependabot/docker/Containers/postgresql/postgres-16.7-alpine
build(deps): bump postgres from 16.6-alpine to 16.7-alpine in /Containers/postgresql
2025-02-19 13:11:33 +01:00
Simon L.
61b1576c92 fix typo
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-18 23:12:59 +01:00
Simon L.
77a44ee7ff aio-interface: adjust aplicable links to always open in a new tab
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-18 23:04:12 +01:00
Simon L.
efe9aac94d add info box in how-to sectioin
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-18 22:42:23 +01:00
szaimen
c531f516d3 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-18 12:11:54 +00:00
Simon L.
0663c01c29 Merge pull request #6058 from nextcloud/enh/5362/improve-readme
readme: re-order the faq section and add chapters
2025-02-18 11:40:42 +01:00
Simon L.
61749514a1 readme: re-order the faq section and add chapters
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-02-18 11:36:52 +01:00
dependabot[bot]
577b22192d build(deps): bump postgres in /Containers/postgresql
Bumps postgres from 16.6-alpine to 16.7-alpine.

---
updated-dependencies:
- dependency-name: postgres
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-18 05:04:22 +00:00
116 changed files with 1686 additions and 929 deletions

View File

@@ -5,8 +5,10 @@ labels: 0. Needs triage
---
<!---
- Before submitting a bug report, please read through the documentation available at https://github.com/nextcloud/all-in-one#faq
- If you use Cloudflare Tunnel or Cloudflare Proxy, see https://github.com/nextcloud/all-in-one#notes-on-cloudflare-proxytunnel for known issues/limitations and workarounds.
- For issues with Collabora or Talk, make sure to follow https://github.com/nextcloud/all-in-one/discussions/1358. It may already resolve your issue and makes it easier to help you.
--->
<!--- Please fill out the whole template below -->

View File

@@ -1,5 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: 📘 Documentation on Nextcloud AIO
url: https://github.com/nextcloud/all-in-one#faq
about: Please read the docs first before submitting any report or request!
- name: ⛑️ General questions and support
url: https://help.nextcloud.com/tag/aio
about: For general questions, support and help
@@ -11,4 +14,4 @@ contact_links:
about: For questions specifically about AIO
- name: 💼 Nextcloud Enterprise
url: https://portal.nextcloud.com/
about: If you are a Nextcloud Enterprise customer, or need Professional support, so it can be resolved directly by our dedicated engineers more quickly
about: If you are a Nextcloud Enterprise customer, or need Professional support, so it can be resolved directly by our dedicated engineers more quickly

View File

@@ -1,7 +1,7 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
directory: ".github/workflows"
schedule:
interval: "daily"
time: "12:00"
@@ -22,6 +22,7 @@ updates:
- dependencies
- package-ecosystem: "docker"
directories:
- "/Containers/alpine"
- "/Containers/apache"
- "/Containers/borgbackup"
- "/Containers/clamav"

View File

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

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
- uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
with:
php-version: 8.3
extensions: apcu
@@ -44,7 +44,7 @@ jobs:
)"
sed -i "s|pecl install APCu.*\;|pecl install APCu-$apcu_version\;|" ./Containers/mastercontainer/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: php dependency updates
signoff: true

View File

@@ -16,7 +16,7 @@ jobs:
uses: actions/checkout@v4
- name: Turnstyle
uses: softprops/turnstyle@v2
uses: softprops/turnstyle@f9f8ef3f634144b126a09ea5b3bfe51ddebc700f # v2
with:
continue-after-seconds: 180
env:
@@ -32,7 +32,7 @@ jobs:
# See https://github.com/helm/chart-releaser-action/issues/6
- name: Set up Helm
uses: azure/setup-helm@v4
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4
with:
version: v3.6.3
@@ -41,7 +41,7 @@ jobs:
helm lint ./nextcloud-aio-helm-chart
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.7.0
uses: helm/chart-releaser-action@cae68fefc6b5f367a0275617c9f83181ba54714f # v1.7.0
with:
mark_as_latest: false
charts_dir: .

View File

@@ -22,7 +22,7 @@ jobs:
sed -i "s|^ENV IMAGINARY_HASH.*$|ENV IMAGINARY_HASH=$imaginary_version|" ./Containers/imaginary/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: imaginary-update automated change
signoff: true

View File

@@ -16,7 +16,7 @@ jobs:
fetch-depth: 0
- name: Install Helm
uses: azure/setup-helm@v4
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4
with:
version: v3.11.1

View File

@@ -36,7 +36,7 @@ jobs:
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none

View File

@@ -14,7 +14,7 @@ jobs:
action:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5
- uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5
with:
issue-inactive-days: '14'
process-only: 'issues'

View File

@@ -85,7 +85,7 @@ jobs:
fi
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: nextcloud-update automated change
signoff: true

View File

@@ -18,7 +18,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up php
uses: shivammathur/setup-php@v2
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
with:
php-version: 8.3
extensions: apcu

77
.github/workflows/playwright.yml vendored Normal file
View File

@@ -0,0 +1,77 @@
name: Playwright Tests
on:
workflow_dispatch:
env:
BASE_URL: https://localhost:8080
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: cd php/tests && npm ci
- name: Install Playwright Browsers
run: cd php/tests && npx playwright install --with-deps chromium
- name: Start fresh development server
run: |
docker rm --force nextcloud-aio-{mastercontainer,apache,notify-push,nextcloud,redis,database,domaincheck,whiteboard,imaginary,talk,collabora,borgbackup} || true
docker volume rm nextcloud_aio_{mastercontainer,apache,database,database_dump,nextcloud,nextcloud_data,redis,backup_cache,elasticsearch} || true
docker pull ghcr.io/nextcloud-releases/all-in-one:develop
docker run \
-d \
--init \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 8080:8080 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env SKIP_DOMAIN_VALIDATION=true \
--env APACHE_PORT=11000 \
ghcr.io/nextcloud-releases/all-in-one:develop
echo Waiting for 10 seconds for the development container to start ...
sleep 10
- name: Run Playwright tests for initial setup
run: cd php/tests && DEBUG=pw:api npx playwright test tests/initial-setup.spec.js
- name: Start fresh development server
run: |
docker rm --force nextcloud-aio-{mastercontainer,apache,notify-push,nextcloud,redis,database,domaincheck,whiteboard,imaginary,talk,collabora,borgbackup} || true
docker volume rm nextcloud_aio_{mastercontainer,apache,database,database_dump,nextcloud,nextcloud_data,redis,backup_cache,elasticsearch} || true
docker run \
-d \
--init \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 8080:8080 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env SKIP_DOMAIN_VALIDATION=false \
--env APACHE_PORT=11000 \
ghcr.io/nextcloud-releases/all-in-one:develop
echo Waiting for 10 seconds for the development container to start ...
sleep 10
- name: Run Playwright tests for backup restore
run: cd php/tests && DEBUG=pw:api npx playwright test tests/restore-instance.spec.js
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: php/tests/playwright-report/
retention-days: 14
overwrite: true

View File

@@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v4
- name: Set up php
uses: shivammathur/setup-php@v2
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
with:
php-version: 8.3
extensions: apcu
@@ -30,7 +30,7 @@ jobs:
continue-on-error: true
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: Update psalm baseline

View File

@@ -29,7 +29,7 @@ jobs:
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up php
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
with:
php-version: 8.3
extensions: apcu

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Run Shellcheck
uses: ludeeus/action-shellcheck@2.0.0
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0
with:
check_together: 'yes'
env:

View File

@@ -45,7 +45,7 @@ jobs:
sed -i "s|^ARG JANUS_VERSION=.*$|ARG JANUS_VERSION=$janus_version|" ./Containers/talk/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: talk-update automated change
signoff: true

View File

@@ -27,7 +27,7 @@ jobs:
uses: actions/checkout@v4
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
with:
php-version: 8.3
extensions: apcu

View File

@@ -14,13 +14,16 @@ jobs:
uses: actions/checkout@v4
- name: update helm chart
run: |
DOCKER_TAG="$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/nextcloud/all-in-one/tags?page_size=1024' | jq '."results"[]["name"]' | sed 's|"||g' | grep '^20[0-9_]\+' | grep -v latest | sort -r | head -1)"
set -x
GHCR_TOKEN="$(curl https://ghcr.io/token?scope=repository:nextcloud-releases/nce-php-fpm-mgmt:pull | jq '.token' | sed 's|"||g')"
DOCKER_TAG="$(curl -H "Authorization: Bearer ${GHCR_TOKEN}" -L -s 'https://ghcr.io/v2/nextcloud-releases/all-in-one/tags/list?page_size=1024' | jq '.tags' | sed 's|"||g;s|[[:space:]]||g;s|,||g' | grep '^20[0-9_]\+' | grep -v latest | sort -r | head -1)"
export DOCKER_TAG
set +x
if [ -n "$DOCKER_TAG" ] && ! grep -q "$DOCKER_TAG" ./nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml; then
sudo bash nextcloud-aio-helm-chart/update-helm.sh "$DOCKER_TAG"
fi
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: Helm Chart updates
signoff: true

View File

@@ -16,7 +16,7 @@ jobs:
run: |
sudo bash manual-install/update-yaml.sh
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7
with:
commit-message: Yaml updates
signoff: true

View File

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

View File

@@ -191,7 +191,7 @@ if [ "$BORG_MODE" = backup ]; then
fi
# Exclude the nextcloud log and audit log for GDPR reasons
BORG_EXCLUDE=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/nextcloud.log*" --exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/audit.log")
BORG_EXCLUDE=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/nextcloud.log*" --exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/audit.log" --exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/lost+found")
BORG_INCLUDE=()
# Exclude datadir if .noaiobackup file was found
@@ -405,6 +405,7 @@ if [ "$BORG_MODE" = restore ]; then
--exclude "nextcloud_aio_mastercontainer/data/daily_backup_running" \
--exclude "nextcloud_aio_mastercontainer/data/session_date_file" \
--exclude "nextcloud_aio_mastercontainer/session/**" \
--exclude "nextcloud_aio_nextcloud_data/lost+found" \
"${ADDITIONAL_RSYNC_EXCLUDES[@]}" \
/tmp/borg/nextcloud_aio_volumes/ /nextcloud_aio_volumes/; then
RESTORE_FAILED=1
@@ -459,6 +460,7 @@ if [ "$BORG_MODE" = restore ]; then
-o -path nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_running \
-o -path nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/session_date_file \
-o -path "nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/id_borg*" \
-o -path "nextcloud_aio_nextcloud_data/lost+found" \
"${ADDITIONAL_FIND_EXCLUDES[@]}" \
\) \
| LC_ALL=C sort \

View File

@@ -1,28 +1,25 @@
# syntax=docker/dockerfile:latest
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.3/alpine/Dockerfile
FROM clamav/clamav:1.4.2-27
COPY clamav.conf /clamav.conf
COPY --chmod=775 start.script /start.script
FROM alpine:3.21.3
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache tzdata bash; \
mkdir -p /var/run/clamav /run/lock; \
chown -R clamav:clamav /var/run/clamav /run/clamav /var/log/clamav /var/lock /run/lock; \
chmod 777 -R /var/run/clamav /run/clamav /var/log/clamav /var/lock /run/lock /tmp; \
sed -i "/^set -eu/r /start.script" /init-unprivileged; \
rm /start.script; \
grep -q 'clamd --foreground &' /init-unprivileged; \
sed -i "s|clamd --foreground \&|clamd --foreground --config-file /tmp/clamd.conf \&|" /init-unprivileged; \
cat /init-unprivileged
apk add --no-cache tzdata clamav supervisor bash; \
mkdir -p /run/clamav /var/log/supervisord /var/run/supervisord; \
chmod 777 -R /run/clamav /var/log/clamav /var/log/supervisord /var/run/supervisord; \
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|#\?TCPSocket|TCPSocket|g" /etc/clamav/clamd.conf; \
freshclam --foreground --stdout
VOLUME /var/lib/clamav
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
COPY --chmod=664 supervisord.conf /supervisord.conf
USER 100
VOLUME /var/lib/clamav
ENTRYPOINT ["/start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
LABEL com.centurylinklabs.watchtower.enable="false"
HEALTHCHECK --start-period=60s --retries=9 CMD clamdcheck.sh
ENTRYPOINT ["/init-unprivileged"]
HEALTHCHECK --start-period=60s --retries=9 CMD /healthcheck.sh

View File

@@ -1,5 +0,0 @@
# AIO settings
MaxDirectoryRecursion 30
MaxFileSize 16G
PCREMaxFileSize 16G
StreamMaxLength 16G

View File

@@ -0,0 +1,9 @@
#!/bin/bash
if [ "$(echo "PING" | nc 127.0.0.1 3310)" != "PONG" ]; then
echo "ERROR: Unable to contact server"
exit 1
fi
echo "Clamd is up"
exit 0

View File

@@ -1,4 +0,0 @@
# Adjust settings
cat /etc/clamav/clamd.conf > /tmp/clamd.conf
CLAMAV_FILE="$(sed "s|16G|$MAX_SIZE|" /clamav.conf)"
echo "$CLAMAV_FILE" >> /tmp/clamd.conf

View File

@@ -0,0 +1,7 @@
#!/bin/bash
sed "s|aio-placeholder|$MAX_SIZE|" /etc/clamav/clamd.conf > /tmp/clamd.conf
echo "Clamav started"
exec "$@"

View File

@@ -0,0 +1,23 @@
[supervisord]
nodaemon=true
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
[program:freshclam]
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
[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

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
FROM collabora/code:24.04.12.3.1
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/blob/master/docker/from-packages/Dockerfile
FROM collabora/code:24.04.13.2.1
USER root
ARG DEBIAN_FRONTEND=noninteractive
@@ -10,15 +10,13 @@ RUN set -ex; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
# # Disable because seems to be failing currently
# # tzdata \
netcat-openbsd \
; \
rm -rf /var/lib/apt/lists/*;
COPY --chmod=775 healthcheck.sh /healthcheck.sh
USER 100
USER 1001
HEALTHCHECK --start-period=60s --retries=9 CMD /healthcheck.sh
LABEL com.centurylinklabs.watchtower.enable="false"

View File

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

View File

@@ -13,7 +13,7 @@ frontend http
bind :::2375 v4v6
http-request deny unless { src 127.0.0.1 } || { src ::1 } || { src NC_IPV4_PLACEHOLDER } || { src NC_IPV6_PLACEHOLDER }
# docker system _ping
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/_ping } METH_GET
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/_ping$ } METH_GET
# container inspect: GET containers/%s/json
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/nc_app_[a-zA-Z0-9_.-]+/json } METH_GET
# container inspect: GET containers/%s/logs
@@ -38,19 +38,19 @@ frontend http
# ACL to deny if there are any binds
acl binds_present req.body -m reg -i "\"HostConfig\"\s*:.*\"Binds\"\s*:"
# ACL to restrict the type of Mounts to volume
acl type_not_volume req.body -m reg -i "\"Mounts\":\s*\[[^\]]*(\"Type\":\s*\"(?!volume\b)\w+\"[^\]]*)+\]"
acl type_not_volume req.body -m reg -i "\"Mounts\"\s*:\s*\[[^\]]*(\"Type\"\s*:\s*\"(?!volume\b)\w+\"[^\]]*)+\]"
http-request deny if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/create } nc_app_container_name !one_mount_volume binds_present type_not_volume METH_POST
# ACL to restrict container creation, that it has HostConfig.Privileged not set
acl no_privileged_flag req.body -m reg -i "\"HostConfig\":\s?{[^}]*\"Privileged\""
# ACL to restrict container creation, that it has HostConfig.Privileged(by searching for "Privileged" word in all payload)
acl no_privileged_flag req.body -m reg -i "\"Privileged\""
# ACL to allow mount volume with strict pattern for name: nc_app_[a-zA-Z0-9_.-]+_data
acl nc_app_volume_data_only req.body -m reg -i "\"Mounts\":\s?\[\s?{[^}]*\"Source\":\s?\"nc_app_[a-zA-Z0-9_.-]+_data\""
acl nc_app_volume_data_only req.body -m reg -i "\"Mounts\"\s*:\s*\[\s*{[^}]*\"Source\"\s*:\s*\"nc_app_[a-zA-Z0-9_.-]+_data\""
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/create } nc_app_container_name !no_privileged_flag nc_app_volume_data_only METH_POST
# end of container create
# volume create: POST volumes/create
# restrict name
acl nc_app_volume_data req.body -m reg -i "\"Name\":\s?\"nc_app_[a-zA-Z0-9_.-]+_data\""
acl nc_app_volume_data req.body -m reg -i "\"Name\"\s*:\s*\"nc_app_[a-zA-Z0-9_.-]+_data\""
# do not allow to use "device" word e.g., "--opt device=:/path/to/dir"
acl volume_no_device req.body -m reg -i "\"device\""
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/volumes/create } nc_app_volume_data !volume_no_device METH_POST

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.17.2
FROM elasticsearch:8.17.4
USER root

View File

@@ -1,9 +1,10 @@
# syntax=docker/dockerfile:latest
FROM golang:1.24.0-alpine3.21 AS go
FROM golang:1.24.2-alpine3.21 AS go
ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \
vips-dev \
vips-magick \

View File

@@ -1,12 +1,12 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
FROM docker:27.5.1-cli AS docker
FROM docker:28.0.4-cli AS docker
# Caddy is a requirement
FROM caddy:2.9.1-alpine AS caddy
# From https://github.com/docker-library/php/blob/master/8.3/alpine3.21/fpm/Dockerfile
FROM php:8.3.17-fpm-alpine3.21
FROM php:8.3.19-fpm-alpine3.21
EXPOSE 80
EXPOSE 8080
@@ -66,6 +66,7 @@ RUN set -ex; \
cd /var/www/docker-aio; \
git clone https://github.com/nextcloud-releases/all-in-one.git --depth 1 .; \
find ./ -maxdepth 1 -mindepth 1 -not -path ./php -not -path ./community-containers -exec rm -r {} \; ; \
rm -r ./php/tests; \
chown www-data:www-data -R /var/www/docker-aio; \
cd php; \
sudo -u www-data composer install --no-dev; \

View File

@@ -20,6 +20,11 @@ APACHE_PORT="$(docker inspect nextcloud-aio-apache --format "{{.Config.Env}}" |
if [ -z "$APACHE_PORT" ]; then
echo "APACHE_PORT is not set which is not expected..."
else
# Connect mastercontainer to nextcloud-aio network to make sure that nextcloud-aio-apache is reachable
# Prevent issues like https://github.com/nextcloud/all-in-one/discussions/5222
docker network connect nextcloud-aio nextcloud-aio-mastercontainer &>/dev/null
# Wait for apache to start
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-apache$" && ! nc -z nextcloud-aio-apache "$APACHE_PORT"; do
echo "Waiting for apache to become available"
sleep 30

View File

@@ -272,23 +272,13 @@ It is set to '$AIO_COMMUNITY_CONTAINERS'."
fi
fi
# Check DNS resolution
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565
curl https://nextcloud.com &>/dev/null
if [ "$?" = 6 ]; then
print_red "Could not resolve the host nextcloud.com."
echo "Most likely the DNS resolving does not work."
echo "You should be able to fix this by following https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html"
echo "Apart from that, there has been this: https://github.com/nextcloud/all-in-one/discussions/2065"
exit 1
fi
# Check if auth.docker.io is reachable
# Check if ghcr.io is reachable
# Solves issues like https://github.com/nextcloud/all-in-one/discussions/5268
if ! curl https://auth.docker.io/token 2>&1 | grep -q token; then
print_red "Could not reach https://auth.docker.io."
if ! curl --no-progress-meter https://ghcr.io/v2/ >/dev/null; then
print_red "Could not reach https://ghcr.io."
echo "Most likely is something blocking access to it."
echo "You should be able to fix this by using https://github.com/nextcloud/all-in-one/tree/main/manual-install"
echo "You should be able to fix this by following https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html"
echo "Another solution is using https://github.com/nextcloud/all-in-one/tree/main/manual-install"
exit 1
fi

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM php:8.3.17-fpm-alpine3.21
FROM php:8.3.19-fpm-alpine3.21
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=30.0.6
ENV NEXTCLOUD_VERSION=30.0.9
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!
@@ -84,7 +84,7 @@ RUN set -ex; \
pecl install -o igbinary-3.2.16; \
pecl install APCu-5.1.24; \
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.1.0; \
pecl install -oD 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis-6.2.0; \
# pecl install -o imagick-3.7.0; \
# Begin workaround ->
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
@@ -142,7 +142,7 @@ RUN set -ex; \
echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \
echo 'max_execution_time=${PHP_MAX_TIME}'; \
echo 'max_input_time=${PHP_MAX_TIME}'; \
echo 'default_socket_timeout=600'; \
echo 'default_socket_timeout=${PHP_MAX_TIME}'; \
} > /usr/local/etc/php/conf.d/nextcloud.ini; \
\
{ \

View File

@@ -33,7 +33,7 @@ while ! nc -z "$REDIS_HOST" "6379"; do
done
# Check permissions in ncdata
touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
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.
@@ -535,6 +535,13 @@ php /var/www/html/occ config:system:set upgrade.cli-upgrade-link --value="https:
php /var/www/html/occ config:system:set logfile --value="/var/www/html/data/nextcloud.log"
php /var/www/html/occ config:app:set admin_audit logfile --value="/var/www/html/data/audit.log"
php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
if [ -n "$NEXTCLOUD_SKELETON_DIRECTORY" ]; then
if [ "$NEXTCLOUD_SKELETON_DIRECTORY" = "empty" ]; then
php /var/www/html/occ config:system:set skeletondirectory --value=""
else
php /var/www/html/occ config:system:set skeletondirectory --value="$NEXTCLOUD_SKELETON_DIRECTORY"
fi
fi
if [ -n "$SERVERINFO_TOKEN" ] && [ -z "$(php /var/www/html/occ config:app:get serverinfo token)" ]; then
php /var/www/html/occ config:app:set serverinfo token --value="$SERVERINFO_TOKEN"
fi

View File

@@ -60,8 +60,14 @@ elif [ "$DATABASE_TYPE" != postgres ] && [ "$DATABASE_TYPE" != mysql ]; then
exit 1
fi
# Use the correct Postgres username
if [ "$POSTGRES_USER" = nextcloud ]; then
POSTGRES_USER="oc_$POSTGRES_USER"
export POSTGRES_USER
fi
# Set sensitive values as env
export DATABASE_URL="$DATABASE_TYPE://oc_$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"
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:8.3.0.1
FROM onlyoffice/documentserver:8.3.2.1
# USER root is probably used

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From https://github.com/docker-library/postgres/blob/master/16/alpine3.21/Dockerfile
FROM postgres:16.6-alpine
FROM postgres:16.8-alpine
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM python:3.13.2-alpine3.21
FROM python:3.13.3-alpine3.21
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh

View File

@@ -1,12 +1,13 @@
# syntax=docker/dockerfile:latest
FROM nats:2.10.25-scratch AS nats
FROM nats:2.11.1-scratch AS nats
FROM eturnal/eturnal:1.12.1 AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.0.2 AS signaling
FROM alpine:3.21.3 AS janus
ARG JANUS_VERSION=v1.3.0
ARG JANUS_VERSION=v1.3.1
WORKDIR /src
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \
ca-certificates \
git \

View File

@@ -1,14 +1,19 @@
# syntax=docker/dockerfile:latest
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
FROM containrrr/watchtower:1.7.1 AS watchtower
FROM golang:1.24.2-alpine3.21 AS go
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \
build-base; \
go install github.com/containrrr/watchtower@76f9cea516593fabb8ca91ff13de55caa6aa0a8b;
FROM alpine:3.21.3
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash
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

@@ -5,7 +5,8 @@ FROM ghcr.io/nextcloud-releases/whiteboard:v1.0.5
USER root
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash
apk add --no-cache bash; \
chmod 777 -R /tmp
USER 65534
COPY --chmod=775 start.sh /start.sh

View File

@@ -11,6 +11,6 @@ declare(strict_types=1);
/** @var array $_ */ ?>
<div id="allinone" class="section">
<h2><?php p($l->t('Nextcloud All-in-One'));?></h2>
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank" rel="noopener">Open Nextcloud AIO Interface ↗</a><br><br>
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank">Open Nextcloud AIO Interface ↗</a><br><br>
<p><a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface">Click here for more infos on this feature (e.g. also on how to change the link in the button)</a></p>
</div>

View File

@@ -5,7 +5,7 @@
"image_tag": "v1",
"display_name": "Borg Backup Viewer",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/borgbackup-viewer",
"image": "szaimen/aio-borgbackup-viewer",
"image": "ghcr.io/szaimen/aio-borgbackup-viewer",
"internal_port": "5801",
"ports": [
{

View File

@@ -4,7 +4,7 @@
"container_name": "nextcloud-aio-caddy",
"display_name": "Caddy with geoblocking",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy",
"image": "szaimen/aio-caddy",
"image": "ghcr.io/szaimen/aio-caddy",
"image_tag": "v2",
"internal_port": "443",
"restart": "unless-stopped",

View File

@@ -1,15 +1,15 @@
## Caddy with geoblocking
This container bundles caddy and auto-configures it for you. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden by listening on `bw.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart by listening on `mail.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin by listening on `media.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap by listening on `ldap.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb by listening on `tables.$NC_DOMAIN`, if installed.
This container bundles caddy and auto-configures it for you. It also covers [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden) by listening on `bw.$NC_DOMAIN`, if installed. It also covers [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart) by listening on `mail.$NC_DOMAIN`, if installed. It also covers [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin) by listening on `media.$NC_DOMAIN`, if installed. It also covers [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap) by listening on `ldap.$NC_DOMAIN`, if installed. It also covers [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb) by listening on `tables.$NC_DOMAIN`, if installed. It also covers [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr) by listening on `requests.$NC_DOMAIN`, if installed.
### 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.
- If you want to use this with 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 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 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.
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap, make sure that you point `ldap.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for lldap.
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb, make sure that you point `tables.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nocodb.
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr, make sure that you point `requests.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyseerr.
- 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.
- If you want to use this with [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap), make sure that you point `ldap.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for lldap.
- If you want to use this with [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb), make sure that you point `tables.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nocodb.
- If you want to use this with [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr), make sure that you point `requests.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyseerr.
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
- You can add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup.
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack

View File

@@ -4,7 +4,7 @@
"container_name": "nextcloud-aio-fail2ban",
"display_name": "Fail2ban",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban",
"image": "szaimen/aio-fail2ban",
"image": "ghcr.io/szaimen/aio-fail2ban",
"image_tag": "v1",
"internal_port": "host",
"restart": "unless-stopped",

View File

@@ -0,0 +1,12 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-helloworld",
"display_name": "Hello world",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/helloworld",
"image": "ghcr.io/docjyj/aio-helloworld",
"image_tag": "%AIO_CHANNEL%",
"restart": "unless-stopped"
}
]
}

View File

@@ -0,0 +1,8 @@
## Hello World
This container is a template for creating a community container.
### Repository
https://github.com/docjyj/aio-helloworld
### Maintainer
https://github.com/docjyj

View File

@@ -4,7 +4,7 @@
"container_name": "nextcloud-aio-libretranslate",
"display_name": "LibreTranslate",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/libretranslate",
"image": "szaimen/aio-libretranslate",
"image": "ghcr.io/szaimen/aio-libretranslate",
"image_tag": "v1",
"internal_port": "5000",
"restart": "unless-stopped",

View File

@@ -1,6 +1,11 @@
## LibreTranslate
This container bundles LibreTranslate and auto-configures it for you.
> [!WARNING]
> The LibreTranslate container and app is deprecated!
> Please use the [translate2 app](https://apps.nextcloud.com/apps/translate2) instead.
> You can activate it by first enabling the Docker-Socket-Proxy in the AIO-interface and then heading over to `https://your-nc-domain.com/settings/apps/tools` and installing and enabling the `Local Machine Translation` app.
### Notes
- After the initial startup is done, you might want to change the default language to translate from and to via:
```bash

View File

@@ -4,7 +4,7 @@
"container_name": "nextcloud-aio-local-ai",
"display_name": "Local AI",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai",
"image": "szaimen/aio-local-ai",
"image": "ghcr.io/szaimen/aio-local-ai",
"image_tag": "v2",
"internal_port": "8080",
"restart": "unless-stopped",

View File

@@ -4,8 +4,8 @@
"container_name": "nextcloud-aio-nocodb",
"display_name": "NocoDB",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb",
"image": "docjyj/aio-nocodb",
"image_tag": "%AIO_CHANNEL%",
"image": "nocodb/nocodb",
"image_tag": "latest",
"internal_port": "10028",
"restart": "unless-stopped",
"ports": [

View File

@@ -22,7 +22,7 @@ This is an alternative of **Airtable**.
- 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/docjyJ/aio-nocodb
https://github.com/nocodb/nocodb
### Maintainer
https://github.com/docjyJ

View File

@@ -4,7 +4,7 @@
"container_name": "nextcloud-aio-npmplus",
"display_name": "NPMplus",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus",
"image": "zoeyvid/npmplus",
"image": "ghcr.io/zoeyvid/npmplus",
"image_tag": "latest",
"internal_port": "host",
"restart": "unless-stopped",

View File

@@ -28,9 +28,9 @@
],
"environment": [
"TZ=%TIMEZONE%",
"WEBPASSWORD=%PIHOLE_WEBPASSWORD%",
"DNSMASQ_LISTENING=all",
"WEB_PORT=8573"
"FTLCONF_webserver_api_password=%PIHOLE_WEBPASSWORD%",
"FTLCONF_dns_listeningMode=all",
"FTLCONF_webserver_port=8573"
],
"volumes": [
{

View File

@@ -7,7 +7,7 @@ All containers that are in this directory are community maintained so the respon
## How to use this?
Before adding any additional container, make sure to create a backup via the AIO interface!
Afterwards, you might want to add additional community containers to the default AIO stack. You can do so by adding `--env AIO_COMMUNITY_CONTAINERS="container1 container2"` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. It must match the folder names in this directory! ⚠️⚠️⚠️ Please review the folder for documentation on each of the containers before adding them! Not reviewing the documentation for each of them first might break starting the AIO containers because e.g. fail2ban only works on Linux and not on Docker Desktop! **Hint:** If the containers where running already, in order to actually start the added container, you need to click on `Stop containers` and the `Update and start containers` in order to actually start it.
Afterwards, you might want to add additional community containers to the default AIO stack. You can do so by adding `--env AIO_COMMUNITY_CONTAINERS="container1 container2"` to the docker run command of the mastercontainer (but before the last line `ghcr.io/nextcloud-releases/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. It must match the folder names in this directory! ⚠️⚠️⚠️ Please review the folder for documentation on each of the containers before adding them! Not reviewing the documentation for each of them first might break starting the AIO containers because e.g. fail2ban only works on Linux and not on Docker Desktop! **Hint:** If the containers where running already, in order to actually start the added container, you need to click on `Stop containers` and the `Update and start containers` in order to actually start it.
## How to add containers?
Simply submit a PR by creating a new folder in this directory: https://github.com/nextcloud/all-in-one/tree/main/community-containers with the name of your container. It must include a json file with the same name and with correct syntax and a readme.md with additional information. You might get inspired by caddy, fail2ban, local-ai, libretranslate, plex, pi-hole or vaultwarden (subfolders in this directory). For a full-blown example of the json file, see https://github.com/nextcloud/all-in-one/blob/main/php/containers.json. The json-schema that it validates against can be found here: https://github.com/nextcloud/all-in-one/blob/main/php/containers-schema.json.

View File

@@ -4,7 +4,7 @@
"container_name": "nextcloud-aio-scrutiny",
"display_name": "Scrutiny",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/scrutiny",
"image": "szaimen/aio-scrutiny",
"image": "ghcr.io/szaimen/aio-scrutiny",
"image_tag": "v1",
"internal_port": "8000",
"init": false,

View File

@@ -0,0 +1,15 @@
## SMB-server
This container bundles an SMB-server and allows to configure it via a graphical shell script.
### Notes
- This container should only be run in home networks
- This container currently only works on amd64. See https://github.com/szaimen/aio-smbserver/issues/3
- After adding and starting the container, you need to visit `https://internal.ip.of.server:5803` in order to log in with the `smbserver` user and the password that you can see next to the container in the AIO interface. (The web page uses a self-signed certificate, so you need to accept the warning). Then type in `bash /smbserver.sh` and you will see a graphical UI for configuring the smb-server interactively.
- The config data of SMB-server 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-smbserver/
### Maintainer
https://github.com/szaimen

View File

@@ -0,0 +1,60 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-smbserver",
"display_name": "SMB-server",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/smbserver",
"image": "ghcr.io/szaimen/aio-smbserver",
"image_tag": "v1",
"internal_port": "5803",
"restart": "unless-stopped",
"ports": [
{
"ip_binding": "",
"port_number": "5803",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "445",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "139",
"protocol": "tcp"
}
],
"volumes": [
{
"source": "nextcloud_aio_smbserver",
"destination": "/smbserver",
"writeable": true
},
{
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/mnt/ncdata",
"writeable": true
},
{
"source": "%NEXTCLOUD_MOUNT%",
"destination": "/mnt",
"writeable": true
}
],
"environment": [
"TZ=%TIMEZONE%",
"WEB_AUTHENTICATION_USERNAME=smbserver",
"WEB_AUTHENTICATION_PASSWORD=%SMBSERVER_PASSWORD%",
"WEB_LISTENING_PORT=5803"
],
"secrets": [
"SMBSERVER_PASSWORD"
],
"ui_secret": "SMBSERVER_PASSWORD",
"backup_volumes": [
"nextcloud_aio_smbserver"
]
}
]
}

View File

@@ -4,8 +4,8 @@
"container_name": "nextcloud-aio-stalwart",
"display_name": "Stalwart",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart",
"image": "docjyj/aio-stalwart",
"image_tag": "%AIO_CHANNEL%",
"image": "ghcr.io/docjyj/aio-stalwart",
"image_tag": "v3",
"internal_port": "10003",
"restart": "unless-stopped",
"ports": [

View File

@@ -4,7 +4,7 @@
"container_name": "nextcloud-aio-vaultwarden",
"display_name": "Vaultwarden",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden",
"image": "vaultwarden/server",
"image": "ghcr.io/dani-garcia/vaultwarden",
"image_tag": "alpine",
"internal_port": "8812",
"restart": "unless-stopped",

View File

@@ -1,6 +1,6 @@
services:
nextcloud-aio-mastercontainer:
image: nextcloud/all-in-one:latest
image: ghcr.io/nextcloud-releases/all-in-one:latest
init: true
restart: always
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly

View File

@@ -11,7 +11,7 @@ sudo docker run \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:develop
ghcr.io/nextcloud-releases/all-in-one:develop
```
And you are done :)
It will now also select the developer channel for all other containers automatically.
@@ -19,6 +19,9 @@ It will now also select the developer channel for all other containers automatic
## How to publish new releases?
Simply use https://github.com/nextcloud/all-in-one/issues/180 as template.
## How to update existing instances to a new major Nextcloud version?
Simply use https://github.com/nextcloud/all-in-one/issues/6198 as template.
## How to build new containers
Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/repo-sync.yml and run the workflow that will first sync the repo and then build new container that automatically get published to `develop` and `develop-arm64`.
@@ -27,6 +30,8 @@ Before testing, make sure that at least the amd64 containers are built successfu
There is a testing-VM available for the maintainer of AIO that allows for some final testing before releasing new version. See [this](https://cloud.nextcloud.com/apps/collectives/Nextcloud%20Handbook/Technical/AIO%20testing%20VM?fileId=6350152) for details.
Additionally, there are now E2E tests available that can be run via https://github.com/nextcloud/all-in-one/actions/workflows/playwright.yml
## How to promote builds from develop to beta
1. Verify that no job is running here: https://github.com/nextcloud-releases/all-in-one/actions/workflows/build_images.yml
2. Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/promote-to-beta.yml, click on `Run workflow`.

View File

@@ -19,7 +19,7 @@ services:
nextcloud-aio-whiteboard:
condition: service_started
required: false
image: nextcloud/aio-apache:latest
image: ghcr.io/nextcloud-releases/aio-apache:latest
user: "33"
init: true
healthcheck:
@@ -60,7 +60,7 @@ services:
- NET_RAW
nextcloud-aio-database:
image: nextcloud/aio-postgresql:latest
image: ghcr.io/nextcloud-releases/aio-postgresql:latest
user: "999"
init: true
healthcheck:
@@ -110,7 +110,7 @@ services:
nextcloud-aio-imaginary:
condition: service_started
required: false
image: nextcloud/aio-nextcloud:latest
image: ghcr.io/nextcloud-releases/aio-nextcloud:latest
init: true
healthcheck:
start_period: 0s
@@ -185,7 +185,7 @@ services:
- NET_RAW
nextcloud-aio-notify-push:
image: nextcloud/aio-notify-push:latest
image: ghcr.io/nextcloud-releases/aio-notify-push:latest
user: "33"
init: true
healthcheck:
@@ -216,7 +216,7 @@ services:
- NET_RAW
nextcloud-aio-redis:
image: nextcloud/aio-redis:latest
image: ghcr.io/nextcloud-releases/aio-redis:latest
user: "999"
init: true
healthcheck:
@@ -239,7 +239,8 @@ services:
- NET_RAW
nextcloud-aio-collabora:
image: nextcloud/aio-collabora:latest
command: ${ADDITIONAL_COLLABORA_OPTIONS}
image: ghcr.io/nextcloud-releases/aio-collabora:latest
init: true
healthcheck:
start_period: 60s
@@ -252,7 +253,7 @@ services:
- "9980"
environment:
- aliasgroup1=https://${NC_DOMAIN}:443
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=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.level=warning --o:home_mode.enable=true --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}
@@ -267,7 +268,7 @@ services:
- NET_RAW
nextcloud-aio-talk:
image: nextcloud/aio-talk:latest
image: ghcr.io/nextcloud-releases/aio-talk:latest
user: "1000"
init: true
healthcheck:
@@ -305,7 +306,7 @@ services:
- NET_RAW
nextcloud-aio-talk-recording:
image: nextcloud/aio-talk-recording:latest
image: ghcr.io/nextcloud-releases/aio-talk-recording:latest
user: "122"
init: true
healthcheck:
@@ -335,12 +336,12 @@ services:
- NET_RAW
nextcloud-aio-clamav:
image: nextcloud/aio-clamav:latest
image: ghcr.io/nextcloud-releases/aio-clamav:latest
user: "100"
init: false
healthcheck:
start_period: 60s
test: clamdcheck.sh
test: /healthcheck.sh
interval: 30s
timeout: 30s
start_interval: 5s
@@ -350,7 +351,6 @@ services:
environment:
- TZ=${TIMEZONE}
- MAX_SIZE=${NEXTCLOUD_UPLOAD_LIMIT}
- CLAMD_STARTUP_TIMEOUT=90
volumes:
- nextcloud_aio_clamav:/var/lib/clamav:rw
restart: unless-stopped
@@ -358,14 +358,16 @@ services:
- clamav
read_only: true
tmpfs:
- /var/lock
- /var/log/clamav
- /tmp
- /var/log/clamav
- /run/clamav
- /var/log/supervisord
- /var/run/supervisord
cap_drop:
- NET_RAW
nextcloud-aio-onlyoffice:
image: nextcloud/aio-onlyoffice:latest
image: ghcr.io/nextcloud-releases/aio-onlyoffice:latest
init: true
healthcheck:
start_period: 60s
@@ -390,7 +392,7 @@ services:
- NET_RAW
nextcloud-aio-imaginary:
image: nextcloud/aio-imaginary:latest
image: ghcr.io/nextcloud-releases/aio-imaginary:latest
user: "65534"
init: true
healthcheck:
@@ -417,7 +419,7 @@ services:
- /tmp
nextcloud-aio-fulltextsearch:
image: nextcloud/aio-fulltextsearch:latest
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:latest
init: false
healthcheck:
start_period: 60s
@@ -448,7 +450,7 @@ services:
- NET_RAW
nextcloud-aio-whiteboard:
image: nextcloud/aio-whiteboard:latest
image: ghcr.io/nextcloud-releases/aio-whiteboard:latest
user: "65534"
init: true
healthcheck:

View File

@@ -24,7 +24,7 @@ First, install docker and docker-compose (v2) if not already done. Then simply r
git clone https://github.com/nextcloud/all-in-one.git
cd all-in-one/manual-install
```
Then copy the sample.conf to default environment file, e.g. `cp sample.conf .env`, open the new conf file, e.g. with `nano .env`, edit all values that are marked with `# TODO!`, close and save the file. (Note: there is no clamav image for arm64).<br>
Then copy the sample.conf to default environment file, e.g. `cp sample.conf .env`, open the new conf file, e.g. with `nano .env`, edit all values that are marked with `# TODO!`, close and save the file.<br>
⚠️ **Warning**: Do not use the symbols `@` and `:` in your passwords. These symbols are used to build database connection strings. You will experience issues when using these symbols! Also please note that values inside the latest.yaml that are not exposed as variables are not officially supported to be changed. See for example [this report](https://github.com/nextcloud/all-in-one/issues/5612).
Now copy the provided yaml file to a compose.yaml file by running `cp latest.yml compose.yaml`.
@@ -32,9 +32,9 @@ Now copy the provided yaml file to a compose.yaml file by running `cp latest.yml
Now you should be ready to go with `sudo docker compose up`.
## Docker profiles
The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, talk, whiteboard, talk-recording, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`. (Note: there is no clamav image for arm64).
The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, talk, whiteboard, talk-recording, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`.
For a complete all-in-one with collabora use `sudo docker compose --profile collabora --profile talk --profile talk-recording --profile clamav --profile imaginary --profile fulltextsearch --profile whiteboard up`. (Note: there is no clamav image for arm64).
For a complete all-in-one with collabora use `sudo docker compose --profile collabora --profile talk --profile talk-recording --profile clamav --profile imaginary --profile fulltextsearch --profile whiteboard up`.
## How to update?
Since the AIO containers may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade your containers.

View File

@@ -24,8 +24,8 @@ WHITEBOARD_ENABLED="no" # Setting this to "yes" (with quotes) enables t
APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and if that is running on the same host and using localhost to connect
APACHE_MAX_SIZE=17179869184 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).
ADDITIONAL_COLLABORA_OPTIONS=['--o:security.seccomp=true'] # You can add additional collabora options here by using the array syntax.
COLLABORA_DICTIONARIES="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" # You can change this in order to enable other dictionaries for collabora
COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
FULLTEXTSEARCH_JAVA_OPTIONS="-Xms512M -Xmx512M" # Allows to adjust the fulltextsearch java options.
INSTALL_LATEST_MAJOR=no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.

View File

@@ -37,6 +37,7 @@ cd manual-install || exit
sed -i "s|'||g" containers.yml
sed -i '/display_name:/d' containers.yml
sed -i '/THIS_IS_AIO/d' containers.yml
sed -i "s|%COLLABORA_SECCOMP_POLICY% ||g" containers.yml
sed -i '/stop_grace_period:/s/$/s/' containers.yml
sed -i '/: \[\]/d' containers.yml
sed -i 's|- source: |- |' containers.yml
@@ -74,7 +75,7 @@ do
done
sed -i 's|_ENABLED=|_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.|' sample.conf
sed -i 's|CLAMAV_ENABLED=no.*|CLAMAV_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically. Note: arm64 has no clamav support|' sample.conf
sed -i 's|CLAMAV_ENABLED=no.*|CLAMAV_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.|' sample.conf
sed -i 's|TALK_ENABLED=no|TALK_ENABLED="yes"|' sample.conf
sed -i 's|COLLABORA_ENABLED=no|COLLABORA_ENABLED="yes"|' sample.conf
sed -i 's|COLLABORA_DICTIONARIES=|COLLABORA_DICTIONARIES="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" # You can change this in order to enable other dictionaries for collabora|' sample.conf
@@ -129,6 +130,13 @@ echo "$OUTPUT" > containers.yml
sed -i '/container_name/d' containers.yml
sed -i 's|^ $||' containers.yml
# Additional config for collabora
cat << EOL > /tmp/additional-collabora.config
command: \${ADDITIONAL_COLLABORA_OPTIONS}
EOL
sed -i "/^ nextcloud-aio-collabora:/r /tmp/additional-collabora.config" containers.yml
sed -i "/^COLLABORA_DICTIONARIES.*/i ADDITIONAL_COLLABORA_OPTIONS=['--o:security.seccomp=true'] # You can add additional collabora options here by using the array syntax." sample.conf
VOLUMES="$(grep -oP 'nextcloud_aio_[a-z_]+' containers.yml | sort -u)"
mapfile -t VOLUMES <<< "$VOLUMES"
echo "" >> containers.yml

View File

@@ -41,7 +41,7 @@ The only way to fix this on your side is upgrading regularly (e.g. by enabling d
- e.g. `nextcloud/aio-nextcloud:php8.0-latest` or `nextcloud/aio-nextcloud:php8.0-latest-arm64`
- However, if you are unsure check the docker hub (https://hub.docker.com/r/nextcloud/aio-nextcloud/tags)
- However, if you are unsure check the ghcr.io (https://github.com/nextcloud-releases/all-in-one/pkgs/container/aio-nextcloud/versions?filters%5Bversion_type%5D=tagged)
- Using nano and the arrow keys to navigate:
- `sudo nano /tmp/nextcloud-aio-nextcloud` making changes as above, then `[Ctrl]+[o]` -> `[Enter]` and `[Ctrl]+[x]` to save and exit.
6. Next, stop and remove the current container:
@@ -95,7 +95,7 @@ Make **note** of the version which is compatible, rounding down to 1 digit after
##### 5. Find the correct container version
In general it should be ```nextcloud/aio-nextcloud:php8.x-latest-arm64``` or `nextcloud/aio-nextcloud:php8.x-latest` replacing `x` with the version you require.
However, if you are unsure check the docker hub (https://hub.docker.com/r/nextcloud/aio-nextcloud/tags)
However, if you are unsure check the ghcr.io (https://github.com/nextcloud-releases/all-in-one/pkgs/container/aio-nextcloud/versions?filters%5Bversion_type%5D=tagged)
##### 6. Replace the container
- Navigate to the ```nextcloud-aio-nextcloud``` container within portainer

View File

@@ -149,7 +149,7 @@ apt install --no-install-recommends qemu-system qemu-utils libvirt-clients libvi
--env TALK_PORT=3478 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:latest
ghcr.io/nextcloud-releases/all-in-one:latest
```
The last command may take a few minutes. When it's finished, you should see a success message, saying "Initial startup of Nextcloud All-in-One complete!". Now exit the console session with `Ctrl + [c]`. This concludes the setup for this particular VM.

View File

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

View File

@@ -3,6 +3,9 @@
> [!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/).
> [!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.
You can run the containers that are build for AIO with Kubernetes using this Helm chart. This comes with a few downsides, that are discussed below.
### Advantages

View File

@@ -61,7 +61,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
image: nextcloud/aio-apache:20250204_102259
image: ghcr.io/nextcloud-releases/aio-apache:20250408_081359
readinessProbe:
exec:
command:

View File

@@ -36,7 +36,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
image: "alpine:3.20"
image: ghcr.io/nextcloud-releases/aio-alpine:20250408_081359
command:
- mkdir
- "-p"
@@ -55,17 +55,15 @@ spec:
{{- end }}
containers:
- env:
- name: CLAMD_STARTUP_TIMEOUT
value: "90"
- name: MAX_SIZE
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-clamav:20250204_102259
image: ghcr.io/nextcloud-releases/aio-clamav:20250408_081359
readinessProbe:
exec:
command:
- clamdcheck.sh
- /healthcheck.sh
failureThreshold: 9
initialDelaySeconds: 60
periodSeconds: 30
@@ -73,7 +71,7 @@ spec:
livenessProbe:
exec:
command:
- clamdcheck.sh
- /healthcheck.sh
failureThreshold: 9
initialDelaySeconds: 60
periodSeconds: 30

View File

@@ -21,7 +21,8 @@ spec:
io.kompose.service: nextcloud-aio-collabora
spec:
containers:
- env:
- args: {{ .Values.ADDITIONAL_COLLABORA_OPTIONS | default list | toJson }}
env:
- name: DONT_GEN_SSL_CERT
value: "1"
- name: TZ
@@ -31,10 +32,10 @@ spec:
- 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:home_mode.enable=true {{ .Values.COLLABORA_SECCOMP_POLICY }} --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=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: nextcloud/aio-collabora:20250204_102259
image: ghcr.io/nextcloud-releases/aio-collabora:20250408_081359
readinessProbe:
exec:
command:

View File

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

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: "alpine:3.20"
image: ghcr.io/nextcloud-releases/aio-alpine:20250408_081359
command:
- chmod
- "777"
@@ -54,7 +54,7 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
image: nextcloud/aio-fulltextsearch:20250204_102259
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250408_081359
readinessProbe:
exec:
command:

View File

@@ -38,7 +38,7 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-imaginary:20250204_102259
image: ghcr.io/nextcloud-releases/aio-imaginary:20250408_081359
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: "alpine:3.20"
image: ghcr.io/nextcloud-releases/aio-alpine:20250408_081359
command:
- chmod
- "777"
@@ -80,6 +80,8 @@ spec:
value: "{{ .Values.SERVERINFO_TOKEN }}"
- name: NEXTCLOUD_DEFAULT_QUOTA
value: "{{ .Values.NEXTCLOUD_DEFAULT_QUOTA }}"
- name: NEXTCLOUD_SKELETON_DIRECTORY
value: "{{ .Values.NEXTCLOUD_SKELETON_DIRECTORY | default "" }}"
- name: NEXTCLOUD_MAINTENANCE_WINDOW
value: "{{ .Values.NEXTCLOUD_MAINTENANCE_WINDOW }}"
- name: ADDITIONAL_APKS
@@ -180,7 +182,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
image: nextcloud/aio-nextcloud:20250204_102259
image: ghcr.io/nextcloud-releases/aio-nextcloud:20250408_081359
{{- 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

@@ -53,7 +53,9 @@ spec:
value: nextcloud-aio-redis
- name: REDIS_HOST_PASSWORD
value: "{{ .Values.REDIS_PASSWORD }}"
image: nextcloud/aio-notify-push:20250204_102259
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-notify-push:20250408_081359
readinessProbe:
exec:
command:

View File

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

View File

@@ -39,7 +39,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-redis:20250204_102259
image: ghcr.io/nextcloud-releases/aio-redis:20250408_081359
readinessProbe:
exec:
command:

View File

@@ -52,7 +52,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk:20250204_102259
image: ghcr.io/nextcloud-releases/aio-talk:20250408_081359
readinessProbe:
exec:
command:

View File

@@ -44,7 +44,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk-recording:20250204_102259
image: ghcr.io/nextcloud-releases/aio-talk-recording:20250408_081359
readinessProbe:
exec:
command:

View File

@@ -48,7 +48,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-whiteboard:20250204_102259
image: ghcr.io/nextcloud-releases/aio-whiteboard:20250408_081359
readinessProbe:
exec:
command:

View File

@@ -42,6 +42,7 @@ sed -i "s|\${TALK_PORT}:\${TALK_PORT}/|$TALK_PORT:$TALK_PORT/|g" latest.yml
sed -i "s|- \${APACHE_PORT}|- $APACHE_PORT|" latest.yml
sed -i "s|- \${TALK_PORT}|- $TALK_PORT|" latest.yml
sed -i "s|\${NEXTCLOUD_DATADIR}|$NEXTCLOUD_DATADIR|" latest.yml
sed -i "s|\${ADDITIONAL_COLLABORA_OPTIONS}|ADDITIONAL_COLLABORA_OPTIONS_PLACEHOLDER|" latest.yml
sed -i "/name: nextcloud-aio/,$ d" latest.yml
sed -i "/NEXTCLOUD_DATADIR/d" latest.yml
sed -i "/\${NEXTCLOUD_MOUNT}/d" latest.yml
@@ -71,7 +72,7 @@ find ./ -name '*networkpolicy.yaml' -exec sed -i "s|manual-install-nextcloud-aio
cat << EOL > /tmp/initcontainers
initContainers:
- name: init-volumes
image: "alpine:3.20"
image: ghcr.io/nextcloud-releases/aio-alpine:$DOCKER_TAG
command:
- chmod
- "777"
@@ -80,7 +81,7 @@ EOL
cat << EOL > /tmp/initcontainers.database
initContainers:
- name: init-subpath
image: "alpine:3.20"
image: ghcr.io/nextcloud-releases/aio-alpine:$DOCKER_TAG
command:
- mkdir
- "-p"
@@ -93,7 +94,7 @@ EOL
cat << EOL > /tmp/initcontainers.clamav
initContainers:
- name: init-subpath
image: "alpine:3.20"
image: ghcr.io/nextcloud-releases/aio-alpine:$DOCKER_TAG
command:
- mkdir
- "-p"
@@ -107,7 +108,7 @@ cat << EOL > /tmp/initcontainers.nextcloud
# AIO settings start # Do not remove or change this line!
initContainers:
- name: init-volumes
image: "alpine:3.20"
image: ghcr.io/nextcloud-releases/aio-alpine:$DOCKER_TAG
command:
- chmod
- "777"
@@ -301,6 +302,8 @@ cat << EOL > /tmp/additional.config
value: "{{ .Values.SERVERINFO_TOKEN }}"
- name: NEXTCLOUD_DEFAULT_QUOTA
value: "{{ .Values.NEXTCLOUD_DEFAULT_QUOTA }}"
- name: NEXTCLOUD_SKELETON_DIRECTORY
value: "{{ .Values.NEXTCLOUD_SKELETON_DIRECTORY | default "" }}"
- name: NEXTCLOUD_MAINTENANCE_WINDOW
value: "{{ .Values.NEXTCLOUD_MAINTENANCE_WINDOW }}"
EOL
@@ -413,6 +416,7 @@ APPS_ALLOWLIST: # This allows to configure allowed apps that will be show
ADDITIONAL_TRUSTED_PROXY: # Allows to add one additional ip-address to Nextcloud's trusted proxies and to the Office WOPI-allowlist automatically. Set it e.g. like this: 'your.public.ip-address'. You can also use an ip-range here.
ADDITIONAL_TRUSTED_DOMAIN: # Allows to add one domain to Nextcloud's trusted domains and also generates a certificate automatically for it
NEXTCLOUD_DEFAULT_QUOTA: "10 GB" # Allows to adjust the default quota that will be taken into account in Nextcloud for new users. Setting it to "unlimited" will set it to unlimited
NEXTCLOUD_SKELETON_DIRECTORY: # Allows to adjust the sekeleton dir for Nextcloud. Setting it to "empty" will set the value to an empty string "" which will turn off the setting for new users in Nextcloud.
NEXTCLOUD_MAINTENANCE_WINDOW: # Allows to define the maintenance window for Nextcloud. See https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/background_jobs_configuration.html#parameters for possible values
SMTP_HOST: # (empty by default): The hostname of the SMTP server.
SMTP_SECURE: # (empty by default): Set to 'ssl' to use SSL, or 'tls' to use STARTTLS.
@@ -467,6 +471,11 @@ EOL
# shellcheck disable=SC1083
find ./ \( -not -name '*collabora-deployment.yaml*' -not -name '*apache-deployment.yaml*' -not -name '*onlyoffice-deployment.yaml*' -name "*deployment.yaml" \) -exec sed -i "/^ securityContext:$/r /tmp/security.conf" \{} \;
# shellcheck disable=SC1083
find ./ -name '*collabora-deployment.yaml*' -exec sed -i "/ADDITIONAL_COLLABORA_OPTIONS_PLACEHOLDER/d" \{} \;
# shellcheck disable=SC1083
find ./ -name '*collabora-deployment.yaml*' -exec sed -i "s/- args:/- args: \{\{ .Values.ADDITIONAL_COLLABORA_OPTIONS | default list | toJson \}\}/" \{} \;
cat << EOL > /tmp/security.conf
# The items below only work in container context
allowPrivilegeEscalation: false
@@ -496,7 +505,7 @@ cat << EOL > /tmp/security.conf
{{- end }} # AIO-config - do not change this comment!
EOL
# shellcheck disable=SC1083
find ./ -name '*nextcloud-deployment.yaml*' -exec sed -i "/nextcloud\/aio-nextcloud:.*/r /tmp/security.conf" \{} \;
find ./ -name '*nextcloud-deployment.yaml*' -exec sed -i "/image: .*nextcloud.*aio-nextcloud:.*/r /tmp/security.conf" \{} \;
chmod 777 -R ./

View File

@@ -23,8 +23,8 @@ WHITEBOARD_ENABLED: "no" # Setting this to "yes" (with quotes) enables
APACHE_MAX_SIZE: "17179869184" # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
APACHE_PORT: 443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).
ADDITIONAL_COLLABORA_OPTIONS: ['--o:security.seccomp=true'] # You can add additional collabora options here by using the array syntax.
COLLABORA_DICTIONARIES: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru # You can change this in order to enable other dictionaries for collabora
COLLABORA_SECCOMP_POLICY: --o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
FULLTEXTSEARCH_JAVA_OPTIONS: -Xms512M -Xmx512M # Allows to adjust the fulltextsearch java options.
INSTALL_LATEST_MAJOR: no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.
@@ -60,6 +60,7 @@ APPS_ALLOWLIST: # This allows to configure allowed apps that will be show
ADDITIONAL_TRUSTED_PROXY: # Allows to add one additional ip-address to Nextcloud's trusted proxies and to the Office WOPI-allowlist automatically. Set it e.g. like this: 'your.public.ip-address'. You can also use an ip-range here.
ADDITIONAL_TRUSTED_DOMAIN: # Allows to add one domain to Nextcloud's trusted domains and also generates a certificate automatically for it
NEXTCLOUD_DEFAULT_QUOTA: "10 GB" # Allows to adjust the default quota that will be taken into account in Nextcloud for new users. Setting it to "unlimited" will set it to unlimited
NEXTCLOUD_SKELETON_DIRECTORY: # Allows to adjust the sekeleton dir for Nextcloud. Setting it to "empty" will set the value to an empty string "" which will turn off the setting for new users in Nextcloud.
NEXTCLOUD_MAINTENANCE_WINDOW: # Allows to define the maintenance window for Nextcloud. See https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/background_jobs_configuration.html#parameters for possible values
SMTP_HOST: # (empty by default): The hostname of the SMTP server.
SMTP_SECURE: # (empty by default): Set to 'ssl' to use SSL, or 'tls' to use STARTTLS.

View File

@@ -34,7 +34,7 @@ docker run \
--name nextcloud-aio-mastercontainer \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock \
nextcloud/all-in-one:latest
ghcr.io/nextcloud-releases/all-in-one:latest
```
### 4. Start your server

105
php/composer.lock generated
View File

@@ -8,16 +8,16 @@
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.9.2",
"version": "7.9.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "d281ed313b989f213357e3be1a179f02196ac99b"
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
"reference": "d281ed313b989f213357e3be1a179f02196ac99b",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"shasum": ""
},
"require": {
@@ -114,7 +114,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.9.2"
"source": "https://github.com/guzzle/guzzle/tree/7.9.3"
},
"funding": [
{
@@ -130,20 +130,20 @@
"type": "tidelift"
}
],
"time": "2024-07-24T11:22:20+00:00"
"time": "2025-03-27T13:37:11+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.0.4",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
"url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
"shasum": ""
},
"require": {
@@ -197,7 +197,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.0.4"
"source": "https://github.com/guzzle/promises/tree/2.2.0"
},
"funding": [
{
@@ -213,20 +213,20 @@
"type": "tidelift"
}
],
"time": "2024-10-17T10:06:22+00:00"
"time": "2025-03-27T13:27:01+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.7.0",
"version": "2.7.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"shasum": ""
},
"require": {
@@ -313,7 +313,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.7.0"
"source": "https://github.com/guzzle/psr7/tree/2.7.1"
},
"funding": [
{
@@ -329,7 +329,7 @@
"type": "tidelift"
}
],
"time": "2024-07-18T11:15:46+00:00"
"time": "2025-03-27T12:30:47+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -391,16 +391,16 @@
},
{
"name": "laravel/serializable-closure",
"version": "v2.0.3",
"version": "v2.0.4",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "f379c13663245f7aa4512a7869f62eb14095f23f"
"reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f",
"reference": "f379c13663245f7aa4512a7869f62eb14095f23f",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841",
"reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841",
"shasum": ""
},
"require": {
@@ -448,7 +448,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2025-02-11T15:03:05+00:00"
"time": "2025-03-19T13:51:03+00:00"
},
{
"name": "nikic/fast-route",
@@ -557,16 +557,16 @@
},
{
"name": "php-di/php-di",
"version": "7.0.8",
"version": "7.0.9",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/PHP-DI.git",
"reference": "98ddc81f8f768a2ad39e4cbe737285eaeabe577a"
"reference": "d8480267f5cf239650debba704f3ecd15b638cde"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/98ddc81f8f768a2ad39e4cbe737285eaeabe577a",
"reference": "98ddc81f8f768a2ad39e4cbe737285eaeabe577a",
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/d8480267f5cf239650debba704f3ecd15b638cde",
"reference": "d8480267f5cf239650debba704f3ecd15b638cde",
"shasum": ""
},
"require": {
@@ -583,7 +583,7 @@
"friendsofphp/proxy-manager-lts": "^1",
"mnapoli/phpunit-easymock": "^1.3",
"phpunit/phpunit": "^9.6",
"vimeo/psalm": "^4.6"
"vimeo/psalm": "^5|^6"
},
"suggest": {
"friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)"
@@ -614,7 +614,7 @@
],
"support": {
"issues": "https://github.com/PHP-DI/PHP-DI/issues",
"source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.8"
"source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.9"
},
"funding": [
{
@@ -626,7 +626,7 @@
"type": "tidelift"
}
],
"time": "2025-01-28T21:02:46+00:00"
"time": "2025-02-28T12:46:35+00:00"
},
{
"name": "php-di/slim-bridge",
@@ -2210,26 +2210,29 @@
},
{
"name": "doctrine/deprecations",
"version": "1.1.4",
"version": "1.1.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9"
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9",
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"phpunit/phpunit": "<=7.5 || >=13"
},
"require-dev": {
"doctrine/coding-standard": "^9 || ^12",
"phpstan/phpstan": "1.4.10 || 2.0.3",
"doctrine/coding-standard": "^9 || ^12 || ^13",
"phpstan/phpstan": "1.4.10 || 2.1.11",
"phpstan/phpstan-phpunit": "^1.0 || ^2",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
"psr/log": "^1 || ^2 || ^3"
},
"suggest": {
@@ -2249,9 +2252,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.4"
"source": "https://github.com/doctrine/deprecations/tree/1.1.5"
},
"time": "2024-12-07T21:18:45+00:00"
"time": "2025-04-07T20:06:18+00:00"
},
{
"name": "felixfbecker/advanced-json-rpc",
@@ -2699,16 +2702,16 @@
},
{
"name": "phpstan/phpdoc-parser",
"version": "2.0.1",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "72e51f7c32c5aef7c8b462195b8c599b11199893"
"reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/72e51f7c32c5aef7c8b462195b8c599b11199893",
"reference": "72e51f7c32c5aef7c8b462195b8c599b11199893",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
"reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
"shasum": ""
},
"require": {
@@ -2740,9 +2743,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.1"
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0"
},
"time": "2025-02-13T12:25:43+00:00"
"time": "2025-02-19T13:28:12+00:00"
},
{
"name": "sebastian/diff",
@@ -2939,16 +2942,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.17",
"version": "v6.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "799445db3f15768ecc382ac5699e6da0520a0a04"
"reference": "2e4af9c952617cc3f9559ff706aee420a8464c36"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04",
"reference": "799445db3f15768ecc382ac5699e6da0520a0a04",
"url": "https://api.github.com/repos/symfony/console/zipball/2e4af9c952617cc3f9559ff706aee420a8464c36",
"reference": "2e4af9c952617cc3f9559ff706aee420a8464c36",
"shasum": ""
},
"require": {
@@ -3013,7 +3016,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.17"
"source": "https://github.com/symfony/console/tree/v6.4.20"
},
"funding": [
{
@@ -3029,7 +3032,7 @@
"type": "tidelift"
}
],
"time": "2024-12-07T12:07:30+00:00"
"time": "2025-03-03T17:16:38+00:00"
},
{
"name": "symfony/filesystem",

View File

@@ -15,7 +15,7 @@
"image": {
"type": "string",
"minLength": 1,
"pattern": "^[a-z0-9/-]+$"
"pattern": "^(ghcr.io/)?[a-z0-9/-]+$"
},
"expose": {
"type": "array",

View File

@@ -13,7 +13,7 @@
"nextcloud-aio-whiteboard"
],
"display_name": "Apache",
"image": "nextcloud/aio-apache",
"image": "ghcr.io/nextcloud-releases/aio-apache",
"user": "33",
"init": true,
"healthcheck": {
@@ -84,7 +84,7 @@
"container_name": "nextcloud-aio-database",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Database",
"image": "nextcloud/aio-postgresql",
"image": "ghcr.io/nextcloud-releases/aio-postgresql",
"user": "999",
"init": true,
"healthcheck": {
@@ -149,7 +149,7 @@
"nextcloud-aio-docker-socket-proxy"
],
"display_name": "Nextcloud",
"image": "nextcloud/aio-nextcloud",
"image": "ghcr.io/nextcloud-releases/aio-nextcloud",
"init": true,
"healthcheck": {
"start_period": "0s",
@@ -271,7 +271,7 @@
"container_name": "nextcloud-aio-notify-push",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Notify Push",
"image": "nextcloud/aio-notify-push",
"image": "ghcr.io/nextcloud-releases/aio-notify-push",
"user": "33",
"init": true,
"healthcheck": {
@@ -319,7 +319,7 @@
"container_name": "nextcloud-aio-redis",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Redis",
"image": "nextcloud/aio-redis",
"image": "ghcr.io/nextcloud-releases/aio-redis",
"user": "999",
"init": true,
"healthcheck": {
@@ -361,7 +361,7 @@
"image_tag": "%AIO_CHANNEL%",
"documentation": "https://github.com/nextcloud/all-in-one/discussions/1358",
"display_name": "Collabora",
"image": "nextcloud/aio-collabora",
"image": "ghcr.io/nextcloud-releases/aio-collabora",
"init": true,
"healthcheck": {
"start_period": "60s",
@@ -404,7 +404,7 @@
"image_tag": "%AIO_CHANNEL%",
"documentation": "https://github.com/nextcloud/all-in-one/discussions/1358",
"display_name": "Talk",
"image": "nextcloud/aio-talk",
"image": "ghcr.io/nextcloud-releases/aio-talk",
"user": "1000",
"init": true,
"healthcheck": {
@@ -466,7 +466,7 @@
"container_name": "nextcloud-aio-talk-recording",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Talk Recording",
"image": "nextcloud/aio-talk-recording",
"image": "ghcr.io/nextcloud-releases/aio-talk-recording",
"user": "122",
"init": true,
"healthcheck": {
@@ -518,7 +518,7 @@
{
"container_name": "nextcloud-aio-borgbackup",
"image_tag": "%AIO_CHANNEL%",
"image": "nextcloud/aio-borgbackup",
"image": "ghcr.io/nextcloud-releases/aio-borgbackup",
"init": true,
"environment": [
"BORG_REMOTE_REPO=%BORGBACKUP_REMOTE_REPO%",
@@ -586,7 +586,7 @@
{
"container_name": "nextcloud-aio-watchtower",
"image_tag": "%AIO_CHANNEL%",
"image": "nextcloud/aio-watchtower",
"image": "ghcr.io/nextcloud-releases/aio-watchtower",
"init": true,
"environment": [
"CONTAINER_TO_UPDATE=nextcloud-aio-mastercontainer"
@@ -606,7 +606,7 @@
{
"container_name": "nextcloud-aio-domaincheck",
"image_tag": "%AIO_CHANNEL%",
"image": "nextcloud/aio-domaincheck",
"image": "ghcr.io/nextcloud-releases/aio-domaincheck",
"init": true,
"ports": [
{
@@ -637,12 +637,12 @@
"container_name": "nextcloud-aio-clamav",
"image_tag": "%AIO_CHANNEL%",
"display_name": "ClamAV",
"image": "nextcloud/aio-clamav",
"image": "ghcr.io/nextcloud-releases/aio-clamav",
"user": "100",
"init": false,
"healthcheck": {
"start_period": "60s",
"test": "clamdcheck.sh",
"test": "/healthcheck.sh",
"interval": "30s",
"timeout": "30s",
"start_interval": "5s",
@@ -654,8 +654,7 @@
"internal_port": "3310",
"environment": [
"TZ=%TIMEZONE%",
"MAX_SIZE=%NEXTCLOUD_UPLOAD_LIMIT%",
"CLAMD_STARTUP_TIMEOUT=90"
"MAX_SIZE=%NEXTCLOUD_UPLOAD_LIMIT%"
],
"volumes": [
{
@@ -670,9 +669,11 @@
],
"read_only": true,
"tmpfs": [
"/var/lock",
"/tmp",
"/var/log/clamav",
"/tmp"
"/run/clamav",
"/var/log/supervisord",
"/var/run/supervisord"
],
"cap_drop": [
"NET_RAW"
@@ -682,7 +683,7 @@
"container_name": "nextcloud-aio-onlyoffice",
"image_tag": "%AIO_CHANNEL%",
"display_name": "OnlyOffice",
"image": "nextcloud/aio-onlyoffice",
"image": "ghcr.io/nextcloud-releases/aio-onlyoffice",
"init": true,
"healthcheck": {
"start_period": "60s",
@@ -728,7 +729,7 @@
"container_name": "nextcloud-aio-imaginary",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Imaginary",
"image": "nextcloud/aio-imaginary",
"image": "ghcr.io/nextcloud-releases/aio-imaginary",
"user": "65534",
"init": true,
"healthcheck": {
@@ -770,7 +771,7 @@
"image_tag": "%AIO_CHANNEL%",
"documentation": "https://github.com/nextcloud/all-in-one/discussions/1709",
"display_name": "Fulltextsearch",
"image": "nextcloud/aio-fulltextsearch",
"image": "ghcr.io/nextcloud-releases/aio-fulltextsearch",
"init": false,
"healthcheck": {
"start_period": "60s",
@@ -818,7 +819,7 @@
"container_name": "nextcloud-aio-docker-socket-proxy",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Docker Socket Proxy",
"image": "nextcloud/aio-docker-socket-proxy",
"image": "ghcr.io/nextcloud-releases/aio-docker-socket-proxy",
"init": true,
"internal_port": "2375",
"environment": [
@@ -844,7 +845,7 @@
"container_name": "nextcloud-aio-whiteboard",
"image_tag": "%AIO_CHANNEL%",
"display_name": "Whiteboard",
"image": "nextcloud/aio-whiteboard",
"image": "ghcr.io/nextcloud-releases/aio-whiteboard",
"user": "65534",
"init": true,
"healthcheck": {

View File

@@ -102,7 +102,6 @@ $app->get('/containers', function (Request $request, Response $response, array $
'last_backup_time' => $configurationManager->GetLastBackupTime(),
'backup_times' => $configurationManager->GetBackupTimes(),
'current_channel' => $dockerActionManger->GetCurrentChannel(),
'is_x64_platform' => $configurationManager->isx64Platform(),
'is_clamav_enabled' => $configurationManager->isClamavEnabled(),
'is_onlyoffice_enabled' => $configurationManager->isOnlyofficeEnabled(),
'is_collabora_enabled' => $configurationManager->isCollaboraEnabled(),
@@ -114,6 +113,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped(),
'talk_port' => $configurationManager->GetTalkPort(),
'collabora_dictionaries' => $configurationManager->GetCollaboraDictionaries(),
'collabora_additional_options' => $configurationManager->GetAdditionalCollaboraOptions(),
'automatic_updates' => $configurationManager->areAutomaticUpdatesEnabled(),
'is_backup_section_enabled' => $configurationManager->isBackupSectionEnabled(),
'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled(),

View File

@@ -134,6 +134,15 @@ readonly class ConfigurationController {
$this->configurationManager->SetCollaboraDictionaries($collaboraDictionaries);
}
if (isset($request->getParsedBody()['delete_collabora_additional_options'])) {
$this->configurationManager->DeleteAdditionalCollaboraOptions();
}
if (isset($request->getParsedBody()['collabora_additional_options'])) {
$additionalCollaboraOptions = $request->getParsedBody()['collabora_additional_options'] ?? '';
$this->configurationManager->SetAdditionalCollaboraOptions($additionalCollaboraOptions);
}
if (isset($request->getParsedBody()['delete_borg_backup_location_vars'])) {
$this->configurationManager->DeleteBorgBackupLocationVars();
}

View File

@@ -41,12 +41,12 @@ readonly class DockerController {
}
}
// Check if docker hub is reachable in order to make sure that we do not try to pull an image if it is down
// Check if registry is reachable in order to make sure that we do not try to pull an image if it is down
// and try to mitigate issues that are arising due to that
if ($pullImage) {
if (!$this->dockerActionManager->isDockerHubReachable($container)) {
if (!$this->dockerActionManager->isRegistryReachable($container)) {
$pullImage = false;
error_log('Not pulling the ' . $container->GetContainerName() . ' image for the ' . $container->GetIdentifier() . ' container because docker hub does not seem to be reachable.');
error_log('Not pulling the ' . $container->GetContainerName() . ' image for the ' . $container->GetIdentifier() . ' container because the registry does not seem to be reachable.');
}
}

View File

@@ -132,7 +132,7 @@ class ConfigurationManager
}
}
public function isx64Platform() : bool {
private function isx64Platform() : bool {
if (php_uname('m') === 'x86_64') {
return true;
} else {
@@ -140,11 +140,7 @@ class ConfigurationManager
}
}
public function isClamavEnabled() : bool {
if (!$this->isx64Platform()) {
return false;
}
public function isClamavEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isClamavEnabled']) && $config['isClamavEnabled'] === 1) {
return true;
@@ -170,10 +166,10 @@ class ConfigurationManager
public function isWhiteboardEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isWhiteboardEnabled']) && $config['isWhiteboardEnabled'] === 1) {
return true;
} else {
if (isset($config['isWhiteboardEnabled']) && $config['isWhiteboardEnabled'] === 0) {
return false;
} else {
return true;
}
}
@@ -904,7 +900,7 @@ class ConfigurationManager
}
public function shouldDomainValidationBeSkipped() : bool {
if (getenv('SKIP_DOMAIN_VALIDATION') !== false) {
if (getenv('SKIP_DOMAIN_VALIDATION') === 'true') {
return true;
}
return false;
@@ -950,6 +946,38 @@ class ConfigurationManager
$this->WriteConfig($config);
}
/**
* @throws InvalidSettingConfigurationException
*/
public function SetAdditionalCollaboraOptions(string $additionalCollaboraOptions) : void {
if ($additionalCollaboraOptions === "") {
throw new InvalidSettingConfigurationException("The additional options must not be empty!");
}
if (!preg_match("#^--o:#", $additionalCollaboraOptions)) {
throw new InvalidSettingConfigurationException("The entered options must start with '--o:'. So the config does not seem to be a valid!");
}
$config = $this->GetConfig();
$config['collabora_additional_options'] = $additionalCollaboraOptions;
$this->WriteConfig($config);
}
public function GetAdditionalCollaboraOptions() : string {
$config = $this->GetConfig();
if(!isset($config['collabora_additional_options'])) {
$config['collabora_additional_options'] = '';
}
return $config['collabora_additional_options'];
}
public function DeleteAdditionalCollaboraOptions() : void {
$config = $this->GetConfig();
$config['collabora_additional_options'] = '';
$this->WriteConfig($config);
}
public function GetApacheAdditionalNetwork() : string {
$envVariableName = 'APACHE_ADDITIONAL_NETWORK';
$configName = 'apache_additional_network';

View File

@@ -4,6 +4,7 @@ namespace AIO;
use AIO\Docker\DockerHubManager;
use DI\Container;
use AIO\Docker\GitHubContainerRegistryManager;
class DependencyInjection
{
@@ -15,6 +16,11 @@ class DependencyInjection
new DockerHubManager()
);
$container->set(
GitHubContainerRegistryManager::class,
new GitHubContainerRegistryManager()
);
$container->set(
\AIO\Data\ConfigurationManager::class,
new \AIO\Data\ConfigurationManager()
@@ -24,7 +30,8 @@ class DependencyInjection
new \AIO\Docker\DockerActionManager(
$container->get(\AIO\Data\ConfigurationManager::class),
$container->get(\AIO\ContainerDefinitionFetcher::class),
$container->get(DockerHubManager::class)
$container->get(DockerHubManager::class),
$container->get(GitHubContainerRegistryManager::class)
)
);
$container->set(

View File

@@ -3,12 +3,12 @@
namespace AIO\Docker;
use AIO\Container\Container;
use AIO\Container\VersionState;
use AIO\Container\ContainerState;
use AIO\Container\VersionState;
use AIO\ContainerDefinitionFetcher;
use AIO\Data\ConfigurationManager;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use AIO\ContainerDefinitionFetcher;
use http\Env\Response;
readonly class DockerActionManager {
@@ -16,18 +16,19 @@ readonly class DockerActionManager {
private Client $guzzleClient;
public function __construct(
private ConfigurationManager $configurationManager,
private ContainerDefinitionFetcher $containerDefinitionFetcher,
private DockerHubManager $dockerHubManager
private ConfigurationManager $configurationManager,
private ContainerDefinitionFetcher $containerDefinitionFetcher,
private DockerHubManager $dockerHubManager,
private GitHubContainerRegistryManager $gitHubContainerRegistryManager
) {
$this->guzzleClient = new Client(['curl' => [CURLOPT_UNIX_SOCKET_PATH => '/var/run/docker.sock']]);
}
private function BuildApiUrl(string $url) : string {
private function BuildApiUrl(string $url): string {
return sprintf('http://127.0.0.1/%s/%s', self::API_VERSION, $url);
}
private function BuildImageName(Container $container) : string {
private function BuildImageName(Container $container): string {
$tag = $container->GetImageTag();
if ($tag === '%AIO_CHANNEL%') {
$tag = $this->GetCurrentChannel();
@@ -35,8 +36,7 @@ readonly class DockerActionManager {
return $container->GetContainerName() . ':' . $tag;
}
public function GetContainerRunningState(Container $container) : ContainerState
{
public function GetContainerRunningState(Container $container): ContainerState {
$url = $this->BuildApiUrl(sprintf('containers/%s/json', urlencode($container->GetIdentifier())));
try {
$response = $this->guzzleClient->get($url);
@@ -56,8 +56,7 @@ readonly class DockerActionManager {
}
}
public function GetContainerRestartingState(Container $container) : ContainerState
{
public function GetContainerRestartingState(Container $container): ContainerState {
$url = $this->BuildApiUrl(sprintf('containers/%s/json', urlencode($container->GetIdentifier())));
try {
$response = $this->guzzleClient->get($url);
@@ -77,8 +76,7 @@ readonly class DockerActionManager {
}
}
public function GetContainerUpdateState(Container $container) : VersionState
{
public function GetContainerUpdateState(Container $container): VersionState {
$tag = $container->GetImageTag();
if ($tag === '%AIO_CHANNEL%') {
$tag = $this->GetCurrentChannel();
@@ -88,12 +86,12 @@ readonly class DockerActionManager {
if ($runningDigests === null) {
return VersionState::Different;
}
$remoteDigest = $this->dockerHubManager->GetLatestDigestOfTag($container->GetContainerName(), $tag);
$remoteDigest = $this->GetLatestDigestOfTag($container->GetContainerName(), $tag);
if ($remoteDigest === null) {
return VersionState::Equal;
}
foreach($runningDigests as $runningDigest) {
foreach ($runningDigests as $runningDigest) {
if ($runningDigest === $remoteDigest) {
return VersionState::Equal;
}
@@ -101,8 +99,7 @@ readonly class DockerActionManager {
return VersionState::Different;
}
public function GetContainerStartingState(Container $container) : ContainerState
{
public function GetContainerStartingState(Container $container): ContainerState {
$runningState = $this->GetContainerRunningState($container);
if ($runningState === ContainerState::Stopped || $runningState === ContainerState::ImageDoesNotExist) {
return $runningState;
@@ -110,9 +107,9 @@ readonly class DockerActionManager {
$containerName = $container->GetIdentifier();
$internalPort = $container->GetInternalPort();
if($internalPort === '%APACHE_PORT%') {
if ($internalPort === '%APACHE_PORT%') {
$internalPort = $this->configurationManager->GetApachePort();
} elseif($internalPort === '%TALK_PORT%') {
} elseif ($internalPort === '%TALK_PORT%') {
$internalPort = $this->configurationManager->GetTalkPort();
}
@@ -129,7 +126,7 @@ readonly class DockerActionManager {
}
}
public function DeleteContainer(Container $container) : void {
public function DeleteContainer(Container $container): void {
$url = $this->BuildApiUrl(sprintf('containers/%s?v=true', urlencode($container->GetIdentifier())));
try {
$this->guzzleClient->delete($url);
@@ -140,8 +137,7 @@ readonly class DockerActionManager {
}
}
public function GetLogs(string $id) : string
{
public function GetLogs(string $id): string {
$url = $this->BuildApiUrl(
sprintf(
'containers/%s/logs?stdout=true&stderr=true&timestamps=true',
@@ -162,7 +158,7 @@ readonly class DockerActionManager {
return $response;
}
public function StartContainer(Container $container) : void {
public function StartContainer(Container $container): void {
$url = $this->BuildApiUrl(sprintf('containers/%s/start', urlencode($container->GetIdentifier())));
try {
$this->guzzleClient->post($url);
@@ -171,10 +167,9 @@ readonly class DockerActionManager {
}
}
public function CreateVolumes(Container $container): void
{
public function CreateVolumes(Container $container): void {
$url = $this->BuildApiUrl('volumes/create');
foreach($container->GetVolumes()->GetVolumes() as $volume) {
foreach ($container->GetVolumes()->GetVolumes() as $volume) {
$forbiddenChars = [
'/',
];
@@ -184,7 +179,7 @@ readonly class DockerActionManager {
}
$firstChar = substr($volume->name, 0, 1);
if(!in_array($firstChar, $forbiddenChars)) {
if (!in_array($firstChar, $forbiddenChars)) {
$this->guzzleClient->request(
'POST',
$url,
@@ -198,7 +193,7 @@ readonly class DockerActionManager {
}
}
public function CreateContainer(Container $container) : void {
public function CreateContainer(Container $container): void {
$volumes = [];
foreach ($container->GetVolumes()->GetVolumes() as $volume) {
// // NEXTCLOUD_MOUNT gets added via bind-mount later on
@@ -226,12 +221,12 @@ readonly class DockerActionManager {
$requestBody['HostConfig']['Binds'] = $volumes;
}
foreach($container->GetSecrets() as $secret) {
foreach ($container->GetSecrets() as $secret) {
$this->configurationManager->GetAndGenerateSecret($secret);
}
$aioVariables = $container->GetAioVariables()->GetVariables();
foreach($aioVariables as $variable) {
foreach ($aioVariables as $variable) {
$config = $this->configurationManager->GetConfig();
$variableArray = explode('=', $variable);
$config[$variableArray[0]] = $variableArray[1];
@@ -244,7 +239,7 @@ readonly class DockerActionManager {
if ($container->GetIdentifier() === 'nextcloud-aio-nextcloud') {
$envs[] = $this->GetAllNextcloudExecCommands();
}
foreach($envs as $key => $env) {
foreach ($envs as $key => $env) {
// TODO: This whole block below is a hack and needs to get reworked in order to support multiple substitutions per line by default for all envs
if (str_starts_with($env, 'extra_params=')) {
$env = str_replace('%COLLABORA_SECCOMP_POLICY%', $this->configurationManager->GetCollaboraSeccompPolicy(), $env);
@@ -256,12 +251,12 @@ readonly class DockerActionManager {
// Original implementation
$patterns = ['/%(.*)%/'];
if(preg_match($patterns[0], $env, $out) === 1) {
if (preg_match($patterns[0], $env, $out) === 1) {
$replacements = array();
if($out[1] === 'NC_DOMAIN') {
if ($out[1] === 'NC_DOMAIN') {
$replacements[1] = $this->configurationManager->GetDomain();
} elseif($out[1] === 'NC_BASE_DN') {
} elseif ($out[1] === 'NC_BASE_DN') {
$replacements[1] = $this->configurationManager->GetBaseDN();
} elseif ($out[1] === 'AIO_TOKEN') {
$replacements[1] = $this->configurationManager->GetToken();
@@ -391,10 +386,10 @@ readonly class DockerActionManager {
} else {
$replacements[1] = '';
}
// Allow to get local ip-address of database container which allows to talk to it even in host mode (the container that requires this needs to be started first then)
// Allow to get local ip-address of database container which allows to talk to it even in host mode (the container that requires this needs to be started first then)
} elseif ($out[1] === 'AIO_DATABASE_HOST') {
$replacements[1] = gethostbyname('nextcloud-aio-database');
// Allow to get local ip-address of caddy container and add it to trusted proxies automatically
// Allow to get local ip-address of caddy container and add it to trusted proxies automatically
} elseif ($out[1] === 'CADDY_IP_ADDRESS') {
$replacements[1] = '';
$communityContainers = $this->configurationManager->GetEnabledCommunityContainers();
@@ -419,7 +414,7 @@ readonly class DockerActionManager {
}
}
if(count($envs) > 0) {
if (count($envs) > 0) {
$requestBody['Env'] = $envs;
}
@@ -429,7 +424,7 @@ readonly class DockerActionManager {
$exposedPorts = [];
if ($container->GetInternalPort() !== 'host') {
foreach($container->GetPorts()->GetPorts() as $value) {
foreach ($container->GetPorts()->GetPorts() as $value) {
$port = $value->port;
$protocol = $value->protocol;
if ($port === '%APACHE_PORT%') {
@@ -449,7 +444,7 @@ readonly class DockerActionManager {
$requestBody['HostConfig']['NetworkMode'] = 'host';
}
if(count($exposedPorts) > 0) {
if (count($exposedPorts) > 0) {
$requestBody['ExposedPorts'] = $exposedPorts;
foreach ($container->GetPorts()->GetPorts() as $value) {
$port = $value->port;
@@ -474,16 +469,16 @@ readonly class DockerActionManager {
$portWithProtocol = $port . '/' . $protocol;
$requestBody['HostConfig']['PortBindings'][$portWithProtocol] = [
[
'HostPort' => $port,
'HostIp' => $ipBinding,
'HostPort' => $port,
'HostIp' => $ipBinding,
]
];
}
}
$devices = [];
foreach($container->GetDevices() as $device) {
if ($device === '/dev/dri' && ! $this->configurationManager->isDriDeviceEnabled()) {
foreach ($container->GetDevices() as $device) {
if ($device === '/dev/dri' && !$this->configurationManager->isDriDeviceEnabled()) {
continue;
}
$devices[] = ["PathOnHost" => $device, "PathInContainer" => $device, "CgroupPermissions" => "rwm"];
@@ -510,7 +505,7 @@ readonly class DockerActionManager {
}
$tmpfs = [];
foreach($container->GetTmpfs() as $tmp) {
foreach ($container->GetTmpfs() as $tmp) {
$mode = "";
if (str_contains($tmp, ':')) {
$mode = explode(':', $tmp)[1];
@@ -519,7 +514,7 @@ readonly class DockerActionManager {
$tmpfs[$tmp] = $mode;
}
if (count($tmpfs) > 0) {
$requestBody['HostConfig']['Tmpfs'] = $tmpfs;
$requestBody['HostConfig']['Tmpfs'] = $tmpfs;
}
$requestBody['HostConfig']['Init'] = $container->GetInit();
@@ -563,21 +558,26 @@ 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
$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') {
// foreach ($container->GetVolumes()->GetVolumes() as $volume) {
// if ($volume->name !== $this->configurationManager->GetNextcloudMount()) {
// continue;
// }
// $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 nextcloud container which should not be exposed in the containers.json
// } elseif ($container->GetIdentifier() === 'nextcloud-aio-nextcloud') {
// foreach ($container->GetVolumes()->GetVolumes() as $volume) {
// if ($volume->name !== $this->configurationManager->GetNextcloudMount()) {
// continue;
// }
// $mounts[] = ["Type" => "bind", "Source" => $volume->name, "Target" => $volume->mountPoint, "ReadOnly" => !$volume->isWritable, "BindOptions" => [ "Propagation" => "rshared"]];
// }
// 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
} elseif ($container->GetIdentifier() === 'nextcloud-aio-collabora') {
if ($this->configurationManager->GetAdditionalCollaboraOptions() !== '') {
$requestBody['Cmd'] = [$this->configurationManager->GetAdditionalCollaboraOptions()];
}
}
if (count($mounts) > 0) {
@@ -599,13 +599,13 @@ readonly class DockerActionManager {
}
public function isDockerHubReachable(Container $container) : bool {
public function isRegistryReachable(Container $container): bool {
$tag = $container->GetImageTag();
if ($tag === '%AIO_CHANNEL%') {
$tag = $this->GetCurrentChannel();
}
$remoteDigest = $this->dockerHubManager->GetLatestDigestOfTag($container->GetContainerName(), $tag);
$remoteDigest = $this->GetLatestDigestOfTag($container->GetContainerName(), $tag);
if ($remoteDigest === null) {
return false;
@@ -614,8 +614,7 @@ readonly class DockerActionManager {
}
}
public function PullImage(Container $container) : void
{
public function PullImage(Container $container): void {
$imageName = $this->BuildImageName($container);
$encodedImageName = urlencode($imageName);
$url = $this->BuildApiUrl(sprintf('images/create?fromImage=%s', $encodedImageName));
@@ -638,8 +637,7 @@ readonly class DockerActionManager {
}
}
private function isContainerUpdateAvailable(string $id) : string
{
private function isContainerUpdateAvailable(string $id): string {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
$updateAvailable = "";
@@ -652,7 +650,7 @@ readonly class DockerActionManager {
return $updateAvailable;
}
public function isAnyUpdateAvailable() : bool {
public function isAnyUpdateAvailable(): bool {
// return early if instance is not installed
if (!$this->configurationManager->wasStartButtonClicked()) {
return false;
@@ -666,8 +664,7 @@ readonly class DockerActionManager {
}
}
private function getBackupVolumes(string $id) : string
{
private function getBackupVolumes(string $id): string {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
$backupVolumes = '';
@@ -680,14 +677,13 @@ readonly class DockerActionManager {
return $backupVolumes;
}
private function getAllBackupVolumes() : array {
private function getAllBackupVolumes(): array {
$id = 'nextcloud-aio-apache';
$backupVolumesArray = explode(' ', $this->getBackupVolumes($id));
return array_unique($backupVolumesArray);
}
private function GetNextcloudExecCommands(string $id) : string
{
private function GetNextcloudExecCommands(string $id): string {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
$nextcloudExecCommands = '';
@@ -700,13 +696,12 @@ readonly class DockerActionManager {
return $nextcloudExecCommands;
}
private function GetAllNextcloudExecCommands() : string
{
private function GetAllNextcloudExecCommands(): string {
$id = 'nextcloud-aio-apache';
return 'NEXTCLOUD_EXEC_COMMANDS=' . $this->GetNextcloudExecCommands($id);
}
private function GetRepoDigestsOfContainer(string $containerName) : ?array {
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);
@@ -727,7 +722,7 @@ readonly class DockerActionManager {
$repoDigestArray = [];
$oneDigestGiven = false;
foreach($imageOutput['RepoDigests'] as $repoDigest) {
foreach ($imageOutput['RepoDigests'] as $repoDigest) {
$digestPosition = strpos($repoDigest, '@');
if ($digestPosition === false) {
error_log('Somehow the RepoDigest of ' . $containerName . ' does not contain a @.');
@@ -747,10 +742,37 @@ readonly class DockerActionManager {
}
}
public function GetCurrentChannel() : string {
private function GetCurrentImageName(): string {
$cacheKey = 'aio-image-name';
$imageName = apcu_fetch($cacheKey);
if ($imageName !== false && is_string($imageName)) {
return $imageName;
}
$containerName = 'nextcloud-aio-mastercontainer';
$url = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));
try {
$output = json_decode($this->guzzleClient->get($url)->getBody()->getContents(), true);
$imageNameArray = explode(':', $output['Config']['Image']);
if (count($imageNameArray) === 2) {
$imageName = $imageNameArray[0];
} else {
error_log("No tag was found when getting the current channel. You probably did not follow the documentation correctly. Changing the imageName to the default " . $output['Config']['Image']);
$imageName = $output['Config']['Image'];
}
apcu_add($cacheKey, $imageName);
return $imageName;
} catch (\Exception $e) {
error_log('Could not get current imageName ' . $e->getMessage());
}
return 'nextcloud/all-in-one';
}
public function GetCurrentChannel(): string {
$cacheKey = 'aio-ChannelName';
$channelName = apcu_fetch($cacheKey);
if($channelName !== false && is_string($channelName)) {
if ($channelName !== false && is_string($channelName)) {
return $channelName;
}
@@ -758,9 +780,8 @@ readonly class DockerActionManager {
$url = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));
try {
$output = json_decode($this->guzzleClient->get($url)->getBody()->getContents(), true);
$containerChecksum = $output['Image'];
$tagArray = explode(':', $output['Config']['Image']);
if (count($tagArray) === 2) {
if (count($tagArray) === 2) {
$tag = $tagArray[1];
} else {
error_log("No tag was found when getting the current channel. You probably did not follow the documentation correctly. Changing the channel to the default 'latest'.");
@@ -775,9 +796,8 @@ readonly class DockerActionManager {
return 'latest';
}
public function IsMastercontainerUpdateAvailable() : bool
{
$imageName = 'nextcloud/all-in-one';
public function IsMastercontainerUpdateAvailable(): bool {
$imageName = $this->GetCurrentImageName();
$containerName = 'nextcloud-aio-mastercontainer';
$tag = $this->GetCurrentChannel();
@@ -786,7 +806,7 @@ readonly class DockerActionManager {
if ($runningDigests === null) {
return true;
}
$remoteDigest = $this->dockerHubManager->GetLatestDigestOfTag($imageName, $tag);
$remoteDigest = $this->GetLatestDigestOfTag($imageName, $tag);
if ($remoteDigest === null) {
return false;
}
@@ -799,8 +819,7 @@ readonly class DockerActionManager {
return true;
}
public function sendNotification(Container $container, string $subject, string $message, string $file = '/notify.sh') : void
{
public function sendNotification(Container $container, string $subject, string $message, string $file = '/notify.sh'): void {
if ($this->GetContainerStartingState($container) === ContainerState::Running) {
$containerName = $container->GetIdentifier();
@@ -844,8 +863,7 @@ readonly class DockerActionManager {
}
}
private function DisconnectContainerFromBridgeNetwork(string $id) : void
{
private function DisconnectContainerFromBridgeNetwork(string $id): void {
$url = $this->BuildApiUrl(
sprintf('networks/%s/disconnect', 'bridge')
@@ -865,8 +883,7 @@ readonly class DockerActionManager {
}
}
private function ConnectContainerIdToNetwork(string $id, string $internalPort, string $network = 'nextcloud-aio', bool $createNetwork = true, string $alias = '') : void
{
private function ConnectContainerIdToNetwork(string $id, string $internalPort, string $network = 'nextcloud-aio', bool $createNetwork = true, string $alias = ''): void {
if ($internalPort === 'host') {
return;
}
@@ -897,9 +914,9 @@ readonly class DockerActionManager {
$url = $this->BuildApiUrl(
sprintf('networks/%s/connect', $network)
);
$jsonPayload = [ 'Container' => $id ];
if ($alias !== '' ) {
$jsonPayload['EndpointConfig'] = ['Aliases' => [ $alias ]];
$jsonPayload = ['Container' => $id];
if ($alias !== '') {
$jsonPayload['EndpointConfig'] = ['Aliases' => [$alias]];
}
try {
@@ -918,15 +935,13 @@ readonly class DockerActionManager {
}
}
public function ConnectMasterContainerToNetwork() : void
{
public function ConnectMasterContainerToNetwork(): void {
$this->ConnectContainerIdToNetwork('nextcloud-aio-mastercontainer', '');
// Don't disconnect here since it slows down the initial login by a lot. Is getting done during cron.sh instead.
// $this->DisconnectContainerFromBridgeNetwork('nextcloud-aio-mastercontainer');
}
public function ConnectContainerToNetwork(Container $container) : void
{
public function ConnectContainerToNetwork(Container $container): void {
// Add a secondary alias for domaincheck container, to keep it as similar to actual apache controller as possible.
// If a reverse-proxy is relying on container name as hostname this allows it to operate as usual and still validate the domain
// The domaincheck container and apache container are never supposed to be active at the same time because they use the same APACHE_PORT anyway, so this doesn't add any new constraints.
@@ -942,7 +957,7 @@ readonly class DockerActionManager {
}
}
public function StopContainer(Container $container) : void {
public function StopContainer(Container $container): void {
$url = $this->BuildApiUrl(sprintf('containers/%s/stop?t=%s', urlencode($container->GetIdentifier()), $container->GetMaxShutdownTime()));
try {
$this->guzzleClient->post($url);
@@ -953,8 +968,7 @@ readonly class DockerActionManager {
}
}
public function GetBackupcontainerExitCode() : int
{
public function GetBackupcontainerExitCode(): int {
$containerName = 'nextcloud-aio-borgbackup';
$url = $this->BuildApiUrl(sprintf('containers/%s/json', urlencode($containerName)));
try {
@@ -976,8 +990,7 @@ readonly class DockerActionManager {
}
}
public function GetDatabasecontainerExitCode() : int
{
public function GetDatabasecontainerExitCode(): int {
$containerName = 'nextcloud-aio-database';
$url = $this->BuildApiUrl(sprintf('containers/%s/json', urlencode($containerName)));
try {
@@ -999,7 +1012,7 @@ readonly class DockerActionManager {
}
}
public function isLoginAllowed() : bool {
public function isLoginAllowed(): bool {
$id = 'nextcloud-aio-apache';
$apacheContainer = $this->containerDefinitionFetcher->GetContainerById($id);
if ($this->GetContainerStartingState($apacheContainer) === ContainerState::Running) {
@@ -1008,7 +1021,7 @@ readonly class DockerActionManager {
return true;
}
public function isBackupContainerRunning() : bool {
public function isBackupContainerRunning(): bool {
$id = 'nextcloud-aio-borgbackup';
$backupContainer = $this->containerDefinitionFetcher->GetContainerById($id);
if ($this->GetContainerRunningState($backupContainer) === ContainerState::Running) {
@@ -1017,7 +1030,7 @@ readonly class DockerActionManager {
return false;
}
private function GetCreatedTimeOfNextcloudImage() : ?string {
private function GetCreatedTimeOfNextcloudImage(): ?string {
$imageName = 'nextcloud/aio-nextcloud' . ':' . $this->GetCurrentChannel();
try {
$imageUrl = $this->BuildApiUrl(sprintf('images/%s/json', $imageName));
@@ -1034,11 +1047,11 @@ readonly class DockerActionManager {
}
}
public function GetAndGenerateSecretWrapper(string $secretId) : string {
public function GetAndGenerateSecretWrapper(string $secretId): string {
return $this->configurationManager->GetAndGenerateSecret($secretId);
}
public function isNextcloudImageOutdated() : bool {
public function isNextcloudImageOutdated(): bool {
$createdTime = $this->GetCreatedTimeOfNextcloudImage();
if ($createdTime === null) {
@@ -1052,4 +1065,13 @@ readonly class DockerActionManager {
return false;
}
public function GetLatestDigestOfTag(string $imageName, string $tag): ?string {
$prefix = 'ghcr.io/';
if (str_starts_with($imageName, $prefix)) {
return $this->gitHubContainerRegistryManager->GetLatestDigestOfTag(str_replace($prefix, '', $imageName), $tag);
} else {
return $this->dockerHubManager->GetLatestDigestOfTag($imageName, $tag);
}
}
}

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