Commit Graph
314 Commits
Author SHA1 Message Date
Pablo Zmdl 889fd6757c Revert "Drop as much capabilities as possibile for the Collabora container (#8000)"
This reverts commit 9dcb25b4ae, reversing
changes made to 261675f4d3.
2026-07-18 21:56:12 +02:00
Pablo Zmdl 9dcb25b4ae Drop as much capabilities as possibile for the Collabora container (#8000) 2026-07-18 14:02:17 +02:00
fc4bb548a4 aio-interface: fix nginx reverse proxy read timeout blocks AIO from starting consecutive containers (#8016)
* Fix: prevent nginx proxy read timeout from blocking AIO container startup

When AIO runs behind an nginx reverse proxy and a user clicks Start,
image pulls produce no streaming output for minutes at a time. nginx's
proxy_read_timeout fires, drops the upstream connection, and PHP then
aborts on the next write attempt (ignore_user_abort defaults to false),
leaving all containers after the first one never started.

Two fixes:
1. startStreamingResponse(): add ignore_user_abort(true) so PHP never
   terminates if the connection is already gone.
2. PullImage(): stream the Docker NDJSON pull response and write a
   "Pulling image" heartbeat at most once every 5 s, keeping the nginx
   connection alive.  Also surfaces Docker-level stream errors that the
   old buffered call silently ignored, guards against malformed
   newline-free responses with a 1 MB buffer limit, and unifies the
   duplicate catch-block retry logic.

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/4fd13605-63fb-4693-8a95-89ccec31f7d3

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

* As heartbeat send a dot regularly

Rather than repeating the message, send a "magic" dot, which gets
appended to the previous line.

Previously the heartbeats weren't sent regulary because reading the data
into a buffer caused a lag.

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

* Remove left-over constants

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

* Reduce timeout to stay within nginx's default timeout of 5s

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

* Fix duplicated library namespace inclusion

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

* Deal with preg_replace possibly returning null

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

* update the version tag

Signed-off-by: Simon L. <szaimen@e.mail.de>

---------

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
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: Pablo Zmdl <pablo@nextcloud.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-06-16 17:49:18 +02:00
Pablo Zmdl 403ff688f8 Fix fetching logs on podman initially
Podman doesn't like an empty `since` URL parameter.

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-06-16 08:42:04 +02:00
Simon L. e30f416d55 makemkv: allow it to access the necessary devices
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-09 14:33:34 +02:00
Simon L. aadadf4460 allow scrutiny to access all block devices
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-08 11:49:54 +02:00
1f94bc8af0 aio-interface: extract Nextcloud latest-major upgrade logic to dedicated script and add UI trigger button (#7988)
* Extract Nextcloud major upgrade logic to script and add UI button

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/8cd11b09-5073-4e27-8e59-9afffaf96c1f

Rename sendNotification to execCommandInContainer and reuse for upgrade method

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/88744552-9d64-4de2-9f64-5a98a5e3b200

Add $cmd array validation to execCommandInContainer

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/45d5228c-7834-404e-ba54-90b5c8c207c8

Apply suggestion from @szaimen

Signed-off-by: Simon L. <szaimen@e.mail.de>

Apply suggestion from @szaimen

Signed-off-by: Simon L. <szaimen@e.mail.de>

Apply suggestion from @szaimen

Signed-off-by: Simon L. <szaimen@e.mail.de>

Apply suggestion from @szaimen

Signed-off-by: Simon L. <szaimen@e.mail.de>

Set installLatestMajor when upgrade-to-latest-major button is clicked

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/7b977c85-9b74-4027-a536-152e49a01976

Extract getLatestMajorVersion() to avoid duplicating the version string

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/d5ec921f-8629-4f6e-949a-e8f89f1eb85f

Address PR review comments and hardcode updater channel to stable

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/c40941ff-2bf8-4a57-82be-2a0bd22b19a2

Restore sendNotification(), update cron files, extract getPlainStreamingCallback()

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/a5b6cd86-d278-4771-8a11-976c4a862966

Remove getPlainStreamingCallback, unify on getAddToStreamingResponseBody

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/15a4b815-076b-469f-95b2-c61df688a28d

Revert "Remove getPlainStreamingCallback, unify on getAddToStreamingResponseBody"

This reverts commit 6846c3a99549703121461f910cc26e6c116e0dc4.

* Refactor creating and using addToStreamingResponseBody()

This way we stick to having one implementation of the function, not three.

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

* Read streamed output line by line, not via buffer

This way the code doesn't wait for a buffer to be filled, and we don't need to
implement logic ourselves that is provided by a present library already.

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

* Ensure all HTTP requests are proxied, even with streaming

When requesting a streamed response, Guzzle apparently doesn't use curl, and thus we have to specify the unix socket proxy differently.

We can't specify it when creating the client, though (Guzzle complains).

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

* Fix syntax errors

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

* Remove broken code

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

* Fix readline line from streaming response

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

* Strip ANSI codes from command output before sending it to the browser

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

* Run PHP commands as www-data

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

* Properly compare version numbers

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

* Fix using memory limits from env

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

* Fix return type spec

This method always returns a closure, never null.

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

* Use more general return type

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

* Avoid psalm complaint

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

* Fix namespace of return type

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

* Apply suggestion from @szaimen

Signed-off-by: Simon L. <szaimen@e.mail.de>

---------

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
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: Pablo Zmdl <pablo@nextcloud.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-06-03 12:38:50 +02:00
Simon L. 052c0e6ff3 fix: IPv6 compatibility across containers and PHP AIO interface (#8019) 2026-05-29 10:13:33 +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
Ivan Mihov 26c74fd556 Add a note regardign dockhand update and a link to the documentation
Signed-off-by: Ivan Mihov <ivan@mihov.me>
2026-05-28 11:41:41 +02:00
Ivan Mihov 21649225d0 Add "dockhand.update": "false" to all managed containers
Signed-off-by: Ivan Mihov <ivan@mihov.me>
2026-05-28 11:41:41 +02:00
lonode abaea7b4c2 change case
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>
2026-05-21 17:42:21 +02:00
lonode 3517ba3039 apply suggestion
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>
2026-05-19 15:13:51 +02:00
lonode fedb0a65df Add support for library (official) images
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>
2026-05-13 14:35:08 +02:00
Fs00 5dbc642530 Drop NET_RAW cap by default when no caps are explicitly dropped
Signed-off-by: Fs00 <francescosaltori@gmail.com>
2026-04-28 18:05:30 +02:00
Fs00 61eab04d0e Drop any extra caps for collabora when seccomp profile is enabled
Signed-off-by: Fs00 <francescosaltori@gmail.com>
2026-04-25 18:49:01 +02:00
Fs00 43d8393a3b Handle cap_drop from container definitions
Signed-off-by: Fs00 <francescosaltori@gmail.com>
2026-04-25 18:47:23 +02:00
copilot-swe-agent[bot] 172c72f735 aio-interface: also reset the borg backup cache when resetting the backup path
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-25 15:06:58 +02:00
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
Simon L. 91e9e58c39 jellyfin: allow Jellyfin to resolve lldap hostname while running in host network mode (#7941) 2026-04-20 11:42:19 +02:00
copilot-swe-agent[bot]andszaimen d0b0bde4c8 jellyfin: allow Jellyfin to resolve lldap hostname while running in host network mode
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/3bd90eb7-e6f2-4647-9e78-4f9349300a29

fix: use gethostbyname for lldap IP and fix community-container depends_on skip logic

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/67d6ed5f-8bdc-4b9b-a33c-9ff73305c799

fix: ensure lldap starts before jellyfin via depends_on

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/448ec7d3-f71e-4499-a4a4-67314434a77c

Update ContainerDefinitionFetcher.php

Signed-off-by: Simon L. <szaimen@e.mail.de>

fix: protect standard container dependencies from being skipped for community containers

Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/cdd6a51b-75a3-4f43-9d00-85b1df2f880f
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
2026-04-20 11:22:24 +02:00
f25f588295 aio-interface: offer system prune button
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
Co-Authored-By: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-17 14:33:53 +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 680a2fefcb Auto-load only new log data
This is way more complicated that just reloading the log file, but also
way nicer.

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-02-25 16:45:41 +01:00
Simon L. 91b8593a6c Merge pull request #7619 from nextcloud/enh/7612/prevent-image-hash
fix getting name of mastercontainer if a hash was found
2026-02-18 13:53:46 +01:00
Simon L. 92372abfe7 Merge pull request #7458 from nextcloud/enh/6877/show-sub-steps
aio-interface: show sub-steps for starting containers
2026-02-18 13:45:04 +01:00
Pablo Zmdl bf2d9ff394 Load container status into iframe as streamed response
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-02-17 16:35:01 +01:00
Simon L. 1d85bfe302 fix getting name of mastercontainer if a hash was found
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-02-17 14:49:55 +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
ffd8dac1b4 Fix: Additional Collabora options not working correctly (#7481)
Signed-off-by: MrAn0nym <63542658+MrAn0nym@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
2026-01-29 14:29:15 +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
Pablo Zmdl 5ba678c082 Non-functional addition to camelizing nextcloud_mount to nextcloudMount
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 12:08:07 +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 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 f35a0b4367 Camelize property nextcloud_mount => nextcloudMount
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl f7c5115c70 Camelize property talk_port => talkPort
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl 567f072ee0 Camelize property apache_port => apachePort
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl b499001501 Camelize property collabora_additional_options => collaboraAdditionalOptions
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:57 +01:00
Pablo Zmdl f17db4fac1 Camelize property apache_ip_binding => apacheIpBinding
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl 844831a899 Move handling ENV-var replacement into ConfigurationManger
It's the more appropriate place to have this code, and we had to touch
it anyways to make it assign the values to the attributes.

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl 367e847cc8 Make nextcloud_max_time an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl c1f8ac6989 Make nextcloud_memory_limit an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl 4de73dd75b Make nextcloud_mount an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl 903aed1e34 Make nextcloud_upload_limit an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl 96c9c1a6f9 Make talk_port an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl dc28eb6737 Make apache_port an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00
Pablo Zmdl 4e373cb2f8 Make apache_ip_binding an attribute
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-28 11:51:56 +01:00