Compare commits

..

154 Commits

Author SHA1 Message Date
Pablo Zmdl
624601b1d4 Use WORKDIR instead of cd
To fulfill DL3003

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-24 20:17:06 +01:00
Pablo Zmdl
a9c3daedb1 Fix wrong spelling
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-24 20:15:06 +01:00
Pablo Zmdl
1039363de6 Allow arbitrary characters in passwords
This converts some shell scripted commands to small golang tools
("aio-container-tools") in order to ensure proper string handling.

In effect database passwords now can contain all characters, even emojis
and quotes.

AI-assistant: Copilot v1.0.7 (Claude Sonnet 4.6)

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-24 20:11:34 +01:00
Simon L.
c777cbaf45 Merge pull request #7809 from nextcloud/dependabot/github_actions/dot-github/workflows/astral-sh/setup-uv-7.6.0
build(deps): bump astral-sh/setup-uv from 7.3.1 to 7.6.0 in /.github/workflows
2026-03-24 15:39:35 +01:00
dependabot[bot]
1739ab0a7b build(deps): bump astral-sh/setup-uv in /.github/workflows
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 7.3.1 to 7.6.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](5a095e7a20...37802adc94)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 12:06:03 +00:00
Simon L.
7c8cabdb2d Merge pull request #7802 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.9.4.1
build(deps): bump collabora/code from 25.04.9.3.1 to 25.04.9.4.1 in /Containers/collabora
2026-03-23 08:43:13 +01:00
dependabot[bot]
7049448541 build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.9.3.1 to 25.04.9.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 04:08:55 +00:00
Simon L.
35dd0a2c00 Merge pull request #7762 from nextcloud/alan/fix-wopi
fix collabora not working anymore
2026-03-20 16:06:04 +01:00
Simon L.
fbe60b852c Merge pull request #7763 from nextcloud/alan/fix-bypass
aio-interface: Fix bypass_container_update when not detected as available
2026-03-20 16:05:44 +01:00
Alan Savage
5782a01b7f Fix bypass_container_update when not detected as available
isAnyUpdateAvailable is not necessarily synced with the PullImage
logic from DockerActionManager. This ensures no images are pulled
regardless of detection.

There's also a minor code improvement to avoid unnecessary interpolation.

Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2026-03-20 15:42:54 +01:00
Alan Savage
46b325f2bd Workaround #7757 with nextcloud-aio-apache FQDN
CollaboraOnline/online/pull/13869 prevents http://nextcloud-aio-apache:23973 from
being correctly recognized as a valid URI and thus breaks matching as an
authorized WOPI host.

This uses http://nextcloud-aio-apache.nextcloud-aio:23973 which is correctly
recognized as a valid URI.

Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2026-03-20 15:42:49 +01:00
Copilot
05f9fa0e25 Fix playwright CI tests broken by Apache→Caddy switch (#7795)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-03-20 15:27:54 +01:00
Simon L.
443f3a4bee Merge pull request #6168 from nextcloud/enh/noid/update-qa-tests
QA-tests: update some sections and details
2026-03-20 13:35:00 +01:00
Simon L.
d280786934 QA-tests: update some details
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
2026-03-20 13:34:16 +01:00
Simon L.
253df4ee0c Merge pull request #7789 from nextcloud/automated/noid/psalm-baseline-update
[Automated] Update psalm-baseline.xml
2026-03-20 09:41:01 +01:00
Simon L.
8073f3c562 Merge pull request #7788 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.13
build(deps): bump elasticsearch from 8.19.12 to 8.19.13 in /Containers/fulltextsearch
2026-03-20 09:40:44 +01:00
Simon L.
a3dac35edb Merge pull request #7787 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.3.6-alpine
build(deps): bump haproxy from 3.3.5-alpine to 3.3.6-alpine in /Containers/docker-socket-proxy
2026-03-20 09:40:26 +01:00
nextcloud-command
b222639bbd Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2026-03-20 04:40:46 +00:00
dependabot[bot]
a5d4f2dd88 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.12 to 8.19.13.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 04:06:40 +00:00
dependabot[bot]
51c7b270b4 build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.3.5-alpine to 3.3.6-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 04:06:36 +00:00
Simon L.
754a317fea Merge pull request #7783 from nextcloud/revert-7769-enh/7765/refactor-network-creation
Revert "mastercontainer: create the nextcloud-aio network during start.sh and attach mastercontainer to it"
2026-03-19 14:24:30 +01:00
Simon L.
7f35ee5fbb Revert "mastercontainer: create the nextcloud-aio network during start.sh and attach mastercontainer to it" 2026-03-19 14:22:13 +01:00
Simon L.
b7b6cc8a16 Merge pull request #7781 from nextcloud/dependabot/composer/php/vimeo/psalm-6.16.1
build(deps-dev): bump vimeo/psalm from 6.16.0 to 6.16.1 in /php
2026-03-19 13:52:28 +01:00
Simon L.
7dc489168a psalm: revert changes
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-19 13:51:12 +01:00
dependabot[bot]
d71683ff38 build(deps-dev): bump vimeo/psalm from 6.16.0 to 6.16.1 in /php
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 6.16.0 to 6.16.1.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/6.16.0...6.16.1)

---
updated-dependencies:
- dependency-name: vimeo/psalm
  dependency-version: 6.16.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 12:03:55 +00:00
Simon L.
d4743d9800 Merge pull request #7769 from nextcloud/enh/7765/refactor-network-creation
mastercontainer: create the nextcloud-aio network during start.sh and attach mastercontainer to it
2026-03-19 12:54:43 +01:00
Simon L.
f1b635c196 Merge pull request #7777 from nextcloud/enh/noid/fix-health-check
mastercontainer: fix health-check
2026-03-19 12:54:13 +01:00
Simon L.
ecd85281cc Merge pull request #7779 from nextcloud/enh/7778/remote-host-login-endpoints
mastercontainer: use remote-host caddy plugin only for login endpoints
2026-03-19 12:53:28 +01:00
Simon L.
558e8735b5 mastercontainer: create the nextcloud-aio network during start.sh and attach mastercontainer to it
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-19 12:49:33 +01:00
Simon L.
e0ff3acb3d mastercontainer: use remote-host caddy plugin only for login endpoints
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-19 12:21:36 +01:00
Simon L.
4963558691 mastercontainer: fix health-check
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-19 11:39:14 +01:00
Simon L.
90d5d6bcf1 Merge pull request #7756 from nextcloud/aio-dependency-update
PHP dependency updates
2026-03-19 11:28:15 +01:00
Simon L.
b19c6dfddb Merge pull request #7731 from nextcloud/enh/noid/move-appdata-dir
readme: add section how to move the appdata folder from the datadir to an ssd to improve the performance
2026-03-19 11:27:04 +01:00
szaimen
904921c815 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-19 09:14:59 +00:00
Simon L.
7d63b13a40 Merge pull request #7775 from nextcloud/automated/noid/psalm-baseline-update
[Automated] Update psalm-baseline.xml
2026-03-19 10:13:03 +01:00
nextcloud-command
83102e46b2 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2026-03-19 04:46:16 +00:00
Simon L.
9e49f81c43 Merge pull request #7772 from nextcloud/enh/noid/suppress-psalm
ignore psalm error
2026-03-18 20:02:13 +01:00
Pi-Farm
25a63abbc8 Merge pull request #7472 from pi-farm/cc_glances
New Community-Container: Glances
2026-03-18 20:01:24 +01:00
Simon L.
f1eeea9337 ignore psalm error
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-18 19:58:53 +01:00
Simon L.
156e55d0ad Merge pull request #7755 from nextcloud/dependabot/composer/php/vimeo/psalm-6.16.0
build(deps-dev): bump vimeo/psalm from 6.15.1 to 6.16.0 in /php
2026-03-18 18:25:08 +01:00
dependabot[bot]
c5501c885d build(deps-dev): bump vimeo/psalm from 6.15.1 to 6.16.0 in /php
Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 6.15.1 to 6.16.0.
- [Release notes](https://github.com/vimeo/psalm/releases)
- [Commits](https://github.com/vimeo/psalm/compare/6.15.1...6.16.0)

---
updated-dependencies:
- dependency-name: vimeo/psalm
  dependency-version: 6.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-18 18:10:41 +01:00
Simon L.
de7b5cd8e4 Merge pull request #7767 from nextcloud/watchtower-container-update
watchtower container update
2026-03-18 18:03:56 +01:00
Simon L.
d6981be067 Merge pull request #7768 from nextcloud/fix-streaming-responses-in-caddy
aio-interface: fix streaming responses in Caddy
2026-03-18 18:00:38 +01:00
Simon L.
0755000456 fix typo
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-18 17:56:37 +01:00
Pablo Zmdl
b169790488 Fix streaming responses in Caddy
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-18 17:53:54 +01:00
Simon L.
9a6b74dd16 Merge pull request #7771 from nextcloud/enh/noid/fix-psalm-2
second attempt to fix psalm
2026-03-18 17:53:42 +01:00
Simon L.
b28572e67f second attempt to fix psalm
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-18 17:50:34 +01:00
Simon L.
8b2a4c057a Merge pull request #7770 from nextcloud/enh/7766/fix-psalm
try to fix psalm
2026-03-18 17:42:45 +01:00
Simon L.
669ea45749 fix psalm
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-18 17:42:05 +01:00
szaimen
1e76d39742 watchtower-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-18 12:23:46 +00:00
Simon L.
c2e7990d33 increase to 12.9.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-17 13:10:37 +01:00
Simon L.
1821e695aa Merge pull request #7753 from Fs00/collabora-flags
Tweak Collabora params to disable background update checks and notifications
2026-03-17 12:08:16 +01:00
Simon L.
d761f22fa1 address review
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-17 11:53:35 +01:00
Simon L.
3738890c05 Merge pull request #7754 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.9.3.1
build(deps): bump collabora/code from 25.04.9.2.1 to 25.04.9.3.1 in /Containers/collabora
2026-03-17 09:22:25 +01:00
dependabot[bot]
726e639f0b build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.9.2.1 to 25.04.9.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 04:06:30 +00:00
Francesco Saltori
8bac8f029f Remove unused MKNOD capability from Collabora container
Signed-off-by: Francesco Saltori <francescosaltori@gmail.com>
2026-03-16 22:01:14 +01:00
Francesco Saltori
828b7784f7 Disable Collabora update checks and notifications
Signed-off-by: Francesco Saltori <francescosaltori@gmail.com>
2026-03-16 22:00:01 +01:00
Simon L.
0cb0d86471 Merge pull request #7705 from nextcloud/enh/noid/show-stop-and-starting-state
DockerController: refactor `StartBackupContainerBackup` to show the stopping and starting state
2026-03-16 18:03:25 +01:00
Simon L.
1b69fb88ae readme: add section how to move the appdata folder from the datadir to an ssd to improve the performance
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-16 14:04:03 +01:00
Simon L.
6fd537cd5d Merge pull request #7749 from nextcloud/aio-dependency-update
PHP dependency updates
2026-03-16 13:59:22 +01:00
szaimen
11dbc4978d php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-16 12:12:24 +00:00
Simon L.
43de29e071 Merge pull request #7743 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.5.4-fpm-alpine3.23
build(deps): bump php from 8.5.3-fpm-alpine3.23 to 8.5.4-fpm-alpine3.23 in /Containers/mastercontainer
2026-03-13 08:30:26 +01:00
Simon L.
eed853e942 Merge pull request #7744 from nextcloud/dependabot/docker/Containers/talk/strukturag/nextcloud-spreed-signaling-2.1.1
build(deps): bump strukturag/nextcloud-spreed-signaling from 2.1.0 to 2.1.1 in /Containers/talk
2026-03-13 08:27:01 +01:00
dependabot[bot]
bdb8e171f7 build(deps): bump strukturag/nextcloud-spreed-signaling
Bumps strukturag/nextcloud-spreed-signaling from 2.1.0 to 2.1.1.

---
updated-dependencies:
- dependency-name: strukturag/nextcloud-spreed-signaling
  dependency-version: 2.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 04:08:31 +00:00
dependabot[bot]
68c5dc8d60 build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.5.3-fpm-alpine3.23 to 8.5.4-fpm-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 04:07:53 +00:00
Simon L.
dfe7eb7ec1 Merge pull request #7721 from nextcloud/enh/7664/backup-restore
DockerController: refactor `StartBackupContainerRestore` to show the stopping and starting state
2026-03-12 18:35:47 +01:00
Simon L.
2016789bea Merge pull request #7741 from nextcloud/hide-from-list
Give all containers a display_name, hide from list by dedicated attribute
2026-03-12 18:31:14 +01:00
Simon L.
b0969d9644 Merge pull request #7723 from nextcloud/enh/7664/backup-list
DockerController: refactor `StartBackupContainerList` to show the starting state
2026-03-12 18:24:09 +01:00
Pablo Zmdl
6e8c8dab19 Reorder arguments
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-12 17:34:51 +01:00
Simon L.
1e23c1a6dd apply suggestions by @pabzm
Co-authored-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-12 16:20:17 +01:00
Simon L.
c4f4ff22c9 Merge pull request #7724 from nextcloud/enh/7664/backup-check-repair
DockerController: refactor `StartBackupContainerCheckRepair` show the starting state
2026-03-12 16:13:36 +01:00
Simon L.
a7703283dc Merge pull request #7722 from nextcloud/enh/7664/backup-test
DockerController: refactor `StartBackupContainerTest` to show the stopping and starting state
2026-03-12 16:01:09 +01:00
Pablo Zmdl
9ce33d1d1d Fix JSON syntax error
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-12 15:55:56 +01:00
Pablo Zmdl
d86eee5847 Give all containers a display_name, hide from list by dedicated attribute
We want a display-name for all containers in the overlay-log, but still want
to exclude some containers from the list on top of the web UI.

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-12 15:44:19 +01:00
Simon L.
eda48383b4 update zizmor config
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-12 15:30:10 +01:00
Simon L.
7302b48fcf Merge pull request #7716 from nextcloud/enh/7709/fix-css-styling
aio-interface: fix progress box and log view on mobile
2026-03-12 12:46:43 +01:00
Simon L.
26c0d6204b Merge pull request #7738 from nextcloud/dependabot/composer/php/guzzlehttp/psr7-2.9.0
build(deps): bump guzzlehttp/psr7 from 2.8.1 to 2.9.0 in /php
2026-03-11 16:27:33 +01:00
dependabot[bot]
4ee7f573e6 build(deps): bump guzzlehttp/psr7 from 2.8.1 to 2.9.0 in /php
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.8.1 to 2.9.0.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/2.9/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.8.1...2.9.0)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-version: 2.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 12:03:53 +00:00
Simon L.
04e424b3a7 Merge pull request #7737 from nextcloud/upgrade-exclude-lost+found
Exclude /lost+found from rsync
2026-03-11 12:37:31 +01:00
Pablo Zmdl
ba3ee91c35 Exclude /lost+found from rsync
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-11 12:27:05 +01:00
Simon L.
c24f9c1642 Merge pull request #7735 from nextcloud/dependabot/github_actions/dot-github/workflows/actions/setup-node-6.3.0
build(deps): bump actions/setup-node from 6.2.0 to 6.3.0 in /.github/workflows
2026-03-10 13:31:22 +01:00
Simon L.
50b309c5a2 Merge pull request #7736 from nextcloud/aio-dependency-update
PHP dependency updates
2026-03-10 13:30:55 +01:00
szaimen
1419f29d2b php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-10 12:07:18 +00:00
dependabot[bot]
9a37170f08 build(deps): bump actions/setup-node in /.github/workflows
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](6044e13b5d...53b83947a5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 12:07:11 +00:00
jameskimmel
1e4e040dad Merge pull request #7733 from jameskimmel/patch-4
Signed-off-by: jameskimmel <17176225+jameskimmel@users.noreply.github.com>
2026-03-10 12:23:03 +01:00
Simon L.
ad534c83cc Merge pull request #7730 from nextcloud/enh/noid/rename-collabora-to-office
languagetool: rename mentioning of `Collabora` to `Nextcloud Office`
2026-03-10 11:06:13 +01:00
Simon L.
26aced2126 languagetool: rename mentioning of Collabora to Nextcloud Office
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-10 11:04:46 +01:00
Simon L.
2ce73190e2 Merge pull request #7718 from nextcloud/dependabot/github_actions/dot-github/workflows/astral-sh/setup-uv-7.3.1
build(deps): bump astral-sh/setup-uv from 7.3.0 to 7.3.1 in /.github/workflows
2026-03-10 10:42:30 +01:00
dependabot[bot]
585a8ef13b build(deps): bump astral-sh/setup-uv in /.github/workflows
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 7.3.0 to 7.3.1.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](eac588ad8d...5a095e7a20)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 10:39:23 +01:00
Simon L.
a97877ee6b Merge pull request #7729 from nextcloud/enh/noid/github-token-workflows
add github token to all workflows
2026-03-10 10:36:35 +01:00
Simon L.
203b1a335e add github token to all workflows
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-10 10:35:28 +01:00
Simon L.
109f2493af Merge pull request #7728 from nextcloud/enh/7725/improve-rp-docs
rp-docs: document new header_up requirement for proxying the aio-interface
2026-03-10 10:31:59 +01:00
Simon L.
9ed23f1952 rp-docs: document new header_up requirement for proxying the aio-interface
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-10 10:27:12 +01:00
Simon L.
385eeb1621 Merge pull request #7727 from nextcloud/dependabot/docker/Containers/talk/nats-2.12.5-scratch
build(deps): bump nats from 2.12.4-scratch to 2.12.5-scratch in /Containers/talk
2026-03-10 08:06:31 +01:00
Simon L.
ee4df40708 Merge pull request #7726 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-3.3.5-alpine
build(deps): bump haproxy from 3.3.4-alpine to 3.3.5-alpine in /Containers/docker-socket-proxy
2026-03-10 08:06:11 +01:00
dependabot[bot]
2999fb4413 build(deps): bump nats in /Containers/talk
Bumps nats from 2.12.4-scratch to 2.12.5-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 04:08:20 +00:00
dependabot[bot]
1620f83bf7 build(deps): bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 3.3.4-alpine to 3.3.5-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 04:07:33 +00:00
Simon L.
eccfa8b9d9 Merge pull request #7715 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.11.2-builder-alpine
build(deps): bump caddy from 2.11.1-builder-alpine to 2.11.2-builder-alpine in /Containers/mastercontainer
2026-03-09 18:16:48 +01:00
Simon L.
9b64fff193 Merge pull request #7714 from nextcloud/dependabot/docker/Containers/apache/caddy-2.11.2-alpine
build(deps): bump caddy from 2.11.1-alpine to 2.11.2-alpine in /Containers/apache
2026-03-09 18:16:34 +01:00
Simon L.
349443c240 Merge pull request #7711 from nextcloud/aio-dependency-update
PHP dependency updates
2026-03-09 18:16:19 +01:00
Simon L.
49d743c17c DockerController: refactor StartBackupContainerCheckRepair show the starting state
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-09 18:13:21 +01:00
Simon L.
c45913a6ff DockerController: refactor StartBackupContainerListto show the starting state
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-09 18:07:46 +01:00
Simon L.
7f394f5297 DockerController: refactor StartBackupContainerTest to show the stopping and starting state
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-09 18:03:05 +01:00
Simon L.
e561fad2af DockerController: refactor StartBackupContainerRestore to show the stopping and starting state
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-09 17:55:50 +01:00
Simon L.
eb9cb26ff1 aio-interface: fix progress box and log view on mbile
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-09 12:16:05 +01:00
dependabot[bot]
1022b408a7 build(deps): bump caddy in /Containers/mastercontainer
Bumps caddy from 2.11.1-builder-alpine to 2.11.2-builder-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 04:09:59 +00:00
dependabot[bot]
ee137e497a build(deps): bump caddy in /Containers/apache
Bumps caddy from 2.11.1-alpine to 2.11.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 04:09:36 +00:00
szaimen
71b384be64 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-07 12:03:50 +00:00
Simon L.
7922d38aa6 Merge pull request #7684 from michnovka/talk-trust-custom-ca
feat(talk): trust custom CA certificates via NEXTCLOUD_TRUSTED_CACERTS_DIR
2026-03-06 15:10:32 +01:00
michnovka
dd103fa0f1 Update Containers/talk/start.sh
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: michnovka <16553087+michnovka@users.noreply.github.com>
2026-03-06 14:58:08 +01:00
Tomas
909ef96748 Use mountpoint check and add util-linux-misc dependency
Address review feedback: use `mountpoint -q` instead of find to
detect mounted CA directory, add set -x/+x for debug logging,
broaden glob to accept any file extension, and add util-linux-misc
package to Dockerfile for the mountpoint command.

Signed-off-by: Tomas <16553087+michnovka@users.noreply.github.com>
2026-03-06 14:44:09 +01:00
Simon L.
978a4ce282 Merge pull request #7706 from nextcloud/fix-missing-characters-in-recorded-video
talk-recording: fix missing characters in recorded video
2026-03-06 14:25:16 +01:00
Zoey
b972c5703f mastercontainer: replace apache with a second caddy (#7006)
Signed-off-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-03-06 14:23:52 +01:00
Daniel Calviño Sánchez
8c3b5b2e21 fix: Fix missing characters in recorded video
The recording server uses a browser to join the call and records the
browser UI, which renders text like the display name of users or the
name of the Nextcloud instance. By default Firefox provides its own font
but, even if broad, it still has limited character coverage, so the
unsupported characters are shown as ".notdef" glyph (rectangular
boxes).

Fortunately Firefox also uses more complete fonts automatically when
they are available, so now the noto font, which seems to be the most
complete font available in Alpine Linux, is installed and used instead.

Note that "font-noto-cjk" provides regular and bold fonts, while
"font-noto-cjk-extra" provides all weights.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2026-03-06 11:13:37 +01:00
Simon L.
6e87758ba9 DockerController: refactor StartBackupContainerBackup to show the stopping and starting state
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-06 10:42:08 +01:00
Simon L.
4b1c7286bc Merge pull request #7675 from nextcloud/enh/7664/backup-check
DockerController: refactor `StartBackupContainerCheck` to show the starting state
2026-03-06 10:38:39 +01:00
Simon L.
510032d7a1 Merge pull request #7676 from nextcloud/enh/7675/refactor-stop-of-containers
DockerController: refactor stopping of containers to show the current process
2026-03-06 10:31:42 +01:00
Simon L.
b248710803 DockerController: refactor StartBackupContainerCheck to show the starting state
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-06 10:16:50 +01:00
Simon L.
9040ccdab8 DockerController: refactor stopping of containers to show the current process
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-06 10:16:08 +01:00
Simon L.
c7041c4f6f Merge pull request #7674 from nextcloud/enh/7664/start-watchtower
Dockercontroller: refactor streaming responses into dedicated functions and use them  in StartWatchtowerContainer method
2026-03-06 10:13:34 +01:00
Simon L.
23f5ae2a10 Dockercontroller: refactor streaming responses into dedicated functions and use them in StartWatchtowerContainer method
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-06 10:02:47 +01:00
Simon L.
ea326ba723 Merge pull request #7652 from nextcloud/enh/noid/redis-tls-support
redis.config.php: allow to enable tls
2026-03-06 10:00:32 +01:00
Simon L.
b4db823d9b Merge pull request #7701 from nextcloud/dependabot/docker/Containers/watchtower/golang-1.26.1-alpine3.23
build(deps): bump golang from 1.26.0-alpine3.23 to 1.26.1-alpine3.23 in /Containers/watchtower
2026-03-06 09:58:44 +01:00
Simon L.
61e6e233f4 Merge pull request #7700 from nextcloud/dependabot/docker/Containers/onlyoffice/onlyoffice/documentserver-9.3.1.2
build(deps): bump onlyoffice/documentserver from 9.3.0.1 to 9.3.1.2 in /Containers/onlyoffice
2026-03-06 09:58:33 +01:00
Simon L.
1abb0e2b94 Merge pull request #7699 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-29.3.0-cli
build(deps): bump docker from 29.2.1-cli to 29.3.0-cli in /Containers/mastercontainer
2026-03-06 09:58:21 +01:00
Simon L.
31999ade2e Merge pull request #7698 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.26.1-alpine3.23
build(deps): bump golang from 1.26.0-alpine3.23 to 1.26.1-alpine3.23 in /Containers/imaginary
2026-03-06 09:58:05 +01:00
Simon L.
744efad0f4 Merge pull request #7688 from nextcloud/watchtower-container-update
watchtower container update
2026-03-06 09:57:53 +01:00
Simon L.
11553a3c0f Merge pull request #7672 from nextcloud/dependabot/docker/Containers/whiteboard/nextcloud-releases/whiteboard-v1.5.7
build(deps): bump nextcloud-releases/whiteboard from v1.5.6 to v1.5.7 in /Containers/whiteboard
2026-03-06 09:57:42 +01:00
Simon L.
0cdbf3aa96 Merge pull request #7671 from nextcloud/dependabot/docker/Containers/postgresql/postgres-17.9-alpine
build(deps): bump postgres from 17.8-alpine to 17.9-alpine in /Containers/postgresql
2026-03-06 09:57:32 +01:00
Simon L.
2d4903492b Merge pull request #7670 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.12
build(deps): bump elasticsearch from 8.19.11 to 8.19.12 in /Containers/fulltextsearch
2026-03-06 09:57:21 +01:00
Simon L.
8cd82a6fb8 Merge pull request #7669 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-25.04.9.2.1
build(deps): bump collabora/code from 25.04.8.3.1 to 25.04.9.2.1 in /Containers/collabora
2026-03-06 09:57:10 +01:00
Simon L.
c5e20e3024 Merge pull request #7663 from nextcloud/aio-dependency-update
PHP dependency updates
2026-03-06 09:56:58 +01:00
Simon L.
b82e34ddef Merge pull request #7704 from Maximilian-Maag/fix-yml
fix yml port mappings
2026-03-06 09:51:14 +01:00
Maximilian Jakob Maag
e910c0c21a fix yml port mappings 2026-03-06 09:43:52 +01:00
Simon L.
d5b334177c Merge pull request #7703 from nextcloud/aio-helm-update
Helm Chart updates
2026-03-06 09:18:17 +01:00
szaimen
ea52b11c7b Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-06 08:15:38 +00:00
Simon L.
825787e228 Merge pull request #7633 from nextcloud/aio-yaml-update
Yaml updates
2026-03-06 09:14:27 +01:00
dependabot[bot]
c827221188 build(deps): bump golang in /Containers/watchtower
Bumps golang from 1.26.0-alpine3.23 to 1.26.1-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 04:08:33 +00:00
dependabot[bot]
78cfc91d1e build(deps): bump onlyoffice/documentserver in /Containers/onlyoffice
Bumps onlyoffice/documentserver from 9.3.0.1 to 9.3.1.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 04:08:14 +00:00
dependabot[bot]
0048e46272 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.2.1-cli to 29.3.0-cli.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 04:07:42 +00:00
dependabot[bot]
fc6626918d build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.26.0-alpine3.23 to 1.26.1-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 04:07:40 +00:00
szaimen
50b89ba7d8 watchtower-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-05 12:18:25 +00:00
Simon L.
7224f659b3 Merge pull request #7695 from nextcloud/dependabot/github_actions/dot-github/workflows/actions/upload-artifact-7.0.0
build(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0 in /.github/workflows
2026-03-05 13:15:12 +01:00
dependabot[bot]
d4e753ef84 build(deps): bump actions/upload-artifact in /.github/workflows
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](b7c566a772...bbbca2ddaa)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 12:07:57 +00:00
szaimen
31c30cce9d Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-03 12:07:24 +00:00
szaimen
2ef20b2937 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-03 12:06:58 +00:00
Simon L.
45bebab55d Merge pull request #7683 from turtleinarock/patch-1
readme: fix typo
2026-03-03 11:01:39 +01:00
michnovka
7cd2ac1bbd feat(talk): trust custom CA certificates via NEXTCLOUD_TRUSTED_CACERTS_DIR
When NEXTCLOUD_TRUSTED_CACERTS_DIR is set on the mastercontainer,
the custom CA certificates are now also mounted into the Talk container.

Since the Talk container runs with a read-only root filesystem,
update-ca-certificates cannot be used. Instead, the startup script
copies the system CA bundle to /tmp (tmpfs), appends any custom
certificates from /usr/local/share/ca-certificates/, and sets
SSL_CERT_FILE to point Go's TLS stack at the extended bundle.

This allows the signaling server to verify TLS connections to
Nextcloud instances that use private/internal CA certificates,
without requiring skipverify=true.

Signed-off-by: Tomas <16553087+michnovka@users.noreply.github.com>
2026-03-03 00:11:27 +01:00
turtleinarock
00896009cd Update readme.md
Erroneous backtick (`) at the end of the Unraid script command.

Signed-off-by: turtleinarock <s.senn14@gmail.com>
2026-03-02 13:50:12 -06:00
dependabot[bot]
a58edd9a64 build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.5.6 to v1.5.7.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 04:08:10 +00:00
dependabot[bot]
f5810bd601 build(deps): bump postgres in /Containers/postgresql
Bumps postgres from 17.8-alpine to 17.9-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 04:07:46 +00:00
dependabot[bot]
6734ff4c7f build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.11 to 8.19.12.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 04:07:04 +00:00
dependabot[bot]
96de08456d build(deps): bump collabora/code in /Containers/collabora
Bumps collabora/code from 25.04.8.3.1 to 25.04.9.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 04:06:59 +00:00
Simon L.
d11650f798 redis.config.php: allow to enable tls
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-02-25 10:41:03 +01:00
18 changed files with 313 additions and 81 deletions

View File

@@ -36,7 +36,7 @@ jobs:
line-length: warning
- name: Install the latest version of uv
uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
- name: Check GitHub actions
run: uvx zizmor --min-severity medium .github/workflows/*.yml

View File

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

View File

@@ -1,4 +1,11 @@
# syntax=docker/dockerfile:latest
FROM docker.io/library/golang:alpine AS aio-container-tools-builder
# hadolint ignore=DL3022
COPY --from=aio-container-tools . /tmp/aio-container-tools/
WORKDIR /tmp/aio-container-tools
RUN go build -o /usr/local/bin/aio-pg-healthcheck ./cmd/aio-pg-healthcheck
FROM php:8.3.30-fpm-alpine3.23
ENV PHP_MEMORY_LIMIT=512M
@@ -17,6 +24,7 @@ COPY --chmod=775 Containers/nextcloud/*.sh /
COPY --chmod=774 Containers/nextcloud/upgrade.exclude /upgrade.exclude
COPY Containers/nextcloud/config/*.php /
COPY Containers/nextcloud/supervisord.conf /supervisord.conf
COPY --from=aio-container-tools-builder /usr/local/bin/aio-pg-healthcheck /usr/local/bin/aio-pg-healthcheck
# AIO cloning start # Do not remove or change this line!
COPY app /usr/src/nextcloud/apps/nextcloud-aio
@@ -226,7 +234,6 @@ RUN set -ex; \
openssl \
gnupg \
git \
postgresql-client \
tzdata \
sudo \
grep \

View File

@@ -25,7 +25,7 @@ fi
# Fix false database connection on old instances
if [ -f "/var/www/html/config/config.php" ]; then
sleep 2
while ! sudo -E -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB" -c "select now()"; do
while ! sudo -E -u www-data /usr/local/bin/aio-pg-healthcheck; do
echo "Waiting for the database to start..."
sleep 5
done

View File

@@ -1,8 +1,18 @@
# syntax=docker/dockerfile:latest
FROM docker.io/library/golang:alpine AS aio-container-tools-builder
# hadolint ignore=DL3022
COPY --from=aio-container-tools . /tmp/aio-container-tools/
WORKDIR /tmp/aio-container-tools
RUN go build -o /usr/local/bin/aio-pg-init ./cmd/aio-pg-init \
&& go build -o /usr/local/bin/aio-pg-healthcheck ./cmd/aio-pg-healthcheck
# From https://github.com/docker-library/postgres/blob/master/17/alpine3.23/Dockerfile
FROM postgres:17.9-alpine
COPY --chmod=775 start.sh /start.sh
COPY --from=aio-container-tools-builder /usr/local/bin/aio-pg-init /usr/local/bin/aio-pg-init
COPY --from=aio-container-tools-builder /usr/local/bin/aio-pg-healthcheck /usr/local/bin/aio-pg-healthcheck
COPY --chmod=775 healthcheck.sh /healthcheck.sh
COPY --chmod=775 init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh

View File

@@ -2,6 +2,4 @@
test -f "/mnt/data/backup-is-running" && exit 0
psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1:11000/$POSTGRES_DB" -c "select now()" && exit 0
psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1:5432/$POSTGRES_DB" -c "select now()" || exit 1
POSTGRES_PORT=11000 /usr/local/bin/aio-pg-healthcheck debug || exec /usr/local/bin/aio-pg-healthcheck

View File

@@ -3,12 +3,7 @@ set -ex
touch "$DUMP_DIR/initialization.failed"
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER "oc_$POSTGRES_USER" WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB;
ALTER DATABASE "$POSTGRES_DB" OWNER TO "oc_$POSTGRES_USER";
GRANT ALL PRIVILEGES ON DATABASE "$POSTGRES_DB" TO "oc_$POSTGRES_USER";
GRANT ALL PRIVILEGES ON SCHEMA public TO "oc_$POSTGRES_USER";
EOSQL
POSTGRES_DB_OWNER="oc_$POSTGRES_USER" /usr/local/bin/aio-pg-init
rm "$DUMP_DIR/initialization.failed"

View File

@@ -4,6 +4,7 @@
DATADIR="/var/lib/postgresql/data"
export DUMP_DIR="/mnt/data"
DUMP_FILE="$DUMP_DIR/database-dump.sql"
# TODO: Do we need this? It's not used anywhere visible
export PGPASSWORD="$POSTGRES_PASSWORD"
# Don't start database as long as backup is running
@@ -85,7 +86,7 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO
exec docker-entrypoint.sh postgres &
# Wait for creation
while ! psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1:11000/$POSTGRES_DB" -c "select now()"; do
while ! env POSTGRES_PORT=11000 POSTGRES_USER="oc_$POSTGRES_USER" /usr/local/bin/aio-pg-healthcheck; do
echo "Waiting for the database to start."
sleep 5
done
@@ -107,12 +108,7 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO
exit 1
elif [ "$DB_OWNER" != "oc_$POSTGRES_USER" ]; then
DIFFERENT_DB_OWNER=1
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER "$DB_OWNER" WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB;
ALTER DATABASE "$POSTGRES_DB" OWNER TO "$DB_OWNER";
GRANT ALL PRIVILEGES ON DATABASE "$POSTGRES_DB" TO "$DB_OWNER";
GRANT ALL PRIVILEGES ON SCHEMA public TO "$DB_OWNER";
EOSQL
POSTGRES_DB_OWNER="$DB_OWNER" /usr/local/bin/aio-pg-init
fi
# Restore database

View File

@@ -0,0 +1,42 @@
# aio-container-tools
Standalone tools for Nextcloud AIO containers, for tasks that shouldn't be executed in a shell environment
(e.g. due to string handling issues).
Golang was chosen because it doesn't require additional runtimes in the containers, and has a pretty easy
syntax that is comprehensible even for people without much experience with the language.
The tools should be built in the container image build process, so they are built for the correct target
platform in multi-arch builds. See below for an example.
## Build process
To include the binary of `aio-pg-healhcheck` into your container image, include such a snippet into your Containerfile:
```dockerfile
FROM docker.io/library/golang:alpine AS golang-builder
# hadolint ignore=DL3022
COPY --from=aio-container-tools . /tmp/aio-container-tools/
RUN cd /tmp/aio-container-tools \
&& go build -o /usr/local/bin/aio-pg-healthcheck ./cmd/aio-pg-healthcheck
FROM your-base-image
COPY --from=golang-builder /usr/local/bin/aio-pg-healthcheck /usr/local/bin/
```
To build it you now have to pass the aio-container-tools directory as additional, named build-context like this:
```bash
docker build \
--build-context aio-container-tools=/path/to/all-in-one/aio-container-tools \
.
```
#### Remote git variant (without local clone of this repo)
```bash
docker build \
--build-context aio-container-tools="https://github.com/nextcloud-releases/all-in-one.git#main:aio-container-tools" \
.
```

View File

@@ -0,0 +1,92 @@
package main
import (
"context"
"flag"
"fmt"
"os"
"strconv"
"github.com/jackc/pgx/v5"
"github.com/nextcloud/aio-container-tools/internal/util"
)
// tryConnect opens a TCP connection to the given database host:port and runs SELECT 1.
// Returns nil on success, an error otherwise.
func tryConnect(ctx context.Context, host string, port uint16, user, password, database string) error {
util.Debugf("attempting connection: host=%s port=%d user=%s database=%s", host, port, user, database)
cfg, err := pgx.ParseConfig("")
if err != nil {
return err
}
cfg.Host = host
cfg.Port = port
cfg.User = user
cfg.Password = password
cfg.Database = database
conn, err := pgx.ConnectConfig(ctx, cfg)
if err != nil {
util.Debugf("connection failed: %v", err)
return err
}
defer conn.Close(ctx)
util.Debugf("connection established, running SELECT 1")
var result string
if err := conn.QueryRow(ctx, "SELECT 1").Scan(&result); err != nil {
util.Debugf("SELECT 1 failed: %v", err)
return err
}
util.Debugf("SELECT 1 returned %q", result)
return nil
}
// envOrDefault returns the value of the named environment variable,
// or the provided default if the variable is unset or empty.
func envOrDefault(key, defaultVal string) string {
if v := os.Getenv(key); v != "" {
util.Debugf("env %s = %q", key, v)
return v
}
util.Debugf("env %s not set, using default %q", key, defaultVal)
return defaultVal
}
func main() {
debug := flag.Bool("debug", false, "enable debug output")
flag.Parse()
util.SetDebug(*debug)
util.Debugf("reading required environment variables")
pgUser := util.RequireEnv("POSTGRES_USER")
pgPassword := util.RequireEnv("POSTGRES_PASSWORD")
pgDB := util.RequireEnv("POSTGRES_DB")
ctx := context.Background()
pgHost := envOrDefault("POSTGRES_HOST", "127.0.0.1")
var pgPort uint16 = 5432
if portStr := os.Getenv("POSTGRES_PORT"); portStr != "" {
util.Debugf("env POSTGRES_PORT = %q", portStr)
p, err := strconv.ParseUint(portStr, 10, 16)
if err != nil {
fmt.Fprintf(os.Stderr, "invalid POSTGRES_PORT %q: %v\n", portStr, err)
os.Exit(1)
}
pgPort = uint16(p)
} else {
util.Debugf("env POSTGRES_PORT not set, using default port %d", pgPort)
}
util.Debugf("connecting to: host=%s port=%d user=%s", pgHost, pgPort, pgUser)
if err := tryConnect(ctx, pgHost, pgPort, pgUser, pgPassword, pgDB); err == nil {
util.Debugf("connection succeeded, exiting 0")
os.Exit(0)
}
util.Debugf("connection failed, exiting 1")
os.Exit(1)
}

View File

@@ -0,0 +1,78 @@
package main
import (
"context"
"flag"
"fmt"
"strings"
"github.com/jackc/pgx/v5"
"github.com/nextcloud/aio-container-tools/internal/util"
)
// quoteLiteral safely quotes a string as a PostgreSQL string literal.
// Single quotes are escaped by doubling them. This is safe with
// standard_conforming_strings=on (default since PostgreSQL 9.1).
func quoteLiteral(s string) string {
return "'" + strings.ReplaceAll(s, "'", "''") + "'"
}
// main reimplements init-user-db.sh:
// - Creates $POSTGRES_DB_OWNER (falling back to $POSTGRES_USER) with $POSTGRES_PASSWORD and CREATEDB
// - Transfers ownership of $POSTGRES_DB to that user
// - Grants all privileges on the database and public schema
// - Connects using $POSTGRES_USER in all cases
func main() {
debug := flag.Bool("debug", false, "enable debug output")
flag.Parse()
util.SetDebug(*debug)
util.Debugf("reading required environment variables")
pgUser := util.RequireEnv("POSTGRES_USER")
pgPassword := util.RequireEnv("POSTGRES_PASSWORD")
pgDB := util.RequireEnv("POSTGRES_DB")
pgDBOwner := util.OptionalEnv("POSTGRES_DB_OWNER", pgUser)
util.Debugf("building connection config: host=/var/run/postgresql port=5432 user=%s database=%s", pgUser, pgDB)
cfg, err := pgx.ParseConfig("")
if err != nil {
util.ErrorOut(fmt.Errorf("building connection config: %w", err))
}
cfg.Host = "/var/run/postgresql"
cfg.Port = 5432
cfg.User = pgUser
cfg.Password = pgPassword
cfg.Database = pgDB
ctx := context.Background()
util.Debugf("connecting to postgres via unix socket")
conn, err := pgx.ConnectConfig(ctx, cfg)
if err != nil {
util.ErrorOut(fmt.Errorf("connecting to postgres: %w", err))
}
defer conn.Close(ctx)
util.Debugf("connected successfully")
dbOwner := pgDBOwner
util.Debugf("dbOwner = %q (from POSTGRES_DB_OWNER=%q, POSTGRES_USER=%q)", dbOwner, pgDBOwner, pgUser)
// pgx.Identifier.Sanitize() double-quotes and escapes the identifier safely.
dbOwnerIdent := pgx.Identifier{dbOwner}.Sanitize()
dbIdent := pgx.Identifier{pgDB}.Sanitize()
util.Debugf("quoted dbOwnerIdent = %s, dbIdent = %s", dbOwnerIdent, dbIdent)
statements := []string{
fmt.Sprintf("CREATE USER %s WITH PASSWORD %s CREATEDB", dbOwnerIdent, quoteLiteral(pgPassword)),
fmt.Sprintf("ALTER DATABASE %s OWNER TO %s", dbIdent, dbOwnerIdent),
fmt.Sprintf("GRANT ALL PRIVILEGES ON DATABASE %s TO %s", dbIdent, dbOwnerIdent),
fmt.Sprintf("GRANT ALL PRIVILEGES ON SCHEMA public TO %s", dbOwnerIdent),
}
for i, stmt := range statements {
util.Debugf("executing statement %d/%d: %s", i+1, len(statements), stmt)
if _, err := conn.Exec(ctx, stmt); err != nil {
util.ErrorOut(fmt.Errorf("executing statement: %w", err))
}
util.Debugf("statement %d/%d succeeded", i+1, len(statements))
}
util.Debugf("all statements executed successfully")
}

View File

@@ -0,0 +1,10 @@
module github.com/nextcloud/aio-container-tools
go 1.25.1
require (
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/pgx/v5 v5.8.0 // indirect
golang.org/x/text v0.29.0 // indirect
)

View File

@@ -0,0 +1,15 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo=
github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@@ -0,0 +1,49 @@
package util
import (
"fmt"
"log"
"os"
)
var debugEnabled bool
// SetDebug enables or disables debug output.
func SetDebug(enabled bool) {
debugEnabled = enabled
}
// Debugf prints a formatted debug message to stdout when debug mode is enabled.
func Debugf(format string, args ...any) {
if debugEnabled {
fmt.Printf("[debug] "+format+"\n", args...)
}
}
// RequireEnv returns the value of the named environment variable.
// It writes an error to stderr and exits with code 1 if the variable is unset or empty.
func RequireEnv(key string) string {
v := os.Getenv(key)
if v == "" {
fmt.Fprintf(os.Stderr, "required environment variable %q is not set\n", key)
os.Exit(1)
}
Debugf("env %s = %q", key, v)
return v
}
// OptionalEnv returns the value of the named environment variable, or fallback if it is unset or empty.
func OptionalEnv(key, fallback string) string {
v := os.Getenv(key)
if v == "" {
Debugf("env %s unset, using fallback %q", key, fallback)
return fallback
}
Debugf("env %s = %q", key, v)
return v
}
// ErrorOut logs the error with a standard prefix and exits with code 1.
func ErrorOut(err error) {
log.Fatalf("error: %v", err)
}

View File

@@ -66,7 +66,6 @@ $app->post('/api/docker/backup-check-repair', AIO\Controller\DockerController::c
$app->post('/api/docker/backup-test', AIO\Controller\DockerController::class . ':StartBackupContainerTest');
$app->post('/api/docker/restore', AIO\Controller\DockerController::class . ':StartBackupContainerRestore');
$app->post('/api/docker/stop', AIO\Controller\DockerController::class . ':StopContainer');
$app->post('/api/docker/prune', AIO\Controller\DockerController::class . ':SystemPrune');
$app->get('/api/docker/logs', AIO\Controller\DockerController::class . ':GetLogs');
$app->post('/api/auth/login', AIO\Controller\LoginController::class . ':TryLogin');
$app->get('/api/auth/getlogin', AIO\Controller\LoginController::class . ':GetTryLogin');

View File

@@ -328,19 +328,6 @@ readonly class DockerController {
return $nonbufResp;
}
public function SystemPrune(Request $request, Response $response, array $args) : Response {
$nonbufResp = $this->startStreamingResponse($response);
$addToStreamingResponseBody = function (string $message) use ($nonbufResp) : void {
$nonbufResp->getBody()->write("<div>{$message}</div>");
};
$this->dockerActionManager->SystemPrune($addToStreamingResponseBody);
$this->finalizeStreamingResponse($nonbufResp);
return $nonbufResp;
}
public function stopTopContainer() : void {
$id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStop($id);

View File

@@ -983,45 +983,4 @@ readonly class DockerActionManager {
return $this->dockerHubManager->GetLatestDigestOfTag($imageName, $tag);
}
}
public function SystemPrune(?\Closure $addToStreamingResponseBody = null): void {
$steps = [
'containers/prune' => 'Pruning stopped containers...',
'images/prune' => 'Pruning unused images...',
'volumes/prune' => 'Pruning unused volumes...',
'networks/prune' => 'Pruning unused networks...',
'build/prune' => 'Pruning build cache...',
];
foreach ($steps as $endpoint => $label) {
if ($addToStreamingResponseBody !== null) {
$addToStreamingResponseBody($label);
}
// Special-case images prune to include the dangling filter as requested
if ($endpoint === 'images/prune') {
$filters = json_encode(['dangling' => ['false']]);
$url = $this->BuildApiUrl($endpoint . '?filters=' . urlencode($filters));
} else {
$url = $this->BuildApiUrl($endpoint);
}
try {
$resp = $this->guzzleClient->post($url);
$body = (string) $resp->getBody();
if ($addToStreamingResponseBody !== null && $body !== '') {
$addToStreamingResponseBody($body);
}
} catch (RequestException $e) {
error_log(sprintf('Docker prune (%s) failed: %s', $endpoint, $e->getMessage()));
if ($addToStreamingResponseBody !== null) {
$addToStreamingResponseBody(sprintf('Warning: %s failed: %s', $endpoint, $e->getMessage()));
}
// continue with next prune step
}
}
if ($addToStreamingResponseBody !== null) {
$addToStreamingResponseBody('Docker system prune done.');
}
}
}

View File

@@ -322,11 +322,6 @@
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" value="Stop containers" />
</form>
<form method="POST" action="api/docker/prune" target="overlay-log">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" value="Run docker system prune" onclick="return confirm('Run docker system prune? This will remove unused images, containers and volumes. Continue?')" />
</form>
{% endif %}
{% else %}
{% if isBackupOrRestoreRunning == true %}