Commit Graph
287 Commits
Author SHA1 Message Date
Pablo Zmdl 4e03393d53 Save default container selection on setup.
Save the default container selection to the config, so it gets persisted
even
if people don't change anything in the UI. Without this any change to
the
defaults would be applied to existing instances.

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>

AI-assistant: Copilot v1.0.69 (Claude Sonnet 4.6)
2026-07-17 21:13:57 +02:00
Pablo Zmdl fd4e0ddcb2 Store office suite choice in a single config option
Previously it was three boolean options, which were supposed to be mutually
exclusive, which had to be taken care of manually.

Also previously there was only indirect indication of the choice "none", which
is brittle, too.

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-07-17 19:24:49 +02:00
Pablo Zmdl a36d46987d ConfigurationManager: remove unused isx64Platform method (#8399) 2026-07-16 17:50:59 +02:00
Pablo Zmdl ce8a7f6f46 Allow to set desec URLs from environment
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-07-07 10:13:49 +02:00
Simon L. 20d54c9663 ConfigurationManager: remove unused isx64Platform method
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-29 14:51:34 +02:00
Simon L.andClaude Opus 4.8 6fc913bc41 eurooffice should only get enabled on new instances
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-24 14:58:40 +02:00
Simon L.andClaude Opus 4.8 7e50969d02 feat(desec): keep the typed slug across the registration flow
A slug typed into the deSEC form was lost when the form re-rendered after a
201 redirect (e.g. on the awaiting-verification step), forcing the user to
re-enter it. Persist the requested slug in the AIO config when register()
runs and pre-fill the slug input from it on every step, then clear it once a
domain is set. Stored in configuration.json rather than a URL parameter so it
survives the multi-step flow without leaking into the iframe address.

Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:04:36 +02:00
f7987b26ac feat(desec): add deSEC account + domain registration backend
Add the server-side deSEC (dedyn.io) free dynamic-DNS flow so users without a
domain can obtain one from the AIO interface.

- DesecManager drives the full flow against the deSEC API, matching its real
  semantics: account creation returns HTTP 202 + email verification (no token),
  a token is obtained via /auth/login/ only after the email is verified, domain
  registration handles 201/409, and a wildcard CNAME rrset is created for new
  accounts. Existing accounts can be used by supplying a password.
- The "awaiting verification" step is derived from the stored credentials (email
  + generated password but no token and no domain yet), not a separate flag.
  register() returns false for that state so the controller can re-render the
  awaiting-verification UI instead of surfacing it as an error.
- DesecController exposes POST /api/desec/register; DependencyInjection wires the
  manager; account credentials (email, generated password, token) are stored in
  the AIO configuration and DESEC_TOKEN is exposed to the caddy container.
- The dynamic-DNS record is refreshed with the current public IP on container
  start (DockerController) and via the cron path (Cron/UpdateDesecIp, cron.sh).
- Fix an undefined-variable bug in the desecToken/desecPassword config setters
  that prevented credentials from being persisted.

Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-18 13:19:16 +02:00
Simon L. 787fa22a81 remove the registry.gitlab.collabora.com/collabora-online/docker:latest image
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-17 12:18:16 +02:00
tobiasKaminsky 13e0842cff Previously the mapping was just $this->installLatestMajor ? 'yes' : '', so a stored value of 'no' was truthy and would have been turned into INSTALL_LATEST_MAJOR=yes in the Nextcloud container — the opposite of what the user intended. Now both ''
and 'no' result in an empty env value, which the entrypoint's [ "$INSTALL_LATEST_MAJOR" = yes ] check treats as disabled, while any other value (e.g. the '34' set by the start button or upgrade button) still maps to yes.

  Assisted-by: Claude
2026-06-12 14:35:40 +02:00
James ManuelandClaude Sonnet 4.6 40ce65b6e0 feat: enable EuroOffice by default for new installs
Flips isEuroofficeEnabled default to true and isCollaboraEnabled
default to false in ConfigurationManager.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
2026-06-10 13:05:40 +02:00
Copilot 6375921282 add eurooffice (#8052) 2026-06-04 12:42:02 +02:00
copilot-swe-agent[bot] 0722cf95be fix: improve IPv6 compatibility in containers and PHP AIO interface
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/c71fba87-d463-4682-9cb3-abb659b2ca40

refactor: deduplicate resolveHostname into DataConst

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/42427bd4-05e6-4197-bdb7-db3761815113

refactor: move resolveHostname from DataConst into new NetworkHelper class

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/73cb1d89-ab85-43b6-adfe-a90c00ad60a1
2026-05-29 10:11:08 +02:00
Simon L. 50643afd6a allow to adjust the log level globally (#7902) 2026-04-28 18:08:27 +02:00
Simon L. 4f4ef8f1d6 add our own entrypoint to fts and collabora
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-28 15:39:57 +02:00
copilot-swe-agent[bot] d772c14f55 domain-check: replace curl with GuzzleHttp\Client in ConfigurationManager 2026-04-25 16:17:16 +02:00
Simon L. 47307b37f8 Apply suggestions from code review
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 17:27:15 +02:00
Simon L. 74ec1b6baa allow to adjust the log level globally
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-24 10:34:43 +02:00
copilot-swe-agent[bot]andszaimen 546474346f some general fixes to the code base
- Fix return vs continue in CreateVolumes: using return caused all
  subsequent volumes to be skipped when nextcloud_aio_nextcloud_datadir
  or nextcloud_aio_backupdir appeared in the volume list

- Fix GetLogs parsing loop: the while loop checked $line before
  reassigning it so the false sentinel from strtok was always processed,
  appending a spurious extra empty line to the output

- Fix getRegisteredSecret unsafe array access: accessing
  $this->secrets[$secretId] without isset() can trigger an undefined
  array key warning; use isset() instead

- Remove redundant startTransaction() call in setDomain(): the method
  called startTransaction() twice without an intervening commitTransaction(),
  making the second call a no-op that was misleading

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/19424687-dda1-4510-8f70-068c8d3efd41
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-23 10:50:59 +02:00
953a5fdf1e Configurationmanager.php: atomic write for configuration.json to prevent truncation on low disk (#7888)
* fix: use atomic temp-file write to prevent configuration.json truncation

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/ea144d2f-2533-4001-8d10-d17168bb8bec

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>

* fix: improve error messages with specific file paths for config write failures

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/ea144d2f-2533-4001-8d10-d17168bb8bec

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>

---------

Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
2026-04-20 18:44:33 +02:00
copilot-swe-agent[bot]andszaimen ee4088744c aio-interface: cache reads from GetDailyBackupTimeFile based on mtime
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/01d18358-7a1e-4747-85f5-3f002aa59253

aio-interface: cache reads from GetDailyBackupTimeFile based on mtime

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/4df5e1bd-456d-4005-8432-4e9b537c8e54

fix: set dailyBackupFileMtime default to 0 instead of null

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/ba492f66-d5f0-450f-b0e1-658806bf070d

fix: restore missing closing brace of deleteDailyBackupTime

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/6e5fb177-9754-4b64-8e93-b5be989f5162
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-20 14:50:46 +02:00
copilot-swe-agent[bot]andszaimen 1da363ea8c feat: add hardware transcoding support to talk-recording container
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/eaea217b-2995-4e47-a4ec-f7be19f98a18

Auto-detect /dev/dri in start.sh and export NEXTCLOUD_ENABLE_DRI_DEVICE automatically

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/751d0b0c-e529-4ea6-a316-5a53169a9ab6

fix: address code review feedback (nvidia check, file_exists, group_add comment)

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/eaea217b-2995-4e47-a4ec-f7be19f98a18

Use --device=/dev/dri instead of -v bind-mount in docs and compose

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/4fa5e70a-b786-445e-946f-a0610751d855
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-17 13:49:00 +02:00
Pablo Zmdl 2a7c686247 Use timeing-safe password comparison
AI-assistant: Copilot v1.0.7 (Claude Opus 4.6)

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-31 23:56:03 +02:00
Oleksandr PiskunandSimon L. 987191ac14 feat(app-api): add HaRP container (#7493)
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
Signed-off-by: bigcat88 <bigcat88@icloud.com>
Signed-off-by: Oleksandr Piskun <oleksandr2088@icloud.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-02-18 13:45:44 +01:00
Simon L. bdda7c2178 Merge pull request #7541 from nextcloud/enh/noid/use-strict-types-in-php
add `declare(strict_types=1);` to all php files
2026-02-13 10:54:23 +01:00
Simon L. da0775863d fix bug with FTS not being able to enable it anymore
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-02-12 10:22:02 +01:00
Simon L. eba86c3ad1 add declare(strict_types=1); to all php files
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-02-03 13:25:53 +01:00
Simon L. 748b2cc73b only allow to set APACHE_ADDITIONAL_NETWORK via environmental variable and do not restore it on backup restore
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-01-30 09:20:00 +01:00
Pablo Zmdl bf43a6dae6 Lower case method names in ConfigurationManager
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 16:51:36 +01:00
Simon L. 9871a3eb9a insert the AIO version into Nextcloud's system config
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-01-28 15:17:15 +01:00
Pablo Zmdl 5b6e0f30a6 Fix assignment of INSTALL_LATEST_MAJOR from env replacement
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl d9d4e3680f Fix residue from change to use start/commitTransaction()
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 659b1ca383 Fix calling booleanize
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl ec66b359e0 Check arguments to camelize() for usefulness
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 078f3caf8a Move all properties to the top of the file
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 3cfe307a5c Make nextcloudKeepDisabledApps an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 5bdcfd67eb Make 'enableNvidiaGpu' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 5fc4951ba0 Make 'nextcloudEnableDriDevice' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 0cb79a387f Make 'disableBackupSection' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 08438aff42 Make 'apacheAdditionalNetwork' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl dc5dc0215c Make 'collaboraSeccompDisabled' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 22a26268e0 Helper to booleanize environment-or-config-values
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl c3477a7eb2 Make 'nextcloudAdditionalPhpExtensions' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl d50dc2db1d Make 'nextcloudAdditionalApks' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 4ad8fcf258 Make 'trustedCacertsDir' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 63245430ef Make 'dockerSocketPath' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl bfa2b64674 Make 'fulltextsearchJavaOptions' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 365e1e34e4 Make 'borgRetentionPolicy' an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 8b8f60f76b Camelize property nextcloud_memory_limit => nextcloudMemoryLimit
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl bbf41cfdd3 Camelize property nextcloud_upload_limit => nextcloudUploadLimit
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00