Compare commits

..

182 Commits

Author SHA1 Message Date
Simon L.
5a474d92d9 notify-push: fix startup on ipv6 disabled servers (#8188) 2026-05-21 12:06:28 +02:00
Simon L.
795baf903b server.config.php: downstream sync serverid upstream change (#8187) 2026-05-21 12:01:49 +02:00
Simon L.
b4c0266461 notify-push: fix startup on ipv6 disabled servers
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-21 10:53:49 +02:00
Simon L.
3a988938b2 server.config.php: downstream sync serverid upstream change
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-21 10:48:37 +02:00
Simon L.
7c0df4f701 build(deps): bump nats from 2.14.0-scratch to 2.14.1-scratch in /Containers/talk (#8185) 2026-05-21 10:40:41 +02:00
dependabot[bot]
1d27e165e6 build(deps): bump nats in /Containers/talk
Bumps nats from 2.14.0-scratch to 2.14.1-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-21 04:23:15 +00:00
Simon L.
a75d1c48bf Small improvements to /app/readme (#8179) 2026-05-20 17:15:51 +02:00
Simon L.
74b98b369e PHP dependency updates (#8180) 2026-05-20 16:36:42 +02:00
Simon L.
74dee77fac Add top-level .editorconfig; improve app/.editorconfig (#8178) 2026-05-20 15:54:33 +02:00
szaimen
70100ba5ef php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-20 13:42:43 +00:00
Gaetano Giunta
de72608519 Use proper name for AIP and Nextcloud in readme file
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 11:12:51 +00:00
Gaetano Giunta
02c9a7475b Small improvements to /app/readme
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 11:02:14 +00:00
Gaetano Giunta
c2e48d3524 add a comment to .editorconfig
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 10:56:10 +00:00
Gaetano Giunta
b615acf413 tabs to spaces for php/psalm.xml
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 10:55:39 +00:00
Gaetano Giunta
379b3d9e5a add top-level .editorconfig; improve app/.editorconfig
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 10:46:15 +00:00
Simon L.
abbe6a85cf build(deps): bump docker from 29.5.0-cli to 29.5.1-cli in /Containers/mastercontainer (#8177) 2026-05-20 10:50:58 +02:00
dependabot[bot]
20835baa0c build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.5.0-cli to 29.5.1-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-20 08:36:32 +00:00
Simon L.
a32568cc9c mastercontainer: run session-deduplicator as www-data (#8175) 2026-05-20 10:20:56 +02:00
Dimas D. Angga
c6748dc450 fix(mastercontainer): run session-deduplicator as www-data
The session-deduplicator only touches files under /mnt/docker-aio-config/session/, which is already owned by www-data, so running it as root grants more privilege than it needs. Dropping to www-data reduces the number of root-owned processes in the mastercontainer and follows least-privilege for the supervisord program set.
2026-05-20 09:32:49 +07:00
Tim Alexander Neuenbauer
6288665170 home-assistant: Update readme.md (#8055) 2026-05-19 16:25:28 +02:00
Simon L.
a3d84cce7b add warning notice to minio container that minio is not maintained any more (#8131) 2026-05-18 19:18:01 +02:00
Simon L.
535a0ffbd2 add a comment to clarify the reason for the condition added in PR 8145 (#8147) 2026-05-18 19:16:13 +02:00
Simon L.
1d947355ab Yaml updates (#8152) 2026-05-18 19:15:33 +02:00
Gaetano Giunta
fdfd479db7 aio-interface: make sure ublock does not break the log viewer (#8148) 2026-05-18 18:55:18 +02:00
gggeek
d4da301c9a improve the notice about minio deprecation in the readme of the community container
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-18 15:57:15 +00:00
gggeek
4c0b28f70d add warning notice to minio container that minio is not maintained any more
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-18 15:57:15 +00:00
gggeek
34429865fe add a comment to clarify the reason for the condition added in PR 8145
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-18 15:56:22 +00:00
szaimen
aa115110d5 Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-18 13:28:25 +00:00
Simon L.
01365c817f fix: apache container not stopping on SIGTERM (#8051) 2026-05-18 12:48:54 +02:00
Simon L.
774bd38f79 notify-push: allow to put the binary into the nextcloud apps dir directly (#8050) 2026-05-18 12:48:09 +02:00
Simon L.
82fc4635a2 aio-interface: add custom error handler for 405 errors (#8058) 2026-05-18 12:40:02 +02:00
Simon L.
e8b9e25cf8 small style improvements to compose.yaml comments (#8132) 2026-05-18 12:31:31 +02:00
Simon L.
d6a06f9e79 talk-recording: add Intel VAAPI driver to talk-recording container (#8143) 2026-05-18 12:31:08 +02:00
Simon L.
8e19b7165d apache: revert some changes to nextcloud.conf (#8146) 2026-05-18 12:31:00 +02:00
Simon L.
7ae8f729fb PHP dependency updates (#8115) 2026-05-18 12:01:47 +02:00
Simon L.
e6c340779f Remove HARP_HOST environment variable from manual-install YAML file (#8121) 2026-05-18 12:01:21 +02:00
Simon L.
e9a2076a9c apache: revert some changes to nextcloud.conf
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-18 11:56:14 +02:00
Simon L.
a571faa4a5 build(deps): bump nextcloud-releases/whiteboard from v1.5.7 to v1.5.8 in /Containers/whiteboard (#8142) 2026-05-18 11:52:50 +02:00
Simon L.
cdda9ea637 build(deps): bump docker from 29.4.3-cli to 29.5.0-cli in /Containers/mastercontainer (#8141) 2026-05-18 11:52:36 +02:00
Simon L.
dca9c6b2e2 fix(ci): skip helm-release workflow on forks (#8145) 2026-05-18 11:52:07 +02:00
Arya Rizky
af7c1d02fd fix(ci): skip helm-release workflow on forks
The helm-release workflow fails on forks because they don't have
a gh-pages branch set up for Helm chart publication. Add a
conditional check to only run this workflow on the upstream
nextcloud/all-in-one repository.

Fixes #8128
2026-05-18 16:10:57 +07:00
copilot-swe-agent[bot]
1a70a9e9fd fix: add Intel VAAPI driver (intel-media-driver) to talk-recording container
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/797873dc-7a28-424f-92d0-8e91bb47f6a0

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-05-18 07:34:40 +00:00
dependabot[bot]
0837266f86 build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.5.7 to v1.5.8.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 04:57:41 +00:00
dependabot[bot]
ea9eca44c2 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.4.3-cli to 29.5.0-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 04:56:43 +00:00
gggeek
3fc84ee784 small style improvements to compose.yaml comments 2026-05-17 13:44:00 +00:00
szaimen
bf445e699f php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-17 12:16:34 +00:00
Francesco Saltori
a03df48865 Remove HARP_HOST from manual-install YAML file
Signed-off-by: Francesco Saltori <francescosaltori@gmail.com>
2026-05-16 20:09:34 +02:00
Simon L.
cbea0730d3 LLDAP: update image and tag and change it to ghcr.io (#8020) 2026-05-16 13:03:58 +02:00
Simon L.
6c33a96980 Helm Chart updates (#8116) 2026-05-16 09:26:26 +02:00
szaimen
6a07493f4d Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-15 16:24:41 +00:00
Simon L.
e510e14550 fix watchtower
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-15 15:58:07 +02:00
Simon L.
1c5169c9e4 increase to 13.0.4
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-15 15:38:22 +02:00
Simon L.
b0c00866d4 Add default AIO_LOG_LEVEL=warn for watchtower and borgbackup containers (#8111) 2026-05-15 15:36:03 +02:00
copilot-swe-agent[bot]
ba48b8134f Add default AIO_LOG_LEVEL=warn for watchtower and borgbackup containers
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/8383605e-b72f-4f47-a4a8-a930d2f8a25c
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
2026-05-15 15:35:20 +02:00
Simon L.
0a553459ab build(deps): bump python from 3.14.3-alpine3.23 to 3.14.5-alpine3.23 in /Containers/talk-recording (#8107) 2026-05-15 09:01:25 +02:00
Simon L.
f42e669704 build(deps): bump postgres from 18.3-alpine to 18.4-alpine in /Containers/postgresql (#8106) 2026-05-15 09:01:05 +02:00
dependabot[bot]
483d562b20 build(deps): bump python in /Containers/talk-recording
Bumps python from 3.14.3-alpine3.23 to 3.14.5-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-15 04:24:00 +00:00
dependabot[bot]
5a77d4e842 build(deps): bump postgres in /Containers/postgresql
Bumps postgres from 18.3-alpine to 18.4-alpine.

---
updated-dependencies:
- dependency-name: postgres
  dependency-version: 18.4-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-15 04:23:40 +00:00
Simon L.
c5b853e50b PHP dependency updates (#8100) 2026-05-14 21:36:05 +02:00
szaimen
2a757d3d66 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-14 12:33:14 +00:00
Simon L.
19b94f40d5 fix it
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-13 16:10:10 +02:00
Simon L.
33f40632dd release helm chart another time
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-13 16:08:50 +02:00
Simon L.
574a408d10 build(deps): bump caddy from 2.11.2-builder-alpine to 2.11.3-builder-alpine in /Containers/mastercontainer (#8087) 2026-05-13 11:26:30 +02:00
Simon L.
79dd1286e9 build(deps): bump elasticsearch from 9.4.0 to 9.4.1 in /Containers/fulltextsearch (#8086) 2026-05-13 11:26:18 +02:00
Simon L.
96002b185d build(deps): bump caddy from 2.11.2-alpine to 2.11.3-alpine in /Containers/apache (#8085) 2026-05-13 11:26:03 +02:00
Simon L.
3828b1ae3d build(deps): bump haproxy from 3.3.8-alpine to 3.3.10-alpine in /Containers/docker-socket-proxy (#8080) 2026-05-13 11:25:51 +02:00
Simon L.
cdad9614cd build(deps): bump softprops/turnstyle from 3.2.3 to 3.2.4 in /.github/workflows (#8079) 2026-05-13 11:25:36 +02:00
Simon L.
c55ae87002 build(deps): bump docker from 29.4.1-cli to 29.4.3-cli in /Containers/mastercontainer (#8075) 2026-05-13 11:25:23 +02:00
Simon L.
3021f256ce build(deps): bump php from 8.5.5-fpm-alpine3.23 to 8.5.6-fpm-alpine3.23 in /Containers/mastercontainer (#8074) 2026-05-13 11:25:09 +02:00
Simon L.
124a6d295b build(deps): bump golang from 1.26.2-alpine3.23 to 1.26.3-alpine3.23 in /Containers/watchtower (#8069) 2026-05-13 11:24:57 +02:00
Simon L.
0c6c1caa90 build(deps): bump php from 8.3.30-fpm-alpine3.23 to 8.3.31-fpm-alpine3.23 in /Containers/nextcloud (#8068) 2026-05-13 11:24:44 +02:00
Simon L.
889096ab2b build(deps): bump golang from 1.26.2-alpine3.23 to 1.26.3-alpine3.23 in /Containers/imaginary (#8067) 2026-05-13 11:24:28 +02:00
Simon L.
cf2fb5f58d PHP dependency updates (#8025) 2026-05-13 11:24:13 +02:00
Simon L.
76c03d11f0 talk container update (#8024) 2026-05-13 11:23:26 +02:00
Simon L.
1bc3896314 fix the file
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-13 11:22:22 +02:00
Simon L.
d86ff57d2f Imaginary update (#8022) 2026-05-13 11:20:40 +02:00
Simon L.
a93e9ff0c6 build(deps): bump actions/setup-node from 6.3.0 to 6.4.0 in /.github/workflows (#8012) 2026-05-13 11:20:29 +02:00
Simon L.
b25b0e1075 another time
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-13 11:19:26 +02:00
Simon L.
e4d92bdea6 fix helm chart release
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-13 11:18:10 +02:00
Simon L.
d9332ef966 Helm Chart updates (#8088) 2026-05-13 11:15:00 +02:00
szaimen
9d53188df3 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-13 09:12:26 +00:00
Simon L.
acb18004de Yaml updates (#8023) 2026-05-13 11:03:35 +02:00
dependabot[bot]
70a0a4a361 build(deps): bump caddy in /Containers/mastercontainer
Bumps caddy from 2.11.2-builder-alpine to 2.11.3-builder-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 04:20:59 +00:00
dependabot[bot]
aa7ff451b8 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 9.4.0 to 9.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 04:20:45 +00:00
dependabot[bot]
5eb6850d92 build(deps): bump caddy in /Containers/apache
Bumps caddy from 2.11.2-alpine to 2.11.3-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 04:20:36 +00:00
dependabot[bot]
78b4bea957 build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.3.8-alpine to 3.3.10-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 09:09:47 +00:00
dependabot[bot]
0af08104f5 build(deps): bump softprops/turnstyle in /.github/workflows
Bumps [softprops/turnstyle](https://github.com/softprops/turnstyle) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/softprops/turnstyle/releases)
- [Changelog](https://github.com/softprops/turnstyle/blob/master/CHANGELOG.md)
- [Commits](e565d2d864...e15e934b3f)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 18:56:50 +00:00
dependabot[bot]
df14efa1ef build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.4.1-cli to 29.4.3-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 04:24:27 +00:00
dependabot[bot]
f5d35f0197 build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.5.5-fpm-alpine3.23 to 8.5.6-fpm-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 04:24:24 +00:00
szaimen
901cd8ccef php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-09 12:15:45 +00:00
szaimen
9ed2b32d3e talk-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-08 12:27:17 +00:00
szaimen
5c1d85b27d Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-08 12:25:30 +00:00
szaimen
55a4ffab63 imaginary-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-08 12:25:14 +00:00
dependabot[bot]
846bc06bc5 build(deps): bump golang in /Containers/watchtower
Bumps golang from 1.26.2-alpine3.23 to 1.26.3-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 04:22:41 +00:00
dependabot[bot]
441a2a28e3 build(deps): bump php in /Containers/nextcloud
Bumps php from 8.3.30-fpm-alpine3.23 to 8.3.31-fpm-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 04:22:05 +00:00
dependabot[bot]
df9971b249 build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.26.2-alpine3.23 to 1.26.3-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 04:21:27 +00:00
Simon L.
15ae285d9f increase to 13.0.3
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-07 16:22:14 +02:00
Simon L.
1fa4f3b6a3 aio-interface: change session cookie SameSite from Strict to Lax to fix cross-site getlogin flow (#8064) 2026-05-07 16:10:18 +02:00
copilot-swe-agent[bot]
654c39ff1e fix: change session cookie SameSite from Strict to Lax to fix cross-site getlogin flow
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/acf6148d-63c7-4ee2-a856-6de7de68118d

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-05-07 07:53:51 +00:00
Simon L.
91d59af4dc increase to 13.0.2
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-06 13:03:28 +02:00
Simon L.
5091f27e87 build(deps): bump redis from 8.6.2-alpine to 8.6.3-alpine in /Containers/redis (#8061) 2026-05-06 13:00:57 +02:00
Simon L.
c74d08902e build(deps): bump elasticsearch from 9.3.3 to 9.4.0 in /Containers/fulltextsearch (#8060) 2026-05-06 13:00:45 +02:00
Simon L.
216c73d3aa build(deps): bump httpd from 2.4.66-alpine3.23 to 2.4.67-alpine3.23 in /Containers/apache (#8059) 2026-05-06 13:00:34 +02:00
Simon L.
6c1c33e069 build(deps): bump haproxy from 3.3.7-alpine to 3.3.8-alpine in /Containers/docker-socket-proxy (#8047) 2026-05-06 13:00:22 +02:00
Simon L.
f0949a8746 build(deps): bump nats from 2.12.8-scratch to 2.14.0-scratch in /Containers/talk (#8037) 2026-05-06 13:00:08 +02:00
dependabot[bot]
79eccd576d build(deps): bump redis in /Containers/redis
Bumps redis from 8.6.2-alpine to 8.6.3-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 04:20:08 +00:00
dependabot[bot]
323a34a437 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 9.3.3 to 9.4.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 04:19:29 +00:00
dependabot[bot]
f2076fa56b build(deps): bump httpd in /Containers/apache
Bumps httpd from 2.4.66-alpine3.23 to 2.4.67-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 04:19:18 +00:00
Simon L.
5bb2778fb7 aio-interface: add custom error handler for 405 errors
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-05 17:30:07 +02:00
Simon L.
3b3c8ba25c Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-04 15:10:51 +02:00
copilot-swe-agent[bot]
0be797a531 fix: use httpd directly instead of apachectl to fix SIGTERM handling
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/6e288352-eba8-4697-978e-d0b11349fe3f

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-05-04 11:11:45 +00:00
Simon L.
490a1811c8 notify-push: allow to put the binary into the nextcloud apps dir directly
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-04 13:02:09 +02:00
Simon L.
99ea91c5ef increase to v13.0.1
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-04 10:49:10 +02:00
Simon L.
7b2de0683e fix harp container not starting anymore (#8048) 2026-05-04 10:48:29 +02:00
Simon L.
f7b677fb51 fix harp container not starting anymore
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-04 10:39:21 +02:00
Simon L.
ee8a5a185c mastercontainer: fix checking for AIO_LOG_LEVEL (#8035) 2026-05-04 10:36:45 +02:00
Simon L.
2b0cb13f35 aio-interface: fix Cross-Origin-* headers not being sent (#8046) 2026-05-04 10:36:22 +02:00
dependabot[bot]
1e064fed8a build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.3.7-alpine to 3.3.8-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 04:20:18 +00:00
Zoey
a1eaea85ed fix Cross-Origin-* headers not being sent
Signed-off-by: Zoey <zoey@z0ey.de>
2026-05-03 22:34:27 +02:00
dependabot[bot]
bc2105d668 build(deps): bump nats in /Containers/talk
Bumps nats from 2.12.8-scratch to 2.14.0-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-01 04:27:45 +00:00
Simon L.
c545bffc53 mastercontainer: fix checking for AIO_LOG_LEVEL
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-30 16:07:48 +02:00
Simon L.
dc27f8078f nextcloud: update to 33.0.3 (#8032) 2026-04-30 11:22:32 +02:00
Simon L.
9f9846461e nextcloud: update to 33.0.3
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-30 11:19:13 +02:00
Simon L.
8e3141ab75 fix update-yaml script detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 18:41:12 +02:00
Simon L.
f060a334d3 collabora: fix log level info (#8030) 2026-04-29 17:59:10 +02:00
Simon L.
4417d1ca7a collabora: fix log level info
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 17:57:25 +02:00
Simon L.
cdc617d0b7 another fix for redis
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 17:31:35 +02:00
Simon L.
71dbf98d48 fix detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 17:06:32 +02:00
Simon L.
42e2d88b3e redis: fix log level (#8029) 2026-04-29 17:02:03 +02:00
Simon L.
4682355bfe redis: fix log level
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 17:01:14 +02:00
Simon L.
13ac536b68 nextcloud: overwrite the log level every start (#8028) 2026-04-29 15:02:35 +02:00
Simon L.
9b9b3b638d nextcloud: overwrite the log level every start
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 15:01:17 +02:00
Simon L.
7b6bda1f60 postgres: fix healthcheck (#8027) 2026-04-29 14:55:57 +02:00
Simon L.
764314524d caddy: revert being able to adjust the log level for it for now (#8021) 2026-04-29 14:55:21 +02:00
Simon L.
4910c3f012 postgres: fix healthcheck
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 14:54:36 +02:00
Simon L.
55790da3eb caddy: revert being able to adjust the log level for it for now
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 14:47:32 +02:00
Simon L.
035e270245 LLDAP: update image and tag and change it to ghcr.io
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 09:24:18 +02:00
Simon L.
4e8292b922 acme.Caddyfile: mute caddy warnings
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-28 21:38:41 +02:00
Simon L.
50643afd6a allow to adjust the log level globally (#7902) 2026-04-28 18:08:27 +02:00
Simon L.
4f4ef8f1d6 add our own entrypoint to fts and collabora
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-28 15:39:57 +02:00
Simon L.
4acc5b87e3 nextcloud: fix intermittent 502 Bad Gateway: PHP-FPM request_terminate_timeout + process_idle_timeout (#8013) 2026-04-28 10:00:59 +02:00
Simon L.
753ea8d3fd build(deps): bump nats from 2.12.7-scratch to 2.12.8-scratch in /Containers/talk (#8014) 2026-04-28 09:38:19 +02:00
dependabot[bot]
dbda18b67d build(deps): bump nats in /Containers/talk
Bumps nats from 2.12.7-scratch to 2.12.8-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 04:46:51 +00:00
Simon L.
461f9e14c1 Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-27 17:57:47 +02:00
Simon L.
457a0d9fef Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-27 17:56:07 +02:00
copilot-swe-agent[bot]
ffd9dd2da8 refactor: move request_terminate_timeout to Dockerfile; remove 502 docs section
- Remove request_terminate_timeout sed from start.sh (was runtime-dynamic)
- Add request_terminate_timeout sed to Dockerfile alongside pm.process_idle_timeout
  so it is baked into the image permanently at build time
- Remove the 502 Bad Gateway troubleshooting subsection from reverse-proxy.md

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/bc8a9920-0b43-4645-9591-180fa8783767

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-27 15:54:49 +00:00
copilot-swe-agent[bot]
2bc3c4e7ec refine: improve sed pattern specificity and remove hardcoded timeout from docs
- Use \s*= in pm.process_idle_timeout sed pattern to match only setting
  lines, not comment-only lines that mention the setting name
- Remove hardcoded '5 minutes' from docs; reference pm.process_idle_timeout
  by name so it stays accurate if the value changes

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/2fd7a6d1-bfdb-4f26-a8d0-cd54a7307999

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-27 15:32:37 +00:00
copilot-swe-agent[bot]
46eb2dfc7d fix: prevent 502 Bad Gateway via PHP-FPM worker pool exhaustion and cold-start latency
- Add request_terminate_timeout = PHP_MAX_TIME in start.sh: without this
  (default 0 = disabled) workers blocked on a slow DB query, stalled Redis
  connection, or hung syscall are never reaped.  Over time they fill
  pm.max_children and Apache returns 502 Bad Gateway to the reverse proxy.

- Set pm.process_idle_timeout = 300s in Dockerfile: the upstream default of
  10 s kills all idle workers after a brief quiet period.  The next request
  burst must then wait for fresh PHP-FPM forks; on a loaded host that
  spawn latency can push Apache past its FastCGI deadline and produce a 502.
  300 s keeps a warm pool through normal desktop-sync polling cycles.

- Add a dedicated 502 troubleshooting subsection to reverse-proxy.md
  documenting the six most common causes (proxy timeout, worker exhaustion,
  stuck workers, Redis session lock contention, container cold start, Caddy
  cert renewal) with actionable diagnostics.

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/2fd7a6d1-bfdb-4f26-a8d0-cd54a7307999

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-27 15:31:14 +00:00
dependabot[bot]
0dd6ab3f2c build(deps): bump actions/setup-node in /.github/workflows
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](53b83947a5...48b55a011b)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 14:26:15 +00:00
Simon L.
119f68b6ee aio-interface: also reset the borg backup cache when resetting the backup path (#7998) 2026-04-27 14:36:05 +02:00
Simon L.
cd2d06fca6 aio-interface: only set the placeholder for timezone and not the value automatically because it is confusing (#7999) 2026-04-27 14:32:24 +02:00
Simon L.
6c3403d95d domain-check: replace curl with GuzzleHttp\Client in ConfigurationManager (#7994) 2026-04-27 14:31:53 +02:00
Simon L.
8b40127b0e fulltextsearch: update Elasticsearch to v9 (#8004) 2026-04-27 14:30:10 +02:00
Simon L.
8d77f3340a PHP dependency updates (#8011) 2026-04-27 14:29:30 +02:00
szaimen
dac2ccd195 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-27 12:28:00 +00:00
Simon L.
c7d980e7bc build(deps): bump haproxy from 3.3.6-alpine to 3.3.7-alpine in /Containers/docker-socket-proxy (#8007) 2026-04-27 10:24:58 +02:00
dependabot[bot]
024e404c8d build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.3.6-alpine to 3.3.7-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 04:20:12 +00:00
copilot-swe-agent[bot]
aa831bc8a5 fulltextsearch: update elasticsearch from v8 to v9, switch apt-get to microdnf
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/53b5dc51-71a8-40d3-a262-4ef6ce59d92d

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-27 00:29:17 +00:00
Simon L.
1f813aacc3 timezone: only set the placeholder and not the value automatically because it is confusing
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-25 16:41:48 +02:00
copilot-swe-agent[bot]
d772c14f55 domain-check: replace curl with GuzzleHttp\Client in ConfigurationManager 2026-04-25 16:17:16 +02:00
copilot-swe-agent[bot]
172c72f735 aio-interface: also reset the borg backup cache when resetting the backup path
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-25 15:06:58 +02:00
Simon L.
47307b37f8 Apply suggestions from code review
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 17:27:15 +02:00
Simon L.
f80f888d6c allow to adjust the log level globally (whiteboard)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:18 +02:00
Simon L.
95f70d2082 allow to adjust the log level globally (watchtower)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:18 +02:00
Simon L.
d69939f010 allow to adjust the log level globally (talk-recording)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:18 +02:00
Simon L.
ab167fe665 allow to adjust the log level globally (talk)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:18 +02:00
Simon L.
02eae0f5ed allow to adjust the log level globally (redis)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:18 +02:00
Simon L.
60231f09eb allow to adjust the log level globally (postgresql)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:18 +02:00
Simon L.
38996ddb29 allow to adjust the log level globally (onlyoffice)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:17 +02:00
Simon L.
e30742904e allow to adjust the log level globally (notify-push)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:17 +02:00
Simon L.
6185478b21 allow to adjust the log level globally (nextcloud)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:35:17 +02:00
Simon L.
d1a677909e allow to adjust the log level globally (mastercontainer)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:44 +02:00
Simon L.
14c4ff7809 allow to adjust the log level globally (imaginary)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:44 +02:00
Simon L.
d837898ade allow to adjust the log level globally (fulltextsearch)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:44 +02:00
Simon L.
2c0461d223 allow to adjust the log level globally (domaincheck)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:44 +02:00
Simon L.
498c4bda12 allow to adjust the log level globally (docker-socket-proxy)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
Simon L.
81878f669e allow to adjust the log level globally (collabora-online)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
Simon L.
49234b77fe allow to adjust the log level globally (collabora)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
Simon L.
07bd520b77 allow to adjust the log level globally (clamav)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
Simon L.
995b5cc27a allow to adjust the log level globally (borgbackup)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
Simon L.
d8aa83f4e0 allow to adjust the log level globally (apache)
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
Simon L.
74ec1b6baa allow to adjust the log level globally
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
117 changed files with 849 additions and 941 deletions

20
.editorconfig Normal file
View File

@@ -0,0 +1,20 @@
# https://editorconfig.org
# Tip: to find files violating the rules set out here, run `docker run --rm --volume=$PWD:/check mstruebing/editorconfig-checker`
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.yaml]
indent_size = 2
[*.yml]
indent_size = 2

View File

@@ -10,13 +10,16 @@ on:
jobs:
release:
# Do not run this workflow on forked repositories, as they might not have the `gh-pages` branch created, or might
# want to use it for other purposes than publishing helm charts
if: github.repository == 'nextcloud/all-in-one'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Turnstyle
uses: softprops/turnstyle@e565d2d86403c5d23533937e95980570545e5586 # v2
uses: softprops/turnstyle@e15e934b3f69ee283ba389ea05c8886baa656d93 # v2
with:
continue-after-seconds: 180
env:

View File

@@ -5,12 +5,14 @@ on:
paths:
- 'php/**'
- 'Containers/mastercontainer/*.Caddyfile'
- 'Containers/mastercontainer/start.sh'
push:
branches:
- main
paths:
- 'php/**'
- 'Containers/mastercontainer/*.Caddyfile'
- 'Containers/mastercontainer/start.sh'
concurrency:
group: playwright-${{ github.head_ref || github.run_id }}
@@ -28,7 +30,7 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: lts/*
@@ -55,7 +57,7 @@ jobs:
rm -r ./session
composer install --no-dev
composer clear-cache
sudo chmod 777 -R ./
sudo chmod 777 -R ../
- name: Start fresh development server
run: |
@@ -72,6 +74,7 @@ jobs:
--volume ./php:/var/www/docker-aio/php \
--volume ./Containers/mastercontainer/internal.Caddyfile:/internal.Caddyfile \
--volume ./Containers/mastercontainer/headers.Caddyfile:/headers.Caddyfile \
--volume ./Containers/mastercontainer/start.sh:/start.sh \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env SKIP_DOMAIN_VALIDATION=true \
--env APACHE_PORT=11000 \
@@ -103,6 +106,7 @@ jobs:
--volume ./php:/var/www/docker-aio/php \
--volume ./Containers/mastercontainer/internal.Caddyfile:/internal.Caddyfile \
--volume ./Containers/mastercontainer/headers.Caddyfile:/headers.Caddyfile \
--volume ./Containers/mastercontainer/start.sh:/start.sh \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env SKIP_DOMAIN_VALIDATION=false \
--env APACHE_PORT=11000 \

View File

@@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: lts/*

View File

@@ -63,12 +63,6 @@ http://{$APACHE_HOST}.nextcloud-aio:23973, # For Collabora callback and WOPI req
reverse_proxy {$WHITEBOARD_HOST}:3002
}
# Windmill
route /windmill/* {
uri strip_prefix /windmill
reverse_proxy {$WINDMILL_HOST}:8000
}
# HaRP (ExApps)
route /exapps/* {
reverse_proxy {$HARP_HOST}:8780

View File

@@ -1,8 +1,8 @@
# syntax=docker/dockerfile:latest
FROM caddy:2.11.2-alpine AS caddy
FROM caddy:2.11.3-alpine AS caddy
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
FROM httpd:2.4.66-alpine3.23
FROM httpd:2.4.67-alpine3.23
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
nc -z "$NEXTCLOUD_HOST" 9000 || exit 0
nc -z 127.0.0.1 8000 || exit 1
nc -z 127.0.0.1 "$APACHE_PORT" || exit 1

View File

@@ -7,35 +7,7 @@ Listen 8000
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
ErrorLog /proc/self/fd/2
ErrorLogFormat "[%t] [%l] [%E] [client: %{X-Forwarded-For}i] [%M] [%{User-Agent}i]"
LogLevel warn
# KeepAlive On: allow the same TCP connection to carry multiple HTTP requests.
# Without this each asset (JS, CSS, image) would require a full TCP handshake,
# which is especially expensive on TLS connections and noticeably slows down
# Nextcloud's login page and file manager that load dozens of resources at once.
KeepAlive On
# KeepAliveTimeout: close an idle keep-alive connection after 5 seconds.
# A short timeout frees Apache worker threads quickly so they are available
# for new requests; 5 s is long enough to cover the gap between requests
# that a browser issues while rendering a page (typically < 1 s), yet short
# enough to avoid holding threads open for idle or slow clients.
KeepAliveTimeout 5
# MaxKeepAliveRequests: allow at most 500 requests per persistent connection.
# 100 (the Apache default) is too low for Nextcloud: the desktop and mobile
# sync clients issue many small API calls (PROPFIND, GET, PUT, checksums …)
# per sync cycle and routinely exceed 100 requests on a single connection.
# Hitting the limit forces a new TCP/TLS handshake, adding latency and CPU
# overhead. 500 gives sync clients enough headroom while still periodically
# recycling threads to contain per-process memory growth.
MaxKeepAliveRequests 500
# sendfile(2) is disabled because it bypasses Apache's output-filter chain: with
# it enabled, mod_brotli is silently skipped for static files (JS, CSS, SVG),
# negating the compression configured below. MMAP is also
# disabled because files can be replaced by Nextcloud at any time and mmap'd
# pages could serve stale data.
EnableSendfile Off
EnableMMAP Off
LogLevel ${AIO_LOG_LEVEL}
# PHP match
<FilesMatch "\.php$">
@@ -45,17 +17,12 @@ Listen 8000
<Proxy "fcgi://${NEXTCLOUD_HOST}:9000" flushpackets=on>
</Proxy>
# Compress JS, CSS and SVG responses with Brotli (quality 4 gives good
# compression with reasonable CPU cost; the default of 0 barely compresses).
# Compress JS, CSS and SVG responses with Brotli.
# Other plain-text files are already compressed by Nextcloud itself.
# No deflate fallback is needed: every browser that Nextcloud supports
# (Chrome 49+, Firefox 44+, Safari 11+, Edge 15+ — all from 2016-2017)
# supports Brotli. Internet Explorer, the only browser that never gained
# Brotli support, was dropped by Nextcloud with NC15 (2019).
# Desktop and mobile sync clients never request JS/CSS/SVG assets.
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/javascript application/javascript application/x-javascript text/css image/svg+xml
BrotliCompressionQuality 4
BrotliCompressionQuality 0
</IfModule>
# Nextcloud dir

View File

@@ -1,10 +1,20 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [ -z "$NC_DOMAIN" ]; then
echo "NC_DOMAIN and NEXTCLOUD_HOST need to be provided. Exiting!"
exit 1
fi
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
export SUPERVISORD_STDOUT=/dev/stdout
else
export SUPERVISORD_STDOUT=NONE
fi
# Need write access to /mnt/data
if ! [ -w /mnt/data ]; then
echo "Cannot write to /mnt/data"

View File

@@ -5,14 +5,14 @@ pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
loglevel=%(ENV_AIO_LOG_LEVEL)s
[program:apache]
# Stdout logging is disabled as otherwise the logs are spammed
stdout_logfile=NONE
stdout_logfile=%(ENV_SUPERVISORD_STDOUT)s
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apachectl -DFOREGROUND
command=httpd -DFOREGROUND
[program:caddy]
stdout_logfile=/dev/stdout

View File

@@ -31,4 +31,5 @@ LABEL com.centurylinklabs.watchtower.enable="false" \
org.opencontainers.image.source="https://github.com/nextcloud/all-in-one" \
org.opencontainers.image.vendor="Nextcloud" \
org.opencontainers.image.documentation="https://github.com/nextcloud/all-in-one/blob/main/readme.md"
ENV BORG_RETENTION_POLICY="--keep-within=7d --keep-weekly=4 --keep-monthly=6"
ENV BORG_RETENTION_POLICY="--keep-within=7d --keep-weekly=4 --keep-monthly=6" \
AIO_LOG_LEVEL="warn"

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Functions
get_start_time(){
START_TIME=$(date +%s)
@@ -40,7 +44,7 @@ if [ -z "$BORG_REMOTE_REPO" ] && ! mountpoint -q "$MOUNT_DIR"; then
fi
# Check if repo is uninitialized
if [ "$BORG_MODE" != backup ] && [ "$BORG_MODE" != test ] && ! borg info > /dev/null; then
if [ "$BORG_MODE" != backup ] && [ "$BORG_MODE" != test ] && ! borg "$BORG_LOG_LEVEL_FLAG" info > /dev/null; then
if [ -n "$BORG_REMOTE_REPO" ]; then
echo "The repository is uninitialized or cannot connect to remote. Cannot perform check or restore."
else
@@ -123,7 +127,7 @@ if [ "$BORG_MODE" = backup ]; then
fi
# Initialize the repository if can't get info from target
if ! borg info > /dev/null; then
if ! borg "$BORG_LOG_LEVEL_FLAG" info > /dev/null; then
# Don't initialize if already initialized
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
if [ -n "$BORG_REMOTE_REPO" ]; then
@@ -140,14 +144,14 @@ if [ "$BORG_MODE" = backup ]; then
echo "Initializing repository..."
NEW_REPOSITORY=1
if ! borg init --debug --encryption=repokey-blake2; then
if ! borg "$BORG_LOG_LEVEL_FLAG" init --encryption=repokey-blake2; then
echo "Could not initialize borg repository."
exit 1
fi
if [ -z "$BORG_REMOTE_REPO" ]; then
# borg config only works for local repos; it's up to the remote to ensure the disk isn't full
borg config :: additional_free_space 2G
borg "$BORG_LOG_LEVEL_FLAG" config :: additional_free_space 2G
# Fix too large Borg cache
# https://borgbackup.readthedocs.io/en/stable/faq.html#the-borg-cache-eats-way-too-much-disk-space-what-can-i-do
@@ -156,7 +160,7 @@ if [ "$BORG_MODE" = backup ]; then
touch "/root/.cache/borg/$BORG_ID/chunks.archive.d"
fi
if ! borg info > /dev/null; then
if ! borg "$BORG_LOG_LEVEL_FLAG" info > /dev/null; then
echo "Borg can't get info from the repo it created. Something is wrong."
exit 1
fi
@@ -216,9 +220,9 @@ if [ "$BORG_MODE" = backup ]; then
# Create the backup
echo "Starting the backup..."
get_start_time
if ! borg create "${BORG_OPTS[@]}" "${BORG_INCLUDE[@]}" "${BORG_EXCLUDE[@]}" "::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/" --exclude-from /borg_excludes; then
if ! borg "$BORG_LOG_LEVEL_FLAG" create "${BORG_OPTS[@]}" "${BORG_INCLUDE[@]}" "${BORG_EXCLUDE[@]}" "::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/" --exclude-from /borg_excludes; then
echo "Deleting the failed backup archive..."
borg delete --stats "::$CURRENT_DATE-nextcloud-aio"
borg "$BORG_LOG_LEVEL_FLAG" delete --stats "::$CURRENT_DATE-nextcloud-aio"
echo "Backup failed!"
echo "You might want to check the backup integrity via the AIO interface."
if [ "$NEW_REPOSITORY" = 1 ]; then
@@ -237,14 +241,14 @@ if [ "$BORG_MODE" = backup ]; then
# Prune archives
echo "Pruning the archives..."
if ! borg prune --stats --glob-archives '*_*-nextcloud-aio' "${BORG_PRUNE_OPTS[@]}"; then
if ! borg "$BORG_LOG_LEVEL_FLAG" prune --stats --glob-archives '*_*-nextcloud-aio' "${BORG_PRUNE_OPTS[@]}"; then
echo "Failed to prune archives!"
exit 1
fi
# Compact archives
echo "Compacting the archives..."
if ! borg compact; then
if ! borg "$BORG_LOG_LEVEL_FLAG" compact; then
echo "Failed to compact archives!"
exit 1
fi
@@ -261,19 +265,19 @@ if [ "$BORG_MODE" = backup ]; then
fi
done
echo "Starting the backup for additional volumes..."
if ! borg create "${BORG_OPTS[@]}" "::$CURRENT_DATE-additional-docker-volumes" "/docker_volumes/"; then
if ! borg "$BORG_LOG_LEVEL_FLAG" create "${BORG_OPTS[@]}" "::$CURRENT_DATE-additional-docker-volumes" "/docker_volumes/"; then
echo "Deleting the failed backup archive..."
borg delete --stats "::$CURRENT_DATE-additional-docker-volumes"
borg "$BORG_LOG_LEVEL_FLAG" delete --stats "::$CURRENT_DATE-additional-docker-volumes"
echo "Backup of additional docker-volumes failed!"
exit 1
fi
echo "Pruning additional volumes..."
if ! borg prune --stats --glob-archives '*_*-additional-docker-volumes' "${BORG_PRUNE_OPTS[@]}"; then
if ! borg "$BORG_LOG_LEVEL_FLAG" prune --stats --glob-archives '*_*-additional-docker-volumes' "${BORG_PRUNE_OPTS[@]}"; then
echo "Failed to prune additional docker-volumes archives!"
exit 1
fi
echo "Compacting additional volumes..."
if ! borg compact; then
if ! borg "$BORG_LOG_LEVEL_FLAG" compact; then
echo "Failed to compact additional docker-volume archives!"
exit 1
fi
@@ -291,19 +295,19 @@ if [ "$BORG_MODE" = backup ]; then
EXCLUDE_DIRS+=(--exclude "/host_mounts/$directory/")
done
echo "Starting the backup for additional host mounts..."
if ! borg create "${BORG_OPTS[@]}" "${EXCLUDE_DIRS[@]}" "::$CURRENT_DATE-additional-host-mounts" "/host_mounts/"; then
if ! borg "$BORG_LOG_LEVEL_FLAG" create "${BORG_OPTS[@]}" "${EXCLUDE_DIRS[@]}" "::$CURRENT_DATE-additional-host-mounts" "/host_mounts/"; then
echo "Deleting the failed backup archive..."
borg delete --stats "::$CURRENT_DATE-additional-host-mounts"
borg "$BORG_LOG_LEVEL_FLAG" delete --stats "::$CURRENT_DATE-additional-host-mounts"
echo "Backup of additional host-mounts failed!"
exit 1
fi
echo "Pruning additional host mounts..."
if ! borg prune --stats --glob-archives '*_*-additional-host-mounts' "${BORG_PRUNE_OPTS[@]}"; then
if ! borg "$BORG_LOG_LEVEL_FLAG" prune --stats --glob-archives '*_*-additional-host-mounts' "${BORG_PRUNE_OPTS[@]}"; then
echo "Failed to prune additional host-mount archives!"
exit 1
fi
echo "Compacting additional host mounts..."
if ! borg compact; then
if ! borg "$BORG_LOG_LEVEL_FLAG" compact; then
echo "Failed to compact additional host-mount archives!"
exit 1
fi
@@ -385,7 +389,7 @@ if [ "$BORG_MODE" = restore ]; then
if [ -z "$BORG_REMOTE_REPO" ]; then
mkdir -p /tmp/borg
if ! borg mount "::$SELECTED_ARCHIVE" /tmp/borg; then
if ! borg "$BORG_LOG_LEVEL_FLAG" mount "::$SELECTED_ARCHIVE" /tmp/borg; then
echo "Could not mount the backup!"
exit 1
fi
@@ -432,7 +436,7 @@ if [ "$BORG_MODE" = restore ]; then
#
# Older backups may still contain files we've since excluded, so we have to exclude on extract as well.
cd / # borg extract has no destination arg and extracts to CWD
if ! borg extract "::$SELECTED_ARCHIVE" --progress --exclude-from /borg_excludes "${ADDITIONAL_BORG_EXCLUDES[@]}" --pattern '+nextcloud_aio_volumes/**'
if ! borg "$BORG_LOG_LEVEL_FLAG" extract "::$SELECTED_ARCHIVE" --progress --exclude-from /borg_excludes "${ADDITIONAL_BORG_EXCLUDES[@]}" --pattern '+nextcloud_aio_volumes/**'
then
RESTORE_FAILED=1
echo "Failed to extract backup archive."
@@ -464,7 +468,7 @@ if [ "$BORG_MODE" = restore ]; then
\) \
| LC_ALL=C sort \
| LC_ALL=C comm -23 - \
<(borg list "::$SELECTED_ARCHIVE" --short --exclude-from /borg_excludes --pattern '+nextcloud_aio_volumes/**' | LC_ALL=C sort) \
<(borg "$BORG_LOG_LEVEL_FLAG" list "::$SELECTED_ARCHIVE" --short --exclude-from /borg_excludes --pattern '+nextcloud_aio_volumes/**' | LC_ALL=C sort) \
> /tmp/local_files_not_in_backup
then
RESTORE_FAILED=1
@@ -552,7 +556,7 @@ if [ "$BORG_MODE" = check ]; then
echo "Checking the backup integrity..."
# Perform the check
if ! borg check -v --verify-data; then
if ! borg "$BORG_LOG_LEVEL_FLAG" check -v --verify-data; then
echo "Some errors were found while checking the backup integrity!"
echo "Check the AIO interface for advice on how to proceed now!"
exit 1
@@ -570,7 +574,7 @@ if [ "$BORG_MODE" = "check-repair" ]; then
echo "Checking the backup integrity and repairing it..."
# Perform the check-repair
if ! echo YES | borg check -v --repair; then
if ! echo YES | borg "$BORG_LOG_LEVEL_FLAG" check -v --repair; then
echo "Some errors were found while checking and repairing the backup integrity!"
exit 1
fi
@@ -584,7 +588,7 @@ fi
# Do the backup test
if [ "$BORG_MODE" = test ]; then
if [ -n "$BORG_REMOTE_REPO" ]; then
if ! borg info > /dev/null; then
if ! borg "$BORG_LOG_LEVEL_FLAG" info > /dev/null; then
echo "Borg could not get info from the remote repo."
echo "See the above borg info output for details."
exit 1
@@ -605,12 +609,12 @@ if [ "$BORG_MODE" = test ]; then
fi
fi
if ! borg list >/dev/null; then
if ! borg "$BORG_LOG_LEVEL_FLAG" list >/dev/null; then
echo "The entered path seems to be valid but could not open the backup archive."
echo "Most likely the entered password was wrong so please adjust it accordingly!"
exit 1
else
if ! borg list | grep "nextcloud-aio"; then
if ! borg "$BORG_LOG_LEVEL_FLAG" list | grep "nextcloud-aio"; then
echo "The backup archive does not contain a valid Nextcloud AIO backup."
echo "Most likely was the archive not created via Nextcloud AIO."
exit 1
@@ -623,7 +627,7 @@ fi
if [ "$BORG_MODE" = list ]; then
echo "Updating backup list..."
if ! borg info > /dev/null; then
if ! borg "$BORG_LOG_LEVEL_FLAG" info > /dev/null; then
echo "Could not update the backup list."
exit 1
fi

View File

@@ -1,5 +1,16 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [ "$AIO_LOG_LEVEL" = "warn" ]; then
BORG_LOG_LEVEL_FLAG="--warning"
else
BORG_LOG_LEVEL_FLAG="--$AIO_LOG_LEVEL"
fi
export BORG_LOG_LEVEL_FLAG
# Variables
export MOUNT_DIR="/mnt/borgbackup"
export BORG_BACKUP_DIRECTORY="$MOUNT_DIR/borg" # necessary even when remote to store the aio-lockfile
@@ -48,7 +59,7 @@ fi
rm -f "/nextcloud_aio_volumes/nextcloud_aio_database_dump/backup-is-running"
# Get a list of all available borg archives
if borg list &>/dev/null; then
if borg "$BORG_LOG_LEVEL_FLAG" list &>/dev/null; then
borg list | grep "nextcloud-aio" | awk -F " " '{print $1","$3,$4}' > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/backup_archives.list"
else
echo "" > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/backup_archives.list"

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [ "$(echo "PING" | nc 127.0.0.1 3310)" != "PONG" ]; then
echo "ERROR: Unable to contact server"
exit 1

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Print out clamav version for compliance reasons
clamscan --version

View File

@@ -5,7 +5,7 @@ pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
loglevel=%(ENV_AIO_LOG_LEVEL)s
[program:freshclam]
stdout_logfile=/dev/stdout

View File

@@ -5,6 +5,7 @@ FROM collabora/code:25.04.9.4.1
USER root
ARG DEBIAN_FRONTEND=noninteractive
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
USER 1001
@@ -18,3 +19,5 @@ LABEL com.centurylinklabs.watchtower.enable="false" \
org.opencontainers.image.source="https://github.com/nextcloud/all-in-one" \
org.opencontainers.image.vendor="Nextcloud" \
org.opencontainers.image.documentation="https://github.com/nextcloud/all-in-one/blob/main/readme.md"
ENTRYPOINT ["/start.sh"]

View File

@@ -0,0 +1,19 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [ "$AIO_LOG_LEVEL" = "warn" ]; then
COLLABORA_LOG_LEVEL="warning"
elif [ "$AIO_LOG_LEVEL" = "info" ]; then
COLLABORA_LOG_LEVEL="notice"
else
COLLABORA_LOG_LEVEL="$AIO_LOG_LEVEL"
fi
# Replace the hardcoded log level in extra_params with the translated one
extra_params+=" --o:logging.level=$COLLABORA_LOG_LEVEL --o:logging.level_startup=$COLLABORA_LOG_LEVEL"
export extra_params
exec /start-collabora-online.sh "$@"

View File

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

View File

@@ -1,4 +1,8 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
nc -z "$NEXTCLOUD_HOST" 9001 || exit 0
nc -z 127.0.0.1 2375 || exit 1

View File

@@ -1,5 +1,9 @@
#!/bin/sh
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Only start container if nextcloud is accessible
while ! nc -z "$NEXTCLOUD_HOST" 9001; do
echo "Waiting for Nextcloud to start..."
@@ -18,6 +22,8 @@ else
HAPROXYFILE="$(sed "s# || { src NC_IPV6_PLACEHOLDER }##g" /tmp/haproxy.cfg)"
fi
echo "$HAPROXYFILE" > /tmp/haproxy.cfg
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
haproxy -f /tmp/haproxy.cfg -db

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [ -z "$INSTANCE_ID" ]; then
echo "You need to provide an instance id."
exit 1
@@ -14,6 +18,20 @@ fi
CONF_FILE="$(sed "s|ipv6-placeholder|\[::\]:$APACHE_PORT|" /lighttpd.conf)"
echo "$CONF_FILE" > /etc/lighttpd/lighttpd.conf
# shellcheck disable=SC2235
if ([ "$AIO_LOG_LEVEL" = 'debug' ] || [ "$AIO_LOG_LEVEL" = 'info' ]) && ! grep -q debug.log-request-handling /etc/lighttpd/lighttpd.conf; then
cat << CONF_FILE >> /etc/lighttpd/lighttpd.conf
debug.log-request-handling = "enable"
CONF_FILE
fi
if [ "$AIO_LOG_LEVEL" = 'debug' ] && ! grep -q debug.log-request-header /etc/lighttpd/lighttpd.conf; then
cat << CONF_FILE >> /etc/lighttpd/lighttpd.conf
debug.log-request-header = "enable"
debug.log-response-header = "enable"
CONF_FILE
fi
# Check config file
lighttpd -tt -f /etc/lighttpd/lighttpd.conf

View File

@@ -1,21 +1,19 @@
# syntax=docker/dockerfile:latest
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
FROM elasticsearch:8.19.14
# Probably from here https://github.com/elastic/dockerfiles/blob/9.3/elasticsearch/Dockerfile
FROM elasticsearch:9.4.1
USER root
ARG DEBIAN_FRONTEND=noninteractive
# hadolint ignore=DL3008
# hadolint ignore=DL3041
RUN set -ex; \
\
apt-get update; \
apt-get upgrade -y; \
apt-get install -y --no-install-recommends \
microdnf update -y; \
microdnf install -y --setopt=tsflags=nodocs \
tzdata \
; \
rm -rf /var/lib/apt/lists/*;
microdnf clean all;
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
USER 1000:0
@@ -30,3 +28,5 @@ LABEL com.centurylinklabs.watchtower.enable="false" \
org.opencontainers.image.vendor="Nextcloud" \
org.opencontainers.image.documentation="https://github.com/nextcloud/all-in-one/blob/main/readme.md"
ENV ES_JAVA_OPTS="-Xms512M -Xmx512M"
ENTRYPOINT ["/start.sh"]

View File

@@ -1,3 +1,7 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
curl -fs "http://127.0.0.1:9200/_cluster/health?filter_path=status" | grep -qE '"status":"(green|yellow)"' || exit 1

View File

@@ -0,0 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
ELASTIC_LOG_LEVEL="$(echo "$AIO_LOG_LEVEL" | tr '[:lower:]' '[:upper:]')"
exec env "logger.level=$ELASTIC_LOG_LEVEL" /usr/local/bin/docker-entrypoint.sh "$@"

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM golang:1.26.2-alpine3.23 AS go
FROM golang:1.26.3-alpine3.23 AS go
ENV IMAGINARY_HASH=6a274b488759a896aff02f52afee6e50b5e3a3ee
@@ -33,7 +33,8 @@ COPY --from=go /go/bin/imaginary /usr/local/bin/imaginary
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
ENV PORT=9000
ENV PORT=9000 \
AIO_LOG_LEVEL=warn
USER 65534

View File

@@ -1,3 +1,7 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
nc -z 127.0.0.1 "$PORT" || exit 1

View File

@@ -1,5 +1,20 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
GOLANG_LOG="$(case "$AIO_LOG_LEVEL" in
debug) printf 'info' ;;
info) printf 'info' ;;
warn) printf 'warning' ;;
error) printf 'error' ;;
esac)"
export GOLANG_LOG
if [ "$AIO_LOG_LEVEL" = "debug" ]; then
export DEBUG='*'
fi
echo "Imaginary has started"
IMAGINARY_ARGS=(-return-size -max-allowed-resolution 222.2)

View File

@@ -1,17 +1,17 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
FROM docker:29.4.1-cli AS docker
FROM docker:29.5.1-cli AS docker
ARG CADDY_REMOTE_HOST_HASH=b21775afa730ffb52a24ddff310c8a6d1fd37276
ARG CADDY_REMOTE_HOST_HASH=e80a9931765a8dbcbb47db415863387f0df0e1b3
# Caddy is a requirement
FROM caddy:2.11.2-builder-alpine AS caddy
FROM caddy:2.11.3-builder-alpine AS caddy
RUN set -ex; \
xcaddy build --with github.com/muety/caddy-remote-host@"$CADDY_REMOTE_HOST_HASH"; \
/usr/bin/caddy list-modules
# From https://github.com/docker-library/php/blob/master/8.5/alpine3.23/fpm/Dockerfile
FROM php:8.5.5-fpm-alpine3.23
FROM php:8.5.6-fpm-alpine3.23
EXPOSE 80
EXPOSE 8080

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
restart_process() {
echo "Restarting cron.sh because daily backup time was set, changed or unset."
pkill cron.sh

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
while true; do
if [ -f "/mnt/docker-aio-config/data/daily_backup_time" ]; then
set -x
@@ -17,7 +21,9 @@ while true; do
else
export SEND_SUCCESS_NOTIFICATIONS=0
fi
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
if [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
export LOCK_FILE_PRESENT=1
else

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
echo "Daily backup script has started"
# Check if initial configuration has been done, otherwise this script should do nothing.

View File

@@ -18,9 +18,9 @@ header {
Referrer-Policy "no-referrer" # Tells the browser to never sent a Referer header. See https://developer.mozilla.org/de/docs/Web/HTTP/Reference/Headers/Referrer-Policy
X-Robots-Tag "noindex, nofollow" # Tells web crawlers to not index this page. See https://developer.mozilla.org/de/docs/Web/HTTP/Reference/Headers/X-Robots-Tag
Origin-Agent-Cluster "?1" # Isolates AIO from other same site pages. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Origin-Agent-Cluster
Cross-Origin-Opener-Policy "same-origin"; # AIO does not use any popup, still we can isolate its BCG if it is opened as a pop up by another page. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Opener-Policy
Cross-Origin-Embedder-Policy "require-corp"; # Harder rules for cross origin embeds. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Embedder-Policy
Cross-Origin-Resource-Policy "same-origin"; # Only allow the same origin to load resources. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cross-Origin_Resource_Policy
Cross-Origin-Opener-Policy "same-origin" # AIO does not use any popup, still we can isolate its BCG if it is opened as a pop up by another page. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Opener-Policy
Cross-Origin-Embedder-Policy "require-corp" # Harder rules for cross origin embeds. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Embedder-Policy
Cross-Origin-Resource-Policy "same-origin" # Only allow the same origin to load resources. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cross-Origin_Resource_Policy
# Permissions-Policy disables browser features that AIO does not use. Since there is no "deny all" option, all known features need to be listed explicitly. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Permissions-Policy
Permissions-Policy "accelerometer=(), ambient-light-sensor=(), aria-notify=(), attribution-reporting=(), autoplay=(), bluetooth=(), browsing-topics=(), camera=(), captured-surface-control=(), ch-ua-high-entropy-values=(), compute-pressure=(), cross-origin-isolated=(), deferred-fetch=(), deferred-fetch-minimal=(), display-capture=(), encrypted-media=(), fullscreen=(), gamepad=(), geolocation=(), gyroscope=(), hid=(), identity-credentials-get=(), idle-detection=(), local-fonts=(), local-network=(), local-network-access=(), loopback-network=(), magnetometer=(), microphone=(), midi=(), on-device-speech-recognition=(), otp-credentials=(), payment=(), picture-in-picture=(), private-state-token-issuance=(), private-state-token-redemption=(), publickey-credentials-create=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), storage-access=(), summarizer=(), usb=(), web-share=(), window-management=(), xr-spatial-tracking=()"

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [ -f "/mnt/docker-aio-config/data/configuration.json" ]; then
nc -z 127.0.0.1 80 || exit 1
nc -z 127.0.0.1 8080 || exit 1

View File

@@ -16,6 +16,10 @@ compare_times() {
fi
}
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
while true; do
compare_times
sleep 2

View File

@@ -20,6 +20,10 @@ case "${1}" in
esac
}
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Check if running as root user
if [ "$EUID" != "0" ]; then
print_red "Container does not run as root user. This is not supported."
@@ -333,6 +337,22 @@ else
export NEXTCLOUD_DRI_GID=""
fi
# Log level logics
if [ -n "$AIO_LOG_LEVEL" ] && ! echo "$AIO_LOG_LEVEL" | grep -q "^debug$\|^info$\|^warn$\|^error$"; then
print_red "AIO_LOG_LEVEL must be one of 'debug', 'info', 'warn' or 'error'.
It is set to '$AIO_LOG_LEVEL'".
exit 1
fi
if [ -z "$AIO_LOG_LEVEL" ]; then
export AIO_LOG_LEVEL="warn"
fi
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
export SUPERVISORD_STDOUT=/dev/stdout
else
export SUPERVISORD_STDOUT=NONE
fi
# Check if ghcr.io is reachable
# Solves issues like https://github.com/nextcloud/all-in-one/discussions/5268
if ! curl --no-progress-meter https://ghcr.io/v2/ >/dev/null; then

View File

@@ -5,12 +5,12 @@ pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
loglevel=%(ENV_AIO_LOG_LEVEL)s
user=root
[program:php-fpm]
# Stdout logging is disabled as otherwise the logs are spammed
stdout_logfile=NONE
stdout_logfile=%(ENV_SUPERVISORD_STDOUT)s
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=php-fpm
@@ -54,11 +54,11 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/session-deduplicator.sh
user=root
user=www-data
[program:domain-validator]
# Logging is disabled as otherwise all attempts will be logged which spams the logs
stdout_logfile=NONE
stderr_logfile=NONE
stdout_logfile=%(ENV_SUPERVISORD_STDOUT)s
stderr_logfile=%(ENV_SUPERVISORD_STDOUT)s
command=php -S 127.0.0.1:9876 /var/www/docker-aio/php/domain-validator.php
user=www-data

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM php:8.3.30-fpm-alpine3.23
FROM php:8.3.31-fpm-alpine3.23
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=33.0.2
ENV NEXTCLOUD_VERSION=33.0.3
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!
@@ -250,6 +250,21 @@ RUN set -ex; \
# We don't actually expect so many children but don't want to limit it artificially because people will report issues otherwise.
# Also children will usually be terminated again after the process is done due to the ondemand setting
sed -i 's/^pm.max_children =.*/pm.max_children = 5000/' /usr/local/etc/php-fpm.d/www.conf; \
# With pm = ondemand, workers are killed after pm.process_idle_timeout seconds
# of inactivity. The upstream default is 10 s, which is aggressive: after a
# brief quiet period (e.g. desktop-sync clients polling every few seconds), all
# workers are reaped and the next request burst must wait for fresh forks. On
# a loaded host that spawn latency can push Apache past its FastCGI timeout and
# produce a 502. 300 s (5 min) keeps a warm pool through normal sync-client
# polling cycles while still reclaiming memory during genuinely idle periods.
sed -i 's/^;*pm.process_idle_timeout\s*=.*/pm.process_idle_timeout = 300s/' /usr/local/etc/php-fpm.d/www.conf; \
# Set request_terminate_timeout so that PHP-FPM forcibly kills workers that
# exceed the wall-clock limit. Without this (default = 0 = disabled) a worker
# stuck on a slow DB query, a stalled Redis connection, or a hung syscall is
# never reaped. Over time these zombies fill up pm.max_children, leaving no
# free slots for legitimate requests and causing Apache to return 502 Bad
# Gateway upstream.
sed -i "s|^;*request_terminate_timeout = .*|request_terminate_timeout = \${PHP_MAX_TIME}|" /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf; \
\
echo "[ -n \"\$TERM\" ] && [ -f /root.motd ] && cat /root.motd" >> /root/.bashrc; \
@@ -263,8 +278,6 @@ RUN set -ex; \
mkdir -p /nc-updater; \
chmod -R 777 /nc-updater
COPY --chmod=775 Containers/nextcloud/create-oauth2-client.php /create-oauth2-client.php
# hadolint ignore=DL3002
USER root
ENTRYPOINT ["/start.sh"]

View File

@@ -1,4 +1,4 @@
<?php
$CONFIG = array (
'serverid' => crc32(gethostname()) % 512,
'serverid' => hexdec(hash('xxh32', gethostname()) & 0x1FF,
);

View File

@@ -1,60 +0,0 @@
<?php
declare(strict_types=1);
/**
* Creates a Nextcloud OAuth2 client and prints its credentials to stdout.
*
* Usage: php create-oauth2-client.php <name> <redirect-uri>
*
* Output (two lines):
* <client_id>
* <client_secret>
*
* Any existing client with the same name is deleted first so that the
* operation is idempotent (stale clients whose secret has been lost are
* replaced by a fresh one).
*/
if ($argc !== 3) {
fwrite(STDERR, "Usage: php create-oauth2-client.php <name> <redirect-uri>\n");
exit(1);
}
$name = $argv[1];
$redirectUri = $argv[2];
define('OC_CONSOLE', 1);
require_once '/var/www/html/lib/base.php';
\OC_App::loadApp('oauth2');
$container = \OC::getContainer();
/** @var \OCA\OAuth2\Db\ClientMapper $mapper */
$mapper = $container->get(\OCA\OAuth2\Db\ClientMapper::class);
/** @var \OCP\Security\ICrypto $crypto */
$crypto = $container->get(\OCP\Security\ICrypto::class);
/** @var \OCP\Security\ISecureRandom $random */
$random = $container->get(\OCP\Security\ISecureRandom::class);
// Delete any stale client with the same name that might have lost its secret.
foreach ($mapper->getClients() as $existing) {
if ($existing->getName() === $name) {
$mapper->delete($existing);
}
}
$client = new \OCA\OAuth2\Db\Client();
$client->setName($name);
$client->setRedirectUri($redirectUri);
$secret = $random->generate(64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
$client->setSecret(bin2hex($crypto->calculateHMAC($secret)));
$clientId = $random->generate(64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
$client->setClientIdentifier($clientId);
$mapper->insert($client);
echo $clientId . "\n";
echo $secret . "\n";

View File

@@ -1,4 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
wait_for_cron() {
set -x
while [ -n "$(pgrep -f /var/www/html/cron.php)" ]; do

View File

@@ -10,6 +10,10 @@ directory_empty() {
[ -z "$(ls -A "$1/")" ]
}
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
run_upgrade_if_needed_due_to_app_update() {
if php /var/www/html/occ status | grep maintenance | grep -q true; then
php /var/www/html/occ maintenance:mode --off
@@ -20,6 +24,14 @@ run_upgrade_if_needed_due_to_app_update() {
fi
}
NEXTCLOUD_LOG_LEVEL="$(case "$AIO_LOG_LEVEL" in
debug) printf '0' ;;
info) printf '1' ;;
warn) printf '2' ;;
error) printf '3' ;;
esac)"
export NEXTCLOUD_LOG_LEVEL
# Create cert bundle
if env | grep -q NEXTCLOUD_TRUSTED_CERTIFICATES_; then
@@ -75,7 +87,9 @@ if env | grep -q NEXTCLOUD_TRUSTED_CERTIFICATES_; then
cat "$CERTIFICATE_BUNDLE"
# Disable debug mode
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
fi
# Adjust DATABASE_TYPE to by Nextcloud supported value
@@ -222,7 +236,9 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
if grep -q appstoreurl /var/www/html/config/config.php; then
set -x
APPSTORE_URL="$(grep appstoreurl /var/www/html/config/config.php | grep -oP 'https://.*v[0-9]+')"
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
fi
# Default appstoreurl parameter in config.php defaults to 'https://apps.nextcloud.com/api/v1' so we check for the apps.json file stored in there
CURL_STATUS="$(curl -LI "$APPSTORE_URL"/apps.json -o /dev/null -w '%{http_code}\n' -s)"
@@ -289,7 +305,9 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
"$SOURCE_LOCATION/custom_apps/" \
/var/www/html/custom_apps/
done
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
fi
# Copy these from Nextcloud archive if they don't exist yet (i.e. new install)
@@ -442,7 +460,7 @@ EOF
# Apply log settings
echo "Applying default settings..."
mkdir -p /var/www/html/data
php /var/www/html/occ config:system:set loglevel --value="2" --type=integer
php /var/www/html/occ config:system:set loglevel --value="$NEXTCLOUD_LOG_LEVEL" --type=integer
if [ "$NEXTCLOUD_LOG_TYPE" = "errorlog" ]; then
php /var/www/html/occ config:system:set log_type --value="errorlog"
php /var/www/html/occ config:system:set log_type_audit --value="errorlog"
@@ -653,6 +671,7 @@ fi
# Adjusting log files to be stored on a volume
echo "Adjusting log files..."
php /var/www/html/occ config:system:set upgrade.cli-upgrade-link --value="https://github.com/nextcloud/all-in-one/discussions/2726"
php /var/www/html/occ config:system:set loglevel --value="$NEXTCLOUD_LOG_LEVEL" --type=integer
if [ "$NEXTCLOUD_LOG_TYPE" = "errorlog" ]; then
php /var/www/html/occ config:system:set log_type --value="errorlog"
php /var/www/html/occ config:system:set log_type_audit --value="errorlog"
@@ -764,7 +783,9 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
if echo "$COLLABORA_HOST" | grep -q "nextcloud-.*-collabora"; then
COLLABORA_HOST="$NC_DOMAIN"
fi
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
# Remove richdcoumentscode if it should be incorrectly installed
if [ -d "/var/www/html/custom_apps/richdocumentscode" ]; then
php /var/www/html/occ app:remove richdocumentscode
@@ -885,7 +906,9 @@ if [ "$TALK_ENABLED" = 'yes' ]; then
if [ -z "$TURN_DOMAIN" ]; then
TURN_DOMAIN="$TALK_HOST"
fi
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
if ! [ -d "/var/www/html/custom_apps/spreed" ]; then
php /var/www/html/occ app:install spreed
elif [ "$(php /var/www/html/occ config:app:get spreed enabled)" != "yes" ]; then
@@ -1090,41 +1113,5 @@ else
fi
fi
# Windmill app
if [ "$WINDMILL_ENABLED" = 'yes' ]; then
if ! [ -d "/var/www/html/custom_apps/windmill" ]; then
php /var/www/html/occ app:install windmill
elif [ "$(php /var/www/html/occ config:app:get windmill enabled)" != "yes" ]; then
php /var/www/html/occ app:enable windmill
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update windmill
fi
php /var/www/html/occ config:app:set windmill windmill_url --value="https://$NC_DOMAIN/windmill"
php /var/www/html/occ config:app:set windmill windmill_instance_url --value="http://$WINDMILL_HOST:8000"
# Create an NC OAuth2 client for Windmill (idempotent: reuse stored credentials if already created)
WINDMILL_NC_OAUTH_CLIENT_ID="$(php /var/www/html/occ config:app:get windmill nc_oauth_client_id 2>/dev/null)"
WINDMILL_NC_OAUTH_CLIENT_SECRET="$(php /var/www/html/occ config:app:get windmill nc_oauth_client_secret 2>/dev/null)"
if [ -z "$WINDMILL_NC_OAUTH_CLIENT_ID" ] || [ -z "$WINDMILL_NC_OAUTH_CLIENT_SECRET" ]; then
WINDMILL_NC_REDIRECT_URI="https://$NC_DOMAIN/windmill/user/login_callback/nextcloud"
WINDMILL_OAUTH_OUTPUT="$(php /create-oauth2-client.php "Windmill" "$WINDMILL_NC_REDIRECT_URI" 2>/dev/null)"
WINDMILL_NC_OAUTH_CLIENT_ID="$(printf '%s' "$WINDMILL_OAUTH_OUTPUT" | head -1)"
WINDMILL_NC_OAUTH_CLIENT_SECRET="$(printf '%s' "$WINDMILL_OAUTH_OUTPUT" | tail -1)"
php /var/www/html/occ config:app:set windmill nc_oauth_client_id --value="$WINDMILL_NC_OAUTH_CLIENT_ID"
php /var/www/html/occ config:app:set windmill nc_oauth_client_secret --value="$WINDMILL_NC_OAUTH_CLIENT_SECRET"
fi
# Configure Windmill to use NC as OAuth SSO provider
WINDMILL_OAUTH_BODY="{\"value\":{\"nextcloud\":{\"id\":\"$WINDMILL_NC_OAUTH_CLIENT_ID\",\"secret\":\"$WINDMILL_NC_OAUTH_CLIENT_SECRET\",\"login_config\":{\"auth_url\":\"https://$NC_DOMAIN/apps/oauth2/authorize\",\"token_url\":\"https://$NC_DOMAIN/apps/oauth2/api/v1/token\",\"userinfo_url\":\"https://$NC_DOMAIN/ocs/v2.php/cloud/user?format=json\",\"scopes\":[]}}}}"
WINDMILL_OAUTH_RESPONSE="$(curl -s -w '\n%{http_code}' -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $WINDMILL_SECRET" -d "$WINDMILL_OAUTH_BODY" "http://$WINDMILL_HOST:8000/api/settings/global/oauths")"
WINDMILL_OAUTH_STATUS="$(echo "$WINDMILL_OAUTH_RESPONSE" | tail -1)"
if [ "$WINDMILL_OAUTH_STATUS" != "200" ]; then
echo "Failed to configure Windmill OAuth against http://$WINDMILL_HOST:8000 (HTTP $WINDMILL_OAUTH_STATUS). Response: $(echo "$WINDMILL_OAUTH_RESPONSE" | head -1). Exiting!"
exit 1
fi
else
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/windmill" ]; then
php /var/www/html/occ app:remove windmill
fi
fi
# Remove the update skip file always
rm -f "$NEXTCLOUD_DATA_DIR"/skip.update

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Set a default value for POSTGRES_PORT
if [ -z "$POSTGRES_PORT" ]; then
POSTGRES_PORT=5432

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [[ "$EUID" = 0 ]]; then
COMMAND=(sudo -E -u www-data php /var/www/html/occ)
else

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [[ "$EUID" = 0 ]]; then
COMMAND=(sudo -E -u www-data php /var/www/html/occ)
else

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Wait until the apache container is ready
while ! nc -z "$APACHE_HOST" "$APACHE_PORT"; do
echo "Waiting for $APACHE_HOST to become available..."

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Set a default value for POSTGRES_PORT
if [ -z "$POSTGRES_PORT" ]; then
POSTGRES_PORT=5432
@@ -53,7 +57,9 @@ if ! [ -f "/dev-dri-group-was-added" ] && [ -n "$(find /dev -maxdepth 1 -mindept
usermod -aG "$GROUP" www-data
touch "/dev-dri-group-was-added"
fi
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
# Check datadir permissions
sudo -E -u www-data touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
@@ -170,6 +176,8 @@ if [ "$THIS_IS_AIO" = "true" ] && [ "$APACHE_PORT" = 443 ]; then
sed -i "/^listen.allowed_clients/s/,$//" /usr/local/etc/php-fpm.d/www.conf
grep listen.allowed_clients /usr/local/etc/php-fpm.d/www.conf
fi
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
exec "$@"

View File

@@ -6,7 +6,7 @@ pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB ; maximum size of logfile before rotation
logfile_backups=10 ; number of backed up logfiles
loglevel=error
loglevel=%(ENV_AIO_LOG_LEVEL)s
user=root
[program:php-fpm]

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if ! nc -z "$NEXTCLOUD_HOST" 9001; then
exit 0
fi

View File

@@ -1,5 +1,11 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
export RUST_LOG="$AIO_LOG_LEVEL"
if [ -z "$NEXTCLOUD_HOST" ]; then
echo "NEXTCLOUD_HOST needs to be provided. Exiting!"
exit 1
@@ -22,7 +28,7 @@ elif [ "$CPU_ARCH" != "x86_64" ]; then
fi
# Add warning
if ! [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
if ! [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ] && ! [ -f /var/www/html/apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
echo "The notify_push binary was not found."
echo "Most likely is DNS resolution not working correctly."
echo "You can try to fix this by configuring a DNS server globally in dockers daemon.json."
@@ -36,9 +42,24 @@ if ! [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; t
exit 1
fi
# Logic for ipv6 disabled servers
BIND="::"
if grep -q "1" /sys/module/ipv6/parameters/disable \
|| grep -q "1" /proc/sys/net/ipv6/conf/all/disable_ipv6 \
|| grep -q "1" /proc/sys/net/ipv6/conf/default/disable_ipv6; then
BIND="0.0.0.0"
fi
export BIND
echo "notify-push was started"
if [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
PUSH_PATH="/var/www/html/custom_apps/notify_push/bin/$CPU_ARCH/notify_push"
else
PUSH_PATH="/var/www/html/apps/notify_push/bin/$CPU_ARCH/notify_push"
fi
# Run it
exec /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push \
exec "$PUSH_PATH" \
--port 7867 \
/var/www/html/config/config.php

View File

@@ -1,3 +1,7 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
nc -z 127.0.0.1 80 || exit 1

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From https://github.com/docker-library/postgres/blob/master/18/alpine3.23/Dockerfile
FROM postgres:18.3-alpine
FROM postgres:18.4-alpine
ENV PGDATA=/var/lib/postgresql/data
@@ -14,6 +14,7 @@ RUN set -ex; \
bash \
openssl \
shadow \
netcat-openbsd \
grep; \
\
# We need to use the same gid and uid as on old installations

View File

@@ -1,7 +1,14 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
test -f "/mnt/data/backup-is-running" && exit 0
PGPASSWORD="$POSTGRES_PASSWORD" psql -h 127.0.0.1 -p 11000 -U "oc_$POSTGRES_USER" -d "$POSTGRES_DB" -c "select now()" && exit 0
# If database import is running, do not continue with the health check
if nc -z 127.0.0.1 11000; then
exit 0
fi
PGPASSWORD="$POSTGRES_PASSWORD" psql -h 127.0.0.1 -p 5432 -U "oc_$POSTGRES_USER" -d "$POSTGRES_DB" -c "select now()" || exit 1

View File

@@ -1,4 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
set -ex
touch "$DUMP_DIR/initialization.failed"

View File

@@ -1,5 +1,17 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
POSTGRES_LOG_MIN_MESSAGES="$(case "$AIO_LOG_LEVEL" in
debug) printf 'debug1' ;;
info) printf 'info' ;;
warn) printf 'warning' ;;
error) printf 'error' ;;
esac)"
export POSTGRES_LOG_MIN_MESSAGES
# Variables
DATADIR="/var/lib/postgresql/data"
export DUMP_DIR="/mnt/data"
@@ -166,6 +178,12 @@ if [ -f "/var/lib/postgresql/data/postgresql.conf" ]; then
sed -i 's|#log_checkpoints.*|log_checkpoints = off|' "$PGCONF"
fi
if grep -q "^#\?log_min_messages" /var/lib/postgresql/data/postgresql.conf; then
sed -i "s|^#\?log_min_messages.*|log_min_messages = $POSTGRES_LOG_MIN_MESSAGES|" /var/lib/postgresql/data/postgresql.conf
else
echo "log_min_messages = $POSTGRES_LOG_MIN_MESSAGES" >> /var/lib/postgresql/data/postgresql.conf
fi
# Closing idling connections automatically seems to break any logic so was reverted again to default where it is disabled
if grep -q "^idle_session_timeout" "$PGCONF"; then
sed -i 's|^idle_session_timeout.*|#idle_session_timeout|' "$PGCONF"
@@ -223,12 +241,16 @@ do_database_dump() {
pg_ctl stop -m fast
rm "$DUMP_DIR/export.failed"
echo 'Database dump successful!'
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
exit 0
else
pg_ctl stop -m fast
echo "Database dump unsuccessful!"
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
exit 1
fi
}

View File

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

View File

@@ -1,3 +1,7 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
redis-cli -a "$REDIS_HOST_PASSWORD" PING || exit 1

View File

@@ -1,5 +1,19 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Redis only supports [debug, verbose, notice, warning, nothing] as log level
if [ "$AIO_LOG_LEVEL" = "warn" ] || [ "$AIO_LOG_LEVEL" = "error" ]; then
REDIS_LOG_LEVEL="warning"
elif [ "$AIO_LOG_LEVEL" = "info" ]; then
REDIS_LOG_LEVEL="notice"
else
REDIS_LOG_LEVEL="$AIO_LOG_LEVEL"
fi
export REDIS_LOG_LEVEL
# Show wiki if vm.overcommit is disabled
if [ "$(sysctl -n vm.overcommit_memory)" != "1" ]; then
echo "Memory overcommit is disabled but necessary for safe operation"
@@ -16,7 +30,7 @@ fi
# Build the redis-server argument list.
REDIS_ARGS=(
--loglevel warning
--loglevel "$REDIS_LOG_LEVEL"
--save "" # Disable RDB persistence (Redis is used as a pure cache/lock store)
--maxmemory-policy allkeys-lru # Evict least-recently-used keys when memory is full
--lazyfree-lazy-eviction yes # Perform evictions in a background thread

View File

@@ -1,15 +1,16 @@
# syntax=docker/dockerfile:latest
FROM python:3.14.3-alpine3.23
FROM python:3.14.5-alpine3.23
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
ENV RECORDING_VERSION=v0.2.1
ENV ALLOW_ALL=false
ENV HPB_PROTOCOL=https
ENV NC_PROTOCOL=https
ENV SKIP_VERIFY=false
ENV HPB_PATH=/standalone-signaling/
ENV ALLOW_ALL=false \
HPB_PROTOCOL=https \
NC_PROTOCOL=https \
SKIP_VERIFY=false \
HPB_PATH=/standalone-signaling/ \
AIO_LOG_LEVEL=warn
RUN set -ex; \
apk upgrade --no-cache -a; \
@@ -34,6 +35,9 @@ RUN set -ex; \
build-base \
linux-headers \
geckodriver; \
if [ "$(apk --print-arch)" = "x86_64" ]; then \
apk add --no-cache intel-media-driver; \
fi; \
useradd -d /tmp --system recording -u 122; \
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd; \

View File

@@ -1,3 +1,7 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
nc -z 127.0.0.1 1234 || exit 1

View File

@@ -1,5 +1,17 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
TALK_RECORDING_LOG_LEVEL="$(case "$AIO_LOG_LEVEL" in
debug) printf '10' ;;
info) printf '20' ;;
warn) printf '30' ;;
error) printf '40' ;;
esac)"
export TALK_RECORDING_LOG_LEVEL
# Variables
if [ -z "$NC_DOMAIN" ]; then
echo "You need to provide the NC_DOMAIN."
@@ -49,7 +61,7 @@ fi
cat << RECORDING_CONF > "/conf/recording.conf"
[logs]
# 30 means Warning
level = 30
level = ${TALK_RECORDING_LOG_LEVEL}
[http]
listen = 0.0.0.0:1234

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM nats:2.12.7-scratch AS nats
FROM nats:2.14.1-scratch AS nats
FROM eturnal/eturnal:1.12.2-alpine AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.1.1 AS signaling
FROM alpine:3.23.4 AS janus
@@ -37,7 +37,8 @@ RUN set -ex; \
FROM alpine:3.23.4
ENV ETURNAL_ETC_DIR="/conf"
ENV SKIP_CERT_VERIFY=false
ENV SKIP_CERT_VERIFY=false \
AIO_LOG_LEVEL=warn
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

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
nc -z 127.0.0.1 8081 || exit 1
nc -z 127.0.0.1 8188 || exit 1
nc -z 127.0.0.1 4222 || exit 1

View File

@@ -1,5 +1,23 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
if [ "$AIO_LOG_LEVEL" = "warn" ]; then
ETURNAL_LOG_LEVEL="warning"
else
ETURNAL_LOG_LEVEL="$AIO_LOG_LEVEL"
fi
export ETURNAL_LOG_LEVEL
JANUS_LOG_LEVEL="$(case "$AIO_LOG_LEVEL" in
debug) printf '7' ;;
info) printf '4' ;;
warn) printf '3' ;;
error) printf '1' ;;
esac)"
export JANUS_LOG_LEVEL
# Variables
if [ -z "$NC_DOMAIN" ]; then
echo "You need to provide the NC_DOMAIN."
@@ -31,7 +49,9 @@ if mountpoint -q /usr/local/share/ca-certificates; then
fi
done
export SSL_CERT_FILE=/tmp/ca-certificates.crt
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
fi
set -x
@@ -40,7 +60,9 @@ IPv4_ADDRESS_TALK_RELAY="$(hostname -i | grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]
IPv4_ADDRESS_TALK="$(dig "$TALK_HOST" IN A +short +search | grep '^[0-9.]\+$' | sort | head -n1)"
# shellcheck disable=SC2153
IPv6_ADDRESS_TALK="$(dig "$TALK_HOST" AAAA +short +search | grep '^[0-9a-f:]\+$' | sort | head -n1)"
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
if [ -n "$IPv4_ADDRESS_TALK" ] && [ "$IPv4_ADDRESS_TALK_RELAY" = "$IPv4_ADDRESS_TALK" ]; then
IPv4_ADDRESS_TALK=""
@@ -53,7 +75,9 @@ if grep -q "1" /sys/module/ipv6/parameters/disable \
|| grep -q "1" /proc/sys/net/ipv6/conf/default/disable_ipv6; then
IP_BINDING="0.0.0.0"
fi
set +x
if [ "$AIO_LOG_LEVEL" != 'debug' ]; then
set +x
fi
# Turn
cat << TURN_CONF > "/conf/eturnal.yml"
@@ -66,7 +90,7 @@ eturnal:
port: $TALK_PORT
transport: tcp
log_dir: stdout
log_level: warning
log_level: ${ETURNAL_LOG_LEVEL}
secret: "$TURN_SECRET"
relay_ipv4_addr: "$IPv4_ADDRESS_TALK_RELAY"
relay_ipv6_addr: "$IPv6_ADDRESS_TALK"

View File

@@ -5,7 +5,7 @@ pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
loglevel=%(ENV_AIO_LOG_LEVEL)s
[program:nats-server]
stdout_logfile=/dev/stdout
@@ -30,8 +30,7 @@ stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
# debug-level 3 means warning
command=janus --config=/conf/janus.jcfg --disable-colors --log-stdout --full-trickle --debug-level 3
command=janus --config=/conf/janus.jcfg --disable-colors --log-stdout --full-trickle --debug-level %(ENV_JANUS_LOG_LEVEL)s
# Start alongside eturnal; signaling connects to Janus via WebSocket
priority=20

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM golang:1.26.2-alpine3.23 AS go
FROM golang:1.26.3-alpine3.23 AS go
ENV WATCHTOWER_COMMIT_HASH=652c89577076f6bc6f2af4465217589641216ee3
@@ -22,6 +22,8 @@ COPY --chmod=775 start.sh /start.sh
# hadolint ignore=DL3002
USER root
ENV AIO_LOG_LEVEL="warn"
ENTRYPOINT ["/start.sh"]
LABEL com.centurylinklabs.watchtower.enable="false" \
wud.watch="false" \

View File

@@ -1,5 +1,9 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Check if socket is available and readable
if ! [ -e "/var/run/docker.sock" ]; then
echo "Docker socket is not available. Cannot continue."
@@ -17,7 +21,7 @@ if [ -f /run/.containerenv ]; then
fi
if [ -n "$CONTAINER_TO_UPDATE" ]; then
exec /watchtower --cleanup --debug --run-once "$CONTAINER_TO_UPDATE"
exec /watchtower --cleanup --log-level "$AIO_LOG_LEVEL" --run-once "$CONTAINER_TO_UPDATE"
else
echo "'CONTAINER_TO_UPDATE' is not set. Cannot update anything."
exit 1

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.5.7
FROM ghcr.io/nextcloud-releases/whiteboard:v1.5.8
USER root
RUN set -ex; \

View File

@@ -1,4 +1,8 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
nc -z "$REDIS_HOST" "$REDIS_PORT" || exit 0
nc -z 127.0.0.1 3002 || exit 1

View File

@@ -1,5 +1,11 @@
#!/bin/bash
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
export LOG_LEVEL="$AIO_LOG_LEVEL"
# Only start container if nextcloud is accessible
while ! nc -z "$REDIS_HOST" "$REDIS_PORT"; do
echo "Waiting for redis to start..."

View File

@@ -1,116 +0,0 @@
# syntax=docker/dockerfile:latest
# Stage 1: Current PostgreSQL server version is pinned to a full patch
# release so builds are reproducible and the exact version is auditable.
# (matches the Debian bookworm base used by windmill-labs/windmill)
FROM postgres:17.9-bookworm AS postgres-base
# Final stage: derive from the official Windmill image and bundle PostgreSQL
FROM ghcr.io/windmill-labs/windmill:1.691.1
USER root
ARG DEBIAN_FRONTEND=noninteractive
# Copy PostgreSQL server binaries, libraries, and utilities from the postgres stage
COPY --from=postgres-base /usr/lib/postgresql /usr/lib/postgresql
COPY --from=postgres-base /usr/share/postgresql /usr/share/postgresql
COPY --from=postgres-base /usr/bin/pg_dump \
/usr/bin/pg_dumpall \
/usr/bin/pg_restore \
/usr/bin/
# Install supervisor from standard Debian repos (remove broken external sources first)
# hadolint ignore=DL3008
RUN set -ex; \
rm -f \
/etc/apt/sources.list.d/nodesource.sources \
/etc/apt/sources.list.d/pgdg.list; \
apt-get update; \
apt-get upgrade -y; \
apt-get install -y --no-install-recommends \
ca-certificates \
supervisor \
tzdata \
netcat-openbsd; \
rm -rf /var/lib/apt/lists/*; \
update-ca-certificates; \
# Copy the CA bundle to a world-readable path so uid=1000 can access it.
# /etc/ssl/certs/ is persistently mode 700 in the base image's layer and
# cannot be chmod'd in a derived image, so we copy the regenerated bundle.
cp /etc/ssl/certs/ca-certificates.crt /etc/ssl/ca-bundle.crt; \
chmod 644 /etc/ssl/ca-bundle.crt; \
\
# The base image already ships a 'windmill' user/group at uid/gid 1000.
# Create the directories our services need and hand them to that user.
# /tmp/windmill/cache is intentionally excluded: the base image pre-creates
# it as 777 so any UID can write to it; a recursive chown on ~340 MB of
# pre-installed runtimes would create a huge and unnecessary image layer.
mkdir -p \
/var/lib/postgresql/data \
/var/lib/windmill-dump \
/var/run/postgresql \
/var/log/supervisord \
/var/run/supervisord; \
chown -R windmill:windmill \
/var/lib/postgresql \
/var/lib/windmill-dump \
/var/run/postgresql \
/var/log/supervisord \
/var/run/supervisord; \
chmod 1777 \
/var/run/postgresql \
/var/log/supervisord \
/var/run/supervisord; \
\
# Create symlinks so postgres tools are on PATH
ln -sf /usr/lib/postgresql/17/bin/postgres /usr/local/bin/postgres; \
ln -sf /usr/lib/postgresql/17/bin/initdb /usr/local/bin/initdb; \
ln -sf /usr/lib/postgresql/17/bin/pg_ctl /usr/local/bin/pg_ctl; \
ln -sf /usr/lib/postgresql/17/bin/pg_isready /usr/local/bin/pg_isready; \
\
# Record the current PostgreSQL major version so start.sh can detect when
# the bundled major version has changed and trigger an automatic dump/restore upgrade.
echo "17" > /etc/postgres-major-version; \
\
# Write a build-time marker so start.sh can detect image updates and
# clear the cache volume when a new image version is deployed.
date -u +%s > /etc/windmill-image-build-epoch
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
COPY --chmod=775 windmill-start.sh /windmill-start.sh
COPY --chmod=664 supervisord.conf /supervisord.conf
# Redirect writable tool dirs to the persistent cache volume so the
# container can run with a read-only root filesystem.
# HOME is already correct (/home/windmill) for the pre-existing uid=1000 user.
# WINDMILL_DIR is set to the cache volume so Windmill's logs/worker dirs
# are inside the volume and writable (Docker creates the volume mount-point
# parent /tmp/windmill as root:root, making /tmp/windmill/logs inaccessible
# for uid=1000 when /tmp is a tmpfs).
ENV UV_TOOL_BIN_DIR=/tmp/windmill/cache/uv/bin \
UV_TOOL_DIR=/tmp/windmill/cache/uv/tools \
WINDMILL_DIR=/tmp/windmill/cache \
SSL_CERT_FILE=/etc/ssl/ca-bundle.crt \
CURL_CA_BUNDLE=/etc/ssl/ca-bundle.crt \
REQUESTS_CA_BUNDLE=/etc/ssl/ca-bundle.crt \
NODE_EXTRA_CA_CERTS=/etc/ssl/ca-bundle.crt
VOLUME ["/var/lib/postgresql/data", "/var/lib/windmill-dump", "/tmp/windmill/cache"]
# Use the pre-existing windmill user (uid=1000) from the base image
USER 1000
EXPOSE 8000
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD /healthcheck.sh
LABEL com.centurylinklabs.watchtower.enable="false" \
wud.watch="false" \
org.opencontainers.image.title="Windmill for Nextcloud AIO" \
org.opencontainers.image.description="Windmill workflow engine with bundled PostgreSQL for Nextcloud All-in-One" \
org.opencontainers.image.url="https://github.com/nextcloud/all-in-one" \
org.opencontainers.image.source="https://github.com/nextcloud/all-in-one" \
org.opencontainers.image.vendor="Nextcloud" \
org.opencontainers.image.documentation="https://github.com/nextcloud/all-in-one/blob/main/readme.md"

View File

@@ -1,11 +0,0 @@
#!/bin/bash
# Check if PostgreSQL is accepting connections on the Unix socket
if ! pg_isready -h /var/run/postgresql -q 2>/dev/null; then
exit 1
fi
# Check if Windmill is accepting connections on port 8000
if ! nc -z localhost 8000; then
exit 1
fi

View File

@@ -1,202 +0,0 @@
#!/bin/bash
set -e
# Validate required environment variables
if [ -z "$BASE_URL" ]; then
echo "BASE_URL must be provided. Exiting!"
exit 1
fi
export TZ="${TZ:-Etc/UTC}"
# Clear the cache volume when the image has been updated.
# /etc/windmill-image-build-epoch is written at image build time.
# A copy is stored in the cache volume after first start.
# If the two differ the image was updated and any stale cached artefacts
# (uv tools, worker dirs) should be removed so Windmill starts clean.
IMAGE_EPOCH_FILE="/etc/windmill-image-build-epoch"
CACHE_EPOCH_FILE="/tmp/windmill/cache/.image-build-epoch"
if [ -f "$IMAGE_EPOCH_FILE" ]; then
IMAGE_EPOCH="$(cat "$IMAGE_EPOCH_FILE")"
if [ -f "$CACHE_EPOCH_FILE" ]; then
CACHE_EPOCH="$(cat "$CACHE_EPOCH_FILE")"
if [ "$IMAGE_EPOCH" != "$CACHE_EPOCH" ]; then
echo "Windmill image updated (was $CACHE_EPOCH, now $IMAGE_EPOCH). Clearing cache..."
find /tmp/windmill/cache -mindepth 1 -maxdepth 1 ! -name '.image-build-epoch' -exec rm -rf {} +
fi
fi
echo "$IMAGE_EPOCH" > "$CACHE_EPOCH_FILE"
fi
PGDATA="/var/lib/postgresql/data"
# The dump and its sentinel/log files live on a dedicated Docker volume that is
# separate from the postgres data directory. This means the dump survives a
# complete PGDATA wipe (which happens during a major-version upgrade) and there
# is no need for a staging subdirectory or complex file exclusion logic.
DUMP_DIR="/var/lib/windmill-dump"
DUMP_FILE="$DUMP_DIR/windmill-db-dump.sql"
# Current PG major version as shipped in this image
CURRENT_PG_MAJOR=$(cat /etc/postgres-major-version 2>/dev/null)
# ── Don't start if previous import failed ────────────────────────────────────
if [ -f "$DUMP_DIR/import.failed" ]; then
echo "The database import failed the last time. Please restore a backup and try again."
echo "For further clues on what went wrong, look at the logs above."
exit 1
fi
# ── Don't start if previous export failed ────────────────────────────────────
if [ -f "$DUMP_DIR/export.failed" ]; then
echo "Database export failed the last time. Most likely was the export time not high enough."
echo "Please report this to https://github.com/nextcloud/all-in-one/issues. Thanks!"
exit 1
fi
# Write the standard pg_hba.conf and listen_addresses settings into a data directory.
configure_pg() {
local datadir="$1"
cat > "$datadir/pg_hba.conf" << 'HBAEOF'
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
HBAEOF
# Disable TCP entirely; all communication uses the Unix socket.
echo "listen_addresses = ''" >> "$datadir/postgresql.conf"
}
# ── PostgreSQL major-version upgrade via dump/restore ────────────────────────
if [ -f "$PGDATA/PG_VERSION" ]; then
DATA_PG_MAJOR=$(cat "$PGDATA/PG_VERSION")
if [ "$DATA_PG_MAJOR" -gt "$CURRENT_PG_MAJOR" ]; then
echo "ERROR: Data directory was created by PostgreSQL $DATA_PG_MAJOR but this image ships $CURRENT_PG_MAJOR."
echo "Downgrade is not supported. Please use a newer image version."
exit 1
fi
if [ "$DATA_PG_MAJOR" -lt "$CURRENT_PG_MAJOR" ]; then
echo "PostgreSQL major-version upgrade required: $DATA_PG_MAJOR$CURRENT_PG_MAJOR"
if ! [ -f "$DUMP_FILE" ]; then
echo "Unable to upgrade because the database dump is missing."
echo "Please restore a backup and try again."
exit 1
fi
# Write output to logfile so the import can be inspected later
exec > >(tee -i "$DUMP_DIR/database-import.log")
exec 2>&1
echo "Restoring database from dump into new PostgreSQL $CURRENT_PG_MAJOR cluster."
# Set the sentinel BEFORE any destructive operation so that a crash at
# any point leaves the guard in place and blocks the next start.
# The sentinel lives on the dump volume and therefore survives the PGDATA wipe.
touch "$DUMP_DIR/import.failed"
set -ex
# Wipe the old cluster and initialise a fresh one.
# The dump file is on a separate volume and is not affected.
rm -rf "${PGDATA:?}/"*
initdb -D "$PGDATA" \
--username=windmill \
--auth-local=trust \
--auth-host=trust \
--no-instructions
configure_pg "$PGDATA"
# Start postgres temporarily on a socket in /tmp so we can import.
# No TCP port is needed since we connect via the socket.
postgres -D "$PGDATA" -k /tmp -h "" &
TEMP_PG_PID=$!
# Wait until postgres accepts connections
while ! psql -h /tmp -U windmill -d postgres -c "select now()" > /dev/null 2>&1; do
echo "Waiting for the temporary database to start..."
sleep 5
done
# Create the windmill database
psql -h /tmp -U windmill -d postgres \
-c "CREATE DATABASE windmill OWNER windmill;"
# Restore from dump
echo "Restoring the database from dump..."
psql -h /tmp -U windmill -d windmill < "$DUMP_FILE"
# Stop the temporary postgres cleanly
pg_ctl -D "$PGDATA" stop -m smart -t 1800
wait "$TEMP_PG_PID" 2>/dev/null || true
set +ex
# Remove the sentinel only after the restore has fully completed
rm "$DUMP_DIR/import.failed"
echo "PostgreSQL upgrade to $CURRENT_PG_MAJOR complete."
fi
fi
# ── End of major-version upgrade section ─────────────────────────────────────
# ── Initialize PostgreSQL data directory on first run ────────────────────────
if [ -z "$(ls -A "$PGDATA" 2>/dev/null)" ]; then
echo "Initializing PostgreSQL database for Windmill..."
initdb -D "$PGDATA" \
--username=windmill \
--auth-local=trust \
--auth-host=trust \
--no-instructions
configure_pg "$PGDATA"
# Start PostgreSQL temporarily to create the windmill database, then stop it.
# supervisord will restart it properly afterward.
pg_ctl -D "$PGDATA" start -w -o "-k /var/run/postgresql"
psql -h /var/run/postgresql -U windmill postgres \
-c "CREATE DATABASE windmill OWNER windmill;"
pg_ctl -D "$PGDATA" stop -w
echo "PostgreSQL initialization complete."
fi
# ── Dump database and shut down on container stop ────────────────────────────
do_database_dump() {
# pg_dump uses a consistent transaction snapshot, so it is safe to run
# while Windmill is still connected — no need to stop it beforehand.
# Verify postgres is still accepting connections before attempting the dump.
if ! pg_isready -h /var/run/postgresql -U windmill -q; then
echo "WARNING: postgres is not ready; skipping dump."
kill "$SUPERVISORD_PID" 2>/dev/null || true
wait "$SUPERVISORD_PID" 2>/dev/null || true
return
fi
set -x
touch "$DUMP_DIR/export.failed"
rm -f "$DUMP_FILE.temp"
if pg_dump -h /var/run/postgresql -U windmill windmill > "$DUMP_FILE.temp"; then
mv "$DUMP_FILE.temp" "$DUMP_FILE"
rm "$DUMP_DIR/export.failed"
echo "Database dump successful!"
else
rm -f "$DUMP_FILE.temp"
echo "Database dump unsuccessful!"
fi
set +x
# Stop supervisord (which stops postgres and windmill)
kill "$SUPERVISORD_PID" 2>/dev/null || true
wait "$SUPERVISORD_PID" 2>/dev/null || true
}
trap do_database_dump SIGTERM SIGINT
# ── Start services ────────────────────────────────────────────────────────────
supervisord -c /supervisord.conf &
SUPERVISORD_PID=$!
wait "$SUPERVISORD_PID"

View File

@@ -1,29 +0,0 @@
[supervisord]
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
[program:postgresql]
command=postgres -D /var/lib/postgresql/data -k /var/run/postgresql
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
# Start first: Windmill depends on PostgreSQL being ready
priority=10
autorestart=true
startsecs=5
[program:windmill]
command=/windmill-start.sh
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
priority=20
autorestart=true
startsecs=10

View File

@@ -1,10 +0,0 @@
#!/bin/bash
# Wait for PostgreSQL to accept connections
until pg_isready -h /var/run/postgresql -q 2>/dev/null; do
echo "Waiting for PostgreSQL to be ready..."
sleep 2
done
# Start Windmill
exec windmill

View File

@@ -1,19 +1,12 @@
# https://editorconfig.org
# note: the files in ./composer actually use 4 spaces instead of tabs
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
[*.feature]
indent_size = 2
indent_style = space
[*.yml]
indent_size = 2
indent_style = space

View File

@@ -1,7 +1,10 @@
# AIO app for Nextcloud
This folder contains a Nextcloud app, which will be automatically installed within the Nextcloud instance.
It adds a link to the admin settings page that gives access to the AIO interface.
## How to develop the app?
Please note that in order to check if an app is already downloaded
Nextcloud will look for a folder with the same name as the app.
Please note that in order to check if an app is already downloaded Nextcloud will look for a folder with the same name as the app.
Therefore you need to add the app to one of the app directories
naming the directory `nextcloud-aio`.
Therefore you need to add the app to one of the app directories naming the directory `nextcloud-aio`.

View File

@@ -6,6 +6,8 @@ This container bundles Home Assistant and auto-configures it for you.
- After adding and starting the container, you can visit `http://ip.address.of.this.server:8123` in order to set up your Home Assistant instance.
- The data of Home Assistant will be automatically included in AIOs backup solution!
- In order to access your Home Assistant outside the local network, you have to set up your own reverse proxy. You can set up a reverse proxy following [these instructions](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md).
- And to allow the traffic from the reverse proxy to be accepted by Home Assistant, follow [these instructions](https://www.home-assistant.io/integrations/http/#reverse-proxies) from the Home Assistant documentation.
- Or, to use the Caddy with geoblocking community container, follow the following instruction to add your own Caddyfile, to use it for Home Assistant: https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy#notes
- 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,8 +4,8 @@
"container_name": "nextcloud-aio-lldap",
"display_name": "Light LDAP implementation",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap",
"image": "lldap/lldap",
"image_tag": "v0-alpine",
"image": "ghcr.io/lldap/lldap",
"image_tag": "latest-alpine",
"internal_port": "17170",
"restart": "unless-stopped",
"ports": [

View File

@@ -1,6 +1,9 @@
## Minio
This container bundles minio s3 storage and auto-configures it for you.
> [!CAUTION]
> The Minio upstream project is no longer maintained. The container should still work in its current form...
>[!WARNING]
> Enabling this container will remove access to all the files formerly written to the data directory.
> So only enable this on a clean instance directly after installing AIO.

View File

@@ -1,4 +1,4 @@
name: nextcloud-aio # Add the container to the same compose project like all the sibling containers are added to automatically.
name: nextcloud-aio # Add the container to the same compose project to which all the sibling containers are added automatically
services:
nextcloud-aio-mastercontainer:
image: ghcr.io/nextcloud-releases/all-in-one:latest # This is the container image used. You can switch to ghcr.io/nextcloud-releases/all-in-one:beta if you want to help testing new releases. See https://github.com/nextcloud/all-in-one#how-to-switch-the-channel
@@ -15,13 +15,14 @@ services:
- "80:80" # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
- "8080:8080" # This is the AIO interface, served via https and self-signed certificate. See https://github.com/nextcloud/all-in-one#explanation-of-used-ports
- "8443:8443" # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# security_opt: ["label:disable"] # Is needed when using SELinux. See https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled
# environment: # Is needed when using any of the options below
# security_opt: ["label:disable"] # Needed when using SELinux. See https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled
# environment: # This line is needed (has to be uncommented) when using any of the options below
# AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
# APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# APACHE_PORT: 11000 # Needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# APACHE_IP_BINDING: 127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# APACHE_ADDITIONAL_NETWORK: frontend_net # (Optional) Connect the apache container to an additional docker network. Needed when behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) running in a different docker network on same server. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
# AIO_LOG_LEVEL: warn # Allows to globally adjust the log level of the included AIO components. Supported values: debug, info, warn, error. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-log-level-for-aio-components
# COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
# DOCKER_API_VERSION: 1.44 # You can adjust the internally used docker api version with this variable. ⚠️⚠️⚠️ Warning: please note that only the default api version (unset this variable) is supported and tested by the maintainers of Nextcloud AIO. So use this on your own risk and things might break without warning. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-internally-used-docker-api-version
# FULLTEXTSEARCH_JAVA_OPTIONS: "-Xms1024M -Xmx1024M" # Allows to adjust the fulltextsearch java options. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-fulltextsearch-java-options

View File

@@ -39,13 +39,13 @@ services:
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_HOST=nextcloud-aio-talk
- APACHE_PORT
- AIO_LOG_LEVEL
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- TZ=${TIMEZONE}
- APACHE_MAX_SIZE
- APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME}
- NOTIFY_PUSH_HOST=nextcloud-aio-notify-push
- WHITEBOARD_HOST=nextcloud-aio-whiteboard
- HARP_HOST=nextcloud-aio-harp
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw
@@ -80,6 +80,7 @@ services:
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=nextcloud_database
- POSTGRES_USER=nextcloud
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- PGTZ=${TIMEZONE}
stop_grace_period: 1800s
@@ -149,6 +150,7 @@ services:
- TURN_SECRET
- SIGNALING_SECRET
- ONLYOFFICE_SECRET
- AIO_LOG_LEVEL
- NEXTCLOUD_MOUNT
- CLAMAV_ENABLED
- CLAMAV_HOST=nextcloud-aio-clamav
@@ -207,6 +209,7 @@ services:
- nextcloud_aio_nextcloud:/var/www/html:ro
environment:
- NEXTCLOUD_HOST=nextcloud-aio-nextcloud
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
restart: unless-stopped
read_only: true
@@ -228,6 +231,7 @@ services:
- "6379"
environment:
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
volumes:
- nextcloud_aio_redis:/data:rw
@@ -251,8 +255,9 @@ services:
- "9980"
environment:
- aliasgroup1=https://${NC_DOMAIN}:443,http://nextcloud-aio-apache.nextcloud-aio:23973
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.disable_server_audit=true --o:logging.level=warning --o:logging.level_startup=warning --o:welcome.enable=false --o:fetch_update_check=0 --o:allow_update_popup=false --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:logging.disable_server_audit=true --o:welcome.enable=false --o:fetch_update_check=0 --o:allow_update_popup=false --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
- dictionaries=${COLLABORA_DICTIONARIES}
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- server_name=${NC_DOMAIN}
- DONT_GEN_SSL_CERT=1
@@ -293,6 +298,7 @@ services:
- TALK_HOST=nextcloud-aio-talk
- TURN_SECRET
- SIGNALING_SECRET
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- TALK_PORT
- INTERNAL_SECRET=${TALK_INTERNAL_SECRET}
@@ -325,6 +331,7 @@ services:
- "1234"
environment:
- NC_DOMAIN
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- RECORDING_SECRET
- INTERNAL_SECRET=${TALK_INTERNAL_SECRET}
@@ -354,6 +361,7 @@ services:
expose:
- "3310"
environment:
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- MAX_SIZE=${NEXTCLOUD_UPLOAD_LIMIT}
volumes:
@@ -384,6 +392,8 @@ services:
expose:
- "80"
environment:
- AIO_LOG_LEVEL
- LOG_LEVEL=${AIO_LOG_LEVEL}
- TZ=${TIMEZONE}
- JWT_ENABLED=true
- JWT_HEADER=AuthorizationJwt
@@ -410,6 +420,7 @@ services:
expose:
- "9000"
environment:
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- IMAGINARY_SECRET
restart: unless-stopped
@@ -436,12 +447,12 @@ services:
expose:
- "9200"
environment:
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- ES_JAVA_OPTS=${FULLTEXTSEARCH_JAVA_OPTIONS}
- bootstrap.memory_lock=false
- cluster.name=nextcloud-aio
- discovery.type=single-node
- logger.level=WARN
- http.port=9200
- xpack.license.self_generated.type=basic
- xpack.security.enabled=false
@@ -473,6 +484,7 @@ services:
tmpfs:
- /tmp
environment:
- AIO_LOG_LEVEL
- TZ=${TIMEZONE}
- NEXTCLOUD_URL=https://${NC_DOMAIN}
- JWT_SECRET_KEY=${WHITEBOARD_SECRET}

View File

@@ -21,6 +21,7 @@ TALK_ENABLED="no" # Setting this to "yes" (with quotes) enables the opt
TALK_RECORDING_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
WHITEBOARD_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
AIO_LOG_LEVEL=warn # Allows to adjust the global AIO log level. Valid values are debug, info, warn and error.
APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and if that is running on the same host and using localhost to connect
APACHE_MAX_SIZE=17179869184 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).

View File

@@ -48,6 +48,7 @@ sed -i '/AIO_TOKEN/d' containers.yml
sed -i '/AIO_URL/d' containers.yml
sed -i '/DOCKER_SOCKET_PROXY_ENABLED/d' containers.yml
sed -i '/HARP_ENABLED/d' containers.yml
sed -i '/HARP_HOST/d' containers.yml
sed -i '/HP_SHARED_KEY/d' containers.yml
sed -i '/ADDITIONAL_TRUSTED_PROXY/d' containers.yml
sed -i '/TURN_DOMAIN/d' containers.yml
@@ -100,6 +101,7 @@ sed -i 's|NC_DOMAIN=|NC_DOMAIN=yourdomain.com # TODO! Needs to be chang
sed -i 's|NEXTCLOUD_PASSWORD=|NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially created Nextcloud admin with username "admin".|' sample.conf
sed -i 's|TIMEZONE=|TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.|' sample.conf
sed -i 's|COLLABORA_SECCOMP_POLICY=|COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.|' sample.conf
sed -i 's|AIO_LOG_LEVEL=|AIO_LOG_LEVEL=warn # Allows to adjust the global AIO log level. Valid values are debug, info, warn and error.|' sample.conf
sed -i 's|FULLTEXTSEARCH_JAVA_OPTIONS=|FULLTEXTSEARCH_JAVA_OPTIONS="-Xms512M -Xmx512M" # Allows to adjust the fulltextsearch java options.|' sample.conf
sed -i 's|NEXTCLOUD_STARTUP_APPS=|NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts notes" # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. You can also disable apps by using a hyphen in front of them. E.g. "-app_api"|' sample.conf
sed -i 's|NEXTCLOUD_ADDITIONAL_APKS=|NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.|' sample.conf

View File

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

View File

@@ -37,6 +37,8 @@ spec:
- env:
- name: ADDITIONAL_TRUSTED_DOMAIN
value: "{{ .Values.ADDITIONAL_TRUSTED_DOMAIN }}"
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: APACHE_HOST
value: nextcloud-aio-apache
- name: APACHE_MAX_SIZE
@@ -63,7 +65,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
image: ghcr.io/nextcloud-releases/aio-apache:20260409_094910
image: ghcr.io/nextcloud-releases/aio-apache:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -36,7 +36,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
image: ghcr.io/nextcloud-releases/aio-alpine:20260409_094910
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- mkdir
- "-p"
@@ -55,11 +55,13 @@ spec:
{{- end }}
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: MAX_SIZE
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-clamav:20260409_094910
image: ghcr.io/nextcloud-releases/aio-clamav:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -23,6 +23,8 @@ spec:
containers:
- args: {{ .Values.ADDITIONAL_COLLABORA_OPTIONS | default list | toJson }}
env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: DONT_GEN_SSL_CERT
value: "1"
- name: TZ
@@ -32,13 +34,13 @@ spec:
- name: dictionaries
value: "{{ .Values.COLLABORA_DICTIONARIES }}"
- name: extra_params
value: --o:ssl.enable=false --o:ssl.termination=true --o:logging.disable_server_audit=true --o:logging.level=warning --o:logging.level_startup=warning --o:welcome.enable=false --o:fetch_update_check=0 --o:allow_update_popup=false --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:logging.disable_server_audit=true --o:welcome.enable=false --o:fetch_update_check=0 --o:allow_update_popup=false --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 }}"
{{- if contains "--o:support_key=" (join " " (.Values.ADDITIONAL_COLLABORA_OPTIONS | default list)) }}
image: ghcr.io/nextcloud-releases/aio-collabora-online:20260409_094910
image: ghcr.io/nextcloud-releases/aio-collabora-online:20260515_145717
{{- else }}
image: ghcr.io/nextcloud-releases/aio-collabora:20260409_094910
image: ghcr.io/nextcloud-releases/aio-collabora:20260515_145717
{{- end }}
readinessProbe:
exec:

View File

@@ -35,7 +35,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
image: ghcr.io/nextcloud-releases/aio-alpine:20260409_094910
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- mkdir
- "-p"
@@ -54,6 +54,8 @@ spec:
{{- end }}
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: PGTZ
value: "{{ .Values.TIMEZONE }}"
- name: POSTGRES_DB
@@ -64,7 +66,7 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-postgresql:20260409_094910
image: ghcr.io/nextcloud-releases/aio-postgresql:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20260409_094910
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- chmod
- "777"
@@ -34,6 +34,8 @@ spec:
mountPath: /nextcloud-aio-elasticsearch
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: ES_JAVA_OPTS
value: "{{ .Values.FULLTEXTSEARCH_JAVA_OPTIONS | default "-Xms512M -Xmx512M" }}"
- name: FULLTEXTSEARCH_PASSWORD
@@ -48,13 +50,17 @@ spec:
value: single-node
- name: http.port
value: "9200"
- name: logger.level
value: WARN
- name: indices.fielddata.cache.size
value: 20%
- name: indices.memory.index_buffer_size
value: 20%
- name: thread_pool.write.queue_size
value: "1000"
- name: xpack.license.self_generated.type
value: basic
- name: xpack.security.enabled
value: "false"
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20260409_094910
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -34,11 +34,13 @@ spec:
{{- end }}
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: IMAGINARY_SECRET
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-imaginary:20260409_094910
image: ghcr.io/nextcloud-releases/aio-imaginary:20260515_145717
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:20260409_094910
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- chmod
- "777"
@@ -92,6 +92,8 @@ spec:
value: "{{ .Values.NEXTCLOUD_PASSWORD }}"
- name: ADMIN_USER
value: admin
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: APACHE_HOST
value: nextcloud-aio-apache
- name: APACHE_PORT
@@ -190,7 +192,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
image: ghcr.io/nextcloud-releases/aio-nextcloud:20260409_094910
image: ghcr.io/nextcloud-releases/aio-nextcloud:20260515_145717
{{- 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

@@ -35,11 +35,13 @@ spec:
{{- end }}
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: NEXTCLOUD_HOST
value: nextcloud-aio-nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-notify-push:20260409_094910
image: ghcr.io/nextcloud-releases/aio-notify-push:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20260409_094910
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- chmod
- "777"
@@ -34,15 +34,19 @@ spec:
mountPath: /nextcloud-aio-onlyoffice
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: JWT_ENABLED
value: "true"
- name: JWT_HEADER
value: AuthorizationJwt
- name: JWT_SECRET
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-onlyoffice:20260409_094910
image: ghcr.io/nextcloud-releases/aio-onlyoffice:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -35,11 +35,13 @@ spec:
{{- end }}
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: REDIS_HOST_PASSWORD
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-redis:20260409_094910
image: ghcr.io/nextcloud-releases/aio-redis:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -40,6 +40,8 @@ spec:
value: "{{ .Values.TALK_MAX_STREAM_BITRATE }}"
- name: TALK_MAX_SCREEN_BITRATE
value: "{{ .Values.TALK_MAX_SCREEN_BITRATE }}"
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: INTERNAL_SECRET
value: "{{ .Values.TALK_INTERNAL_SECRET }}"
- name: NC_DOMAIN
@@ -54,7 +56,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk:20260409_094910
image: ghcr.io/nextcloud-releases/aio-talk:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -36,6 +36,8 @@ spec:
{{- end }}
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: INTERNAL_SECRET
value: "{{ .Values.TALK_INTERNAL_SECRET }}"
- name: NC_DOMAIN
@@ -44,7 +46,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk-recording:20260409_094910
image: ghcr.io/nextcloud-releases/aio-talk-recording:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -34,6 +34,8 @@ spec:
{{- end }}
containers:
- env:
- name: AIO_LOG_LEVEL
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: BACKUP_DIR
value: /tmp
- name: JWT_SECRET_KEY
@@ -50,7 +52,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-whiteboard:20260409_094910
image: ghcr.io/nextcloud-releases/aio-whiteboard:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -21,6 +21,7 @@ TALK_ENABLED: "no" # Setting this to "yes" (with quotes) enables the op
TALK_RECORDING_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
WHITEBOARD_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
AIO_LOG_LEVEL: warn # Allows to adjust the global AIO log level. Valid values are debug, info, warn and error.
APACHE_MAX_SIZE: "17179869184" # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
APACHE_PORT: 443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).
ADDITIONAL_COLLABORA_OPTIONS: ['--o:security.seccomp=true'] # You can add additional collabora options here by using the array syntax.
@@ -31,7 +32,7 @@ NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional pa
NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.
NEXTCLOUD_MAX_TIME: 3600 # This allows to change the upload time limit of the Nextcloud container
NEXTCLOUD_MEMORY_LIMIT: 512M # This allows to change the PHP memory limit of the Nextcloud container
NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time
NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. You can also disable apps by using a hyphen in front of them. E.g. -app_api
NEXTCLOUD_TRUSTED_CACERTS_DIR: # Setting this to any value allows to automatically import root certificates into the Nextcloud container
NEXTCLOUD_UPLOAD_LIMIT: 16G # This allows to change the upload limit of the Nextcloud container
REMOVE_DISABLED_APPS: "yes" # Setting this to "no" keep Nextcloud apps that are disabled via their switch and not uninstall them if they should be installed in Nextcloud.

239
php/composer.lock generated
View File

@@ -64,16 +64,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.10.0",
"version": "7.10.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4"
"reference": "aed36fd5fb4844f284252a999d9abf35d3a9a1ae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
"reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/aed36fd5fb4844f284252a999d9abf35d3a9a1ae",
"reference": "aed36fd5fb4844f284252a999d9abf35d3a9a1ae",
"shasum": ""
},
"require": {
@@ -91,8 +91,9 @@
"bamarni/composer-bin-plugin": "^1.8.2",
"ext-curl": "*",
"guzzle/client-integration-tests": "3.0.2",
"guzzlehttp/test-server": "^0.3.2",
"php-http/message-factory": "^1.1",
"phpunit/phpunit": "^8.5.39 || ^9.6.20",
"phpunit/phpunit": "^8.5.52 || ^9.6.34",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -170,7 +171,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.10.0"
"source": "https://github.com/guzzle/guzzle/tree/7.10.2"
},
"funding": [
{
@@ -186,20 +187,20 @@
"type": "tidelift"
}
],
"time": "2025-08-23T22:36:01+00:00"
"time": "2026-05-20T11:58:52+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.3.0",
"version": "2.3.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "481557b130ef3790cf82b713667b43030dc9c957"
"reference": "d2d8dfae4757f384d630fdffc2d8d6618d8f4c5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
"reference": "481557b130ef3790cf82b713667b43030dc9c957",
"url": "https://api.github.com/repos/guzzle/promises/zipball/d2d8dfae4757f384d630fdffc2d8d6618d8f4c5e",
"reference": "d2d8dfae4757f384d630fdffc2d8d6618d8f4c5e",
"shasum": ""
},
"require": {
@@ -207,7 +208,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
"phpunit/phpunit": "^8.5.52 || ^9.6.34"
},
"type": "library",
"extra": {
@@ -253,7 +254,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.3.0"
"source": "https://github.com/guzzle/promises/tree/2.3.1"
},
"funding": [
{
@@ -269,20 +270,20 @@
"type": "tidelift"
}
],
"time": "2025-08-22T14:34:08+00:00"
"time": "2026-05-19T18:30:48+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.9.0",
"version": "2.10.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884"
"reference": "73ab136360b5dfd858006eae9795e8fe43c80361"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884",
"reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/73ab136360b5dfd858006eae9795e8fe43c80361",
"reference": "73ab136360b5dfd858006eae9795e8fe43c80361",
"shasum": ""
},
"require": {
@@ -297,9 +298,9 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0",
"http-interop/http-factory-tests": "1.1.0",
"jshttp/mime-db": "1.54.0.1",
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
"phpunit/phpunit": "^8.5.52 || ^9.6.34"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -370,7 +371,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.9.0"
"source": "https://github.com/guzzle/psr7/tree/2.10.1"
},
"funding": [
{
@@ -386,7 +387,7 @@
"type": "tidelift"
}
],
"time": "2026-03-10T16:41:02+00:00"
"time": "2026-05-20T09:27:36+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -448,16 +449,16 @@
},
{
"name": "laravel/serializable-closure",
"version": "v2.0.12",
"version": "v2.0.13",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "a6abb4e54f6fcd3138120b9ad497f0bd146f9919"
"reference": "b566ee0dd251f3c4078bed003a7ce015f5ea6dce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/a6abb4e54f6fcd3138120b9ad497f0bd146f9919",
"reference": "a6abb4e54f6fcd3138120b9ad497f0bd146f9919",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b566ee0dd251f3c4078bed003a7ce015f5ea6dce",
"reference": "b566ee0dd251f3c4078bed003a7ce015f5ea6dce",
"shasum": ""
},
"require": {
@@ -505,7 +506,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2026-04-14T13:33:34+00:00"
"time": "2026-04-16T14:03:50+00:00"
},
{
"name": "nikic/fast-route",
@@ -1465,16 +1466,16 @@
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.6.0",
"version": "v3.7.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
"reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/50f59d1f3ca46d41ac911f97a78626b6756af35b",
"reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b",
"shasum": ""
},
"require": {
@@ -1487,7 +1488,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.6-dev"
"dev-main": "3.7-dev"
}
},
"autoload": {
@@ -1512,7 +1513,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.0"
},
"funding": [
{
@@ -1523,16 +1524,20 @@
"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-09-25T14:21:43+00:00"
"time": "2026-04-13T15:52:40+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.36.0",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -1591,7 +1596,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.36.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0"
},
"funding": [
{
@@ -1615,7 +1620,7 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.36.0",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -1676,7 +1681,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.36.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.37.0"
},
"funding": [
{
@@ -1700,7 +1705,7 @@
},
{
"name": "symfony/polyfill-php81",
"version": "v1.36.0",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
@@ -1756,7 +1761,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.36.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.37.0"
},
"funding": [
{
@@ -1780,16 +1785,16 @@
},
{
"name": "twig/twig",
"version": "v3.24.0",
"version": "v3.26.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "a6769aefb305efef849dc25c9fd1653358c148f0"
"reference": "1fcae487b180d78e6351f4e0afa91f9eab96a2bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a6769aefb305efef849dc25c9fd1653358c148f0",
"reference": "a6769aefb305efef849dc25c9fd1653358c148f0",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/1fcae487b180d78e6351f4e0afa91f9eab96a2bc",
"reference": "1fcae487b180d78e6351f4e0afa91f9eab96a2bc",
"shasum": ""
},
"require": {
@@ -1844,7 +1849,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.24.0"
"source": "https://github.com/twigphp/Twig/tree/v3.26.0"
},
"funding": [
{
@@ -1856,7 +1861,7 @@
"type": "tidelift"
}
],
"time": "2026-03-17T21:31:11+00:00"
"time": "2026-05-20T07:31:59+00:00"
}
],
"packages-dev": [
@@ -2172,16 +2177,16 @@
},
{
"name": "amphp/parallel",
"version": "v2.3.3",
"version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/amphp/parallel.git",
"reference": "296b521137a54d3a02425b464e5aee4c93db2c60"
"reference": "37f5b2754fadc229c00f9416bd68fb8d04529a81"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/parallel/zipball/296b521137a54d3a02425b464e5aee4c93db2c60",
"reference": "296b521137a54d3a02425b464e5aee4c93db2c60",
"url": "https://api.github.com/repos/amphp/parallel/zipball/37f5b2754fadc229c00f9416bd68fb8d04529a81",
"reference": "37f5b2754fadc229c00f9416bd68fb8d04529a81",
"shasum": ""
},
"require": {
@@ -2201,7 +2206,7 @@
"amphp/php-cs-fixer-config": "^2",
"amphp/phpunit-util": "^3",
"phpunit/phpunit": "^9",
"psalm/phar": "^5.18"
"psalm/phar": "6.16.1"
},
"type": "library",
"autoload": {
@@ -2244,7 +2249,7 @@
],
"support": {
"issues": "https://github.com/amphp/parallel/issues",
"source": "https://github.com/amphp/parallel/tree/v2.3.3"
"source": "https://github.com/amphp/parallel/tree/v2.4.0"
},
"funding": [
{
@@ -2252,7 +2257,7 @@
"type": "github"
}
],
"time": "2025-11-15T06:23:42+00:00"
"time": "2026-05-16T16:54:01+00:00"
},
{
"name": "amphp/parser",
@@ -2318,16 +2323,16 @@
},
{
"name": "amphp/pipeline",
"version": "v1.2.3",
"version": "v1.2.4",
"source": {
"type": "git",
"url": "https://github.com/amphp/pipeline.git",
"reference": "7b52598c2e9105ebcddf247fc523161581930367"
"reference": "a044733e080940d1483f56caff0c412ad6982776"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/pipeline/zipball/7b52598c2e9105ebcddf247fc523161581930367",
"reference": "7b52598c2e9105ebcddf247fc523161581930367",
"url": "https://api.github.com/repos/amphp/pipeline/zipball/a044733e080940d1483f56caff0c412ad6982776",
"reference": "a044733e080940d1483f56caff0c412ad6982776",
"shasum": ""
},
"require": {
@@ -2339,7 +2344,7 @@
"amphp/php-cs-fixer-config": "^2",
"amphp/phpunit-util": "^3",
"phpunit/phpunit": "^9",
"psalm/phar": "^5.18"
"psalm/phar": "6.16.1"
},
"type": "library",
"autoload": {
@@ -2373,7 +2378,7 @@
],
"support": {
"issues": "https://github.com/amphp/pipeline/issues",
"source": "https://github.com/amphp/pipeline/tree/v1.2.3"
"source": "https://github.com/amphp/pipeline/tree/v1.2.4"
},
"funding": [
{
@@ -2381,7 +2386,7 @@
"type": "github"
}
],
"time": "2025-03-16T16:33:53+00:00"
"time": "2026-05-06T05:37:57+00:00"
},
{
"name": "amphp/process",
@@ -3771,16 +3776,16 @@
},
{
"name": "revolt/event-loop",
"version": "v1.0.8",
"version": "v1.0.9",
"source": {
"type": "git",
"url": "https://github.com/revoltphp/event-loop.git",
"reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c"
"reference": "44061cf513e53c6200372fc935ac42271566295d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/revoltphp/event-loop/zipball/b6fc06dce8e9b523c9946138fa5e62181934f91c",
"reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c",
"url": "https://api.github.com/repos/revoltphp/event-loop/zipball/44061cf513e53c6200372fc935ac42271566295d",
"reference": "44061cf513e53c6200372fc935ac42271566295d",
"shasum": ""
},
"require": {
@@ -3790,7 +3795,7 @@
"ext-json": "*",
"jetbrains/phpstorm-stubs": "^2019.3",
"phpunit/phpunit": "^9",
"psalm/phar": "^5.15"
"psalm/phar": "6.16.*"
},
"type": "library",
"extra": {
@@ -3837,22 +3842,22 @@
],
"support": {
"issues": "https://github.com/revoltphp/event-loop/issues",
"source": "https://github.com/revoltphp/event-loop/tree/v1.0.8"
"source": "https://github.com/revoltphp/event-loop/tree/v1.0.9"
},
"time": "2025-08-27T21:33:23+00:00"
"time": "2026-05-16T17:55:38+00:00"
},
{
"name": "sebastian/diff",
"version": "8.1.0",
"version": "8.3.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "9c957d730257f49c873f3761674559bd90098a7d"
"reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/9c957d730257f49c873f3761674559bd90098a7d",
"reference": "9c957d730257f49c873f3761674559bd90098a7d",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b36d33b6e796513de7cb7df053afb3f55eefcd47",
"reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47",
"shasum": ""
},
"require": {
@@ -3865,7 +3870,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "8.1-dev"
"dev-main": "8.3-dev"
}
},
"autoload": {
@@ -3898,7 +3903,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
"source": "https://github.com/sebastianbergmann/diff/tree/8.1.0"
"source": "https://github.com/sebastianbergmann/diff/tree/8.3.0"
},
"funding": [
{
@@ -3918,7 +3923,7 @@
"type": "tidelift"
}
],
"time": "2026-04-05T12:02:33+00:00"
"time": "2026-05-15T04:58:09+00:00"
},
{
"name": "spatie/array-to-xml",
@@ -4048,16 +4053,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.36",
"version": "v6.4.39",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5"
"reference": "c132f1215fe4aa45b70173cc00ce9a755dd31ec5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/9f481cfb580db8bcecc9b2d4c63f3e13df022ad5",
"reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5",
"url": "https://api.github.com/repos/symfony/console/zipball/c132f1215fe4aa45b70173cc00ce9a755dd31ec5",
"reference": "c132f1215fe4aa45b70173cc00ce9a755dd31ec5",
"shasum": ""
},
"require": {
@@ -4122,7 +4127,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.36"
"source": "https://github.com/symfony/console/tree/v6.4.39"
},
"funding": [
{
@@ -4142,20 +4147,20 @@
"type": "tidelift"
}
],
"time": "2026-03-27T15:30:51+00:00"
"time": "2026-05-12T06:50:03+00:00"
},
{
"name": "symfony/filesystem",
"version": "v8.0.8",
"version": "v8.0.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "66b769ae743ce2d13e435528fbef4af03d623e5a"
"reference": "224db910898ce1317b892a9a1338f1f8f17eb7c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/66b769ae743ce2d13e435528fbef4af03d623e5a",
"reference": "66b769ae743ce2d13e435528fbef4af03d623e5a",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/224db910898ce1317b892a9a1338f1f8f17eb7c7",
"reference": "224db910898ce1317b892a9a1338f1f8f17eb7c7",
"shasum": ""
},
"require": {
@@ -4192,7 +4197,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v8.0.8"
"source": "https://github.com/symfony/filesystem/tree/v8.0.11"
},
"funding": [
{
@@ -4212,7 +4217,7 @@
"type": "tidelift"
}
],
"time": "2026-03-30T15:14:47+00:00"
"time": "2026-05-11T16:39:47+00:00"
},
{
"name": "symfony/finder",
@@ -4284,16 +4289,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.36.0",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df"
"reference": "4864388bfbd3001ce88e234fab652acd91fdc57e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ad1b7b9092976d6c948b8a187cec9faaea9ec1df",
"reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/4864388bfbd3001ce88e234fab652acd91fdc57e",
"reference": "4864388bfbd3001ce88e234fab652acd91fdc57e",
"shasum": ""
},
"require": {
@@ -4342,7 +4347,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.36.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.37.0"
},
"funding": [
{
@@ -4362,11 +4367,11 @@
"type": "tidelift"
}
],
"time": "2026-04-10T16:19:22+00:00"
"time": "2026-04-26T13:13:48+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.36.0",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -4427,7 +4432,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.36.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.37.0"
},
"funding": [
{
@@ -4451,7 +4456,7 @@
},
{
"name": "symfony/polyfill-php84",
"version": "v1.36.0",
"version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php84.git",
@@ -4507,7 +4512,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php84/tree/v1.36.0"
"source": "https://github.com/symfony/polyfill-php84/tree/v1.37.0"
},
"funding": [
{
@@ -4531,16 +4536,16 @@
},
{
"name": "symfony/service-contracts",
"version": "v3.6.1",
"version": "v3.7.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
"reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
"reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a",
"reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a",
"shasum": ""
},
"require": {
@@ -4558,7 +4563,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.6-dev"
"dev-main": "3.7-dev"
}
},
"autoload": {
@@ -4594,7 +4599,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
"source": "https://github.com/symfony/service-contracts/tree/v3.7.0"
},
"funding": [
{
@@ -4614,20 +4619,20 @@
"type": "tidelift"
}
],
"time": "2025-07-15T11:30:57+00:00"
"time": "2026-03-28T09:44:51+00:00"
},
{
"name": "symfony/string",
"version": "v7.4.8",
"version": "v7.4.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "114ac57257d75df748eda23dd003878080b8e688"
"reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688",
"reference": "114ac57257d75df748eda23dd003878080b8e688",
"url": "https://api.github.com/repos/symfony/string/zipball/965f7306a43383d02c6aca1e3f3bd2f0ea5dee15",
"reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15",
"shasum": ""
},
"require": {
@@ -4685,7 +4690,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v7.4.8"
"source": "https://github.com/symfony/string/tree/v7.4.11"
},
"funding": [
{
@@ -4705,7 +4710,7 @@
"type": "tidelift"
}
],
"time": "2026-03-24T13:12:05+00:00"
"time": "2026-05-13T12:04:42+00:00"
},
{
"name": "vimeo/psalm",
@@ -4894,16 +4899,16 @@
},
{
"name": "webmozart/assert",
"version": "2.3.0",
"version": "2.4.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
"reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4"
"reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/eb0d790f735ba6cff25c683a85a1da0eadeff9e4",
"reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/9007ea6f45ecf352a9422b36644e4bfc039b9155",
"reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155",
"shasum": ""
},
"require": {
@@ -4919,7 +4924,11 @@
},
"type": "library",
"extra": {
"psalm": {
"pluginClass": "Webmozart\\Assert\\PsalmPlugin"
},
"branch-alias": {
"dev-master": "2.0-dev",
"dev-feature/2-0": "2.0-dev"
}
},
@@ -4950,9 +4959,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
"source": "https://github.com/webmozarts/assert/tree/2.3.0"
"source": "https://github.com/webmozarts/assert/tree/2.4.0"
},
"time": "2026-04-11T10:33:05+00:00"
"time": "2026-05-20T13:07:01+00:00"
}
],
"aliases": [],

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