Compare commits

..

102 Commits

Author SHA1 Message Date
Simon L.
4f929a8141 Merge pull request #7932 from nextcloud/szaimen-patch-3
Readme: Update backup details
2026-04-16 18:46:28 +02:00
Simon L.
0baf2132a9 Update backup details in readme.md
Clarified backup information for Nextcloud AIO instance.

Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-16 18:44:55 +02:00
Simon L.
2e4e144086 Merge pull request #7930 from nextcloud/hsts-header
Improve Hsts headers
2026-04-16 18:20:02 +02:00
Zoey
61024ddf9d set hsts header in the acme.Caddyfile
Signed-off-by: Zoey <zoey@z0ey.de>
2026-04-16 18:02:29 +02:00
Zoey
24bc70fce6 apply hsts header to all nextcloud routes
Signed-off-by: Zoey <zoey@z0ey.de>
2026-04-16 18:01:25 +02:00
Simon L.
72d6326508 Merge pull request #7929 from nextcloud/origin-agent-cluster-header
aio-interface: also set Origin-Agent-Cluster header
2026-04-16 17:58:39 +02:00
Simon L.
21a140890a Add Caddyfile path to Playwright workflow triggers
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-16 17:52:18 +02:00
Zoey
6f28dfc5e3 also set Origin-Agent-Cluster header
Signed-off-by: Zoey <zoey@z0ey.de>
2026-04-16 17:40:56 +02:00
Zoey
12e129f1f6 aio-interface: improve headers (#7690)
Signed-off-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Pablo Zmdl <pablo@nextcloud.com>
2026-04-16 17:20:50 +02:00
Simon L.
82959585a8 Merge pull request #7926 from nextcloud/enh/7893/stun-and-turn-improvements
nextcloud-entrypoint: rewrite turn and stun logic to always add turn and stun server
2026-04-16 16:20:36 +02:00
Simon L.
5e92b7d743 nextcloud-entrypoint: rewrite turn and stun logic to always add turn and stun server
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-16 16:18:27 +02:00
Simon L.
c9182aea4e Merge pull request #7925 from nextcloud/aio-dependency-update
PHP dependency updates
2026-04-16 14:20:25 +02:00
szaimen
e8dd1733d7 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-16 12:18:59 +00:00
Zoey
3871179a57 aio-interface: set cookie prefix to __Host-Http- (#7912)
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-04-16 11:12:34 +02:00
Simon L.
8722cc83f4 Merge pull request #7910 from nextcloud/enh/noid/add-server-id
nextcloud: add `server.config.php` that adds the serverid by using the hostname as key
2026-04-16 11:07:02 +02:00
Simon L.
1e5eb87582 nextcloud: add server.config.php that adds the serverid by using the hostname as key
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-16 10:51:31 +02:00
Simon L.
489fc3e761 Merge pull request #7916 from nextcloud/dependabot/docker/Containers/clamav/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/clamav
2026-04-16 10:50:29 +02:00
Simon L.
f5b125aba5 Merge pull request #7921 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/watchtower
2026-04-16 10:50:13 +02:00
Simon L.
27bcf3494f Merge pull request #7920 from nextcloud/dependabot/docker/Containers/talk/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/talk
2026-04-16 10:50:04 +02:00
Simon L.
201e2f303d Merge pull request #7919 from nextcloud/dependabot/docker/Containers/notify-push/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/notify-push
2026-04-16 10:50:01 +02:00
Simon L.
4f68cb5fb4 Merge pull request #7918 from nextcloud/dependabot/docker/Containers/imaginary/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/imaginary
2026-04-16 10:49:50 +02:00
Simon L.
c976683a9e Merge pull request #7917 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/domaincheck
2026-04-16 10:49:47 +02:00
Simon L.
4b3292d3df Merge pull request #7915 from nextcloud/dependabot/docker/Containers/borgbackup/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/borgbackup
2026-04-16 10:49:33 +02:00
Simon L.
cde4438612 Merge pull request #7914 from nextcloud/dependabot/docker/Containers/alpine/alpine-3.23.4
build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/alpine
2026-04-16 10:49:21 +02:00
dependabot[bot]
79f8302d82 build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/watchtower
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:18:42 +00:00
dependabot[bot]
37d4c265e3 build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/talk
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:18:27 +00:00
dependabot[bot]
22fd3e5c64 build(deps): bump alpine in /Containers/notify-push
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:18:21 +00:00
dependabot[bot]
acb00be975 build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/imaginary
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:17:41 +00:00
dependabot[bot]
3b1eb6d5e3 build(deps): bump alpine in /Containers/domaincheck
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:17:35 +00:00
dependabot[bot]
6cc5754f7e build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/clamav
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:17:30 +00:00
dependabot[bot]
68f529c2bc build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/borgbackup
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:17:27 +00:00
dependabot[bot]
fc8d657ec0 build(deps): bump alpine from 3.23.3 to 3.23.4 in /Containers/alpine
Bumps alpine from 3.23.3 to 3.23.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 04:17:21 +00:00
Simon L.
e4263d6dac Merge pull request #7911 from nextcloud/aio-dependency-update
PHP dependency updates
2026-04-15 17:56:52 +02:00
jameskimmel
8799c1c53f rp-docs: adjust nginx proxy timeouts and add clarifying comment (#6939)
Signed-off-by: jameskimmel <17176225+jameskimmel@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-04-15 16:47:48 +02:00
szaimen
3678e073a1 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-15 12:17:03 +00:00
Simon L.
32f728e7b1 Merge pull request #7909 from nextcloud/dependabot/docker/Containers/talk/nats-2.12.7-scratch
build(deps): bump nats from 2.12.6-scratch to 2.12.7-scratch in /Containers/talk
2026-04-15 08:57:39 +02:00
dependabot[bot]
ec1beb2fff build(deps): bump nats in /Containers/talk
Bumps nats from 2.12.6-scratch to 2.12.7-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 04:18:58 +00:00
Simon L.
02327200e0 Merge pull request #7907 from nextcloud/enh/noid/home-assistant-adjustments
home-assistant: adjust some details
2026-04-14 17:36:43 +02:00
Simon L.
049f828095 home-assistant: adjust some details
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-14 17:34:49 +02:00
Simon L.
eba5e11303 fix postgres
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-14 16:37:01 +02:00
Simon L.
4d8360d426 postgres: fix another detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-14 16:29:24 +02:00
Simon L.
24d90d7c70 update workflows
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-14 16:24:42 +02:00
Simon L.
6d372ab37f fix postgres container build
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-14 16:08:10 +02:00
Simon L.
1f3a2fd537 increase to 13.0.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-14 15:58:45 +02:00
Simon L.
25da8cd524 Merge pull request #7810 from nextcloud/copilot/add-home-assist-community-container
Add Home Assistant as new community container
2026-04-14 15:56:52 +02:00
Simon L.
2371cbc9b5 Merge pull request #7882 from nextcloud/enh/7622/update-nc-version
update bundled Nextcloud version to v33
2026-04-14 15:32:54 +02:00
Simon L.
fcddabbd8e Merge pull request #7880 from nextcloud/enh/7622/hide-update-notice
aio-interface: hide Hub 26 Winter update notice
2026-04-14 15:32:45 +02:00
Simon L.
c3d8e80b7c Merge pull request #7879 from nextcloud/revert-7585-revert-7485-enh/noid/more-strict-check
Re-introduce "mastercontainer: make check for correct volume name more strict"
2026-04-14 15:32:35 +02:00
Simon L.
6d47317d1e Merge pull request #7877 from nextcloud/enh/6921/update-postgres
postgres: update to v18
2026-04-14 15:32:23 +02:00
Simon L.
2b9a5cc979 Merge pull request #7876 from nextcloud/enh/7622/update-app-compatibility
app: update compatibility to 33
2026-04-14 15:31:49 +02:00
Simon L.
19e6c1d2c4 Merge pull request #7849 from nextcloud/enh/noid/sync-workflows
create workflow to automatically sync github actions over to the repo
2026-04-14 15:31:39 +02:00
Simon L.
bb25273269 Merge pull request #7905 from nextcloud/aio-dependency-update
PHP dependency updates
2026-04-14 15:16:27 +02:00
szaimen
e1439a37ac php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-14 12:17:20 +00:00
Simon L.
b4286b31cd Merge pull request #7900 from Fuseteam/patch-1
nextcloud-exporter: update readme to reflect what it monitors
2026-04-14 11:16:17 +02:00
Rahammetoela Toekiman
fc03f1b62f update readme to reflect what it monitors
Signed-off-by: Rahammetoela Toekiman <fusekai@outlook.com>
2026-04-13 10:38:26 -03:00
Zoey
c104b179b7 aio-interface: improve session config and cookie store (#7689)
Signed-off-by: Zoey <zoey@z0ey.de>
Co-authored-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-04-13 11:46:35 +02:00
Simon L.
02c9f7971b Merge pull request #7892 from nextcloud/aio-dependency-update
PHP dependency updates
2026-04-12 22:05:20 +02:00
szaimen
a28e96076c php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-11 12:06:52 +00:00
Simon L.
d8d54fb9b5 Merge pull request #7889 from nextcloud/aio-dependency-update
PHP dependency updates
2026-04-10 15:08:47 +02:00
Simon L.
04eeca91cc Merge pull request #7890 from nextcloud/caddyfile-le-challenge-comment
Add an explanation why we disable the HTTP challenge in that Caddy instance
2026-04-10 15:03:27 +02:00
Pablo Zmdl
3f11a48657 Update Containers/apache/Caddyfile
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
2026-04-10 14:56:44 +02:00
Pablo Zmdl
0a96759c72 Add an explanation why we disable the HTTP challenge in that Caddy instance
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-04-10 14:51:51 +02:00
szaimen
13c194716d php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-10 12:13:21 +00:00
Simon L.
0b4e9ab520 Merge pull request #7886 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.5.5-fpm-alpine3.23
build(deps): bump php from 8.5.4-fpm-alpine3.23 to 8.5.5-fpm-alpine3.23 in /Containers/mastercontainer
2026-04-10 08:32:49 +02:00
dependabot[bot]
c2fd040d06 build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.5.4-fpm-alpine3.23 to 8.5.5-fpm-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 04:17:04 +00:00
Simon L.
0b8eecd9e5 update bundled Nextcloud version to v33
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-09 14:56:10 +02:00
Simon L.
d67a6da456 Merge pull request #7856 from nextcloud/aio-dependency-update
PHP dependency updates
2026-04-09 14:51:28 +02:00
copilot-swe-agent[bot]
ed18c93b22 Add Home Assistant as new community container
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/45faa163-5781-4901-afc7-d828768a4ecc
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: Simon L. <szaimen@e.mail.de>
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-09 14:47:03 +02:00
Simon L.
5079acfa21 Merge pull request #7823 from nextcloud/acme-shortlived-profile
use acme shortlived profile
2026-04-09 14:35:37 +02:00
Simon L.
e563102339 Merge pull request #7863 from nextcloud/time-punish-failed-logins
aio-interface: Punish failed login attempts with a delay
2026-04-09 14:35:22 +02:00
Simon L.
96fd30b556 create workflow to automatically sync github actions over to the repo
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-09 14:33:22 +02:00
Simon L.
99c862c2c1 aio-interface: hide Hub 26 Winter update notice
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-09 14:30:59 +02:00
Simon L.
3f9287f3e5 Revert "Revert "mastercontainer: make check for correct volume name more strict""
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-09 14:24:52 +02:00
szaimen
e9e22cd3c5 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-09 12:16:06 +00:00
Simon L.
e66259cb31 postgres: update to v18
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-09 14:13:35 +02:00
Simon L.
9fdc6eeaa7 update app compatibility to 33
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-09 14:06:31 +02:00
Simon L.
11fcb7d25e Merge pull request #7872 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-8.19.14
build(deps): bump elasticsearch from 8.19.13 to 8.19.14 in /Containers/fulltextsearch
2026-04-09 12:52:25 +02:00
Simon L.
8a1c9b7369 Merge pull request #7870 from nextcloud/grotax/exporter
Update Prometheus Nextcloud Exporter to 0.9.1
2026-04-09 12:52:14 +02:00
Simon L.
12ad9b8c4d Merge pull request #7869 from nextcloud/dependabot/docker/Containers/watchtower/golang-1.26.2-alpine3.23
build(deps): bump golang from 1.26.1-alpine3.23 to 1.26.2-alpine3.23 in /Containers/watchtower
2026-04-09 12:52:01 +02:00
Simon L.
228a2a2372 Merge pull request #7868 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-29.4.0-cli
build(deps): bump docker from 29.3.1-cli to 29.4.0-cli in /Containers/mastercontainer
2026-04-09 12:51:48 +02:00
Simon L.
dd53793f13 Merge pull request #7867 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.26.2-alpine3.23
build(deps): bump golang from 1.26.1-alpine3.23 to 1.26.2-alpine3.23 in /Containers/imaginary
2026-04-09 12:51:37 +02:00
Simon L.
a26a3235d7 Merge pull request #7821 from nextcloud/watchtower-container-update
watchtower container update
2026-04-09 12:51:22 +02:00
derStephan
dd707478d0 aio-caddy: add description of new feature how to add caddy imports via Nextcloud (#7835)
Signed-off-by: derStephan <derStephan@users.noreply.github.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-04-09 12:50:13 +02:00
Simon L.
784cb111d1 Merge pull request #7875 from nextcloud/aio-helm-update
Helm Chart updates
2026-04-09 11:58:54 +02:00
szaimen
e73e5abb4c Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-09 09:55:16 +00:00
Simon L.
85c28415eb Merge pull request #7708 from nextcloud/aio-yaml-update
Yaml updates
2026-04-09 11:52:27 +02:00
dependabot[bot]
088cfce5f3 build(deps): bump elasticsearch in /Containers/fulltextsearch
Bumps elasticsearch from 8.19.13 to 8.19.14.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 04:16:17 +00:00
szaimen
ccd94dfaf7 watchtower-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-08 12:25:55 +00:00
szaimen
7256f96dcd Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-08 12:15:49 +00:00
Benjamin Brahmer
fc9a7769b4 Update Prometheus Nextcloud Exporter to 0.9.1
Signed-off-by: Benjamin Brahmer <info@b-brahmer.de>
2026-04-08 09:53:24 +02:00
Simon L.
af57ffc29d Merge pull request #7866 from Croydon/readme
Readme: Fix broken OCC security link
2026-04-08 09:24:16 +02:00
dependabot[bot]
a2531182d1 build(deps): bump golang in /Containers/watchtower
Bumps golang from 1.26.1-alpine3.23 to 1.26.2-alpine3.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 04:17:54 +00:00
dependabot[bot]
83a77ae625 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.3.1-cli to 29.4.0-cli.

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 04:16:54 +00:00
Michael Keck
f57d0becd0 Readme: Fix broken OCC security link
Signed-off-by: Michael Keck <git@cr0ydon.com>
2026-04-07 21:25:51 +02:00
Pablo Zmdl
b67b3bbe15 Also punish failed logins via GET and URL-token
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-04-07 15:08:01 +02:00
Pablo Zmdl
bc968d18e6 Punish failed login attempts with a delay
This is a very simple means against bots, until we find the time to discuss
and implement something better.

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-04-07 14:52:55 +02:00
Simon L.
b9b622755b increase to 12.9.2
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-07 11:37:52 +02:00
Simon L.
b7bf642ad8 Merge pull request #7851 from nextcloud/alan/fix-7850-avoid-post-resend-popup
aio-interface: avoid `Resend` popups on Firefox on start/stop containers
2026-04-07 11:37:20 +02:00
Alan Savage
0bad0849c1 Avoid Resend popups on Firefox on start/stop containers
Use `location.reload(true)` instead of `reload` or `reload(1)`
to ensure we use a GET request.

See also:
https://stackoverflow.com/a/41122753
https://developer.mozilla.org/en-US/docs/Web/API/Location/reload#forceget

Fixes #7850

Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2026-04-02 10:55:25 -07:00
Zoey
b578322d16 change default acme profile (2/2)
Signed-off-by: Zoey <zoey@z0ey.de>
2026-03-25 20:49:05 +01:00
Zoey
4ac496b89c change default acme profile (1/2)
Signed-off-by: Zoey <zoey@z0ey.de>
2026-03-25 20:48:21 +01:00
67 changed files with 562 additions and 288 deletions

View File

@@ -41,7 +41,7 @@ jobs:
persist-credentials: false
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@7bf05c6b704e0b9bfee22300130a31b5ea68d593 # v2.36.0
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
with:
php-version: ${{ matrix.php-versions }}
coverage: none

View File

@@ -4,11 +4,13 @@ on:
pull_request:
paths:
- 'php/**'
- 'Containers/mastercontainer/*.Caddyfile'
push:
branches:
- main
paths:
- 'php/**'
- 'Containers/mastercontainer/*.Caddyfile'
concurrency:
group: playwright-${{ github.head_ref || github.run_id }}
@@ -37,7 +39,7 @@ jobs:
run: cd php/tests && npx playwright install --with-deps chromium
- name: Set up php 8.5
uses: shivammathur/setup-php@7bf05c6b704e0b9bfee22300130a31b5ea68d593 # v2.36.0
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
with:
extensions: apcu
php-version: 8.5
@@ -68,6 +70,8 @@ jobs:
--publish 8080:8080 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume ./php:/var/www/docker-aio/php \
--volume ./Containers/mastercontainer/internal.Caddyfile:/internal.Caddyfile \
--volume ./Containers/mastercontainer/headers.Caddyfile:/headers.Caddyfile \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env SKIP_DOMAIN_VALIDATION=true \
--env APACHE_PORT=11000 \
@@ -97,6 +101,8 @@ jobs:
--publish 8080:8080 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume ./php:/var/www/docker-aio/php \
--volume ./Containers/mastercontainer/internal.Caddyfile:/internal.Caddyfile \
--volume ./Containers/mastercontainer/headers.Caddyfile:/headers.Caddyfile \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env SKIP_DOMAIN_VALIDATION=false \
--env APACHE_PORT=11000 \

View File

@@ -37,7 +37,7 @@ jobs:
persist-credentials: false
- name: Set up php
uses: shivammathur/setup-php@7bf05c6b704e0b9bfee22300130a31b5ea68d593 # v2.36.0
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
with:
php-version: 8.5
extensions: apcu

View File

@@ -0,0 +1,140 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
# This workflow will update all workflow templates
# Additionally it will reapply `workflow.yml.patch` files after syncing and only then commit the result
name: Update workflows
on:
workflow_dispatch:
schedule:
- cron: "5 2 * * 0"
permissions:
contents: read
jobs:
dispatch:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
branches:
- ${{ github.event.repository.default_branch }}
- 'stable33'
- 'stable32'
name: Update workflows in ${{ matrix.branches }}
permissions:
contents: write
pull-requests: write
steps:
- name: Check actor permission
uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0
with:
require: admin
- name: Checkout workflow repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
path: source
repository: nextcloud/.github
- name: Checkout app
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
path: target
ref: ${{ matrix.branches }}
- name: Copy all workflow templates
run: |
echo 'SUMMARY<<EOF' >> $GITHUB_ENV
draft_only=0
for workflow in ./source/workflow-templates/*.yml; do
echo "❓ Looking for $workflow"
if [ -f "$workflow" ]; then
filename=$(basename "$workflow")
target_file="./target/.github/workflows/$filename"
# Only copy if the file exists in the target repository
if [ -f "$target_file" ]; then
if [ -f "./target/.github/actions-lock.txt" ]; then
locked_version=$(grep " $filename" ./target/.github/actions-lock.txt | cat)
else
echo "# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors" >> ./target/.github/actions-lock.txt
echo "# SPDX-License""-Identifier: MIT" >> ./target/.github/actions-lock.txt
locked_version=""
fi
locked_version=$(echo $locked_version | cut -f 1 -d " ")
new_version=$(md5sum $workflow | cut -f 1 -d " ")
# Only update if the action changes
if [[ "$locked_version" != "$new_version" ]]; then
echo " Locked version: $locked_version"
echo " Current version: $new_version"
echo "🆙 Updating existing workflow: $filename"
echo "- 🆙 Updated [$filename](https://github.com/nextcloud/.github/commits/master/workflow-templates/$filename)" >> $GITHUB_ENV
cp "$workflow" "$target_file"
# Apply patch if one exists
if [ -f "$target_file.patch" ]; then
echo "🩹 Applying patch"
cd ./target
set +e
patch -p1 < ".github/workflows/$filename.patch"
patch_worked=$?
set -e
cd -
if [[ "$patch_worked" == "0" ]]; then
echo " - Patch applied" >> $GITHUB_ENV
else
echo " - [ ] ❌ Patch failed" >> $GITHUB_ENV
draft_only=1
fi
fi
if [[ "$locked_version" != "" ]]; then
sed -i "s/$locked_version $filename/$new_version $filename/" ./target/.github/actions-lock.txt
else
echo "$new_version $filename" >> ./target/.github/actions-lock.txt
fi
else
echo "✅ Skipping $filename: already up to date"
fi
else
echo "⏭️ Skipping $filename: does not exist in target repository"
fi
fi
done
echo 'EOF' >> $GITHUB_ENV
echo "DRAFT_ONLY=${draft_only}" >> $GITHUB_ENV
- name: Create Pull Request
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
with:
token: ${{ secrets.COMMAND_BOT_WORKFLOWS }} # zizmor: ignore[secrets-outside-env]
commit-message: 'ci(actions): Update workflow templates from organization template repository'
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
path: target
signoff: true
branch: 'automated/noid/${{ matrix.branches }}-update-workflows'
title: '[${{ matrix.branches }}] ci(actions): Update workflow templates from organization template repository'
draft: ${{ env.DRAFT_ONLY == 1 }}
add-paths: .github/workflows/*.yml,.github/actions-lock.txt
body: |
Automated update of all workflow templates from [nextcloud/.github](https://github.com/nextcloud/.github)
${{ env.SUMMARY }}
labels: |
dependencies
3. to review

View File

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

View File

@@ -17,8 +17,13 @@
https://{$ADDITIONAL_TRUSTED_DOMAIN}:443,
http://{$APACHE_HOST}.nextcloud-aio:23973, # For Collabora callback and WOPI requests, see containers.json
{$PROTOCOL}://{$NC_DOMAIN}:{$APACHE_PORT} {
header -Server
header -X-Powered-By
header {
Strict-Transport-Security max-age=31536000;
-Server
-X-Powered-By
-Via
}
# Collabora
route /browser/* {
@@ -65,7 +70,6 @@ http://{$APACHE_HOST}.nextcloud-aio:23973, # For Collabora callback and WOPI req
# Nextcloud
route {
header Strict-Transport-Security max-age=31536000;
reverse_proxy 127.0.0.1:8000
}
redir /.well-known/carddav /remote.php/dav/ 301
@@ -74,6 +78,9 @@ http://{$APACHE_HOST}.nextcloud-aio:23973, # For Collabora callback and WOPI req
# TLS options
tls {
issuer acme {
profile shortlived
# Disable HTTP challenge because that would require port 80, which we don't get (it's exposed to the mastercontainer).
# This container by default only exposes port 443 if not configured otherwise via APACHE_PORT.
disable_http_challenge
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM golang:1.26.1-alpine3.23 AS go
FROM golang:1.26.2-alpine3.23 AS go
ENV IMAGINARY_HASH=6a274b488759a896aff02f52afee6e50b5e3a3ee
@@ -14,7 +14,7 @@ RUN set -ex; \
build-base; \
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
FROM alpine:3.23.3
FROM alpine:3.23.4
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
FROM docker:29.3.1-cli AS docker
FROM docker:29.4.0-cli AS docker
ARG CADDY_REMOTE_HOST_HASH=b21775afa730ffb52a24ddff310c8a6d1fd37276
@@ -11,7 +11,7 @@ RUN set -ex; \
/usr/bin/caddy list-modules
# From https://github.com/docker-library/php/blob/master/8.5/alpine3.23/fpm/Dockerfile
FROM php:8.5.4-fpm-alpine3.23
FROM php:8.5.5-fpm-alpine3.23
EXPOSE 80
EXPOSE 8080

View File

@@ -33,6 +33,9 @@ http://:80 {
}
https://:8443 {
import headers.Caddyfile
header Strict-Transport-Security max-age=31536000;
@denied {
path /api/auth/login /api/auth/getlogin
remote_host nextcloud-aio-nextcloud
@@ -46,6 +49,7 @@ https://:8443 {
tls {
on_demand
issuer acme {
profile shortlived
disable_tlsalpn_challenge
}
}

View File

@@ -0,0 +1,28 @@
header {
# CSP limits which features can be used. By default we allow nothing and only allow required options. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy
# default-src 'none'; Allow nothing by default
# script-src-elem/style-src-elem 'self'; Only allow loading css/js files from same origin (AIO itself) while blocking all inline css/js
# img-src 'self'; Only allow loading images from same origin (from AIO itself)
# connect-src 'self'; Allow fetch to only connect same origin (to AIO itself)
# frame-src 'self'; Allow AIO to only embed itself "what can be embedded"
# base-uri 'none'; This does not fallback to default-src, AIO does not use the html base tag
# form-action 'self'; Html forms are only allowed to submit to AIO and not cross origin
# frame-ancestors 'self'; Only allow AIO itself to embed it self "who can embed"
# upgrade-insecure-requests; Upgrade all http embedings to https
# require-trusted-types-for 'script'; trusted-types 'none'; Blocks DOM changes via js
Content-Security-Policy "default-src 'none'; script-src-elem 'self'; style-src-elem 'self'; img-src 'self'; connect-src 'self'; frame-src 'self'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests; require-trusted-types-for 'script'; trusted-types 'none';"
X-Content-Type-Options "nosniff" # This forces the browser to use the MIME type of the Content-Type header. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Content-Type-Options
X-Frame-Options "SAMEORIGIN" # Only allow AIO itself to embed itself, this is also enforced as part of the CSP frame-ancestors. See https://developer.mozilla.org/de/docs/Web/HTTP/Reference/Headers/X-Frame-Options
X-Permitted-Cross-Domain-Policies "none" # We block all cross origin request, including ones from Adobe Acrobat or Microsoft Silverlight and Adobe Flash Player. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Permitted-Cross-Domain-Policies
X-DNS-Prefetch-Control "off" # Tells the browser to not pre-fetch the DNS of linked pages. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-DNS-Prefetch-Control
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
-Server
-X-Powered-By
-Via
}

View File

@@ -24,6 +24,8 @@
}
https://:8080 {
import headers.Caddyfile
@denied {
path /api/auth/login /api/auth/getlogin
remote_host nextcloud-aio-nextcloud

View File

@@ -169,7 +169,7 @@ elif ! sudo -E -u www-data docker volume ls --format "{{.Name}}" | grep -q "^nex
print_red "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
Using a different name is not supported since the built-in backup solution will not work in that case!"
exit 1
elif ! sudo -E -u www-data docker inspect nextcloud-aio-mastercontainer | grep -q "nextcloud_aio_mastercontainer"; then
elif ! sudo -E -u www-data docker inspect nextcloud-aio-mastercontainer --format '{{.Mounts}}' | grep -q " nextcloud_aio_mastercontainer "; then
print_red "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
This is not supported since the built-in backup solution will not work in that case!"
exit 1

View File

@@ -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=32.0.8
ENV NEXTCLOUD_VERSION=33.0.2
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!

View File

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

View File

@@ -871,16 +871,20 @@ if [ "$TALK_ENABLED" = 'yes' ]; then
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update spreed
fi
# Based on https://github.com/nextcloud/spreed/issues/960#issuecomment-416993435
if [ -z "$(php /var/www/html/occ talk:turn:list --output="plain")" ]; then
# shellcheck disable=SC2153
# Add turn server
# shellcheck disable=SC2153
if ! php /var/www/html/occ talk:turn:list --output="plain" | grep server | grep -q " $TURN_DOMAIN:$TALK_PORT"; then
php /var/www/html/occ talk:turn:add turn "$TURN_DOMAIN:$TALK_PORT" "udp,tcp" --secret="$TURN_SECRET"
fi
# Add stun server
STUN_SERVER="$(php /var/www/html/occ talk:stun:list --output="plain")"
if [ -z "$STUN_SERVER" ] || echo "$STUN_SERVER" | grep -oP '[a-zA-Z.:0-9]+' | grep -q "^stun.nextcloud.com:443$"; then
if ! echo "$STUN_SERVER" | grep -q " $TURN_DOMAIN:$TALK_PORT"; then
php /var/www/html/occ talk:stun:add "$TURN_DOMAIN:$TALK_PORT"
fi
if [ -z "$STUN_SERVER" ] || echo "$STUN_SERVER" | grep -oP '[a-zA-Z.:0-9]+' | grep -q "^stun.nextcloud.com:443$"; then
php /var/www/html/occ talk:stun:delete "stun.nextcloud.com:443"
fi
# Add HPB
if ! php /var/www/html/occ talk:signaling:list --output="plain" | grep -q "https://$TALK_HOST$HPB_PATH"; then
php /var/www/html/occ talk:signaling:add "https://$TALK_HOST$HPB_PATH" "$SIGNALING_SECRET" --verify
fi

View File

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

View File

@@ -1,6 +1,8 @@
# syntax=docker/dockerfile:latest
# From https://github.com/docker-library/postgres/blob/master/17/alpine3.23/Dockerfile
FROM postgres:17.9-alpine
# From https://github.com/docker-library/postgres/blob/master/18/alpine3.23/Dockerfile
FROM postgres:18.3-alpine
ENV PGDATA=/var/lib/postgresql/data
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
@@ -22,6 +24,7 @@ RUN set -ex; \
apk del --no-cache shadow; \
\
# Fix default permissions
mkdir -p /var/lib/postgresql/data; \
chown -R postgres:postgres /var/lib/postgresql; \
chown -R postgres:postgres /var/run/postgresql; \
chmod -R 777 /var/run/postgresql; \

View File

@@ -1,8 +1,8 @@
# syntax=docker/dockerfile:latest
FROM nats:2.12.6-scratch AS nats
FROM nats:2.12.7-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.3 AS janus
FROM alpine:3.23.4 AS janus
ARG JANUS_VERSION=v1.4.0
WORKDIR /src
@@ -35,7 +35,7 @@ RUN set -ex; \
make configs; \
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
FROM alpine:3.23.3
FROM alpine:3.23.4
ENV ETURNAL_ETC_DIR="/conf"
ENV SKIP_CERT_VERIFY=false
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local

View File

@@ -1,15 +1,15 @@
# syntax=docker/dockerfile:latest
FROM golang:1.26.1-alpine3.23 AS go
FROM golang:1.26.2-alpine3.23 AS go
ENV WATCHTOWER_COMMIT_HASH=5a33e3c0aa3b2770c648a114b4a9d32e0a5b55ba
ENV WATCHTOWER_COMMIT_HASH=652c89577076f6bc6f2af4465217589641216ee3
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \
build-base; \
go install github.com/nicholas-fedor/watchtower@$WATCHTOWER_COMMIT_HASH # v1.14.4
go install github.com/nicholas-fedor/watchtower@$WATCHTOWER_COMMIT_HASH # v1.16.1
FROM alpine:3.23.3
FROM alpine:3.23.4
RUN set -ex; \
apk upgrade --no-cache -a; \

View File

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

View File

@@ -16,7 +16,8 @@ This container bundles caddy and auto-configures it for you. It also covers [vau
- If you want to use this with [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter), make sure that you point `metrics.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nextcloud-exporter.
- If you want to use this with [local AI](https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai), make sure that you point `ai.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for local AI.
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
- You can add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
- You can add your own Caddy configurations in the folder `nextcloud-aio-caddy/caddy-imports` in the files app of the default `admin` user. You need to create that folder manually. These will be imported on container startup.
- You can alternatively add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup. **Please note:** If you do not have CLI access to the server use the previous option or run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
- If you want to remove the container again and revert back to the default, you need to disable the container via the AIO-interface and follow https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#8-removing-the-reverse-proxy

View File

@@ -0,0 +1,32 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-home-assistant",
"display_name": "Home Assistant",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/home-assistant",
"image": "ghcr.io/home-assistant/home-assistant",
"image_tag": "stable",
"internal_port": "host",
"restart": "unless-stopped",
"init": false,
"environment": [
"TZ=%TIMEZONE%",
"DISABLE_JEMALLOC=true"
],
"cap_add": [
"NET_ADMIN",
"NET_RAW"
],
"volumes": [
{
"source": "nextcloud_aio_home_assistant",
"destination": "/config",
"writeable": true
}
],
"backup_volumes": [
"nextcloud_aio_home_assistant"
]
}
]
}

View File

@@ -0,0 +1,15 @@
## Home Assistant
This container bundles Home Assistant and auto-configures it for you.
### Notes
- This container should only be run in home networks since Home Assistant is designed for local home automation.
- 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).
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/home-assistant/core
### Maintainer
https://github.com/szaimen

View File

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

View File

@@ -30,7 +30,6 @@ See the [Community Containers documentation](https://github.com/nextcloud/all-in
- User activity (active users hourly, daily)
- File counts and storage usage
- System health and database size
- App statistics and update availability
- Nextcloud performance metrics
### Prometheus Configuration

View File

@@ -249,8 +249,8 @@ services:
expose:
- "9980"
environment:
- aliasgroup1=https://${NC_DOMAIN}:443,http://nextcloud-aio-apache: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:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
- 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]=.+
- dictionaries=${COLLABORA_DICTIONARIES}
- TZ=${TIMEZONE}
- server_name=${NC_DOMAIN}
@@ -259,7 +259,6 @@ services:
profiles:
- collabora
cap_add:
- MKNOD
- SYS_ADMIN
- SYS_CHROOT
- FOWNER
@@ -283,6 +282,8 @@ services:
- ${TALK_PORT}:${TALK_PORT}/udp
expose:
- "8081"
volumes:
- ${NEXTCLOUD_TRUSTED_CACERTS_DIR}:/usr/local/share/ca-certificates:ro
environment:
- NC_DOMAIN
- TALK_HOST=nextcloud-aio-talk

View File

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

View File

@@ -63,7 +63,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
image: ghcr.io/nextcloud-releases/aio-apache:20260306_081319
image: ghcr.io/nextcloud-releases/aio-apache:20260409_094910
readinessProbe:
exec:
command:

View File

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

View File

@@ -28,17 +28,17 @@ spec:
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- name: aliasgroup1
value: https://{{ .Values.NC_DOMAIN }}:443,http://nextcloud-aio-apache:23973
value: https://{{ .Values.NC_DOMAIN }}:443,http://nextcloud-aio-apache.nextcloud-aio:23973
- 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: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: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]=.+
- 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:20260306_081319
image: ghcr.io/nextcloud-releases/aio-collabora-online:20260409_094910
{{- else }}
image: ghcr.io/nextcloud-releases/aio-collabora:20260306_081319
image: ghcr.io/nextcloud-releases/aio-collabora:20260409_094910
{{- end }}
readinessProbe:
exec:
@@ -63,7 +63,6 @@ spec:
securityContext:
capabilities:
add:
- MKNOD
- CAP_SYS_ADMIN
- SYS_CHROOT
- FOWNER

View File

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

View File

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

View File

@@ -38,7 +38,7 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-imaginary:20260306_081319
image: ghcr.io/nextcloud-releases/aio-imaginary:20260409_094910
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:20260306_081319
image: ghcr.io/nextcloud-releases/aio-alpine:20260409_094910
command:
- chmod
- "777"
@@ -190,7 +190,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
image: ghcr.io/nextcloud-releases/aio-nextcloud:20260306_081319
image: ghcr.io/nextcloud-releases/aio-nextcloud:20260409_094910
{{- 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

@@ -39,7 +39,7 @@ spec:
value: nextcloud-aio-nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-notify-push:20260306_081319
image: ghcr.io/nextcloud-releases/aio-notify-push:20260409_094910
readinessProbe:
exec:
command:

View File

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

View File

@@ -39,7 +39,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-redis:20260306_081319
image: ghcr.io/nextcloud-releases/aio-redis:20260409_094910
readinessProbe:
exec:
command:

View File

@@ -13,6 +13,8 @@ spec:
selector:
matchLabels:
io.kompose.service: nextcloud-aio-talk
strategy:
type: Recreate
template:
metadata:
annotations:
@@ -52,7 +54,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk:20260306_081319
image: ghcr.io/nextcloud-releases/aio-talk:20260409_094910
readinessProbe:
exec:
command:
@@ -84,4 +86,12 @@ spec:
{{- else }}
drop: ["NET_RAW"]
{{- end }}
volumeMounts:
- mountPath: /usr/local/share/ca-certificates
name: nextcloud-aio-nextcloud-trusted-cacerts
readOnly: true
volumes:
- name: nextcloud-aio-nextcloud-trusted-cacerts
persistentVolumeClaim:
claimName: nextcloud-aio-nextcloud-trusted-cacerts
{{- end }}

View File

@@ -44,7 +44,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk-recording:20260306_081319
image: ghcr.io/nextcloud-releases/aio-talk-recording:20260409_094910
readinessProbe:
exec:
command:

View File

@@ -50,7 +50,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-whiteboard:20260306_081319
image: ghcr.io/nextcloud-releases/aio-whiteboard:20260409_094910
readinessProbe:
exec:
command:

119
php/composer.lock generated
View File

@@ -448,16 +448,16 @@
},
{
"name": "laravel/serializable-closure",
"version": "v2.0.10",
"version": "v2.0.12",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "870fc81d2f879903dfc5b60bf8a0f94a1609e669"
"reference": "a6abb4e54f6fcd3138120b9ad497f0bd146f9919"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/870fc81d2f879903dfc5b60bf8a0f94a1609e669",
"reference": "870fc81d2f879903dfc5b60bf8a0f94a1609e669",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/a6abb4e54f6fcd3138120b9ad497f0bd146f9919",
"reference": "a6abb4e54f6fcd3138120b9ad497f0bd146f9919",
"shasum": ""
},
"require": {
@@ -505,7 +505,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2026-02-20T19:59:49+00:00"
"time": "2026-04-14T13:33:34+00:00"
},
{
"name": "nikic/fast-route",
@@ -1532,16 +1532,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.33.0",
"version": "v1.36.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
"reference": "141046a8f9477948ff284fa65be2095baafb94f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2",
"reference": "141046a8f9477948ff284fa65be2095baafb94f2",
"shasum": ""
},
"require": {
@@ -1591,7 +1591,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.36.0"
},
"funding": [
{
@@ -1611,20 +1611,20 @@
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
"time": "2026-04-10T16:19:22+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.33.0",
"version": "v1.36.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
"reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315",
"reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315",
"shasum": ""
},
"require": {
@@ -1676,7 +1676,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.36.0"
},
"funding": [
{
@@ -1696,11 +1696,11 @@
"type": "tidelift"
}
],
"time": "2024-12-23T08:48:59+00:00"
"time": "2026-04-10T17:25:58+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.33.0",
"version": "v1.36.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
@@ -1756,7 +1756,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.36.0"
},
"funding": [
{
@@ -2453,24 +2453,27 @@
},
{
"name": "amphp/serialization",
"version": "v1.0.0",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/amphp/serialization.git",
"reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1"
"reference": "fdf2834d78cebb0205fb2672676c1b1eb84371f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1",
"reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1",
"url": "https://api.github.com/repos/amphp/serialization/zipball/fdf2834d78cebb0205fb2672676c1b1eb84371f0",
"reference": "fdf2834d78cebb0205fb2672676c1b1eb84371f0",
"shasum": ""
},
"require": {
"php": ">=7.1"
"php": ">=7.4"
},
"require-dev": {
"amphp/php-cs-fixer-config": "dev-master",
"phpunit/phpunit": "^9 || ^8 || ^7"
"amphp/php-cs-fixer-config": "^2",
"ext-json": "*",
"ext-zlib": "*",
"phpunit/phpunit": "^9",
"psalm/phar": "6.16.1"
},
"type": "library",
"autoload": {
@@ -2505,9 +2508,15 @@
],
"support": {
"issues": "https://github.com/amphp/serialization/issues",
"source": "https://github.com/amphp/serialization/tree/master"
"source": "https://github.com/amphp/serialization/tree/v1.1.0"
},
"time": "2020-03-25T21:39:07+00:00"
"funding": [
{
"url": "https://github.com/amphp",
"type": "github"
}
],
"time": "2026-04-05T15:59:53+00:00"
},
{
"name": "amphp/socket",
@@ -3834,16 +3843,16 @@
},
{
"name": "sebastian/diff",
"version": "8.0.0",
"version": "8.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "a2b6d09d7729ee87d605a439469f9dcc39be5ea3"
"reference": "9c957d730257f49c873f3761674559bd90098a7d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/a2b6d09d7729ee87d605a439469f9dcc39be5ea3",
"reference": "a2b6d09d7729ee87d605a439469f9dcc39be5ea3",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/9c957d730257f49c873f3761674559bd90098a7d",
"reference": "9c957d730257f49c873f3761674559bd90098a7d",
"shasum": ""
},
"require": {
@@ -3856,7 +3865,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "8.0-dev"
"dev-main": "8.1-dev"
}
},
"autoload": {
@@ -3889,7 +3898,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.0.0"
"source": "https://github.com/sebastianbergmann/diff/tree/8.1.0"
},
"funding": [
{
@@ -3909,7 +3918,7 @@
"type": "tidelift"
}
],
"time": "2026-02-06T04:42:27+00:00"
"time": "2026-04-05T12:02:33+00:00"
},
{
"name": "spatie/array-to-xml",
@@ -4275,16 +4284,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.33.0",
"version": "v1.36.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
"reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
"reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ad1b7b9092976d6c948b8a187cec9faaea9ec1df",
"reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df",
"shasum": ""
},
"require": {
@@ -4333,7 +4342,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.36.0"
},
"funding": [
{
@@ -4353,11 +4362,11 @@
"type": "tidelift"
}
],
"time": "2025-06-27T09:58:17+00:00"
"time": "2026-04-10T16:19:22+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.33.0",
"version": "v1.36.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -4418,7 +4427,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.36.0"
},
"funding": [
{
@@ -4442,16 +4451,16 @@
},
{
"name": "symfony/polyfill-php84",
"version": "v1.33.0",
"version": "v1.36.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php84.git",
"reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
"reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
"reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
"url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06",
"reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06",
"shasum": ""
},
"require": {
@@ -4498,7 +4507,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0"
"source": "https://github.com/symfony/polyfill-php84/tree/v1.36.0"
},
"funding": [
{
@@ -4518,7 +4527,7 @@
"type": "tidelift"
}
],
"time": "2025-06-24T13:30:11+00:00"
"time": "2026-04-10T18:47:49+00:00"
},
{
"name": "symfony/service-contracts",
@@ -4885,16 +4894,16 @@
},
{
"name": "webmozart/assert",
"version": "2.1.6",
"version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
"reference": "ff31ad6efc62e66e518fbab1cde3453d389bcdc8"
"reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/ff31ad6efc62e66e518fbab1cde3453d389bcdc8",
"reference": "ff31ad6efc62e66e518fbab1cde3453d389bcdc8",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/eb0d790f735ba6cff25c683a85a1da0eadeff9e4",
"reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4",
"shasum": ""
},
"require": {
@@ -4941,9 +4950,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
"source": "https://github.com/webmozarts/assert/tree/2.1.6"
"source": "https://github.com/webmozarts/assert/tree/2.3.0"
},
"time": "2026-02-27T10:28:38+00:00"
"time": "2026-04-11T10:33:05+00:00"
}
],
"aliases": [],

View File

@@ -9,7 +9,7 @@ window.addEventListener("load", function(event) {
// set timeout for reload
setTimeout(function(){
window.location.reload(1);
window.location.reload(true);
}, 5000);
} else {
window.addEventListener("beforeunload", function() {

View File

@@ -0,0 +1,27 @@
document.addEventListener("DOMContentLoaded", () => {
document.querySelectorAll('input[data-confirm]').forEach((element) => {
element.addEventListener('click', (event) => {
if (!confirm(element.dataset.confirm)) {
event.preventDefault();
}
});
});
document.querySelectorAll('input[data-input-show-password]').forEach((element) => {
element.addEventListener('input', (element) => {
let passwordField = element
if (passwordField.type === "password" && passwordField.value !== "") {
passwordField.type = "text";
} else if (passwordField.type === "text" && passwordField.value === "") {
passwordField.type = "password";
}
});
});
document.querySelectorAll('[data-stop-event-propagation="true"]').forEach((element) => {
element.addEventListener('click', (event) => {
event.stopPropagation();
});
});
});

View File

@@ -1,14 +1,5 @@
"use strict";
function showPassword(id) {
let passwordField = document.getElementById(id);
if (passwordField.type === "password" && passwordField.value !== "") {
passwordField.type = "text";
} else if (passwordField.type === "text" && passwordField.value === "") {
passwordField.type = "password";
}
}
(function (){
let lastError;
@@ -36,11 +27,11 @@ function showPassword(id) {
showError("Server error. Please check the mastercontainer logs for details. This page will reload after 10s automatically. Then you can check the mastercontainer logs.");
// Reload after 10s since it is expected that the updated view is shown (e.g. after starting containers)
setTimeout(function(){
window.location.reload(1);
window.location.reload(true);
}, 10000);
} else {
// If the responose is not one of the above, we should reload to show the latest content
window.location.reload(1);
window.location.reload(true);
}
}
@@ -84,7 +75,7 @@ function showPassword(id) {
document.getElementById('overlay-log')?.classList.add('visible');
// Reload the page after the response was fully loaded into the iframe.
document.querySelector('iframe[name="overlay-log"]').addEventListener('load', () => {
location.reload();
location.reload(true);
});
};
}

View File

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle; margin-left: 4px;">
<path d="M6 12L10 8L6 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 270 B

View File

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle; margin-right: 6px;">
<path d="M2 2L14 14M2 14L14 2" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 253 B

View File

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle; margin-left: 4px;">
<path d="M6 12L10 8L6 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 270 B

View File

@@ -23,13 +23,6 @@ require __DIR__ . '/../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
$dataConst = $container->get(\AIO\Data\DataConst::class);
ini_set('session.save_path', $dataConst->GetSessionDirectory());
// Auto logout on browser close
ini_set('session.cookie_lifetime', '0');
# Keep session for 24h max
ini_set('session.gc_maxlifetime', '86400');
// Create app
AppFactory::setContainer($container);
@@ -44,7 +37,18 @@ $container->set(Guard::class, function () use ($responseFactory) {
});
// Register Middleware To Be Executed On All Routes
session_start();
session_start([
"name" => "__Host-Http-PHPSESSID", // Set cookie prefix to prevent other pages from overwriting this cookie. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#cookie_prefixes
"save_path" => $dataConst->GetSessionDirectory(), // Where to save the session files
"cookie_lifetime" => 0, // Delete the session cookie whenever the browser is closed. See https://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
"gc_maxlifetime" => 86400, // Delete sessions after 24 hours. See https://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
"gc_probability" => 1, // Probability that the session cleanup starts. See https://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability
"gc_divisor" => 1, // gc_probability/gc_divisor = 1/1 = 100%, meaning that *all* outdated sessions get deleted when the cleanup job runs. See https://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor
"use_strict_mode" => true, // Only allow initialized session IDs. See https://www.php.net/manual/en/session.configuration.php#ini.session.use-strict-mode
"cookie_secure" => true, // Only send cookies over https (not http). See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#secure
"cookie_httponly" => true, // Block the cookie from being read with js in the browser, will still be send for fetch request triggered by js. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#httponly
"cookie_samesite" => "Strict", // Only send the cookie with requests triggered by AIO itself. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie#samesitesamesite-value
]);
$app->add(Guard::class);
// Create Twig

49
php/public/logs.css Normal file
View File

@@ -0,0 +1,49 @@
html, body {
height: 100%;
overflow: hidden;
padding: 0;
margin: 0;
}
pre {
height: 100%;
overflow: auto;
margin: 0;
padding: 1rem;
box-sizing: border-box;
}
#floating-box {
position: fixed;
top: 1rem;
right: 1rem;
max-width: calc(100vw - 2rem);
z-index: 10;
display: flex;
justify-content: end;
align-items: center;
}
#autoloading-box {
display: grid;
gap: 0.5rem;
font-size: large;
border: solid thin gray;
background-color: #f9f9f9;
width: 10rem;
padding: 0.5rem 1rem;
margin: 0 0 0 1rem;
}
.loader {
opacity: 1;
width: 40px;
height: 40px;
align-self: inherit;
}
@starting-style {
.loader {
opacity: 0;
}
}
.loader.hidden {
display: none;
opacity: 0;
transition: opacity 1s, display 1s allow-discrete;
}

View File

@@ -0,0 +1,9 @@
const observer = new MutationObserver((records) => {
const node = records[0]?.addedNodes[0];
// Text nodes also appear here but can't be scrolled to, so we have to check for the
// function being present.
if (node && typeof(node.scrollIntoView) === 'function') {
node.scrollIntoView();
}
});
observer.observe(document, {childList: true, subtree: true});

View File

@@ -32,4 +32,7 @@ function setThemeIcon(theme) {
setThemeToDOM(getSavedTheme());
// Apply theme when the page loads
document.addEventListener('DOMContentLoaded', () => setThemeIcon(getSavedTheme()));
document.addEventListener('DOMContentLoaded', () => {
setThemeIcon(getSavedTheme())
document.querySelector('button#theme-toggle')?.addEventListener('click', () => toggleTheme());
});

View File

@@ -381,17 +381,7 @@ readonly class DockerController {
<html lang="en" class="overlay-iframe">
<head>
<link rel="stylesheet" href="../../style.css?v8" media="all" />
<script>
const observer = new MutationObserver((records) => {
const node = records[0]?.addedNodes[0];
// Text nodes also appear here but can't be scrolled to, so we have to check for the
// function being present.
if (node && typeof(node.scrollIntoView) === 'function') {
node.scrollIntoView();
}
});
observer.observe(document, {childList: true, subtree: true});
</script>
<script type="text/javascript" src="../../scroll-into-view.js"></script>
</head>
<body>

View File

@@ -28,6 +28,9 @@ readonly class LoginController {
return $response->withHeader('Location', '.')->withStatus(201);
}
// Punish failed auth attempts with a delay, as a very simple means against bots.
sleep(5);
$response->getBody()->write("The password is incorrect.");
return $response->withHeader('Location', '.')->withStatus(422);
}
@@ -39,6 +42,9 @@ readonly class LoginController {
return $response->withHeader('Location', '../..')->withStatus(302);
}
// Punish failed auth attempts with a delay, as a very simple means against bots.
sleep(5);
return $response->withHeader('Location', '../..')->withStatus(302);
}

View File

@@ -37,7 +37,7 @@
{% set isBackupOrRestoreRunning = false %}
{% set isApacheStarting = false %}
{# Setting newMajorVersion to '' will hide corresponding options/elements, can be set to an integer like 26 in order to show corresponding elements. If set, also increase installLatestMajor in https://github.com/nextcloud/all-in-one/blob/main/php/src/Controller/DockerController.php #}
{% set newMajorVersionString = '26 Winter' %}
{% set newMajorVersionString = '' %}
{% set oldMajorVersionString = '25 Autumn' %}
{% if is_backup_container_running == true %}
@@ -153,7 +153,7 @@
<form method="POST" action="api/docker/backup-check-repair" 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="Check and repair backup integrity" onclick="return confirm('Check and repair backup integrity? Are you sure that you want to check and repair the backup integrity? This should only be done after reading the mentioned documentation.')"/>
<input type="submit" value="Check and repair backup integrity" data-confirm='Check and repair backup integrity? Are you sure that you want to check and repair the backup integrity? This should only be done after reading the mentioned documentation.'/>
</form>
</details>
{% endif %}
@@ -178,7 +178,7 @@
{% endfor %}
</select><br>
<input type="checkbox" id="restore-exclude-previews" name="restore-exclude-previews"><label for="restore-exclude-previews">Exclude previews from restore which will speed up the restore process but will trigger a scan of the preview folder as soon as the Nextcloud container starts the next time</label><br>
<input type="submit" value="Restore selected backup" onclick="return confirm('⚠️ Important: If the backup that you want to restore contained any community container, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.')"/>
<input type="submit" value="Restore selected backup" data-confirm='⚠️ Important: If the backup that you want to restore contained any community container, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.'/>
</form>
{% endif %}
{% elseif borg_backup_mode == 'restore' %}
@@ -366,7 +366,7 @@
{% if bypass_container_update == true %}
<input type="hidden" name="bypass_container_update" value="true">
{% endif %}
<input class="button " type="submit" value="Start and update containers" onclick="return confirm('Start and update containers? You should consider creating a backup first.')" />
<input class="button " type="submit" value="Start and update containers" data-confirm='Start and update containers? You should consider creating a backup first.' />
</form>
{% endif %}
{% endif %}
@@ -413,7 +413,7 @@
<form method="POST" action="api/docker/backup-check-repair" 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="Check and repair backup integrity" onclick="return confirm('Check and repair backup integrity? Are you sure that you want to check and repair the backup integrity? This should only be done after reading the mentioned documentation.')"/>
<input type="submit" value="Check and repair backup integrity" data-confirm='Check and repair backup integrity? Are you sure that you want to check and repair the backup integrity? This should only be done after reading the mentioned documentation.'/>
</form>
</details>
{% endif %}
@@ -478,7 +478,7 @@
<form method="POST" action="api/docker/backup" 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="Create backup" onclick="return confirm('Create backup? Are you sure that you want to create a backup? This will stop all running containers and create the backup.')" />
<input type="submit" value="Create backup" data-confirm='Create backup? Are you sure that you want to create a backup? This will stop all running containers and create the backup.' />
</form>
{% if has_backup_run_once == true %}
@@ -490,7 +490,7 @@
<form method="POST" action="api/docker/backup-check" 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="Check backup integrity" onclick="return confirm('Check backup integrity? Are you sure that you want to check the backup? This can take a long time depending on the size of your backup.')" />
<input type="submit" value="Check backup integrity" data-confirm='Check backup integrity? Are you sure that you want to check the backup? This can take a long time depending on the size of your backup.' />
</form>
<h3>Backup restore</h3>
@@ -503,7 +503,7 @@
<option value="{{ restore_time }}">{{ restore_time }} UTC</option>
{% endfor %}
</select>
<input type="submit" value="Restore selected backup" onclick="return confirm('Restore the selected backup? Are you sure that you want to restore the selected backup? This will stop all running containers and restore the selected backup. It is recommended to create a backup first. You might also want to check the backup integrity.')" />
<input type="submit" value="Restore selected backup" data-confirm='Restore the selected backup? Are you sure that you want to restore the selected backup? This will stop all running containers and restore the selected backup. It is recommended to create a backup first. You might also want to check the backup integrity.' />
</form>
<h3>Update backup list</h3>
@@ -570,7 +570,7 @@
<input type="hidden" name="delete_borg_backup_location_vars" value="yes"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" value="Reset backup location" onclick="return confirm('Are you sure that you want to reset the backup location?')" />
<input type="submit" value="Reset backup location" data-confirm='Are you sure that you want to reset the backup location?' />
</form>
{% endif %}
{% if has_backup_run_once == true %}
@@ -587,8 +587,8 @@
<summary>Click here to change your AIO passphrase</summary>
<p>You can change your AIO passphrase below:</p>
<form method="POST" action="api/configuration" class="xhr">
<input type="password" autocomplete="current-password" name="current-master-password" placeholder="Your current AIO passphrase" id="current-master-password" oninput="showPassword('current-master-password')">
<input type="password" autocomplete="new-password" name="new-master-password" placeholder="Your new AIO passphrase" id="new-master-password" oninput="showPassword('new-master-password')">
<input type="password" autocomplete="current-password" name="current-master-password" placeholder="Your current AIO passphrase" id="current-master-password" data-input-show-password="showPassword('current-master-password')">
<input type="password" autocomplete="new-password" name="new-master-password" placeholder="Your new AIO passphrase" id="new-master-password" data-input-show-password="showPassword('new-master-password')">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" value="Submit passphrase change" />
@@ -616,7 +616,7 @@
<input type="text" id="timezone" name="timezone" placeholder="Europe/Berlin" />
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" value="Submit timezone" onclick="return confirm('Are you sure that this is a valid timezone? Please double check by following the wikipedia article and checking the correct column. If the timezone is not valid, it will break the startup since the database will not be correctly initialized and you will end up in a startup loop.')" />
<input type="submit" value="Submit timezone" data-confirm='Are you sure that this is a valid timezone? Please double check by following the wikipedia article and checking the correct column. If the timezone is not valid, it will break the startup since the database will not be correctly initialized and you will end up in a startup loop.' />
</form>
<p>You need to make sure that the timezone that you enter is valid. An example is <strong>Europe/Berlin</strong>. You can get valid values by looking at the 'TZ identifier' column of this list: <a target="_blank" href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List"><strong>click here</strong></a>. The default is <strong>Etc/UTC</strong> if nothing is entered.</p>
{% else %}
@@ -635,7 +635,7 @@
{% endif %}
{% if isApacheStarting == true or is_backup_container_running == true or isWatchtowerRunning == true or is_daily_backup_running == true %}
<script type="text/javascript" src="automatic_reload.js?v1"></script>
<script type="text/javascript" src="automatic_reload.js?v2"></script>
{% else %}
<script type="text/javascript" src="before-unload.js"></script>
{% endif %}

View File

@@ -1 +1 @@
12.9.1
13.0.0

View File

@@ -37,6 +37,6 @@
</p>
{% endfor %}
<input id="community-form-submit" type="submit" value="Save changes" onclick="return confirm('Are you sure that you read the documentation of all community containers that you enabled? If no, please do not continue as this might break your instance!')" />
<input id="community-form-submit" type="submit" value="Save changes" data-confirm='Are you sure that you read the documentation of all community containers that you enabled? If no, please do not continue as this might break your instance!' />
</form>
</details>

View File

@@ -41,11 +41,9 @@
<li>Best support for legacy files</li>
</ul>
{% if isAnyRunning == false %}
<a href="https://www.collaboraoffice.com/code/" target="_blank" class="office-learn-more" onclick="event.stopPropagation();">
<a href="https://www.collaboraoffice.com/code/" target="_blank" class="office-learn-more" data-stop-event-propagation="true">
Learn more
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle; margin-left: 4px;">
<path d="M6 12L10 8L6 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<img src="img/collabora.svg" alt="Collabora Logo" />
</a>
{% endif %}
</label>
@@ -76,11 +74,9 @@
<li>Limited ODF compatibility</li>
</ul>
{% if isAnyRunning == false %}
<a href="https://www.onlyoffice.com/" target="_blank" class="office-learn-more" onclick="event.stopPropagation();">
<a href="https://www.onlyoffice.com/" target="_blank" class="office-learn-more" data-stop-event-propagation="true">
Learn more
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle; margin-left: 4px;">
<path d="M6 12L10 8L6 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<img src="img/onlyoffice.svg" alt="Onlyoffice Logo" />
</a>
{% endif %}
</label>
@@ -99,9 +95,7 @@
{% endif %}
>
<label class="office-none-label" for="office-none">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle; margin-right: 6px;">
<path d="M2 2L14 14M2 14L14 2" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg>
<img src="img/office-none.svg" alt="Disable Office icon" />
Disable office suite
</label>
</div>

View File

@@ -1,10 +1,12 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>AIO</title>
<link rel="stylesheet" href="style.css?v9" media="all" />
<link rel="icon" href="img/favicon.png">
<script type="text/javascript" src="forms.js?v1"></script>
<script type="text/javascript" src="forms.js?v2"></script>
<script type="text/javascript" src="toggle-dark-mode.js?v1"></script>
<script type="text/javascript" src="click-handlers.js?v1"></script>
</head>
<body>
@@ -15,7 +17,7 @@
<div class="loader"></div>
<iframe name="overlay-log" id="overlay-log"></iframe>
</div>
<button id="theme-toggle" onclick="toggleTheme()">
<button id="theme-toggle">
<span id="theme-icon"></span>
</button>
</body>

View File

@@ -2,57 +2,7 @@
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="style.css">
<style>
html, body {
height: 100%;
overflow: hidden;
padding: 0;
margin: 0;
}
pre {
height: 100%;
overflow: auto;
margin: 0;
padding: 1rem;
box-sizing: border-box;
}
#floating-box {
position: fixed;
top: 1rem;
right: 1rem;
max-width: calc(100vw - 2rem);
z-index: 10;
display: flex;
justify-content: end;
align-items: center;
}
#autoloading-box {
display: grid;
gap: 0.5rem;
font-size: large;
border: solid thin gray;
background-color: #f9f9f9;
width: 10rem;
padding: 0.5rem 1rem;
margin: 0 0 0 1rem;
}
.loader {
opacity: 1;
width: 40px;
height: 40px;
align-self: inherit;
}
@starting-style {
.loader {
opacity: 0;
}
}
.loader.hidden {
display: none;
opacity: 0;
transition: opacity 1s, display 1s allow-discrete;
}
</style>
<link rel="stylesheet" href="logs.css">
<script src="log-view.js?v1"></script>
</head>
<body data-container-id="{{ id }}">

View File

@@ -11,7 +11,7 @@
{% if is_login_allowed == true %}
<p>Log in using your Nextcloud AIO passphrase:</p>
<form method="POST" action="api/auth/login" class="xhr">
<input type="password" autocomplete="current-password" name="password" placeholder="Password" id="master-password" oninput="showPassword('master-password')">
<input type="password" autocomplete="current-password" name="password" placeholder="Password" id="master-password" data-input-show-password="showPassword('master-password')">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" class="button" value="Log in" />

View File

@@ -703,7 +703,7 @@ Simply run the following command: `sudo docker exec --user www-data nextcloud-ai
See [multiple-instances.md](./multiple-instances.md) for some documentation on this.
### Bruteforce protection FAQ
Nextcloud features a built-in bruteforce protection which may get triggered and will block an ip-address or disable a user. You can unblock an ip-address by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ security:bruteforce:reset <ip-address>` and enable a disabled user by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ user:enable <name of user>`. See https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#security for further information. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
Nextcloud features a built-in bruteforce protection which may get triggered and will block an ip-address or disable a user. You can unblock an ip-address by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ security:bruteforce:reset <ip-address>` and enable a disabled user by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ user:enable <name of user>`. See https://docs.nextcloud.com/server/latest/admin_manual/occ_command.html#security-commands-label for further information. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
### How to switch the channel?
You can switch to a different channel like e.g. the beta channel or from the beta channel back to the latest channel by stopping the mastercontainer, removing it (no data will be lost) and recreating the container using the same command that you used initially to create the mastercontainer. You simply need to change the last line `ghcr.io/nextcloud-releases/all-in-one:latest` to `ghcr.io/nextcloud-releases/all-in-one:beta` and vice versa. ⚠️ In some rare occurrences, you might need to run `docker pull ghcr.io/nextcloud-releases/all-in-one:latest` or `docker pull ghcr.io/nextcloud-releases/all-in-one:beta` first before being able to use the image.
@@ -915,7 +915,7 @@ Be aware that this solution does not back up files and folders that are mounted
---
### What is getting backed up by AIO's backup solution?
Backed up will get all important data of your Nextcloud AIO instance required to restore the instance, like the database, your files and configuration files of the mastercontainer and else. Files and folders that are mounted into Nextcloud using the external storage app are not getting backed up. There is currently no way to exclude the data directory because it would require hacks like running files:scan and would make the backup solution much more unreliable (since the database and your files/folders need to stay in sync). If you still don't want your datadirectory to be backed up, see https://github.com/nextcloud/all-in-one#how-to-enable-automatic-updates-without-creating-a-backup-beforehand for options (there is a hint what needs to be backed up in which order).
Backed up will get all important data of your Nextcloud AIO instance required to restore the instance, like the database, your files and configuration files of the mastercontainer and else. Files and folders that are mounted into Nextcloud using the external storage app are not getting backed up. If you don't want your datadirectory to be backed up, see https://github.com/nextcloud/all-in-one#how-to-enable-automatic-updates-without-creating-a-backup-beforehand for options (there is a hint what needs to be backed up in which order).
### How to adjust borgs retention policy?
The built-in borg-based backup solution has by default a retention policy of `--keep-within=7d --keep-weekly=4 --keep-monthly=6`. See https://borgbackup.readthedocs.io/en/stable/usage/prune.html for what these values mean. You can adjust the retention policy by providing `--env BORG_RETENTION_POLICY="--keep-within=7d --keep-weekly=4 --keep-monthly=6"` to the docker run command of the mastercontainer (but before the last line `ghcr.io/nextcloud-releases/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. ⚠️ Please make sure that this value is valid, otherwise backup pruning will bug out! Also, don't include the `-a` or `--glob-archives` option, since AIO already provides it and you can't override it. See https://github.com/nextcloud/all-in-one/pull/7616

View File

@@ -252,8 +252,12 @@ Add this as a new Apache site config:
# Support big file uploads
LimitRequestBody 0
Timeout 86400
ProxyTimeout 86400
# The default NEXTCLOUD_MAX_TIME value is 3600 seconds.
# By setting it 10 seconds higher than that, we make sure that always Nextcloud times out and not Apache.
# If you increased NEXTCLOUD_MAX_TIME, increase the timeout below accordingly.
Timeout 3610
ProxyTimeout 3610
</VirtualHost>
```
@@ -503,7 +507,12 @@ server {
client_max_body_size 0;
client_body_buffer_size 512k;
# http3_stream_buffer_size 512k; # uncomment to enable HTTP/3 / QUIC - supported on nginx v1.25.0+
proxy_read_timeout 86400s;
# The default NEXTCLOUD_MAX_TIME value is 3600 seconds.
# By setting it 10 seconds higher than that, we make sure that always Nextcloud times out and not NGINX.
# If you increased NEXTCLOUD_MAX_TIME, increase the timeout below accordingly.
proxy_read_timeout 3610s;
server_name <your-nc-domain>;
@@ -600,8 +609,12 @@ Second, see these screenshots for a working config:
```
client_body_buffer_size 512k;
proxy_read_timeout 86400s;
client_max_body_size 0;
# The default NEXTCLOUD_MAX_TIME value is 3600 seconds.
# By setting proxy_read_timeout 10 seconds higher than that, we make sure that always Nextcloud times out and not NPM.
# If you increased NEXTCLOUD_MAX_TIME, increase the timeout below accordingly.
proxy_read_timeout 3610s;
```
⚠️ **Please note:** look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
@@ -645,9 +658,13 @@ const http = require('http');
const app = express();
const proxy = HttpProxy.createProxyServer({
target: 'http://localhost:11000', // Adjust to match APACHE_PORT and APACHE_IP_BINDING. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#adapting-the-sample-web-server-configurations-below
// Timeout can be changed to your liking.
timeout: 1000 * 60 * 3,
proxyTimeout: 1000 * 60 * 3,
// The default NEXTCLOUD_MAX_TIME value is 3600 seconds.
// By setting proxyTimeout 10 seconds higher than that, we make sure that always Nextcloud times out and not Node.js with Express.
// If you increased NEXTCLOUD_MAX_TIME, increase the timeout below accordingly.
timeout: 1000 * 3610,
proxyTimeout: 1000 * 3610,
// Not 100% certain whether autoRewrite is necessary, but enabling it SEEMS to make it behave more stably.
autoRewrite: true,
// Do not enable followRedirects.
@@ -774,7 +791,10 @@ The examples below define the dynamic configuration in YAML files. If you rather
address: ":443" # Create an entrypoint called "https" that uses port 443
transport:
respondingTimeouts:
readTimeout: 24h # Allows uploads > 100MB; prevents connection reset due to chunking (public upload-only links)
# The default NEXTCLOUD_MAX_TIME value is 3600 seconds.
# By setting readTimeout 10 seconds higher than that, we make sure that always Nextcloud times out and not Traefik.
# If you increased NEXTCLOUD_MAX_TIME, increase the timeout below accordingly.
readTimeout: 3610s
# If you want to enable HTTP/3 support, uncomment the line below
# http3: {}
@@ -864,7 +884,10 @@ The examples below define the dynamic configuration in YAML files. If you rather
address: ":443" # Create an entrypoint called "https" that uses port 443
transport:
respondingTimeouts:
readTimeout: 24h # Allows uploads > 100MB; prevents connection reset due to chunking (public upload-only links)
# The default NEXTCLOUD_MAX_TIME value is 3600 seconds.
# By setting readTimeout 10 seconds higher than that, we make sure that always Nextcloud times out and not Traefik.
# If you increased NEXTCLOUD_MAX_TIME, increase the timeout below accordingly.
readTimeout: 3610s
http:
# Required for Nextcloud to correctly handle encoded URL characters (%2F, %3F and %25 in this case) in newer Traefik versions (v3.6.4+).
encodedCharacters:

View File

@@ -1,47 +0,0 @@
#!/bin/bash
VARIANT="develop"
CONTAINERS=()
# Parse flags first
while [[ $# -gt 0 && $1 == --* ]]; do
case $1 in
--variant)
VARIANT="$2"
shift 2
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
done
# Remaining arguments are containers
CONTAINERS=("$@")
if [ ${#CONTAINERS[@]} -eq 0 ]; then
echo "Usage: $0 [--variant develop|beta] <container1> [container2] [container3] ..."
echo "Example: $0 --variant beta apache mastercontainer"
exit 1
fi
# Change to project root
cd "$(dirname "$0")/.." || exit 1
for container in "${CONTAINERS[@]}"; do
if [[ $container == "mastercontainer" ]]; then
TAG="all-in-one"
else
TAG="aio-$container"
fi
if [[ $container == "mastercontainer" || $container == "nextcloud" ]]; then
CONTEXT="."
else
CONTEXT="Containers/$container"
fi
docker buildx build --file Containers/$container/Dockerfile --tag ghcr.io/nextcloud-releases/"$TAG":"$VARIANT" --load $CONTEXT
done