Compare commits

...

245 Commits

Author SHA1 Message Date
Simon L.
1ba5cca0c5 increase to 11.6.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-08-14 11:16:31 +02:00
Simon L.
d0ba9278f9 Merge pull request #6743 from nextcloud/enh/noid/add-safeguard-to-fts
nextcloud-entrypoint: do not wait indefinitely if FTS is not reachable
2025-08-14 10:40:45 +02:00
Simon L.
845774553e Merge pull request #6746 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2025-08-14 10:36:44 +02:00
szaimen
c665bdf636 nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-14 08:36:10 +00:00
Simon L.
9ebd91c3b3 Merge pull request #6745 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.25.0-alpine3.22
build(deps): bump golang from 1.24.6-alpine3.22 to 1.25.0-alpine3.22 in /Containers/imaginary
2025-08-14 07:43:15 +02:00
Simon L.
49c994145c Merge pull request #6744 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.2.4-alpine
build(deps): bump haproxy from 3.2.3-alpine to 3.2.4-alpine in /Containers/docker-socket-proxy
2025-08-14 07:42:47 +02:00
dependabot[bot]
d6c20a3ea3 build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.24.6-alpine3.22 to 1.25.0-alpine3.22.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 05:13:40 +00:00
dependabot[bot]
a429bf7b0f build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.2.3-alpine to 3.2.4-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 05:12:21 +00:00
Simon L.
4f07118a37 nextcloud-entrypoint: do not wait indefinitely if FTS is not reachable
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-08-13 14:05:31 +02:00
Simon L.
6e983c6a17 Merge pull request #6741 from nextcloud/dependabot/docker/Containers/watchtower/nicholas-fedor/watchtower-v1.11.7
build(deps): bump nicholas-fedor/watchtower from 1.11.6 to v1.11.7 in /Containers/watchtower
2025-08-13 08:23:36 +02:00
Simon L.
9dd23aa405 Merge pull request #6740 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.2
build(deps): bump elasticsearch from 8.19.1 to 8.19.2 in /Containers/fulltextsearch
2025-08-13 08:22:08 +02:00
dependabot[bot]
78c4d56fcf build(deps): bump nicholas-fedor/watchtower in /Containers/watchtower
Bumps [nicholas-fedor/watchtower](https://github.com/nicholas-fedor/watchtower) from 1.11.6 to v1.11.7.
- [Release notes](https://github.com/nicholas-fedor/watchtower/releases)
- [Commits](https://github.com/nicholas-fedor/watchtower/compare/v1.11.6...v1.11.7)

---
updated-dependencies:
- dependency-name: nicholas-fedor/watchtower
  dependency-version: v1.11.7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 05:35:22 +00:00
dependabot[bot]
005544b308 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.1 to 8.19.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 05:34:30 +00:00
Simon L.
685f3269a9 Merge pull request #6738 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.1
build(deps): bump elasticsearch from 8.19.0 to 8.19.1 in /Containers/fulltextsearch
2025-08-12 13:36:47 +02:00
dependabot[bot]
981bff08e6 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.0 to 8.19.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 11:29:26 +00:00
Simon L.
45a4e9b1e2 nextcloud: update link to opcache settings docs
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-08-12 10:40:04 +02:00
Simon L.
b17648e357 Merge pull request #6736 from nextcloud/automated/noid/psalm-baseline-update
[Automated] Update psalm-baseline.xml
2025-08-12 08:46:51 +02:00
nextcloud-command
14a169068c Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2025-08-12 04:14:35 +00:00
Simon L.
59333a88b5 Merge pull request #6733 from nextcloud/dependabot/github_actions/dot-github/workflows/shivammathur/setup-php-2.35.3
build(deps): bump shivammathur/setup-php from 2.35.2 to 2.35.3 in /.github/workflows
2025-08-11 23:33:38 +02:00
dependabot[bot]
b3d550b09f build(deps): bump shivammathur/setup-php in /.github/workflows
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.35.2 to 2.35.3.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](ccf2c627fe...20529878ed)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 17:14:37 +00:00
Simon L.
fb8a6bdebf Merge pull request #6701 from nextcloud/enh/noid/allow-add-trusted-certs
nextcloud: allow to add  custom certs to Nextcloud's trusted cert store
2025-08-11 16:00:33 +02:00
Simon L.
7a12d5343e nextcloud: allow to add custom certs to Nextcloud's trusted cert store
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-08-11 15:26:43 +02:00
Simon L.
6abb615499 Merge pull request #6732 from nextcloud/enh/noid/fix-shellcheck
fix shellcheck
2025-08-11 14:29:38 +02:00
Simon L.
5ce5d8cf9c fix shellcheck
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-08-11 14:28:12 +02:00
Simon L.
24a39e15ab Merge pull request #6725 from nextcloud/enh/noid/print-out-clamav-version
clamav: print out version during startup of container
2025-08-11 14:22:05 +02:00
Simon L.
fecde0c092 Merge pull request #6722 from nextcloud/dependabot/docker/Containers/talk-recording/python-3.13.6-alpine3.22
build(deps): bump python from 3.13.5-alpine3.22 to 3.13.6-alpine3.22 in /Containers/talk-recording
2025-08-11 14:19:02 +02:00
Simon L.
3bde3a097d Merge pull request #6719 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.24.6-alpine3.22
build(deps): bump golang from 1.24.5-alpine3.22 to 1.24.6-alpine3.22 in /Containers/imaginary
2025-08-11 14:18:43 +02:00
Simon L.
29a189ac29 update OO
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-08-11 14:18:11 +02:00
Simon L.
927733513c Merge pull request #6714 from nextcloud/dependabot/docker/Containers/talk/nats-2.11.7-scratch
build(deps): bump nats from 2.11.6-scratch to 2.11.7-scratch in /Containers/talk
2025-08-11 14:17:33 +02:00
Simon L.
98d138be33 Merge pull request #6713 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.3.24-fpm-alpine3.22
build(deps): bump php from 8.3.23-fpm-alpine3.22 to 8.3.24-fpm-alpine3.22 in /Containers/nextcloud
2025-08-11 14:17:18 +02:00
Simon L.
3b7276a8ff Merge pull request #6712 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.4.11-fpm-alpine3.22
build(deps): bump php from 8.4.10-fpm-alpine3.22 to 8.4.11-fpm-alpine3.22 in /Containers/mastercontainer
2025-08-11 14:16:58 +02:00
Simon L.
5b2101dd29 Merge pull request #6707 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.0
build(deps): bump elasticsearch from 8.18.4 to 8.19.0 in /Containers/fulltextsearch
2025-08-11 14:16:39 +02:00
Simon L.
1d3ac8c5b5 Merge pull request #6706 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.4.2.1
build(deps): bump collabora/code from 25.04.4.1.1 to 25.04.4.2.1 in /Containers/collabora
2025-08-11 14:16:20 +02:00
Simon L.
2bbd75cc0b Merge pull request #6704 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.3.3-cli
build(deps): bump docker from 28.3.2-cli to 28.3.3-cli in /Containers/mastercontainer
2025-08-11 14:16:06 +02:00
Simon L.
bf50ee2180 Merge pull request #6699 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2025-08-11 14:15:26 +02:00
Simon L.
d3ec62b0eb Merge pull request #6698 from nextcloud/aio-dependency-update
PHP dependency updates
2025-08-11 14:15:11 +02:00
szaimen
3b05cfd609 nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-11 12:14:36 +00:00
szaimen
5775a3a916 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-11 12:03:39 +00:00
Simon L.
db3fc7dc26 Merge pull request #6731 from nextcloud/aio-helm-update
Helm Chart updates
2025-08-11 14:03:11 +02:00
szaimen
1c08ae5c31 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-11 12:01:50 +00:00
Simon L.
10b1ec5c66 clamav: print out version during startup of container
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-08-11 10:36:52 +02:00
dependabot[bot]
6b13db8be6 build(deps): bump python in /Containers/talk-recording
Bumps python from 3.13.5-alpine3.22 to 3.13.6-alpine3.22.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-08 05:15:36 +00:00
dependabot[bot]
041508ca57 build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.24.5-alpine3.22 to 1.24.6-alpine3.22.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 04:28:30 +00:00
dependabot[bot]
2e44343e44 build(deps): bump nats in /Containers/talk
Bumps nats from 2.11.6-scratch to 2.11.7-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 12:50:28 +00:00
dependabot[bot]
667e191371 build(deps): bump php in /Containers/nextcloud
Bumps php from 8.3.23-fpm-alpine3.22 to 8.3.24-fpm-alpine3.22.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 11:27:21 +00:00
dependabot[bot]
be73586fa1 build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.4.10-fpm-alpine3.22 to 8.4.11-fpm-alpine3.22.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 10:17:31 +00:00
dependabot[bot]
c07d66f0ee build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.18.4 to 8.19.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-01 05:07:35 +00:00
dependabot[bot]
1e8efbcaca build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.4.1.1 to 25.04.4.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-01 05:07:30 +00:00
Simon L.
d32dafffba Merge pull request #6705 from nextcloud/dependabot/github_actions/dot-github/workflows/shivammathur/setup-php-2.35.2
build(deps): bump shivammathur/setup-php from 2.35.1 to 2.35.2 in /.github/workflows
2025-07-30 15:53:43 +02:00
dependabot[bot]
5604c2bbe2 build(deps): bump shivammathur/setup-php in /.github/workflows
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.35.1 to 2.35.2.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](2282b6a082...ccf2c627fe)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 13:02:19 +00:00
dependabot[bot]
aa6c888234 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.3.2-cli to 28.3.3-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 04:27:25 +00:00
Simon L.
250eda8d9b Merge pull request #6700 from nextcloud/dependabot/github_actions/dot-github/workflows/shivammathur/setup-php-2.35.1
build(deps): bump shivammathur/setup-php from 2.34.1 to 2.35.1 in /.github/workflows
2025-07-29 16:52:15 +02:00
dependabot[bot]
7c65bf1942 build(deps): bump shivammathur/setup-php in /.github/workflows
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.34.1 to 2.35.1.
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](0f7f1d08e3...2282b6a082)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 13:09:50 +00:00
Simon L.
27eac87064 restore-instance: fix domain check?
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-28 18:47:06 +02:00
Simon L.
4758f2d341 PerformRecursiveContainerStop: fix error if collabora is not enabled
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-28 18:22:09 +02:00
Simon L.
def08b898c Merge pull request #6694 from nextcloud/enh/noid/improve-playwright-tests
improve debugging of playwright.yml
2025-07-28 18:10:21 +02:00
Simon L.
8f99db7bea try to improve debugging of playwright.yml
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-28 17:58:39 +02:00
Simon L.
f2ff7451b4 initial-setup-test: adjust timeouts
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-28 16:31:19 +02:00
Simon L.
13a5116ed6 Merge pull request #6692 from nextcloud/aio-dependency-update
PHP dependency updates
2025-07-28 15:55:44 +02:00
Simon L.
5a31396e18 fix PerformRecursiveContainerStop detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-28 15:54:56 +02:00
Simon L.
a9303b7918 Merge pull request #6693 from nextcloud/enh/noid/allow-force-stop-nextcloud
aio-interface: allow to force-stop Nextcloud container via API
2025-07-28 14:41:11 +02:00
Simon L.
2a95bc25f9 aio-interface: allow to force-stop Nextcloud container via API
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-28 14:34:30 +02:00
szaimen
e568ee91df php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-28 12:03:49 +00:00
Simon L.
6c7c68418c Merge pull request #6685 from nextcloud/enh/4501/reduce-downtime
daily-backup: implement a dedicated imagepull before stopping containers which should reduce the downtime
2025-07-28 12:08:21 +02:00
Simon L.
b4e4e73616 daily-backup: implement a dedicated imagepull before stopping containers which should reduce the downtime
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-28 12:07:01 +02:00
Simon L.
750cd365cc Merge pull request #6686 from nextcloud/aio-yaml-update
Yaml updates
2025-07-25 14:17:44 +02:00
szaimen
001d0678dd Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-25 12:03:57 +00:00
Simon L.
c0a3e206c9 Merge pull request #6682 from nextcloud/enh/noid/inverse-stop-containers
PerformRecursiveContainerStop: Fix the stop order
2025-07-25 09:27:18 +02:00
Simon L.
adeee71982 PerformRecursiveContainerStop: Fix the stop order
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-25 09:26:09 +02:00
Simon L.
ce6b85b8f0 Merge pull request #6684 from nextcloud/enh/noid/allow-configure-custom-appstoreurl
nextcloud apps.config: allow to configure custom appstoreurl
2025-07-24 13:49:11 +02:00
Simon L.
99117072ce nextcloud: allow to configure custom appstoreurl
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-24 13:40:49 +02:00
Simon L.
762d911a94 Merge pull request #6681 from nextcloud/dependabot/docker/Containers/apache/httpd-2.4.65-alpine3.22
build(deps): bump httpd from 2.4.64-alpine3.22 to 2.4.65-alpine3.22 in /Containers/apache
2025-07-24 08:52:49 +02:00
dependabot[bot]
7fffb1840f build(deps): bump httpd in /Containers/apache
Bumps httpd from 2.4.64-alpine3.22 to 2.4.65-alpine3.22.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 05:11:15 +00:00
Simon L.
436296d1c5 Merge pull request #6656 from Zocker1999NET/remote-backup-public-key
aio-interface: add hint to UI about SSH pubkey for remote backups
2025-07-23 11:45:24 +02:00
Simon L.
593af4ecd1 Merge pull request #6671 from nextcloud/automated/noid/psalm-baseline-update
[Automated] Update psalm-baseline.xml
2025-07-23 09:35:11 +02:00
Simon L.
30f9ce647a Merge pull request #6680 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.18.4
build(deps): bump elasticsearch from 8.18.3 to 8.18.4 in /Containers/fulltextsearch
2025-07-23 09:34:46 +02:00
Simon L.
8bd8d2da7a Merge pull request #6674 from nextcloud/dependabot/docker/Containers/watchtower/nicholas-fedor/watchtower-1.11.6
build(deps): bump nicholas-fedor/watchtower from 1.11.5 to 1.11.6 in /Containers/watchtower
2025-07-23 09:34:32 +02:00
Simon L.
0094e11807 Merge pull request #6673 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.4.1.1
build(deps): bump collabora/code from 25.04.3.2.1 to 25.04.4.1.1 in /Containers/collabora
2025-07-23 09:34:16 +02:00
Simon L.
bd1c57c0dd Merge pull request #6672 from nextcloud/dependabot/docker/Containers/apache/httpd-2.4.64-alpine3.22
build(deps): bump httpd from 2.4.63-alpine3.22 to 2.4.64-alpine3.22 in /Containers/apache
2025-07-23 09:33:58 +02:00
dependabot[bot]
834d3b36cd build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.18.3 to 8.18.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 05:02:17 +00:00
nextcloud-command
78e9466877 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2025-07-19 04:16:11 +00:00
Simon L.
9bb1ec26c9 Merge pull request #6675 from nextcloud/aio-yaml-update
Yaml updates
2025-07-18 14:54:48 +02:00
szaimen
1adfac39fc Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-18 12:04:09 +00:00
Felix Stupp
2757630c41 add hint to UI about SSH pubkey for remote backups
Signed-off-by: Felix Stupp <felix.stupp@banananet.work>
2025-07-18 10:09:16 +00:00
dependabot[bot]
5f0e63a752 build(deps): bump nicholas-fedor/watchtower in /Containers/watchtower
---
updated-dependencies:
- dependency-name: nicholas-fedor/watchtower
  dependency-version: 1.11.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 04:50:35 +00:00
dependabot[bot]
ed460405f2 build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.3.2.1 to 25.04.4.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 04:49:45 +00:00
dependabot[bot]
d6e5bcc0ac build(deps): bump httpd in /Containers/apache
Bumps httpd from 2.4.63-alpine3.22 to 2.4.64-alpine3.22.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 04:49:37 +00:00
Simon L.
4d61ca66b4 Merge pull request #6643 from nextcloud/talk-container-update
talk container update
2025-07-17 20:37:46 +02:00
Simon L.
f9a6058580 Merge pull request #6568 from asavageiv/alan/clean-up-env-placeholders
Support multiple substitutions per line for envs in containers.json
2025-07-17 16:19:59 +02:00
Simon L.
6eb7a7bb38 Merge pull request #6668 from nextcloud/imaginary-container-update
Imaginary update
2025-07-17 15:38:46 +02:00
Simon L.
ba0ba6b099 Merge pull request #6669 from nextcloud/enh/noid/adjust-fts-log-level
fulltextsearch: adjust default log level to Warn
2025-07-17 15:06:54 +02:00
Simon L.
c8f76e067a fulltextsearch: adjust default log level to Warn
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-17 15:04:57 +02:00
Simon L.
1ce5430f77 increase to 11.5.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-17 14:16:43 +02:00
Alan Savage
f7d158c632 Use modern callable syntax for $placeholderValues array_map
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2025-07-17 14:14:14 +02:00
Alan Savage
f81d22cf93 Inline placeholderToPattern and use preg_quote
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2025-07-17 14:14:14 +02:00
Alan Savage
0b929d74de Use guard clause in replaceEnvPlaceholders to reduce indentation
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2025-07-17 14:14:13 +02:00
Alan Savage
0f858dc3fe Fix psalm errors in DockerActionManager env handling code
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2025-07-17 14:14:13 +02:00
Alan Savage
d374fd2c1c Refactor getPlaceholderValue to use match
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2025-07-17 14:14:13 +02:00
Alan Savage
026707240f Support multiple placeholders in ENV values in containers.json
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2025-07-17 14:14:13 +02:00
Alan Savage
f5023ed88d Factor out getPlaceholderValue from CreateContainer
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2025-07-17 14:14:13 +02:00
Simon L.
d2c0176e11 Merge pull request #6606 from thegcat/configurable_fulltextsearch_connection
Make elasticsearch connection configurable
2025-07-17 14:11:00 +02:00
szaimen
2792994cc4 talk-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-17 12:04:56 +00:00
szaimen
64539d5b5c imaginary-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-17 12:03:42 +00:00
Simon L.
e1408dc76e adjust the naming of variables
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-17 13:57:18 +02:00
Simon L.
3497f626f1 Merge pull request #6667 from nextcloud/enh/6464/update-to-alpine-3.22
update remaining images and docs to alpine v3.22
2025-07-17 11:59:49 +02:00
Simon L.
b2a839a209 update remaining images and docs to alpine v3.22
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-17 11:57:35 +02:00
Simon L.
7b786f3704 Merge pull request #6648 from nextcloud/enh/noid/add-http-proxy-check
mastercontainer: add check for http proxy variables
2025-07-17 11:43:46 +02:00
Simon L.
2b3eec3c10 Merge pull request #6644 from nextcloud/enh/noid/add-further-hint
mastercontainer: add advice to `/var/www/docker-aio/php/containers.json` mountpoint warning
2025-07-17 11:42:34 +02:00
Simon L.
bdc7eb312a Merge pull request #6666 from nextcloud/aio-helm-update
Helm Chart updates
2025-07-17 11:30:46 +02:00
szaimen
6463a2b04f Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-17 09:23:52 +00:00
Simon L.
2c6b2cd4d5 Merge pull request #6646 from nextcloud/automated/noid/psalm-baseline-update
[Automated] Update psalm-baseline.xml
2025-07-17 11:22:43 +02:00
Simon L.
86172c3865 Merge pull request #6647 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.18.3
build(deps): bump elasticsearch from 8.18.2 to 8.18.3 in /Containers/fulltextsearch
2025-07-17 11:22:32 +02:00
Simon L.
0eed4eb2cd Merge pull request #6650 from nextcloud/aio-dependency-update
PHP dependency updates
2025-07-17 11:22:21 +02:00
Simon L.
3b793ac53f Merge pull request #6653 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.3.2-cli
build(deps): bump docker from 28.3.1-cli to 28.3.2-cli in /Containers/mastercontainer
2025-07-17 11:21:41 +02:00
Simon L.
b365489fe6 Merge pull request #6658 from nextcloud/dependabot/docker/Containers/alpine/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/alpine
2025-07-17 11:21:14 +02:00
Simon L.
83a34adc7f Merge pull request #6659 from nextcloud/dependabot/docker/Containers/borgbackup/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/borgbackup
2025-07-17 11:21:03 +02:00
Simon L.
087382d44d Merge pull request #6660 from nextcloud/dependabot/docker/Containers/clamav/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/clamav
2025-07-17 11:20:53 +02:00
Simon L.
522597ed58 Merge pull request #6661 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/domaincheck
2025-07-17 11:20:42 +02:00
Simon L.
8776a3299a Merge pull request #6662 from nextcloud/dependabot/docker/Containers/imaginary/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/imaginary
2025-07-17 11:20:31 +02:00
Simon L.
009847fd2a Merge pull request #6663 from nextcloud/dependabot/docker/Containers/notify-push/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/notify-push
2025-07-17 11:20:20 +02:00
Simon L.
afe60e83f7 Merge pull request #6664 from nextcloud/dependabot/docker/Containers/talk/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/talk
2025-07-17 11:20:08 +02:00
Simon L.
3547b387ca Merge pull request #6665 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.22.1
build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/watchtower
2025-07-17 11:19:56 +02:00
dependabot[bot]
2973eb7fc8 build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/watchtower
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:53:03 +00:00
dependabot[bot]
7da05ca65b build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/talk
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:52:47 +00:00
dependabot[bot]
235f190020 build(deps): bump alpine in /Containers/notify-push
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:52:39 +00:00
dependabot[bot]
93d3e9e601 build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/imaginary
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:52:07 +00:00
dependabot[bot]
cc8414250f build(deps): bump alpine in /Containers/domaincheck
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:52:03 +00:00
dependabot[bot]
3b3dc1dcce build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/clamav
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:51:57 +00:00
dependabot[bot]
74ce18856f build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/borgbackup
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:51:54 +00:00
dependabot[bot]
e6ac9ad4f8 build(deps): bump alpine from 3.21.3 to 3.22.1 in /Containers/alpine
Bumps alpine from 3.21.3 to 3.22.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 04:51:48 +00:00
szaimen
ccb06b3525 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-14 12:03:40 +00:00
dependabot[bot]
e6e93701c3 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.3.1-cli to 28.3.2-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 06:14:44 +00:00
Simon L.
a28f1b9c13 mastercontainer: add check for http proxy variables
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-11 16:17:39 +02:00
dependabot[bot]
0350b9528f build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.18.2 to 8.18.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-11 05:16:11 +00:00
nextcloud-command
34e82410cf Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2025-07-11 04:20:57 +00:00
Simon L.
754ab219a8 add advice to /var/www/docker-aio/php/containers.json mountpoint warning
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-10 15:56:42 +02:00
Simon L.
eda27a1236 Merge pull request #6642 from nextcloud/aio-yaml-update
Yaml updates
2025-07-10 14:18:25 +02:00
szaimen
382108c971 Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-10 12:03:56 +00:00
Simon L.
3110b9adb1 Merge pull request #6641 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2025-07-10 13:48:54 +02:00
szaimen
6ddcd3b116 nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-10 11:47:59 +00:00
Simon L.
78ec604a4b increase to 11.4.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-10 11:26:09 +02:00
Simon L.
a2002396f5 Merge pull request #6631 from nextcloud/enh/6564/add-diun-enable-false
CreateContainer: Also add `diun.enable: false` to all managed containers
2025-07-10 11:21:21 +02:00
Simon L.
ba78457cf4 Merge pull request #6620 from nextcloud/enh/6619/make-hint-more-visible
restore-instance: make hint more visible that backup needs to be restored two times if the backup contained any community container data
2025-07-10 11:21:07 +02:00
Simon L.
bfc1cf8cde Merge pull request #6617 from nextcloud/enh/noid/improve-db-import
db-import: improve the import process by using the `smart` mode and a higher timeout
2025-07-10 11:20:28 +02:00
Simon L.
b59cf8a040 Merge pull request #6612 from nextcloud/enh/noid/collabora-startup-logs
collabora: change startup logs from trace to warning
2025-07-10 11:20:18 +02:00
Simon L.
00744cd7f4 Merge pull request #6637 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.2.3-alpine
build(deps): bump haproxy from 3.2.2-alpine to 3.2.3-alpine in /Containers/docker-socket-proxy
2025-07-10 10:55:30 +02:00
Simon L.
7048c406e2 Merge pull request #6633 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.24.5-alpine3.21
build(deps): bump golang from 1.24.4-alpine3.21 to 1.24.5-alpine3.21 in /Containers/imaginary
2025-07-10 10:55:18 +02:00
Simon L.
733083dfe2 Merge pull request #6629 from nextcloud/dependabot/docker/Containers/redis/redis-7.2.10-alpine
build(deps): bump redis from 7.2.9-alpine to 7.2.10-alpine in /Containers/redis
2025-07-10 10:55:05 +02:00
Simon L.
3c06312de0 Merge pull request #6639 from nextcloud/aio-helm-update
Helm Chart updates
2025-07-10 10:54:48 +02:00
Simon L.
0fdd8556ef Merge pull request #6627 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.3.2.1
build(deps): bump collabora/code from 25.04.3.1.1 to 25.04.3.2.1 in /Containers/collabora
2025-07-10 10:54:12 +02:00
Simon L.
362836ccfb Merge pull request #6618 from nextcloud/aio-dependency-update
PHP dependency updates
2025-07-10 10:53:58 +02:00
Simon L.
ab71124102 Merge pull request #6616 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.3.23-fpm-alpine3.21
build(deps): bump php from 8.3.22-fpm-alpine3.21 to 8.3.23-fpm-alpine3.21 in /Containers/nextcloud
2025-07-10 10:53:42 +02:00
Simon L.
710dae163b Merge pull request #6615 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.3.1-cli
build(deps): bump docker from 28.3.0-cli to 28.3.1-cli in /Containers/mastercontainer
2025-07-10 10:53:28 +02:00
Simon L.
540e7ec8c5 Merge pull request #6614 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.4.10-fpm-alpine3.21
build(deps): bump php from 8.4.8-fpm-alpine3.21 to 8.4.10-fpm-alpine3.21 in /Containers/mastercontainer
2025-07-10 10:53:09 +02:00
Simon L.
00348c2ee1 update OO
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-10 10:51:28 +02:00
Simon L.
22d27028d1 fix detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-10 10:51:10 +02:00
szaimen
1e868d4e54 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-10 08:49:09 +00:00
Simon L.
c371ad583c Merge pull request #6638 from nextcloud/enh/noid/add-mastercontainer-check
mastercontainer: add mountpoint check for `/var/www/docker-aio/php/containers.json`
2025-07-10 10:42:13 +02:00
Simon L.
a328f56fd0 mastercontainer: add mountpoint check for /var/www/docker-aio/php/containers.json
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-10 10:39:43 +02:00
dependabot[bot]
0bab98fdec build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.2.2-alpine to 3.2.3-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-10 04:34:58 +00:00
Simon L.
1c41122d39 Bug-report-template: add link to existing feature requests
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-09 16:11:28 +02:00
dependabot[bot]
3270767272 build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.24.4-alpine3.21 to 1.24.5-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 04:44:55 +00:00
Simon L.
aeb133e86c CreateContainer: Also add diun.enable: false to all managed containers
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-08 15:53:30 +02:00
szaimen
7961dc2fc5 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-08 12:03:32 +00:00
Simon L.
61ed785c72 fix detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-08 12:31:03 +02:00
Simon L.
e07a27990a update config.yml and bug-report template
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-08 12:28:44 +02:00
Simon L.
c288949b43 readme: add more explicit note that AIO is looking for contributors
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-08 12:23:15 +02:00
dependabot[bot]
80d23c01d6 build(deps): bump redis in /Containers/redis
Bumps redis from 7.2.9-alpine to 7.2.10-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-08 05:35:29 +00:00
dependabot[bot]
8d59472c38 build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.3.1.1 to 25.04.3.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 05:16:09 +00:00
Simon L.
b538bc7155 restore-instance: make hint more visible that backup needs to be restored two times if the backup contained any community container data
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-04 19:31:51 +02:00
Simon L.
fc0d21cc49 db-import: improve the import process by using the smart mode and a higher timeout
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-04 13:36:55 +02:00
dependabot[bot]
d0df45bf52 build(deps): bump php in /Containers/nextcloud
Bumps php from 8.3.22-fpm-alpine3.21 to 8.3.23-fpm-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-04 04:43:06 +00:00
dependabot[bot]
b593f0388e build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.3.0-cli to 28.3.1-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-04 04:42:45 +00:00
dependabot[bot]
4e25a56edc build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.4.8-fpm-alpine3.21 to 8.4.10-fpm-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-04 04:42:43 +00:00
Simon L.
4cf1a3839b collabora: change startup logs from trace to warning
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-03 15:17:12 +02:00
Felix Schäfer
90b1a64572 Make elasticsearch connection configurable
Signed-off-by: Felix Schäfer <felix@thegcat.net>
2025-07-03 12:20:43 +02:00
Simon L.
362cad79db add comment with link
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-03 11:48:22 +02:00
Simon L.
983e523bde make the check for backup dir and datadir fail proof
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-03 11:44:50 +02:00
Simon L.
bf4cf0ad27 increase to 11.3.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-03 10:28:47 +02:00
Simon L.
2aec1be167 Merge pull request #6609 from nextcloud/enh/6607/check-if-children
instance-restore: make sure that the configured borg restore location is not a children of or equal to NEXTCLOUD_DATADIR
2025-07-03 10:16:19 +02:00
Simon L.
3e9ce2be05 instance-restore: make sure that the configured borg restore location is not a children of or equal to NEXTCLOUD_DATADIR
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-03 10:00:59 +02:00
Simon L.
17382f1f1f Merge pull request #6608 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.2.2-alpine
build(deps): bump haproxy from 3.2.1-alpine to 3.2.2-alpine in /Containers/docker-socket-proxy
2025-07-03 07:41:17 +02:00
dependabot[bot]
07dc4de9ff build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.2.1-alpine to 3.2.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-03 04:43:58 +00:00
Simon L.
665d157240 Merge pull request #6605 from nextcloud/dependabot/docker/Containers/watchtower/nicholas-fedor/watchtower-1.11.5
build(deps): bump nicholas-fedor/watchtower from 1.11.3 to 1.11.5 in /Containers/watchtower
2025-07-02 10:54:19 +02:00
Simon L.
e4b400e605 Merge pull request #6604 from nextcloud/dependabot/docker/Containers/talk/nats-2.11.6-scratch
build(deps): bump nats from 2.11.5-scratch to 2.11.6-scratch in /Containers/talk
2025-07-02 08:08:38 +02:00
dependabot[bot]
306818dc10 build(deps): bump nicholas-fedor/watchtower in /Containers/watchtower
Bumps [nicholas-fedor/watchtower](https://github.com/nicholas-fedor/watchtower) from 1.11.3 to 1.11.5.
- [Release notes](https://github.com/nicholas-fedor/watchtower/releases)
- [Changelog](https://github.com/nicholas-fedor/watchtower/blob/main/goreleaser.yml)
- [Commits](https://github.com/nicholas-fedor/watchtower/compare/v1.11.3...v1.11.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 04:28:08 +00:00
dependabot[bot]
b561c59b93 build(deps): bump nats in /Containers/talk
Bumps nats from 2.11.5-scratch to 2.11.6-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 04:27:41 +00:00
Olicorne
df13ca077c readme: improve the How to stop/start/update containers or trigger the daily backup from a script externally? section (#6592)
Signed-off-by: thiswillbeyourgithub <26625900+thiswillbeyourgithub@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-01 18:52:44 +02:00
Simon L.
1a43bfdc95 Merge pull request #6601 from nextcloud/enh/6564/add-label-to-all-containers
CreateContainers: add `"com.centurylinklabs.watchtower.enable": "false"` to all managed containers
2025-07-01 18:02:42 +02:00
Simon L.
9967aea70c CreateContainers: add "com.centurylinklabs.watchtower.enable": "false" to all managed containers
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-01 17:58:27 +02:00
Simon L.
d20812b0e8 add comment
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-01 17:43:36 +02:00
Simon L.
6b82682384 Merge pull request #6600 from nextcloud/enh/6589/add-hostname
CreateContainer: always add a Hostname to each container
2025-07-01 17:29:56 +02:00
Simon L.
c8382117ce Merge pull request #6599 from nextcloud/feat/talk-skip-verify
feat(talk): add SKIP_CERT_VERIFY env
2025-07-01 17:27:50 +02:00
Anupam Kumar
1b3e519cd7 feat(talk): add SKIP_CERT_VERIFY env
This environment variable when set to "true" will allow usage
of self-signed certificates.

Signed-off-by: Anupam Kumar <kyteinsky@gmail.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-01 17:26:23 +02:00
Simon L.
01f13cc01a Merge pull request #6523 from nextcloud/enh/noid/remove-translate
libretranslate: add `(deprecated)` to its display name
2025-07-01 17:20:11 +02:00
Jean-Yves
aec692208e libretranslate: add (deprecated) to its display name
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-01 17:19:15 +02:00
Simon L.
fcc74e2105 DockerActionManager: always add a Hostname to each container
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-07-01 15:01:10 +02:00
Simon L.
3719a89e0e Merge pull request #6598 from nextcloud/aio-helm-update
Helm Chart updates
2025-07-01 13:53:44 +02:00
szaimen
88541ffe26 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-01 11:53:05 +00:00
Simon L.
98706bdba1 Merge pull request #6522 from nextcloud/enh/6505/add-cm-cc
add container-management cc
2025-07-01 11:40:40 +02:00
Simon L.
5da3535dac Merge pull request #6584 from apparle/fix-signal-handling
Fix signal handling for mastercontainer
2025-07-01 11:37:15 +02:00
Simon L.
655c9e3f72 Merge pull request #6590 from nextcloud/aio-dependency-update
PHP dependency updates
2025-07-01 11:35:38 +02:00
Simon L.
9788aa2b03 Merge pull request #6588 from nextcloud/dependabot/docker/Containers/talk/nats-2.11.5-scratch
build(deps): bump nats from 2.11.4-scratch to 2.11.5-scratch in /Containers/talk
2025-07-01 11:35:21 +02:00
Simon L.
7e23f0736b Merge pull request #6597 from nextcloud/revert-6587-dependabot/docker/Containers/onlyoffice/onlyoffice/documentserver-9.0.2.1
Revert "build(deps): bump onlyoffice/documentserver from 8.3.3.1 to 9.0.2.1 in /Containers/onlyoffice"
2025-07-01 11:35:02 +02:00
Simon L.
5d1bebfd0b Revert "build(deps): bump onlyoffice/documentserver from 8.3.3.1 to 9.0.2.1 in /Containers/onlyoffice" 2025-07-01 11:34:38 +02:00
Simon L.
dd52074adb Merge pull request #6587 from nextcloud/dependabot/docker/Containers/onlyoffice/onlyoffice/documentserver-9.0.2.1
build(deps): bump onlyoffice/documentserver from 8.3.3.1 to 9.0.2.1 in /Containers/onlyoffice
2025-07-01 11:34:06 +02:00
Simon L.
5d3a0a65d8 Merge pull request #6583 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-28.3.0-cli
build(deps): bump docker from 28.2.2-cli to 28.3.0-cli in /Containers/mastercontainer
2025-07-01 11:33:50 +02:00
Simon L.
4784494dab Merge pull request #6591 from prokopschield/patch-1
rp-docs: fix typo
2025-07-01 11:01:31 +02:00
Prokop Schield
cca0ce9e72 fix: typo
Signed-off-by: Prokop Schield <76836484+prokopschield@users.noreply.github.com>
2025-06-29 12:58:14 +02:00
szaimen
d520f106c3 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-28 12:02:55 +00:00
dependabot[bot]
1c3b257107 build(deps): bump nats in /Containers/talk
Bumps nats from 2.11.4-scratch to 2.11.5-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-27 04:41:28 +00:00
dependabot[bot]
58d79307a1 build(deps): bump onlyoffice/documentserver in /Containers/onlyoffice
Bumps onlyoffice/documentserver from 8.3.3.1 to 9.0.2.1.

---
updated-dependencies:
- dependency-name: onlyoffice/documentserver
  dependency-version: 9.0.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-27 04:41:24 +00:00
Simon L.
ce1208b26e add container-managment cc
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-26 16:35:26 +02:00
Simon L.
d922017777 Merge pull request #6585 from nextcloud/alexanderdd-patch-1
readme: add "do not install Docker as snap"
2025-06-26 14:53:46 +02:00
Alexander Müller
ddbeca9170 readme: add "do not install Docker as snap"
Signed-off-by: Alexander Müller <28591861+alexanderdd@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-26 14:51:20 +02:00
Apoorv Parle
e28d0516f5 Use exec for supervisord replace process and propagate signals
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2025-06-26 00:54:11 -07:00
dependabot[bot]
914d9bfd7f build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 28.2.2-cli to 28.3.0-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-26 04:38:18 +00:00
Simon L.
a0e4201955 increase to 11.2.1
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-24 14:37:52 +02:00
Simon L.
9351614972 Merge pull request #6574 from apparle/improve-start-command
Make daily-backup.sh more robust by checking for uninitialized state
2025-06-24 14:36:27 +02:00
Simon L.
2d46aaf1bc Merge pull request #6580 from nextcloud/dependabot/docker/Containers/whiteboard/nextcloud-releases/whiteboard-v1.1.2
build(deps): bump nextcloud-releases/whiteboard from v1.1.1 to v1.1.2 in /Containers/whiteboard
2025-06-24 14:35:15 +02:00
dependabot[bot]
698732254b build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.1.1 to v1.1.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 12:32:53 +00:00
Apoorv Parle
108dcf6c48 Update Containers/mastercontainer/daily-backup.sh based on review comments
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2025-06-24 01:24:26 -07:00
Simon L.
21b9a7cda8 Merge pull request #6518 from nextcloud/enh/noid/mention-docker-ipv6-support
ipv6-docs: mention that `"com.docker.network.enable_ipv6":"true"` ena…
2025-06-23 18:15:39 +02:00
Simon L.
2366cda31c add additional hint that the network can be created manually with ipv6 support
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-23 16:18:19 +02:00
Simon L.
9f9a002ba7 increase to 11.2.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-23 13:58:14 +02:00
Simon L.
3c729d0746 Merge pull request #6575 from nextcloud/dependabot/docker/Containers/whiteboard/nextcloud-releases/whiteboard-v1.1.1
build(deps): bump nextcloud-releases/whiteboard from v1.0.5 to v1.1.1 in /Containers/whiteboard
2025-06-23 13:09:28 +02:00
dependabot[bot]
3b93da5ff5 build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.0.5 to v1.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 11:08:51 +00:00
Simon L.
e5d7b7cd7e Merge pull request #6571 from G-Pereira/patch-1
readme: fix typo in backup migration section
2025-06-22 12:11:59 +02:00
Apoorv Parle
00b2465379 Add check in daily-backup.sh for uninitialized state
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2025-06-22 02:17:25 -07:00
Gonçalo Pereira
ec654ecd58 Typo in readme on backup migration section
Signed-off-by: Gonçalo Pereira <goncalo_pereira@outlook.pt>
2025-06-21 00:59:34 +01:00
Simon L.
a9de130a2c Merge pull request #6542 from nextcloud/dependabot/docker/Containers/talk-recording/python-3.13.5-alpine3.21
build(deps): bump python from 3.13.4-alpine3.21 to 3.13.5-alpine3.21 in /Containers/talk-recording
2025-06-20 10:21:08 +02:00
Simon L.
f13ed5b637 Merge pull request #6535 from nextcloud/enh/noid/move-button-to-new-line
app: move the button to a new line
2025-06-20 10:20:17 +02:00
Apoorv Parle
2552c24c6f Merge pull request #5568 from apparle/enable_local_testability
mastercontainer: enable local testability
2025-06-20 10:17:45 +02:00
Simon L.
676fa6ccbf Merge pull request #6533 from apparle/podman-compatibility
watchtower: change to a well-maintained repo and add podman compatibility
2025-06-20 10:16:03 +02:00
Simon L.
92f1421b7e Merge pull request #6551 from nextcloud/enh/noid/add-onlyoffice-logic
entrypoint.sh: add additional logic for ONLYOFFICE_HOST
2025-06-20 10:15:27 +02:00
Simon L.
31b55a9aef Merge pull request #6566 from nextcloud/fix/nextcloud-container-stuck-terminating
fix: nextcloud container sometimes becoming stuck terminating
2025-06-20 10:10:06 +02:00
Simon L.
05b8319c29 Merge pull request #6569 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.3.1.1
build(deps): bump collabora/code from 25.04.2.2.1 to 25.04.3.1.1 in /Containers/collabora
2025-06-20 10:08:56 +02:00
dependabot[bot]
b2ce65472e build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.2.2.1 to 25.04.3.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-20 04:42:51 +00:00
Richard Steinmetz
2f8b349262 fix: nextcloud container sometimes becoming stuck terminating
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-06-19 14:48:45 +02:00
Simon L.
4344148cdd entrypoint.sh: add additional logic for ONLYOFFICE_HOST
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-16 14:21:05 +02:00
Apoorv Parle
eb533eef28 Use watchtower image directly instead of building it
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2025-06-13 05:35:10 -07:00
dependabot[bot]
c174ee3a9a build(deps): bump python in /Containers/talk-recording
Bumps python from 3.13.4-alpine3.21 to 3.13.5-alpine3.21.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 04:56:44 +00:00
Simon L.
3957a03b2d app: move the button to a new line
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-12 14:23:35 +02:00
Apoorv Parle
ee23d43ca7 Update watchtower to a well-maintained fork and add podman support
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2025-06-11 22:48:52 -07:00
Simon L.
46a012140c ipv6-docs: mention that "com.docker.network.enable_ipv6":"true" enabled ipv6 by default for all new docker networks
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-06-10 14:05:50 +02:00
79 changed files with 626 additions and 419 deletions

View File

@@ -6,9 +6,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.
- Additional documentation is available here: https://github.com/nextcloud/all-in-one/discussions/categories/wiki
- You should also read through existing questions and their answer here: https://github.com/nextcloud/all-in-one/discussions/categories/questions
- Additional threads can be found here: https://help.nextcloud.com/tag/aio
- Existing feature requests are listed here: https://github.com/nextcloud/all-in-one/discussions/categories/ideas
--->
<!--- Please fill out the whole template below -->

View File

@@ -3,15 +3,12 @@ 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
- name: ⛑️ Questions and support
url: https://help.nextcloud.com/tag/aio
about: For general questions, support and help
about: For questions, support and help
- name: 💡 Suggest a new feature or discuss one
url: https://github.com/nextcloud/all-in-one/discussions/categories/ideas
about: For new feature requests and discussion of existing ones
- name: ❓ Questions about Nextcloud AIO
url: https://github.com/nextcloud/all-in-one/discussions/categories/questions
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

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2
- uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
with:
php-version: 8.4
extensions: apcu

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@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none

View File

@@ -18,7 +18,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up php
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
with:
php-version: 8.4
extensions: apcu

View File

@@ -45,7 +45,14 @@ jobs:
sleep 10
- name: Run Playwright tests for initial setup
run: cd php/tests && DEBUG=pw:api npx playwright test tests/initial-setup.spec.js
run: |
cd php/tests
export DEBUG=pw:api
if ! npx playwright test tests/initial-setup.spec.js; then
docker logs nextcloud-aio-mastercontainer
docker logs nextcloud-aio-borgbackup
exit 1
fi
- name: Start fresh development server
run: |
@@ -66,7 +73,14 @@ jobs:
sleep 10
- name: Run Playwright tests for backup restore
run: cd php/tests && DEBUG=pw:api npx playwright test tests/restore-instance.spec.js
run: |
cd php/tests
export DEBUG=pw:api
if ! npx playwright test tests/restore-instance.spec.js; then
docker logs nextcloud-aio-mastercontainer
docker logs nextcloud-aio-borgbackup
exit 1
fi
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}

View File

@@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v4
- name: Set up php
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
with:
php-version: 8.4
extensions: apcu

View File

@@ -29,7 +29,7 @@ jobs:
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up php
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
with:
php-version: 8.4
extensions: apcu

View File

@@ -27,7 +27,7 @@ jobs:
uses: actions/checkout@v4
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2
uses: shivammathur/setup-php@20529878ed81ef8e78ddf08b480401e6101a850f # v2
with:
php-version: 8.4
extensions: apcu

View File

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

View File

@@ -2,7 +2,7 @@
FROM caddy:2.10.0-alpine AS caddy
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
FROM httpd:2.4.63-alpine3.21
FROM httpd:2.4.65-alpine3.22
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy

View File

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

View File

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

View File

@@ -2,6 +2,9 @@
sed "s|aio-placeholder|$MAX_SIZE|" /etc/clamav/clamd.conf > /tmp/clamd.conf
# Print out clamav version for compliance reasons
clamscan --version
echo "Clamav started"
exec "$@"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,12 +1,15 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
FROM docker:28.2.2-cli AS docker
FROM docker:28.3.3-cli AS docker
# Caddy is a requirement
FROM caddy:2.10.0-alpine AS caddy
# From https://github.com/docker-library/php/blob/master/8.4/alpine3.21/fpm/Dockerfile
FROM php:8.4.8-fpm-alpine3.21
# From https://github.com/docker-library/php/blob/master/8.4/alpine3.22/fpm/Dockerfile
FROM php:8.4.11-fpm-alpine3.22
ARG AIO_GIT_URL="https://github.com/nextcloud-releases/all-in-one.git"
ARG AIO_GIT_BRANCH="main"
EXPOSE 80
EXPOSE 8080
@@ -42,7 +45,7 @@ RUN set -ex; \
apk add --no-cache --virtual .build-deps \
autoconf \
build-base; \
pecl install APCu-5.1.24; \
pecl install APCu-5.1.26; \
docker-php-ext-enable apcu; \
rm -r /tmp/pear; \
runDeps="$( \
@@ -64,7 +67,7 @@ RUN set -ex; \
wget https://getcomposer.org/installer -O - | php -- --install-dir=/usr/local/bin --filename=composer; \
chmod +x /usr/local/bin/composer; \
cd /var/www/docker-aio; \
git clone https://github.com/nextcloud-releases/all-in-one.git --depth 1 .; \
git clone "$AIO_GIT_URL" --depth 1 --single-branch --branch "$AIO_GIT_BRANCH" .; \
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; \

View File

@@ -2,6 +2,13 @@
echo "Daily backup script has started"
# Check if initial configuration has been done, otherwise this script should do nothing.
CONFIG_FILE=/mnt/docker-aio-config/data/configuration.json
if ! [ -f "$CONFIG_FILE" ] || ! grep -q "wasStartButtonClicked.*1" "$CONFIG_FILE"; then
echo "Initial configuration via AIO interface not done yet. Exiting..."
exit 0
fi
# Daily backup and backup check cannot be run at the same time
if [ "$DAILY_BACKUP" = 1 ] && [ "$CHECK_BACKUP" = 1 ]; then
echo "Daily backup and backup check cannot be run at the same time. Exiting..."
@@ -57,6 +64,12 @@ if [ "$AUTOMATIC_UPDATES" = 1 ]; then
done
fi
# Update container images to reduce downtime later on
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
echo "Updating container images..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/PullContainerImages.php
fi
# Stop containers if required
# shellcheck disable=SC2235
if [ "$CHECK_BACKUP" != 1 ] && ([ "$DAILY_BACKUP" != 1 ] || [ "$STOP_CONTAINERS" = 1 ]); then

View File

@@ -33,16 +33,24 @@ if [ "$*" != "" ]; then
fi
# Check if socket is available and readable
if ! [ -a "/var/run/docker.sock" ]; then
if ! [ -e "/var/run/docker.sock" ]; then
print_red "Docker socket is not available. Cannot continue."
echo "Please make sure to mount the docker socket into /var/run/docker.sock inside the container!"
echo "If you did this by purpose because you don't want the container to have access to the docker socket, see https://github.com/nextcloud/all-in-one/tree/main/manual-install."
echo "And https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
exit 1
elif ! mountpoint -q "/mnt/docker-aio-config"; then
print_red "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
echo "Please make sure to mount the nextcloud_aio_mastercontainer docker volume into /mnt/docker-aio-config inside the container!"
echo "If you are on TrueNas SCALE, see https://github.com/nextcloud/all-in-one#can-i-run-aio-on-truenas-scale"
exit 1
elif mountpoint -q /var/www/docker-aio/php/containers.json; then
print_red "/var/www/docker-aio/php/containers.json is a mountpoint. Cannot proceed!"
echo "This is a not-supported customization of the mastercontainer!"
echo "Please remove this bind-mount from the mastercontainer."
echo "If you need to customize things, feel free to use https://github.com/nextcloud/all-in-one/tree/main/manual-install"
echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
exit 1
elif ! sudo -u www-data test -r /var/run/docker.sock; then
echo "Trying to fix docker.sock permissions internally..."
DOCKER_GROUP=$(stat -c '%G' /var/run/docker.sock)
@@ -269,6 +277,7 @@ if ! curl --no-progress-meter https://ghcr.io/v2/ >/dev/null; then
echo "Most likely is something blocking access to it."
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"
echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
exit 1
fi
@@ -279,6 +288,13 @@ if [ -n "$TZ" ]; then
# Disable exit since it seems to be by default set on unraid and we dont want to break these instances
# exit 1
fi
# Check that http proxy or no_proxy variable is not set which AIO does not support
if [ -n "$HTTP_PROXY" ] || [ -n "$http_proxy" ] || [ -n "$HTTPS_PROXY" ] || [ -n "$https_proxy" ] || [ -n "$NO_PROXY" ] || [ -n "$no_proxy" ]; then
print_red "The environmental variable HTTP_PROXY, http_proxy, HTTPS_PROXY, https_proxy, NO_PROXY or no_proxy has been set which is not supported by AIO."
echo "If you need this, then you should use https://github.com/nextcloud/all-in-one/tree/main/manual-install"
echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
exit 1
fi
if mountpoint -q /etc/localtime; then
print_red "/etc/localtime has been mounted into the container which is not allowed because AIO only supports running in the default Etc/UTC timezone!"
echo "The correct timezone can be set in the AIO interface later on!"
@@ -366,4 +382,4 @@ caddy fmt --overwrite /Caddyfile
chmod 777 /root
# Start supervisord
/usr/bin/supervisord -c /supervisord.conf
exec /usr/bin/supervisord -c /supervisord.conf

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM php:8.3.22-fpm-alpine3.21
FROM php:8.3.24-fpm-alpine3.22
ENV PHP_MEMORY_LIMIT=512M
ENV PHP_UPLOAD_LIMIT=16G
@@ -8,7 +8,7 @@ ENV SOURCE_LOCATION=/usr/src/nextcloud
ENV REDIS_DB_INDEX=0
# AIO settings start # Do not remove or change this line!
ENV NEXTCLOUD_VERSION=31.0.6
ENV NEXTCLOUD_VERSION=31.0.8
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!
@@ -79,7 +79,7 @@ RUN set -ex; \
\
# pecl will claim success even if one install fails, so we need to perform each install separately
pecl install -o igbinary-3.2.16; \
pecl install APCu-5.1.24; \
pecl install APCu-5.1.26; \
pecl install -D 'enable-memcached-igbinary="yes"' memcached-3.3.0; \
pecl install -oD 'enable-redis-igbinary="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis-6.2.0; \
pecl install -o imagick-3.8.0; \
@@ -107,7 +107,7 @@ RUN set -ex; \
} >> /usr/local/etc/php/conf.d/docker-php-ext-igbinary.ini; \
\
# set recommended PHP.ini settings
# see https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/server_tuning.html#enable-php-opcache
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/server_tuning.html#enable-php-opcache and below
{ \
echo 'opcache.max_accelerated_files=10000'; \
echo 'opcache.memory_consumption=256'; \

View File

@@ -16,3 +16,6 @@ $CONFIG = array (
if (getenv('APPS_ALLOWLIST')) {
$CONFIG['appsallowlist'] = explode(" ", getenv('APPS_ALLOWLIST'));
}
if (getenv('NEXTCLOUD_APP_STORE_URL')) {
$CONFIG['appstoreurl'] = getenv('NEXTCLOUD_APP_STORE_URL');
}

View File

@@ -234,6 +234,7 @@ DATADIR_PERMISSION_CONF
if [ -z "$POSTGRES_PORT" ]; then
POSTGRES_PORT=5432
fi
# shellcheck disable=SC2153
INSTALL_OPTIONS+=(--database "$DATABASE_TYPE" --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST" --database-port "$POSTGRES_PORT")
echo "Starting Nextcloud installation..."
@@ -577,6 +578,24 @@ else
fi
# AIO app end # Do not remove or change this line!
# Allow to add custom certs to Nextcloud's trusted cert store
if env | grep -q NEXTCLOUD_TRUSTED_CERTIFICATES_; then
set -x
TRUSTED_CERTIFICATES="$(env | grep NEXTCLOUD_TRUSTED_CERTIFICATES_ | grep -oP '^[A-Z_a-z0-9]+')"
mapfile -t TRUSTED_CERTIFICATES <<< "$TRUSTED_CERTIFICATES"
CERTIFICATES_ROOT_DIR="/var/www/html/data/certificates"
mkdir -p "$CERTIFICATES_ROOT_DIR"
for certificate in "${TRUSTED_CERTIFICATES[@]}"; do
# shellcheck disable=SC2001
CERTIFICATE_NAME="$(echo "$certificate" | sed 's|^NEXTCLOUD_TRUSTED_CERTIFICATES_||')"
if ! [ -f "$CERTIFICATES_ROOT_DIR/$CERTIFICATE_NAME" ]; then
echo "${!certificate}" > "$CERTIFICATES_ROOT_DIR/$CERTIFICATE_NAME"
php /var/www/html/occ security:certificates:import "$CERTIFICATES_ROOT_DIR/$CERTIFICATE_NAME"
fi
done
set +x
fi
# Notify push
if ! [ -d "/var/www/html/custom_apps/notify_push" ]; then
php /var/www/html/occ app:install notify_push
@@ -676,7 +695,12 @@ fi
# OnlyOffice
if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
while ! nc -z "$ONLYOFFICE_HOST" 80; do
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
ONLYOFFICE_PORT=80
else
ONLYOFFICE_PORT=443
fi
while ! nc -z "$ONLYOFFICE_HOST" "$ONLYOFFICE_PORT"; do
echo "waiting for OnlyOffice to become available..."
sleep 5
done
@@ -690,7 +714,11 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
php /var/www/html/occ config:system:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
php /var/www/html/occ config:app:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
php /var/www/html/occ config:system:set onlyoffice jwt_header --value="AuthorizationJwt"
php /var/www/html/occ config:app:set onlyoffice DocumentServerUrl --value="https://$NC_DOMAIN/onlyoffice"
if echo "$ONLYOFFICE_HOST" | grep -q "nextcloud-.*-onlyoffice"; then
ONLYOFFICE_HOST="$NC_DOMAIN/onlyoffice"
export ONLYOFFICE_HOST
fi
php /var/www/html/occ config:app:set onlyoffice DocumentServerUrl --value="https://$ONLYOFFICE_HOST"
else
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/onlyoffice" ] && [ -n "$ONLYOFFICE_SECRET" ] && [ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
php /var/www/html/occ app:remove onlyoffice
@@ -800,45 +828,54 @@ fi
# Fulltextsearch
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
while ! nc -z "$FULLTEXTSEARCH_HOST" 9200; do
count=0
while ! nc -z "$FULLTEXTSEARCH_HOST" "$FULLTEXTSEARCH_PORT" && [ "$count" -lt 90 ]; do
echo "waiting for Fulltextsearch to become available..."
count=$((count+5))
sleep 5
done
if ! [ -d "/var/www/html/custom_apps/fulltextsearch" ]; then
php /var/www/html/occ app:install fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch enabled)" != "yes" ]; then
php /var/www/html/occ app:enable fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch
fi
if ! [ -d "/var/www/html/custom_apps/fulltextsearch_elasticsearch" ]; then
php /var/www/html/occ app:install fulltextsearch_elasticsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch_elasticsearch enabled)" != "yes" ]; then
php /var/www/html/occ app:enable fulltextsearch_elasticsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch_elasticsearch
fi
if ! [ -d "/var/www/html/custom_apps/files_fulltextsearch" ]; then
php /var/www/html/occ app:install files_fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get files_fulltextsearch enabled)" != "yes" ]; then
php /var/www/html/occ app:enable files_fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update files_fulltextsearch
fi
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://elastic:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:9200\",\"elastic_index\":\"nextcloud-aio\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
if [ "$count" -ge 90 ]; then
echo "Fulltextsearch did not start in time. Skipping initialization and disabling fulltextsearch apps."
php /var/www/html/occ app:disable fulltextsearch
php /var/www/html/occ app:disable fulltextsearch_elasticsearch
php /var/www/html/occ app:disable files_fulltextsearch
else
if ! [ -d "/var/www/html/custom_apps/fulltextsearch" ]; then
php /var/www/html/occ app:install fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch enabled)" != "yes" ]; then
php /var/www/html/occ app:enable fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch
fi
if ! [ -d "/var/www/html/custom_apps/fulltextsearch_elasticsearch" ]; then
php /var/www/html/occ app:install fulltextsearch_elasticsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch_elasticsearch enabled)" != "yes" ]; then
php /var/www/html/occ app:enable fulltextsearch_elasticsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch_elasticsearch
fi
if ! [ -d "/var/www/html/custom_apps/files_fulltextsearch" ]; then
php /var/www/html/occ app:install files_fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get files_fulltextsearch enabled)" != "yes" ]; then
php /var/www/html/occ app:enable files_fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update files_fulltextsearch
fi
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_USER:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:$FULLTEXTSEARCH_PORT\",\"elastic_index\":\"$FULLTEXTSEARCH_INDEX\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
# Do the index
if ! [ -f "$NEXTCLOUD_DATA_DIR/fts-index.done" ]; then
echo "Waiting 10s before activating FTS..."
sleep 10
echo "Activating fulltextsearch..."
if php /var/www/html/occ fulltextsearch:test && php /var/www/html/occ fulltextsearch:index "{\"errors\": \"reset\"}" --no-readline; then
touch "$NEXTCLOUD_DATA_DIR/fts-index.done"
else
echo "Fulltextsearch failed. Could not index."
echo "Feel free to follow https://github.com/nextcloud/all-in-one/discussions/1709 if you want to skip the indexing in the future."
# Do the index
if ! [ -f "$NEXTCLOUD_DATA_DIR/fts-index.done" ]; then
echo "Waiting 10s before activating FTS..."
sleep 10
echo "Activating fulltextsearch..."
if php /var/www/html/occ fulltextsearch:test && php /var/www/html/occ fulltextsearch:index "{\"errors\": \"reset\"}" --no-readline; then
touch "$NEXTCLOUD_DATA_DIR/fts-index.done"
else
echo "Fulltextsearch failed. Could not index."
echo "Feel free to follow https://github.com/nextcloud/all-in-one/discussions/1709 if you want to skip the indexing in the future."
fi
fi
fi
else

View File

@@ -26,4 +26,11 @@ else
fi
fi
sleep inf
signal_handler() {
exit 0
}
trap signal_handler SIGINT SIGTERM
sleep inf &
wait $!

View File

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

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.3.1
FROM onlyoffice/documentserver:9.0.4.1
# USER root is probably used

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
# From https://github.com/docker-library/postgres/blob/master/17/alpine3.21/Dockerfile
# From https://github.com/docker-library/postgres/blob/master/17/alpine3.22/Dockerfile
FROM postgres:17.5-alpine
COPY --chmod=775 start.sh /start.sh

View File

@@ -128,7 +128,9 @@ EOSQL
fi
# Shut down the database to be able to start it again
pg_ctl stop -m fast
# The smart mode disallows new connections, then waits for all existing clients to disconnect and any online backup to finish
# Wait for 1800s to make sure that a checkpoint is completed successfully
pg_ctl stop -m smart -t 1800
# Change database port back to default
export PGPORT=5432

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
# syntax=docker/dockerfile:latest
FROM nats:2.11.4-scratch AS nats
FROM nats:2.11.7-scratch AS nats
FROM eturnal/eturnal:1.12.1 AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.0.3 AS signaling
FROM alpine:3.21.3 AS janus
FROM alpine:3.22.1 AS janus
ARG JANUS_VERSION=v1.3.1
ARG JANUS_VERSION=v1.3.2
WORKDIR /src
RUN set -ex; \
apk upgrade --no-cache -a; \
@@ -35,8 +35,9 @@ RUN set -ex; \
make configs; \
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
FROM alpine:3.21.3
FROM alpine:3.22.1
ENV ETURNAL_ETC_DIR="/conf"
ENV SKIP_CERT_VERIFY=false
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
COPY --from=eturnal --chmod=777 --chown=1000:1000 /opt/eturnal /opt/eturnal
COPY --from=nats --chmod=777 --chown=1000:1000 /nats-server /usr/local/bin/nats-server

View File

@@ -95,6 +95,7 @@ backends = backend-1
allowall = false
timeout = 10
connectionsperhost = 8
skipverify = ${SKIP_CERT_VERIFY}
[backend-1]
url = https://${NC_DOMAIN}

View File

@@ -1,19 +1,13 @@
# syntax=docker/dockerfile:latest
FROM golang:1.24.4-alpine3.21 AS go
FROM ghcr.io/nicholas-fedor/watchtower:v1.11.7 AS watchtower
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
FROM alpine:3.22.1
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash ca-certificates tzdata
COPY --from=go /go/bin/watchtower /watchtower
COPY --from=watchtower /watchtower /watchtower
COPY --chmod=775 start.sh /start.sh

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# Check if socket is available and readable
if ! [ -a "/var/run/docker.sock" ]; then
if ! [ -e "/var/run/docker.sock" ]; then
echo "Docker socket is not available. Cannot continue."
exit 1
elif ! test -r /var/run/docker.sock; then
@@ -9,6 +9,13 @@ elif ! test -r /var/run/docker.sock; then
exit 1
fi
if [ -f /run/.containerenv ]; then
# If running under podman disable memory_swappiness setting in watchtower.
# It is a necessary workaround until https://github.com/containers/podman/issues/23824 gets fixed.
echo "Running under Podman. Setting WATCHTOWER_DISABLE_MEMORY_SWAPPINESS to 1."
export WATCHTOWER_DISABLE_MEMORY_SWAPPINESS=1
fi
if [ -n "$CONTAINER_TO_UPDATE" ]; then
exec /watchtower --cleanup --debug --run-once "$CONTAINER_TO_UPDATE"
else

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Probably from this file: https://github.com/nextcloud/whiteboard/blob/main/Dockerfile
FROM ghcr.io/nextcloud-releases/whiteboard:v1.0.5
FROM ghcr.io/nextcloud-releases/whiteboard:v1.1.2
USER root
RUN set -ex; \

View File

@@ -10,7 +10,7 @@ declare(strict_types=1);
*/
/** @var array $_ */ ?>
<div id="allinone" class="section">
<h2><?php p($l->t('Nextcloud All-in-One'));?></h2>
<h2><?php p($l->t('Nextcloud All-in-One'));?></h2><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

@@ -11,7 +11,7 @@ This container bundles caddy and auto-configures it for you. It also covers [vau
- 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.
- 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. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository

View File

@@ -0,0 +1,41 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-container-management",
"display_name": "Container Management",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management",
"image": "ghcr.io/szaimen/aio-container-management",
"image_tag": "v1",
"internal_port": "5804",
"restart": "unless-stopped",
"ports": [
{
"ip_binding": "",
"port_number": "5804",
"protocol": "tcp"
}
],
"volumes": [
{
"source": "%WATCHTOWER_DOCKER_SOCKET_PATH%",
"destination": "/var/run/docker.sock",
"writeable": false
}
],
"environment": [
"TZ=%TIMEZONE%",
"SECURE_CONNECTION=1",
"WEB_AUTHENTICATION=1",
"USER_ID=0",
"GROUP_ID=0",
"WEB_AUTHENTICATION_USERNAME=container-management",
"WEB_AUTHENTICATION_PASSWORD=%CONTAINER_MANAGEMENT_PASSWORD%",
"WEB_LISTENING_PORT=5804"
],
"secrets": [
"CONTAINER_MANAGEMENT_PASSWORD"
],
"ui_secret": "CONTAINER_MANAGEMENT_PASSWORD"
}
]
}

View File

@@ -0,0 +1,15 @@
## Container-Management
This container allows to manage insides of other containers via a GUI inside a Web session by allowing to run docker commands from inside this container.
### Notes
- After adding and starting the container, you need to visit `https://ip.address.of.this.server:5804` in order to log in with the user `container-management` 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, you should see a terminal. There you can use any docker command. ⚠️ Be very carefully while doing that as can break your instance!
- There are also some pre-made scripts that make configuring some of the community containers easier. For example scripts for [LLDAP](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap) and [Facerecognition](https://github.com/nextcloud/all-in-one/tree/main/community-containers/facerecognition).
- ⚠️ After you are done doing your operations, remove the container for better security again from the stack: https://github.com/nextcloud/all-in-one/tree/main/community-containers#how-to-remove-containers-from-aios-stack
- 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-container-management
### Maintainer
https://github.com/szaimen

View File

@@ -4,7 +4,8 @@ This container bundles the external model of facerecognition and auto-configures
### Notes
- This container needs imaginary in order to analyze modern file format images. Make sure to enable imaginary in the AIO interface before adding this container.
- The image analysis is currently set to fixed value of `1G`. See [this](https://github.com/search?q=repo%3Anextcloud%2Fall-in-one+1G+path%3A%2F%5Ecommunity-containers%5C%2Ffacerecognition%5C%2F%2F&type=code)
- Facerecognition is by default disabled for all users, if you want to enable facerecognition for all users, you can run the following before adding this container:
- Facerecognition is by default disabled for all users. If you want to enable facerecognition for all users, you can run the following commands before adding this container:<br>
**Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management. This script below can be run from inside the container-management container via `bash /facerecognition.sh`.
```bash
# Go into the container
sudo docker exec --user www-data -it nextcloud-aio-nextcloud bash
@@ -22,7 +23,8 @@ This container bundles the external model of facerecognition and auto-configures
# Exit the container shell
exit
```
- If facerecognition shall analyze shared files & folders (`sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:app:set facerecognition handle_shared_files --value true`), groupfolders (`sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:app:set facerecognition handle_group_files --value true`) and/or external storages (`sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:app:set facerecognition handle_external_files --value true`) in Nextcloud, you need to enable support for it manually first by running the mentioned commands before adding this container. See https://github.com/matiasdelellis/facerecognition/wiki/Settings#hidden-settings for further notes on each of these settings.
- If facerecognition shall analyze shared files & folders (`sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:app:set facerecognition handle_shared_files --value true`), groupfolders (`sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:app:set facerecognition handle_group_files --value true`) and/or external storages (`sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:app:set facerecognition handle_external_files --value true`) in Nextcloud, you need to enable support for it manually first by running the mentioned commands before adding this container. See https://github.com/matiasdelellis/facerecognition/wiki/Settings#hidden-settings for further notes on each of these settings.<br>
**Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository

View File

@@ -4,7 +4,7 @@ This container bundles fail2ban and auto-configures it for you in order to block
### Notes
- If you get an error like `"ip6tables v1.8.9 (legacy): can't initialize ip6tables table filter': Table does not exist (do you need to insmod?)"`, you need to enable ip6tables on your host via `sudo modprobe ip6table_filter`.
- If you get an error like `stderr: 'iptables: No chain/target/match by that name.'` and `stderr: 'ip6tables: No chain/target/match by that name.'`, you need to follow https://github.com/szaimen/aio-fail2ban/issues/9#issuecomment-2026898790 in order to resolve this.
- You can unban ip addresses like so for example: `docker exec -it nextcloud-aio-fail2ban fail2ban-client set nextcloud unbanip 203.113.167.162`.
- You can unban ip addresses like so for example: `docker exec -it nextcloud-aio-fail2ban fail2ban-client set nextcloud unbanip 203.113.167.162`. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository

View File

@@ -2,7 +2,7 @@
"aio_services_v1": [
{
"container_name": "nextcloud-aio-libretranslate",
"display_name": "LibreTranslate",
"display_name": "LibreTranslate (deprecated)",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/libretranslate",
"image": "ghcr.io/szaimen/aio-libretranslate",
"image_tag": "v1",

View File

@@ -23,7 +23,8 @@ First, you need to retrieve the LLDAP admin password, this will be used later on
sudo docker inspect nextcloud-aio-lldap | grep LLDAP_LDAP_USER_PASS
```
Now go into the Nextcloud container:
Now go into the Nextcloud container:<br>
**Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management. This script below can be run from inside the container-management container via `bash /lldap.sh`.
```bash
sudo docker exec --user www-data -it nextcloud-aio-nextcloud bash
```

View File

@@ -8,7 +8,7 @@ This container contains a fork of the Nginx Proxy Manager, which is a WebUI for
- After the container was started the first time, please check the logs for errors. Then you can open NPMplus on `https://<ip>:81` and change the password.
- The default password is `iArhP1j7p1P6TA92FA2FMbbUGYqwcYzxC4AVEe12Wbi94FY9gNN62aKyF1shrvG4NycjjX9KfmDQiwkLZH1ZDR9xMjiG2QmoHXi` and the default email is `admin@example.org`
- If you want to use NPMplus behind a domain and outside localhost just create a new proxy host inside the NPMplus which proxies to `https`, `127.0.0.1` and port `81` - all other settings should be the same as for the AIO host.
- If you want to set env options from this [compose.yaml](https://github.com/ZoeyVid/NPMplus/blob/develop/compose.yaml), please set them inside the `.env` file which you can find in the `nextcloud_aio_npmplus` volume
- If you want to set env options from this [compose.yaml](https://github.com/ZoeyVid/NPMplus/blob/develop/compose.yaml), please set them inside the `.env` file which you can find in the `nextcloud_aio_npmplus` volume **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
- The data (certs, configs, etc.) of NPMplus will be automatically included in AIOs backup solution!
- **Important:** you always need to enable https for your hosts, since `DISABLE_HTTP` is set to true by default
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack

View File

@@ -17,4 +17,4 @@ Yes, see [this list](https://github.com/nextcloud/all-in-one/issues/5251) for al
## How to remove containers from AIOs stack?
You can remove containers now via the web interface.
After removing the containers, there might be some data left on your server that you might want to remove. You can get rid of the data by first running `sudo docker rm nextcloud-aio-container1`, (adjust `container1` accordingly) per community-container that you removed. Then run `sudo docker image prune -a` in order to remove all images that are not used anymore. As last step you can get rid of persistent data of these containers that is stored in volumes. You can check if there is some by running `sudo docker volume ls` and look for any volume that matches the ones that you removed. If so, you can remove them with `sudo docker volume rm nextcloud_aio_volume-id` (of course you need to adjust the `volume-id`).
After removing the containers, there might be some data left on your server that you might want to remove. You can get rid of the data by first running `sudo docker rm nextcloud-aio-container1`, (adjust `container1` accordingly) per community-container that you removed. Then run `sudo docker image prune -a` in order to remove all images that are not used anymore. As last step you can get rid of persistent data of these containers that is stored in volumes. You can check if there is some by running `sudo docker volume ls` and look for any volume that matches the ones that you removed. If so, you can remove them with `sudo docker volume rm nextcloud_aio_volume-id` (of course you need to adjust the `volume-id`). **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management

View File

@@ -47,3 +47,13 @@ This is documented here: https://github.com/nextcloud-releases/all-in-one/tree/m
## How to connect to the database?
Simply run `sudo docker exec -it nextcloud-aio-database psql -U oc_nextcloud nextcloud_database` and you should be in.
## How to locally build and test changes to mastercontainer?
1. Push changes to your own git fork and branch.
1. Use below commands to build mastercontainer image for a custom git url and branch:
```
cd Containers/mastercontainer
docker buildx build -t ghcr.io/nextcloud-releases/all-in-one:latest --build-arg AIO_GIT_URL="https://github.com/my-fork-repo/all-in-one.git" --build-arg AIO_GIT_BRANCH="my-feature-branch" --load .
```
1. Start a container with above built image.
1. Since the hash of a locally built image doesn't match the latest release mastercontainer, it prompts for a mandatory update. To temporarily bypass the update suffix `?bypass_mastercontainer_update` to the URL. Eg: `https://localhost:8080/containers?bypass_mastercontainer_update`

View File

@@ -4,19 +4,23 @@
First of all upgrade your docker installation to v27.0.1 or higher.
1. Then edit `/etc/docker/daemon.json` (or `~/.config/docker/daemon.json` in case of docker-rootless), add the below json:
```json
{
"default-network-opts": {"bridge":{"com.docker.network.enable_ipv6":"true"}}
}
```
> [!WARNING]
> This will enable ipv6 for all new docker networks by default! You can alternatively create the `nextcloud-aio` network with ipv6 support by hand manually via docker network create or via compose.yaml.
Save the file.
```json
{
"default-network-opts": {"bridge":{"com.docker.network.enable_ipv6":"true"}}
}
```
And save the file.
2. Reload the Docker configuration file.
```console
sudo systemctl restart docker
```
```console
sudo systemctl restart docker
```
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `sudo docker network inspect nextcloud-aio | grep EnableIPv6`. On a new instance, this command should return that it did not find a network with this name. Then you can run `sudo docker network create nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/4989 in order to recreate the network and enable ipv6 for it.
## Docker Desktop (Windows and macOS)
@@ -25,9 +29,12 @@ Then, on Windows and macOS which use Docker Desktop, you need to go into the set
1. You need to now adjust this json file:
```
"default-network-opts": {"bridge":{"com.docker.network.enable_ipv6":"true"}}
```
> [!WARNING]
> This will enable ipv6 for all new docker networks by default! You can alternatively create the `nextcloud-aio` network with ipv6 support by hand manually via docker network create or via compose.yaml.
```json
"default-network-opts": {"bridge":{"com.docker.network.enable_ipv6":"true"}}
```
2. Add these values to the json and make sure to keep the other currently values and that you don't see `Unexpected token in JSON at position ...` before attempting to restart by clicking on `Apply & restart`.
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `sudo docker network inspect nextcloud-aio | grep EnableIPv6`. On a new instance, this command should return that it did not find a network with this name. Then you can run `sudo docker network create nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/4989 in order to recreate the network and enable ipv6 for it.

View File

@@ -10,15 +10,15 @@ services:
nextcloud-aio-talk:
condition: service_started
required: false
nextcloud-aio-nextcloud:
condition: service_started
required: false
nextcloud-aio-notify-push:
condition: service_started
required: false
nextcloud-aio-whiteboard:
condition: service_started
required: false
nextcloud-aio-nextcloud:
condition: service_started
required: false
image: ghcr.io/nextcloud-releases/aio-apache:latest
user: "33"
init: true
@@ -165,6 +165,9 @@ services:
- PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT}
- FULLTEXTSEARCH_ENABLED
- FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch
- FULLTEXTSEARCH_PORT=9200
- FULLTEXTSEARCH_USER=elastic
- FULLTEXTSEARCH_INDEX=nextcloud-aio
- PHP_MAX_TIME=${NEXTCLOUD_MAX_TIME}
- TRUSTED_CACERTS_DIR=${NEXTCLOUD_TRUSTED_CACERTS_DIR}
- STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS}
@@ -253,7 +256,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 --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:logging.level_startup=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}
@@ -437,7 +440,7 @@ services:
- bootstrap.memory_lock=true
- cluster.name=nextcloud-aio
- discovery.type=single-node
- logger.org.elasticsearch.discovery=WARN
- logger.level=WARN
- http.port=9200
- xpack.license.self_generated.type=basic
- xpack.security.enabled=false

View File

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

View File

@@ -61,7 +61,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
image: ghcr.io/nextcloud-releases/aio-apache:20250619_082329
image: ghcr.io/nextcloud-releases/aio-apache:20250811_115851
readinessProbe:
exec:
command:

View File

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

View File

@@ -32,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 --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:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
image: ghcr.io/nextcloud-releases/aio-collabora:20250619_082329
image: ghcr.io/nextcloud-releases/aio-collabora:20250811_115851
readinessProbe:
exec:
command:

View File

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

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20250619_082329
image: ghcr.io/nextcloud-releases/aio-alpine:20250811_115851
command:
- chmod
- "777"
@@ -48,13 +48,13 @@ spec:
value: single-node
- name: http.port
value: "9200"
- name: logger.org.elasticsearch.discovery
- name: logger.level
value: WARN
- name: xpack.license.self_generated.type
value: basic
- name: xpack.security.enabled
value: "false"
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250619_082329
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250811_115851
readinessProbe:
exec:
command:

View File

@@ -38,7 +38,7 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-imaginary:20250619_082329
image: ghcr.io/nextcloud-releases/aio-imaginary:20250811_115851
readinessProbe:
exec:
command:

View File

@@ -38,7 +38,7 @@ spec:
# AIO settings start # Do not remove or change this line!
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20250619_082329
image: ghcr.io/nextcloud-releases/aio-alpine:20250811_115851
command:
- chmod
- "777"
@@ -110,8 +110,14 @@ spec:
value: "{{ .Values.FULLTEXTSEARCH_ENABLED }}"
- name: FULLTEXTSEARCH_HOST
value: nextcloud-aio-fulltextsearch
- name: FULLTEXTSEARCH_INDEX
value: nextcloud-aio
- name: FULLTEXTSEARCH_PASSWORD
value: "{{ .Values.FULLTEXTSEARCH_PASSWORD }}"
- name: FULLTEXTSEARCH_PORT
value: "9200"
- name: FULLTEXTSEARCH_USER
value: elastic
- name: IMAGINARY_ENABLED
value: "{{ .Values.IMAGINARY_ENABLED }}"
- name: IMAGINARY_HOST
@@ -182,7 +188,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
image: ghcr.io/nextcloud-releases/aio-nextcloud:20250619_082329
image: ghcr.io/nextcloud-releases/aio-nextcloud:20250811_115851
{{- if eq (.Values.RPSS_ENABLED | default "no") "yes" }} # AIO-config - do not change this comment!
securityContext:
# The items below only work in container context

View File

@@ -55,7 +55,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-notify-push:20250619_082329
image: ghcr.io/nextcloud-releases/aio-notify-push:20250811_115851
readinessProbe:
exec:
command:

View File

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

View File

@@ -39,7 +39,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-redis:20250619_082329
image: ghcr.io/nextcloud-releases/aio-redis:20250811_115851
readinessProbe:
exec:
command:

View File

@@ -52,7 +52,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk:20250619_082329
image: ghcr.io/nextcloud-releases/aio-talk:20250811_115851
readinessProbe:
exec:
command:

View File

@@ -44,7 +44,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk-recording:20250619_082329
image: ghcr.io/nextcloud-releases/aio-talk-recording:20250811_115851
readinessProbe:
exec:
command:

View File

@@ -48,7 +48,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-whiteboard:20250619_082329
image: ghcr.io/nextcloud-releases/aio-whiteboard:20250811_115851
readinessProbe:
exec:
command:

98
php/composer.lock generated
View File

@@ -3330,16 +3330,16 @@
},
{
"name": "nikic/php-parser",
"version": "v5.5.0",
"version": "v5.6.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "ae59794362fe85e051a58ad36b289443f57be7a9"
"reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9",
"reference": "ae59794362fe85e051a58ad36b289443f57be7a9",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/221b0d0fdf1369c71047ad1d18bb5880017bbc56",
"reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56",
"shasum": ""
},
"require": {
@@ -3382,9 +3382,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0"
"source": "https://github.com/nikic/PHP-Parser/tree/v5.6.0"
},
"time": "2025-05-31T08:24:38+00:00"
"time": "2025-07-27T20:03:57+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -3563,16 +3563,16 @@
},
{
"name": "phpstan/phpdoc-parser",
"version": "2.1.0",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
"reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
"shasum": ""
},
"require": {
@@ -3604,9 +3604,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.1.0"
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.2.0"
},
"time": "2025-02-19T13:28:12+00:00"
"time": "2025-07-13T07:04:09+00:00"
},
{
"name": "revolt/event-loop",
@@ -3875,16 +3875,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.22",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3"
"reference": "59266a5bf6a596e3e0844fd95e6ad7ea3c1d3350"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3",
"reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3",
"url": "https://api.github.com/repos/symfony/console/zipball/59266a5bf6a596e3e0844fd95e6ad7ea3c1d3350",
"reference": "59266a5bf6a596e3e0844fd95e6ad7ea3c1d3350",
"shasum": ""
},
"require": {
@@ -3949,7 +3949,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.22"
"source": "https://github.com/symfony/console/tree/v6.4.24"
},
"funding": [
{
@@ -3960,25 +3960,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-05-07T07:05:04+00:00"
"time": "2025-07-30T10:38:54+00:00"
},
{
"name": "symfony/filesystem",
"version": "v7.3.0",
"version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb"
"reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd",
"reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd",
"shasum": ""
},
"require": {
@@ -4015,7 +4019,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v7.3.0"
"source": "https://github.com/symfony/filesystem/tree/v7.3.2"
},
"funding": [
{
@@ -4026,25 +4030,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-10-25T15:15:23+00:00"
"time": "2025-07-07T08:17:47+00:00"
},
{
"name": "symfony/finder",
"version": "v6.4.17",
"version": "v6.4.24",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7"
"reference": "73089124388c8510efb8d2d1689285d285937b08"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
"url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08",
"reference": "73089124388c8510efb8d2d1689285d285937b08",
"shasum": ""
},
"require": {
@@ -4079,7 +4087,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v6.4.17"
"source": "https://github.com/symfony/finder/tree/v6.4.24"
},
"funding": [
{
@@ -4090,12 +4098,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-12-29T13:51:37+00:00"
"time": "2025-07-15T12:02:45+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
@@ -4417,16 +4429,16 @@
},
{
"name": "symfony/string",
"version": "v7.3.0",
"version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125"
"reference": "42f505aff654e62ac7ac2ce21033818297ca89ca"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125",
"reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125",
"url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca",
"reference": "42f505aff654e62ac7ac2ce21033818297ca89ca",
"shasum": ""
},
"require": {
@@ -4484,7 +4496,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v7.3.0"
"source": "https://github.com/symfony/string/tree/v7.3.2"
},
"funding": [
{
@@ -4495,25 +4507,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-04-20T20:19:01+00:00"
"time": "2025-07-10T08:47:49+00:00"
},
{
"name": "vimeo/psalm",
"version": "6.12.0",
"version": "6.13.1",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
"reference": "cf420941d061a57050b6c468ef2c778faf40aee2"
"reference": "1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/cf420941d061a57050b6c468ef2c778faf40aee2",
"reference": "cf420941d061a57050b6c468ef2c778faf40aee2",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51",
"reference": "1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51",
"shasum": ""
},
"require": {
@@ -4618,7 +4634,7 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
"time": "2025-05-28T12:52:06+00:00"
"time": "2025-08-06T10:10:28+00:00"
},
{
"name": "wapmorgan/php-deprecation-detector",

View File

@@ -47,7 +47,7 @@
},
"display_name": {
"type": "string",
"pattern": "^[A-Za-z 0-9-]+$"
"pattern": "^[()A-Za-z 0-9-]+$"
},
"environment": {
"type": "array",

View File

@@ -8,9 +8,9 @@
"nextcloud-aio-onlyoffice",
"nextcloud-aio-collabora",
"nextcloud-aio-talk",
"nextcloud-aio-nextcloud",
"nextcloud-aio-notify-push",
"nextcloud-aio-whiteboard"
"nextcloud-aio-whiteboard",
"nextcloud-aio-nextcloud"
],
"display_name": "Apache",
"image": "ghcr.io/nextcloud-releases/aio-apache",
@@ -236,6 +236,9 @@
"PHP_MEMORY_LIMIT=%NEXTCLOUD_MEMORY_LIMIT%",
"FULLTEXTSEARCH_ENABLED=%FULLTEXTSEARCH_ENABLED%",
"FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch",
"FULLTEXTSEARCH_PORT=9200",
"FULLTEXTSEARCH_USER=elastic",
"FULLTEXTSEARCH_INDEX=nextcloud-aio",
"PHP_MAX_TIME=%NEXTCLOUD_MAX_TIME%",
"TRUSTED_CACERTS_DIR=%NEXTCLOUD_TRUSTED_CACERTS_DIR%",
"STARTUP_APPS=%NEXTCLOUD_STARTUP_APPS%",
@@ -377,7 +380,7 @@
"internal_port": "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:logging.level_startup=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%",
"server_name=%NC_DOMAIN%",
@@ -792,7 +795,7 @@
"bootstrap.memory_lock=true",
"cluster.name=nextcloud-aio",
"discovery.type=single-node",
"logger.org.elasticsearch.discovery=WARN",
"logger.level=WARN",
"http.port=9200",
"xpack.license.self_generated.type=basic",
"xpack.security.enabled=false",

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="6.12.0@cf420941d061a57050b6c468ef2c778faf40aee2">
<files psalm-version="6.13.1@1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51">
<file src="src/ContainerDefinitionFetcher.php">
<PossiblyFalseArgument>
<code><![CDATA[file_get_contents($path)]]></code>

View File

@@ -82,6 +82,11 @@ $app->get('/containers', function (Request $request, Response $response, array $
$dockerController = $container->get(\AIO\Controller\DockerController::class);
$dockerActionManger->ConnectMasterContainerToNetwork();
$dockerController->StartDomaincheckContainer();
// Check if bypass_mastercontainer_update is provided on the URL, a special developer mode to bypass a mastercontainer update and use local image.
$params = $request->getQueryParams();
$bypass_mastercontainer_update = isset($params['bypass_mastercontainer_update']);
return $view->render($response, 'containers.twig', [
'domain' => $configurationManager->GetDomain(),
'apache_port' => $configurationManager->GetApachePort(),
@@ -91,7 +96,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
'nextcloud_password' => $configurationManager->GetAndGenerateSecret('NEXTCLOUD_PASSWORD'),
'containers' => (new \AIO\ContainerDefinitionFetcher($container->get(\AIO\Data\ConfigurationManager::class), $container))->FetchDefinition(),
'borgbackup_password' => $configurationManager->GetAndGenerateSecret('BORGBACKUP_PASSWORD'),
'is_mastercontainer_update_available' => $dockerActionManger->IsMastercontainerUpdateAvailable(),
'is_mastercontainer_update_available' => ( $bypass_mastercontainer_update ? false : $dockerActionManger->IsMastercontainerUpdateAvailable() ),
'has_backup_run_once' => $configurationManager->hasBackupRunOnce(),
'is_backup_container_running' => $dockerActionManger->isBackupContainerRunning(),
'backup_exit_code' => $dockerActionManger->GetBackupcontainerExitCode(),

View File

@@ -22,6 +22,7 @@ readonly class DockerController {
private function PerformRecursiveContainerStart(string $id, bool $pullImage = true) : void {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
// Start all dependencies first and then itself
foreach($container->GetDependsOn() as $dependency) {
$this->PerformRecursiveContainerStart($dependency, $pullImage);
}
@@ -33,33 +34,32 @@ readonly class DockerController {
return;
}
// Skip database image pull if the last shutdown was not clean
if ($id === 'nextcloud-aio-database') {
if ($this->dockerActionManager->GetDatabasecontainerExitCode() > 0) {
$pullImage = false;
error_log('Not pulling the latest database image because the container was not correctly shut 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->isRegistryReachable($container)) {
$pullImage = false;
error_log('Not pulling the ' . $container->GetContainerName() . ' image for the ' . $container->GetIdentifier() . ' container because the registry does not seem to be reachable.');
}
}
$this->dockerActionManager->DeleteContainer($container);
$this->dockerActionManager->CreateVolumes($container);
if ($pullImage) {
$this->dockerActionManager->PullImage($container);
}
$this->dockerActionManager->PullImage($container, $pullImage);
$this->dockerActionManager->CreateContainer($container);
$this->dockerActionManager->StartContainer($container);
$this->dockerActionManager->ConnectContainerToNetwork($container);
}
private function PerformRecursiveImagePull(string $id) : void {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
// Pull all dependencies first and then itself
foreach($container->GetDependsOn() as $dependency) {
$this->PerformRecursiveImagePull($dependency);
}
$this->dockerActionManager->PullImage($container, true);
}
public function PullAllContainerImages(): void {
$id = self::TOP_CONTAINER;
$this->PerformRecursiveImagePull($id);
}
public function GetLogs(Request $request, Response $response, array $args) : Response
{
$requestParams = $request->getQueryParams();
@@ -83,17 +83,18 @@ readonly class DockerController {
}
public function StartBackupContainerBackup(Request $request, Response $response, array $args) : Response {
$this->startBackup();
$forceStopNextcloud = true;
$this->startBackup($forceStopNextcloud);
return $response->withStatus(201)->withHeader('Location', '/');
}
public function startBackup() : void {
public function startBackup(bool $forceStopNextcloud = false) : void {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'backup';
$this->configurationManager->WriteConfig($config);
$id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStop($id);
$this->PerformRecursiveContainerStop($id, $forceStopNextcloud);
$id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id);
@@ -125,7 +126,8 @@ readonly class DockerController {
$this->configurationManager->WriteConfig($config);
$id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStop($id);
$forceStopNextcloud = true;
$this->PerformRecursiveContainerStop($id, $forceStopNextcloud);
$id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id);
@@ -224,22 +226,34 @@ readonly class DockerController {
$this->PerformRecursiveContainerStart($id);
}
private function PerformRecursiveContainerStop(string $id) : void
private function PerformRecursiveContainerStop(string $id, bool $forceStopNextcloud = false) : void
{
$container = $this->containerDefinitionFetcher->GetContainerById($id);
foreach($container->GetDependsOn() as $dependency) {
$this->PerformRecursiveContainerStop($dependency);
// This is a hack but no better solution was found for the meantime
// Stop Collabora first to make sure it force-saves
// See https://github.com/nextcloud/richdocuments/issues/3799
if ($id === self::TOP_CONTAINER && $this->configurationManager->isCollaboraEnabled()) {
$this->PerformRecursiveContainerStop('nextcloud-aio-collabora');
}
// Disconnecting is not needed. This also allows to start the containers manually via docker-cli
//$this->dockerActionManager->DisconnectContainerFromNetwork($container);
$this->dockerActionManager->StopContainer($container);
// Stop itself first and then all the dependencies
if ($id !== 'nextcloud-aio-nextcloud') {
$this->dockerActionManager->StopContainer($container);
} else {
// We want to stop the Nextcloud container after 10s and not wait for the configured stop_grace_period
$this->dockerActionManager->StopContainer($container, $forceStopNextcloud);
}
foreach($container->GetDependsOn() as $dependency) {
$this->PerformRecursiveContainerStop($dependency, $forceStopNextcloud);
}
}
public function StopContainer(Request $request, Response $response, array $args) : Response
{
$id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStop($id);
$forceStopNextcloud = true;
$this->PerformRecursiveContainerStop($id, $forceStopNextcloud);
return $response->withStatus(201)->withHeader('Location', '/');
}

View File

@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
// Log whole log messages
ini_set('log_errors_max_len', '0');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
// Pull all containers
$dockerController->PullAllContainerImages();

View File

@@ -484,8 +484,15 @@ class ConfigurationManager
}
if (!$isValidPath) {
throw new InvalidSettingConfigurationException("The path must start with '/', and must not end with '/'!");
throw new InvalidSettingConfigurationException("The path must start with '/', and must not end with '/'! Another option is to use the docker volume name 'nextcloud_aio_backupdir'.");
}
// Prevent backup to be contained in Nextcloud Datadir as this will delete the backup archive upon restore
// See https://github.com/nextcloud/all-in-one/issues/6607
if (str_starts_with($location . '/', rtrim($this->GetNextcloudDatadirMount(), '/') . '/')) {
throw new InvalidSettingConfigurationException("The path must not be a children of or equal to NEXTCLOUD_DATADIR, which is currently set to " . $this->GetNextcloudDatadirMount());
}
} else {
$this->ValidateBorgRemoteRepo($repo);
}

View File

@@ -240,178 +240,7 @@ readonly class DockerActionManager {
$envs[] = $this->GetAllNextcloudExecCommands();
}
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);
$env = str_replace('%NC_DOMAIN%', $this->configurationManager->GetDomain(), $env);
$envs[$key] = $env;
continue;
}
// Original implementation
$patterns = ['/%(.*)%/'];
if (preg_match($patterns[0], $env, $out) === 1) {
$replacements = array();
if ($out[1] === 'NC_DOMAIN') {
$replacements[1] = $this->configurationManager->GetDomain();
} elseif ($out[1] === 'NC_BASE_DN') {
$replacements[1] = $this->configurationManager->GetBaseDN();
} elseif ($out[1] === 'AIO_TOKEN') {
$replacements[1] = $this->configurationManager->GetToken();
} elseif ($out[1] === 'BORGBACKUP_REMOTE_REPO') {
$replacements[1] = $this->configurationManager->GetBorgRemoteRepo();
} elseif ($out[1] === 'BORGBACKUP_MODE') {
$replacements[1] = $this->configurationManager->GetBackupMode();
} elseif ($out[1] === 'AIO_URL') {
$replacements[1] = $this->configurationManager->GetAIOURL();
} elseif ($out[1] === 'SELECTED_RESTORE_TIME') {
$replacements[1] = $this->configurationManager->GetSelectedRestoreTime();
} elseif ($out[1] === 'RESTORE_EXCLUDE_PREVIEWS') {
$replacements[1] = $this->configurationManager->GetRestoreExcludePreviews();
} elseif ($out[1] === 'APACHE_PORT') {
$replacements[1] = $this->configurationManager->GetApachePort();
} elseif ($out[1] === 'TALK_PORT') {
$replacements[1] = $this->configurationManager->GetTalkPort();
} elseif ($out[1] === 'NEXTCLOUD_MOUNT') {
$replacements[1] = $this->configurationManager->GetNextcloudMount();
} elseif ($out[1] === 'BACKUP_RESTORE_PASSWORD') {
$replacements[1] = $this->configurationManager->GetBorgRestorePassword();
} elseif ($out[1] === 'CLAMAV_ENABLED') {
if ($this->configurationManager->isClamavEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'TALK_RECORDING_ENABLED') {
if ($this->configurationManager->isTalkRecordingEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'ONLYOFFICE_ENABLED') {
if ($this->configurationManager->isOnlyofficeEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'COLLABORA_ENABLED') {
if ($this->configurationManager->isCollaboraEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'TALK_ENABLED') {
if ($this->configurationManager->isTalkEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'UPDATE_NEXTCLOUD_APPS') {
if ($this->configurationManager->isDailyBackupRunning() && $this->configurationManager->areAutomaticUpdatesEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'TIMEZONE') {
if ($this->configurationManager->GetTimezone() === '') {
$replacements[1] = 'Etc/UTC';
} else {
$replacements[1] = $this->configurationManager->GetTimezone();
}
} elseif ($out[1] === 'COLLABORA_DICTIONARIES') {
if ($this->configurationManager->GetCollaboraDictionaries() === '') {
$replacements[1] = 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru';
} else {
$replacements[1] = $this->configurationManager->GetCollaboraDictionaries();
}
} elseif ($out[1] === 'IMAGINARY_ENABLED') {
if ($this->configurationManager->isImaginaryEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'FULLTEXTSEARCH_ENABLED') {
if ($this->configurationManager->isFulltextsearchEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'DOCKER_SOCKET_PROXY_ENABLED') {
if ($this->configurationManager->isDockerSocketProxyEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'NEXTCLOUD_UPLOAD_LIMIT') {
$replacements[1] = $this->configurationManager->GetNextcloudUploadLimit();
} elseif ($out[1] === 'NEXTCLOUD_MEMORY_LIMIT') {
$replacements[1] = $this->configurationManager->GetNextcloudMemoryLimit();
} elseif ($out[1] === 'NEXTCLOUD_MAX_TIME') {
$replacements[1] = $this->configurationManager->GetNextcloudMaxTime();
} elseif ($out[1] === 'BORG_RETENTION_POLICY') {
$replacements[1] = $this->configurationManager->GetBorgRetentionPolicy();
} elseif ($out[1] === 'FULLTEXTSEARCH_JAVA_OPTIONS') {
$replacements[1] = $this->configurationManager->GetFulltextsearchJavaOptions();
} elseif ($out[1] === 'NEXTCLOUD_TRUSTED_CACERTS_DIR') {
$replacements[1] = $this->configurationManager->GetTrustedCacertsDir();
} elseif ($out[1] === 'ADDITIONAL_DIRECTORIES_BACKUP') {
if ($this->configurationManager->GetAdditionalBackupDirectoriesString() !== '') {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'BORGBACKUP_HOST_LOCATION') {
$replacements[1] = $this->configurationManager->GetBorgBackupHostLocation();
} elseif ($out[1] === 'APACHE_MAX_SIZE') {
$replacements[1] = $this->configurationManager->GetApacheMaxSize();
} elseif ($out[1] === 'COLLABORA_SECCOMP_POLICY') {
$replacements[1] = $this->configurationManager->GetCollaboraSeccompPolicy();
} elseif ($out[1] === 'NEXTCLOUD_STARTUP_APPS') {
$replacements[1] = $this->configurationManager->GetNextcloudStartupApps();
} elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_APKS') {
$replacements[1] = $this->configurationManager->GetNextcloudAdditionalApks();
} elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS') {
$replacements[1] = $this->configurationManager->GetNextcloudAdditionalPhpExtensions();
} elseif ($out[1] === 'INSTALL_LATEST_MAJOR') {
if ($this->configurationManager->shouldLatestMajorGetInstalled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'REMOVE_DISABLED_APPS') {
if ($this->configurationManager->shouldDisabledAppsGetRemoved()) {
$replacements[1] = 'yes';
} 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)
} 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
} elseif ($out[1] === 'CADDY_IP_ADDRESS') {
$replacements[1] = '';
$communityContainers = $this->configurationManager->GetEnabledCommunityContainers();
if (in_array('caddy', $communityContainers, true)) {
$replacements[1] = gethostbyname('nextcloud-aio-caddy');
}
} elseif ($out[1] === 'WHITEBOARD_ENABLED') {
if ($this->configurationManager->isWhiteboardEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} else {
$secret = $this->configurationManager->GetSecret($out[1]);
if ($secret === "") {
throw new \Exception("The secret " . $out[1] . " is empty. Cannot substitute its value. Please check if it is defined in secrets of containers.json.");
}
$replacements[1] = $secret;
}
$envs[$key] = preg_replace($patterns, $replacements, $env);
}
$envs[$key] = $this->replaceEnvPlaceholders($env);
}
if (count($envs) > 0) {
@@ -584,6 +413,13 @@ readonly class DockerActionManager {
$requestBody['HostConfig']['Mounts'] = $mounts;
}
// All AIO-managed containers should not be updated externally via watchtower but gracefully by AIO's backup and update feature.
// Also DIUN should not send update notifications. See https://crazymax.dev/diun/providers/docker/#docker-labels
$requestBody['Labels'] = ["com.centurylinklabs.watchtower.enable" => "false", "diun.enable" => "false", "org.label-schema.vendor" => "Nextcloud"];
// Containers should have a fixed host name. See https://github.com/nextcloud/all-in-one/discussions/6589
$requestBody['Hostname'] = $container->GetIdentifier();
$url = $this->BuildApiUrl('containers/create?name=' . $container->GetIdentifier());
try {
$this->guzzleClient->request(
@@ -614,7 +450,30 @@ readonly class DockerActionManager {
}
}
public function PullImage(Container $container): void {
public function PullImage(Container $container, bool $pullImage = true): void {
// Skip database image pull if the last shutdown was not clean
if ($container->GetIdentifier() === 'nextcloud-aio-database') {
if ($this->GetDatabasecontainerExitCode() > 0) {
$pullImage = false;
error_log('Not pulling the latest database image because the container was not correctly shut 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->isRegistryReachable($container)) {
$pullImage = false;
error_log('Not pulling the ' . $container->GetContainerName() . ' image for the ' . $container->GetIdentifier() . ' container because the registry does not seem to be reachable.');
}
}
// Do not continue if $pullImage is false
if (!$pullImage) {
return;
}
$imageName = $this->BuildImageName($container);
$encodedImageName = urlencode($imageName);
$url = $this->BuildApiUrl(sprintf('images/create?fromImage=%s', $encodedImageName));
@@ -637,6 +496,88 @@ readonly class DockerActionManager {
}
}
// Replaces placeholders in $envValue with their values.
// E.g. "%NC_DOMAIN%:%APACHE_PORT" becomes "my.nextcloud.com:11000"
private function replaceEnvPlaceholders(string $envValue): string {
// $pattern breaks down as:
// % - matches a literal percent sign
// ([^%]+) - capture group that matches one or more characters that are NOT percent signs
// % - matches the closing percent sign
//
// Assumes literal percent signs are always matched and there is no
// escaping.
$pattern = '/%([^%]+)%/';
$matchCount = preg_match_all($pattern, $envValue, $matches);
if ($matchCount === 0) {
return $envValue;
}
$placeholders = $matches[0]; // ["%PLACEHOLDER1%", "%PLACEHOLDER2%", ...]
$placeholderNames = $matches[1]; // ["PLACEHOLDER1", "PLACEHOLDER2", ...]
$placeholderPatterns = array_map(static fn(string $p) => '/' . preg_quote($p) . '/', $placeholders); // ["/%PLACEHOLDER1%/", ...]
$placeholderValues = array_map($this->getPlaceholderValue(...), $placeholderNames); // ["val1", "val2"]
// Guaranteed to be non-null because we found the placeholders in the preg_match_all.
return (string) preg_replace($placeholderPatterns, $placeholderValues, $envValue);
}
private function getPlaceholderValue(string $placeholder) : string {
return match ($placeholder) {
'NC_DOMAIN' => $this->configurationManager->GetDomain(),
'NC_BASE_DN' => $this->configurationManager->GetBaseDN(),
'AIO_TOKEN' => $this->configurationManager->GetToken(),
'BORGBACKUP_REMOTE_REPO' => $this->configurationManager->GetBorgRemoteRepo(),
'BORGBACKUP_MODE' => $this->configurationManager->GetBackupMode(),
'AIO_URL' => $this->configurationManager->GetAIOURL(),
'SELECTED_RESTORE_TIME' => $this->configurationManager->GetSelectedRestoreTime(),
'RESTORE_EXCLUDE_PREVIEWS' => $this->configurationManager->GetRestoreExcludePreviews(),
'APACHE_PORT' => $this->configurationManager->GetApachePort(),
'TALK_PORT' => $this->configurationManager->GetTalkPort(),
'NEXTCLOUD_MOUNT' => $this->configurationManager->GetNextcloudMount(),
'BACKUP_RESTORE_PASSWORD' => $this->configurationManager->GetBorgRestorePassword(),
'CLAMAV_ENABLED' => $this->configurationManager->isClamavEnabled() ? 'yes' : '',
'TALK_RECORDING_ENABLED' => $this->configurationManager->isTalkRecordingEnabled() ? 'yes' : '',
'ONLYOFFICE_ENABLED' => $this->configurationManager->isOnlyofficeEnabled() ? 'yes' : '',
'COLLABORA_ENABLED' => $this->configurationManager->isCollaboraEnabled() ? 'yes' : '',
'TALK_ENABLED' => $this->configurationManager->isTalkEnabled() ? 'yes' : '',
'UPDATE_NEXTCLOUD_APPS' => ($this->configurationManager->isDailyBackupRunning() && $this->configurationManager->areAutomaticUpdatesEnabled()) ? 'yes' : '',
'TIMEZONE' => $this->configurationManager->GetTimezone() === '' ? 'Etc/UTC' : $this->configurationManager->GetTimezone(),
'COLLABORA_DICTIONARIES' => $this->configurationManager->GetCollaboraDictionaries() === '' ? 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru' : $this->configurationManager->GetCollaboraDictionaries(),
'IMAGINARY_ENABLED' => $this->configurationManager->isImaginaryEnabled() ? 'yes' : '',
'FULLTEXTSEARCH_ENABLED' => $this->configurationManager->isFulltextsearchEnabled() ? 'yes' : '',
'DOCKER_SOCKET_PROXY_ENABLED' => $this->configurationManager->isDockerSocketProxyEnabled() ? 'yes' : '',
'NEXTCLOUD_UPLOAD_LIMIT' => $this->configurationManager->GetNextcloudUploadLimit(),
'NEXTCLOUD_MEMORY_LIMIT' => $this->configurationManager->GetNextcloudMemoryLimit(),
'NEXTCLOUD_MAX_TIME' => $this->configurationManager->GetNextcloudMaxTime(),
'BORG_RETENTION_POLICY' => $this->configurationManager->GetBorgRetentionPolicy(),
'FULLTEXTSEARCH_JAVA_OPTIONS' => $this->configurationManager->GetFulltextsearchJavaOptions(),
'NEXTCLOUD_TRUSTED_CACERTS_DIR' => $this->configurationManager->GetTrustedCacertsDir(),
'ADDITIONAL_DIRECTORIES_BACKUP' => $this->configurationManager->GetAdditionalBackupDirectoriesString() !== '' ? 'yes' : '',
'BORGBACKUP_HOST_LOCATION' => $this->configurationManager->GetBorgBackupHostLocation(),
'APACHE_MAX_SIZE' => (string)($this->configurationManager->GetApacheMaxSize()),
'COLLABORA_SECCOMP_POLICY' => $this->configurationManager->GetCollaboraSeccompPolicy(),
'NEXTCLOUD_STARTUP_APPS' => $this->configurationManager->GetNextcloudStartupApps(),
'NEXTCLOUD_ADDITIONAL_APKS' => $this->configurationManager->GetNextcloudAdditionalApks(),
'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS' => $this->configurationManager->GetNextcloudAdditionalPhpExtensions(),
'INSTALL_LATEST_MAJOR' => $this->configurationManager->shouldLatestMajorGetInstalled() ? 'yes' : '',
'REMOVE_DISABLED_APPS' => $this->configurationManager->shouldDisabledAppsGetRemoved() ? 'yes' : '',
// 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)
'AIO_DATABASE_HOST' => gethostbyname('nextcloud-aio-database'),
// Allow to get local ip-address of caddy container and add it to trusted proxies automatically
'CADDY_IP_ADDRESS' => in_array('caddy', $this->configurationManager->GetEnabledCommunityContainers(), true) ? gethostbyname('nextcloud-aio-caddy') : '',
'WHITEBOARD_ENABLED' => $this->configurationManager->isWhiteboardEnabled() ? 'yes' : '',
default => $this->getSecretOrThrow($placeholder),
};
}
private function getSecretOrThrow(string $secretName): string {
$secret = $this->configurationManager->GetSecret($secretName);
if ($secret === "") {
throw new \Exception("The secret " . $secretName . " is empty. Cannot substitute its value. Please check if it is defined in secrets of containers.json.");
}
return $secret;
}
private function isContainerUpdateAvailable(string $id): string {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
@@ -957,8 +898,13 @@ readonly class DockerActionManager {
}
}
public function StopContainer(Container $container): void {
$url = $this->BuildApiUrl(sprintf('containers/%s/stop?t=%s', urlencode($container->GetIdentifier()), $container->GetMaxShutdownTime()));
public function StopContainer(Container $container, bool $forceStopContainer = false): void {
if ($forceStopContainer) {
$maxShutDownTime = 10;
} else {
$maxShutDownTime = $container->GetMaxShutdownTime();
}
$url = $this->BuildApiUrl(sprintf('containers/%s/stop?t=%s', urlencode($container->GetIdentifier()), $maxShutDownTime));
try {
$this->guzzleClient->post($url);
} catch (RequestException $e) {

View File

@@ -17,7 +17,7 @@
<div class="container">
<main>
<h1>Nextcloud AIO v11.1.0</h1>
<h1>Nextcloud AIO v11.6.0</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>
@@ -163,7 +163,7 @@
</form>
{% endif %}
<p>Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance. Please note that the current AIO passphrase will be kept and the previous AIO passphrase will not be restored from backup!</p>
<p><strong>Please note:</strong> If the backup that you want to restore contained any <a target="_blank" href="https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers">community container</a>, but you did not specify the same community containers via environmental variable while creating this new AIO instance, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.</p>
<p><strong>Important:</strong> If the backup that you want to restore contained any <a target="_blank" href="https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers">community container</a>, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.</p>
<form method="POST" action="/api/docker/restore" class="xhr" id="restore_selection">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
@@ -173,7 +173,7 @@
{% endfor %}
</select><br>
<input type="checkbox" id="restore-exclude-previews" name="restore-exclude-previews"><label for="restore-exclude-previews">Exclude previews from restore which will speed up the restore process but will trigger a scan of the preview folder as soon as the Nextcloud container starts the next time</label><br>
<input type="submit" value="Restore selected backup"/>
<input type="submit" value="Restore selected backup" onclick="return confirm('⚠️ Important: If the backup that you want to restore contained any community container, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.')"/>
</form>
{% endif %}
{% elseif borg_backup_mode == 'restore' %}
@@ -371,6 +371,7 @@
<p>
To store backups remotely instead, fill in the
<a target="_blank" href="https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls">remote borg repo url and submit it</a>.
You will be provided with an SSH public key for authorization at the remote afterwards.
</p>
<form method="POST" action="/api/configuration" class="xhr">
<label>Local backup location</label> <input type="text" id="borg_backup_host_location" name="borg_backup_host_location" placeholder="/mnt/backup"/><br>

View File

@@ -98,7 +98,6 @@
>
<label for="talk-recording">Nextcloud Talk Recording-server (needs Nextcloud Talk being enabled and ~1GB additional RAM and ~2 additional vCPUs, currently <a target="_blank" href="https://github.com/nextcloud/nextcloud-talk-recording/issues/17">only works on x86_64</a>)</label>
</p>
{% if is_onlyoffice_enabled == true %}
<p>
<input
type="checkbox"
@@ -113,7 +112,6 @@
>
<label for="onlyoffice">OnlyOffice</label>
</p>
{% endif %}
<p>
<input
type="checkbox"

View File

@@ -60,8 +60,8 @@ test('Initial setup', async ({ page: setupPage }) => {
// Start containers and wait for starting message
await containersPage.getByRole('button', { name: 'Download and start containers' }).click();
await expect(containersPage.getByRole('main')).toContainText('Containers are currently starting.', { timeout: 3 * 60 * 1000 });
await expect(containersPage.getByRole('link', { name: 'Open your Nextcloud ↗' })).toBeVisible({ timeout: 2 * 60 * 1000 });
await expect(containersPage.getByRole('main')).toContainText('Containers are currently starting.', { timeout: 5 * 60 * 1000 });
await expect(containersPage.getByRole('link', { name: 'Open your Nextcloud ↗' })).toBeVisible({ timeout: 3 * 60 * 1000 });
await expect(containersPage.getByRole('link', { name: 'Open your Nextcloud ↗' })).toHaveAttribute('href', 'https://example.com');
// Extract initial nextcloud password

View File

@@ -28,7 +28,7 @@ test('Restore instance', async ({ page: setupPage }) => {
await containersPage.locator('#domain').click();
await containersPage.locator('#domain').fill('example.com');
await containersPage.getByRole('button', { name: 'Submit domain' }).click();
await expect(containersPage.locator('body')).toContainText('Domain does not point to this server or the reverse proxy is not configured correctly.');
await expect(containersPage.locator('body')).toContainText('Domain does not point to this server or the reverse proxy is not configured correctly.', { timeout: 15 * 1000 });
// Reject invalid backup location
await containersPage.locator('#borg_restore_host_location').click();
@@ -59,6 +59,10 @@ test('Restore instance', async ({ page: setupPage }) => {
// Check integrity and restore backup
await containersPage.getByRole('button', { name: 'Check backup integrity' }).click();
await expect(containersPage.getByRole('main')).toContainText('Last check successful!', { timeout: 5 * 60 * 1000 });
containersPage.once('dialog', dialog => {
console.log(`Dialog message: ${dialog.message()}`)
dialog.accept()
});
await containersPage.getByRole('button', { name: 'Restore selected backup' }).click();
await expect(containersPage.getByRole('main')).toContainText('Backup container is currently running:', { timeout: 1 * 60 * 1000 });

View File

@@ -1,4 +1,8 @@
# Nextcloud All-in-One
> [!NOTE]
> Nextcloud AIO is actively looking for contributors. See [the forum post](https://help.nextcloud.com/t/nextcloud-aio-is-looking-for-contributors/205234).
The official Nextcloud installation method. Nextcloud AIO provides easy deployment and maintenance with most features included in this one Nextcloud instance.
Included are:
@@ -81,6 +85,9 @@ Included are:
| ![image](https://github.com/user-attachments/assets/6ef5d7b5-86f2-402c-bc6c-b633af2ca7dd) | ![image](https://github.com/user-attachments/assets/939d0fdf-436f-433d-82d3-27548263a040) |
## How to use this?
>[!WARNING]
> You should first make sure that you are not using docker installed via snap. You can check this by running `sudo docker info | grep "Docker Root Dir" | grep "/var/snap/docker/"`. If the output should contain the mentioned string `/var/snap/docker/`, you should first uninstall docker snap via `sudo snap remove docker` and then follow the instructions below. ⚠️ Attention: only run the command if this is a clean new docker installation and you are not running any service already using this.
> [!NOTE]
> The following instructions are meant for installations without a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) already being in place. If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else), see the [reverse proxy documentation](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md). Also, the instructions below are especially meant for Linux. For macOS see [this](#how-to-run-aio-on-macos), for Windows see [this](#how-to-run-aio-on-windows) and for Synology see [this](#how-to-run-aio-on-synology-dsm).
@@ -442,7 +449,7 @@ You might want to adjust the Nextcloud apps that are installed upon the first st
### How to add OS packages permanently to the Nextcloud container?
Some Nextcloud apps require additional external dependencies that must be bundled within Nextcloud container in order to work correctly. As we cannot put each and every dependency for all apps into the container - as this would make the project quickly unmaintainable - there is an official way in which you can add additional dependencies into the Nextcloud container. However note that doing this is disrecommended since we do not test Nextcloud apps that require external dependencies.
You can do so by adding `--env NEXTCLOUD_ADDITIONAL_APKS="imagemagick dependency2 dependency3"` 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 be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available packages here: https://pkgs.alpinelinux.org/packages?branch=v3.21. By default `imagemagick` is added. If you want to keep it, you need to specify it as well.
You can do so by adding `--env NEXTCLOUD_ADDITIONAL_APKS="imagemagick dependency2 dependency3"` 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 be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available packages here: https://pkgs.alpinelinux.org/packages?branch=v3.22. By default `imagemagick` is added. If you want to keep it, you need to specify it as well.
### How to add PHP extensions permanently to the Nextcloud container?
Some Nextcloud apps require additional php extensions that must be bundled within Nextcloud container in order to work correctly. As we cannot put each and every dependency for all apps into the container - as this would make the project quickly unmaintainable - there is an official way in which you can add additional php extensions into the Nextcloud container. However note that doing this is disrecommended since we do not test Nextcloud apps that require additional php extensions.
@@ -567,16 +574,16 @@ On older TrueNAS SCALE releases with Kubernetes environment, there are two ways
Another but untested way is to install Portainer on your TrueNAS SCALE from here https://truecharts.org/charts/stable/portainer/installation-notes and add the Helm-chart repository https://nextcloud.github.io/all-in-one/ into Portainer by following https://docs.portainer.io/user/kubernetes/helm. More docs on AIOs Helm Chart are available here: https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart#nextcloud-aio-helm-chart.
### How to run `occ` commands?
Simply run the following: `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ your-command`. Of course `your-command` needs to be exchanged with the command that you want to run.
Simply run the following: `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ your-command`. Of course `your-command` needs to be exchanged with the command that you want to run. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
### How to resolve `Security & setup warnings displays the "missing default phone region" after initial install`?
Simply run the following command: `sudo docker exec --user www-data nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="yourvalue"`. Of course you need to modify `yourvalue` based on your location. Examples are `DE`, `US` and `GB`. See this list for more codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
Simply run the following command: `sudo docker exec --user www-data nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="yourvalue"`. Of course you need to modify `yourvalue` based on your location. Examples are `DE`, `US` and `GB`. See this list for more codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
### How to run multiple AIO instances on one server?
See [multiple-instances.md](./multiple-instances.md) for some documentation on this.
### Bruteforce protection FAQ
Nextcloud features a built-in bruteforce protection which may get triggered and will block an ip-address or disable a user. You can unblock an ip-address by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ security:bruteforce:reset <ip-address>` and enable a disabled user by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ user:enable <name of user>`. See https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#security for further information.
Nextcloud features a built-in bruteforce protection which may get triggered and will block an ip-address or disable a user. You can unblock an ip-address by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ security:bruteforce:reset <ip-address>` and enable a disabled user by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ user:enable <name of user>`. See https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#security for further information. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
### How to switch the channel?
You can switch to a different channel like e.g. the beta channel or from the beta channel back to the latest channel by stopping the mastercontainer, removing it (no data will be lost) and recreating the container using the same command that you used initially to create the mastercontainer. You simply need to change the last line `ghcr.io/nextcloud-releases/all-in-one:latest` to `ghcr.io/nextcloud-releases/all-in-one:beta` and vice versa.
@@ -658,10 +665,10 @@ Since Podman is not 100% compatible with the Docker API, Podman is not supported
### Access/Edit Nextcloud files/folders manually
The files and folders that you add to Nextcloud are by default stored in the following docker directory: `nextcloud_aio_nextcloud:/mnt/ncdata/` (usually `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/` on linux host systems). If needed, you can modify/add/delete files/folders there but **ATTENTION**: be very careful when doing so because you might corrupt your AIO installation! Best is to create a backup using the built-in backup solution before editing/changing files/folders in there because you will then be able to restore your instance to the backed up state.
After you are done modifying/adding/deleting files/folders, don't forget to apply the correct permissions by running: `sudo docker exec nextcloud-aio-nextcloud chown -R 33:0 /mnt/ncdata/` and `sudo docker exec nextcloud-aio-nextcloud chmod -R 750 /mnt/ncdata/` and rescan the files with `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all`.
After you are done modifying/adding/deleting files/folders, don't forget to apply the correct permissions by running: `sudo docker exec nextcloud-aio-nextcloud chown -R 33:0 /mnt/ncdata/` and `sudo docker exec nextcloud-aio-nextcloud chmod -R 750 /mnt/ncdata/` and rescan the files with `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all`. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
### How to edit Nextclouds config.php file with a texteditor?
You can edit Nextclouds config.php file directly from the host with your favorite text editor. E.g. like this: `sudo docker run -it --rm --volume nextcloud_aio_nextcloud:/var/www/html:rw alpine sh -c "apk add --no-cache nano && nano /var/www/html/config/config.php"`. Make sure to not break the file though which might corrupt your Nextcloud instance otherwise. In best case, create a backup using the built-in backup solution before editing the file.
You can edit Nextclouds config.php file directly from the host with your favorite text editor. E.g. like this: `sudo docker run -it --rm --volume nextcloud_aio_nextcloud:/var/www/html:rw alpine sh -c "apk add --no-cache nano && nano /var/www/html/config/config.php"`. Make sure to not break the file though which might corrupt your Nextcloud instance otherwise. In best case, create a backup using the built-in backup solution before editing the file. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
### How to change default files by creating a custom skeleton directory?
All users see a set of [default files and folders](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/default_files_configuration.html) as dictated by Nextcloud's configuration. To change these default files and folders a custom skeleton directory must first be created; this can be accomplished by copying your skeleton files `sudo docker cp --follow-link /path/to/nextcloud/skeleton/ nextcloud-aio-nextcloud:/mnt/ncdata/skeleton/`, applying the correct permissions with `sudo docker exec nextcloud-aio-nextcloud chown -R 33:0 /mnt/ncdata/skeleton/` and `sudo docker exec nextcloud-aio-nextcloud chmod -R 750 /mnt/ncdata/skeleton/` and setting the skeleton directory option with `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:system:set skeletondirectory --value="/mnt/ncdata/skeleton"`. Further information is available in the Nextcloud documentation on [configuration parameters for the skeleton directory](https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#skeletondirectory).
@@ -801,7 +808,7 @@ If you have the borg backup feature enabled, you can copy it over to the new hos
1. Note the path where the backups are stored and the encryption password
1. Navigate to the backup folder
1. Create archive of the backup so it's easier to copy: `tar -czvf borg.tar.gz borg`
1. Copy the archive over to the new host: `cp borg.tar.gz user@new.host:/mnt`. Make sure to replace `user` with your actual user and `new.host` with the IP or domain of the actual host. You can also use another way to copy the archive.
1. Copy the archive over to the new host: `scp borg.tar.gz user@new.host:/mnt`. Make sure to replace `user` with your actual user and `new.host` with the IP or domain of the actual host. You can also use another way to copy the archive.
1. Switch to the new host
1. Go to the folder you put the backup archive and extract it with `tar -xf borg.tar.gz`
1. Follow the installation guide to create a new aio instance, but do not start the containers yet (the `docker run` or `docker compose up -d` command)
@@ -1030,11 +1037,13 @@ After doing a restore via the AIO interface, you might run into problems due to
You can do so by running the `/daily-backup.sh` script that is stored in the mastercontainer. It accepts the following environment variables:
- `AUTOMATIC_UPDATES` if set to `1`, it will automatically stop the containers, update them and start them including the mastercontainer. If the mastercontainer gets updated, this script's execution will stop as soon as the mastercontainer gets stopped. You can then wait until it is started again and run the script with this flag again in order to update all containers correctly afterwards.
- `DAILY_BACKUP` if set to `1`, it will automatically stop the containers and create a backup. If you want to start them again afterwards, you may have a look at the `START_CONTAINERS` option.
- `START_CONTAINERS` if set to `1`, it will automatically start the containers without updating them.
- `STOP_CONTAINERS` if set to `1`, it will automatically stop the containers.
- `CHECK_BACKUP` if set to `1`, it will start the backup check. This is not allowed to be enabled at the same time like `DAILY_BACKUP`. Please be aware that this option is non-blocking which means that the backup check is not done when the process is finished since it only start the borgbackup container with the correct configuration.
- `STOP_CONTAINERS` if set to `1`, it will automatically stop the containers at the start of the script. Implied by `DAILY_BACKUP=1`.
- `START_CONTAINERS` if set to `1`, it will automatically start the containers at the end of the script, without updating them. Implied by `DAILY_BACKUP=1`.
- `CHECK_BACKUP` if set to `1`, it will start the integrity check of all borg backups made by AIO. Note that the backup check is non blocking so containers can be kept running while the check lasts. That means you can't pass `DAILY_BACKUP=1` at the same time. The output of the check can be found in the logs of the container `nextcloud-aio-borgbackup`.
One example for this would be `sudo docker exec -it --env DAILY_BACKUP=1 nextcloud-aio-mastercontainer /daily-backup.sh`, which you can run via a cronjob or put it in a script.
One example to do a backup would be `sudo docker exec -it --env DAILY_BACKUP=1 nextcloud-aio-mastercontainer /daily-backup.sh`, which you can run via a cronjob or put it in a script.
Likewise to do a backup check would be `sudo docker exec --env DAILY_BACKUP=0 --env CHECK_BACKUP=1 --env STOP_CONTAINERS=0 nextcloud-aio-mastercontainer /daily-backup.sh`.
> [!NOTE]
> None of the option returns error codes. So you need to check for the correct result yourself.
@@ -1057,7 +1066,7 @@ Netdata allows you to monitor your server using a GUI. You can install it by fol
If you want to use the user_sql app, the easiest way is to create an additional database container and add it to the docker network `nextcloud-aio`. Then the Nextcloud container should be able to talk to the database container using its name.
### phpMyAdmin, Adminer or pgAdmin
It is possible to install any of these to get a GUI for your AIO database. The pgAdmin container is recommended. You can get some docs on it here: https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html. For the container to connect to the aio-database, you need to connect the container to the docker network `nextcloud-aio` and use `nextcloud-aio-database` as database host, `oc_nextcloud` as database username and the password that you get when running `sudo docker exec nextcloud-aio-nextcloud grep dbpassword config/config.php` as the password. Apart from that there is now a way for the community to add containers: https://github.com/nextcloud/all-in-one/discussions/3061#discussioncomment-7307045
It is possible to install any of these to get a GUI for your AIO database. The pgAdmin container is recommended. You can get some docs on it here: https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html. For the container to connect to the aio-database, you need to connect the container to the docker network `nextcloud-aio` and use `nextcloud-aio-database` as database host, `oc_nextcloud` as database username and the password that you get when running `sudo docker exec nextcloud-aio-nextcloud grep dbpassword config/config.php` as the password. Apart from that there is now a way for the community to add containers: https://github.com/nextcloud/all-in-one/discussions/3061#discussioncomment-7307045 **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
### Mail server
You can configure one yourself by using either of these four recommended projects: [Docker Mailserver](https://github.com/docker-mailserver/docker-mailserver/#docker-mailserver), [Mailu](https://github.com/Mailu/Mailu), [Maddy Mail Server](https://github.com/foxcpp/maddy#maddy-mail-server), [Mailcow](https://github.com/mailcow/mailcow-dockerized#mailcow-dockerized-------) or [Stalwart](https://stalw.art/). There is now a community container which allows to easily add Stalwart Mail server to AIO: https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart

View File

@@ -273,7 +273,7 @@ Although it does not seem like it is the case but from AIO perspective a Cloudfl
⚠️ **Please note:** look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
1. Now continue with [point 2](#2-use-this-startup-command) but add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command - which will disable the domain validation (because it is known that the domain validation will not work behind a Cloudflare Tunnel).
**Advice:** Make sure to [disable Cloudflares Rocket Loader feature](https://help.nextcloud.com/t/login-page-not-working-solved/149417/8) as otherwise Nextcloud's login prompt will not be shown.
**Advice:** Make sure to [disable Cloudflare's Rocket Loader feature](https://help.nextcloud.com/t/login-page-not-working-solved/149417/8) as otherwise Nextcloud's login prompt will not be shown.
</details>