* 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>
Nextcloud All-in-One nextcloud Container
This folder contains the OCI/Docker container definition, along with associated resources and configuration files, for building the nextcloud container as part of the Nextcloud All-in-One project. This container hosts PHP and the Nextcloud Server application.
Overview
The Nextcloud container provides the core Nextcloud application environment, including the necessary dependencies and configuration for seamless integration into the All-in-One stack. The container hosts:
- The PHP SAPI/backend (php-fpm)
- Nextcloud background jobs and scheduled tasks, which are handled via cron
- Miscellaneous minor support services specific to AIO's Nextcloud deployment (health and exec)
Contents
- Dockerfile: Instructions for building the Nextcloud container image.
- Entrypoint script: The
start.shscript is used for container initialization and runtime configuration before starting supervisord. - Nextcloud configuration files: Specific to running in a containerized setting and/or within AIO.
- Supervisor: The
supervisord.conffile defines the long-running services hosted within the container (php-fpm, cron, etc.).
Usage
This container is intended to be used as part of the All-in-One deployment and is not meant to be used on its own. Among other requirements, it needs a web server container (which AIO provides in a dedicated Apache container). It is designed to be orchestrated by the All-in-One mastercontainer or used within an AIO Manual Installation or AIO Helm chart.
Documentation
Contributing
Contributions are welcome! Please follow the Nextcloud project's guidelines and submit pull requests or issues via the main repository.
License
This folder and its contents are licensed under the GNU AGPLv3, in line with the rest of Nextcloud All-in-One.