From d5a9e061d26caf48844e0456be8c48eae47684bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= <1005065+DeepDiver1975@users.noreply.github.com> Date: Thu, 11 Jun 2026 11:38:30 +0200 Subject: [PATCH 1/5] feat(config): add missing env vars from config.sample.php and config.apps.sample.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expose additional ownCloud configuration parameters as OWNCLOUD_* environment variables, covering options from both config/config.sample.php and config/config.apps.sample.php that were previously only configurable by manually editing config.php. New variables cover: user/auth settings, mail, proxy, trash bin, file versioning, logging, previews, DAV, sharing, file storage, security, app management, antivirus, PDF viewer, firstrun wizard client URLs, LDAP, metrics, Collabora, WOPI/Office Online, workflow retention, and more. Also hardcodes `web-updater.enabled = false` as Docker installs upgrade by pulling a new image rather than using the in-app web updater. Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: Thomas Müller <1005065+DeepDiver1975@users.noreply.github.com> --- ENVIRONMENT.md | 84 +++++++++ v24.04/overlay/etc/entrypoint.d/85-others.sh | 126 +++++++++++++ v24.04/overlay/etc/templates/config.php | 180 ++++++++++++++++++- 3 files changed, 389 insertions(+), 1 deletion(-) diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md index c842dc5a..c81ad469 100644 --- a/ENVIRONMENT.md +++ b/ENVIRONMENT.md @@ -8,12 +8,20 @@ Allow medial search on user account properties (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-medial-search-on-user-account-properties)). - `OWNCLOUD_ACTIVITY_EXPIRE_DAYS=` \ Activity expiration in days (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-activity)). +- `OWNCLOUD_ANTIVIRUS_AV_CMD_OPTIONS=` \ + Command line options for the clamscan antivirus scanner (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-files-antivirus)). +- `OWNCLOUD_ANTIVIRUS_AV_PATH=` \ + Path to the clamscan binary in the container (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-files-antivirus)). +- `OWNCLOUD_ADMIN_AUDIT_GROUPS=` \ + Restrict audit logging to specific groups. Comma-separated list of group names (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-admin-audit)). - `OWNCLOUD_ADMIN_PASSWORD=admin` \ ownCloud admin password. - `OWNCLOUD_ADMIN_USERNAME=admin` \ ownCloud admin username. - `OWNCLOUD_ALLOW_USER_TO_CHANGE_DISPLAY_NAME=` \ Allow or disallow users to change their display names (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-or-disallow-users-to-change-their-display-names)). +- `OWNCLOUD_ALLOW_USER_TO_CHANGE_MAIL_ADDRESS=` \ + Allow or disallow users to change their email addresses (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-or-disallow-users-to-change-their-email-addresses)). - `OWNCLOUD_APPS_DEPRECATED=` \ List of deprecated apps that must be removed (automatically) before performing an ownCloud upgrade to avoid upgrade issues. - `OWNCLOUD_APPS_DISABLE=` \ @@ -30,6 +38,8 @@ Service to execute ownCloud backgrouns jobs. It is recommended to keep the default (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/background_jobs_configuration.html)). - `OWNCLOUD_BLACKLISTED_FILES=` \ Define blacklisted files (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-blacklisted-files)). +- `OWNCLOUD_BLACKLISTED_FILES_REGEX=` \ + Define blacklisted files using regular expressions. Comma-separated list of regex patterns (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-blacklisted-files)). - `OWNCLOUD_CACHE_CHUNK_GC_TTL=` \ Define the TTL for garbage collection (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-ttl-for-garbage-collection)). - `OWNCLOUD_CACHE_PATH=` \ @@ -38,6 +48,8 @@ Check for a .well-known setup (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#check-for-a-well-known-setup)). - `OWNCLOUD_CIPHER=` \ Define the default cipher for encrypting files (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-default-cipher-for-encrypting-files)). +- `OWNCLOUD_COLLABORA_GROUP=` \ + Restrict access to Collabora/Richdocuments to a specific group. Only one group can be defined. Default is empty (no restriction) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-richdocuments)). - `OWNCLOUD_COMMENTS_MANAGER_FACTORY=` \ Define an alternative Comments Manager (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-an-alternative-comments-manager)). - `OWNCLOUD_CORS_ALLOWED_DOMAINS=` \ @@ -50,10 +62,20 @@ Define logging if cron ran successfully(see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-logging-if-cron-ran-successfully)) - `OWNCLOUD_CSRF_DISABLED=` \ Enable or disable ownCloud’s built-in CSRF protection mechanism (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-ownclouds-built-in-csrf-protection-mechanism)). +- `OWNCLOUD_CUSTOMCLIENT_ANDROID=` \ + Override the Android client download URL shown in the first-run wizard (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-firstrunwizard)). +- `OWNCLOUD_CUSTOMCLIENT_DESKTOP=` \ + Override the desktop client download URL shown in the first-run wizard (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-firstrunwizard)). +- `OWNCLOUD_CUSTOMCLIENT_IOS=` \ + Override the iOS client download URL shown in the first-run wizard (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-firstrunwizard)). - `OWNCLOUD_DAV_CHUNK_BASE_DIR=` \ Define the DAV chunk base directory (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-dav-chunk-base-directory)). - `OWNCLOUD_DAV_ENABLE_ASYNC=` \ Enable or disable async DAV extensions (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-async-dav-extensions)). +- `OWNCLOUD_DAV_PROPFIND_DEPTH_INFINITY=` \ + Allow Depth: infinity PROPFIND requests (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-async-dav-extensions)). +- `OWNCLOUD_DB_PLATFORM=` \ + Force a specific Doctrine DBAL platform class, e.g. for MariaDB compatibility (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#identify-the-database-used-with-this-installation)). - `OWNCLOUD_DB_FAIL=true` \ Exit container if the database can't reached during the startup. - `OWNCLOUD_DB_HOST=` \ @@ -96,20 +118,32 @@ Output location for the Apache error log. - `OWNCLOUD_EXCLUDED_DIRECTORIES=` \ Define excluded directories (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-excluded-directories)). +- `OWNCLOUD_EXCLUDED_DIRECTORIES_REGEX=` \ + Define excluded directories using regular expressions. Comma-separated list of regex patterns (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-excluded-directories)). - `OWNCLOUD_FILELOCKING_ENABLED=${OWNCLOUD_LOCKING_ENABLED:-true}` \ Enable transactional file locking (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-transactional-file-locking)). - `OWNCLOUD_FILELOCKING_TTL=` \ Define the TTL for file locking (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-ttl-for-file-locking)). +- `OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS=` \ + Maximum number of failed mountpoint rename attempts before giving up (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-how-often-filesystem-changes-are-detected)). - `OWNCLOUD_FILESYSTEM_CACHE_READONLY=` \ Prevent cache changes due to changes in the filesystem (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#prevent-cache-changes-due-to-changes-in-the-filesystem)). - `OWNCLOUD_FILESYSTEM_CHECK_CHANGES=` \ Define how often filesystem changes are detected (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-how-often-filesystem-changes-are-detected)). - `OWNCLOUD_FILES_EXTERNAL_ALLOW_NEW_LOCAL=${OWNCLOUD_ALLOW_EXTERNAL_LOCAL_STORAGE}` \ Enable or disable the files_external local mount option (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-the-files_external-local-mount-option)). +- `OWNCLOUD_GRACE_PERIOD_DEMO_KEY_LINK=` \ + Override the link shown in the grace period popup (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/enterprise/installation/install.html#license-keys)). +- `OWNCLOUD_GRACE_PERIOD_DEMO_KEY_SHOW_POPUP=` \ + Show or hide the grace period demo key popup (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/enterprise/installation/install.html#license-keys)). +- `OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH=` \ + Allow medial search on group IDs (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-medial-search-on-user-account-properties)). - `OWNCLOUD_FORWARDED_FOR_HEADERS=` \ Define forwarded_for_headers (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-forwarded_for_headers)). - `OWNCLOUD_HASHING_COST=` \ Define the hashing cost (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-hashing-cost)). +- `OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL=` \ + URL used to detect internet connectivity (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#check-for-an-internet-connection)). - `OWNCLOUD_HAS_INTERNET_CONNECTION=` \ Check for an internet connection (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#check-for-an-internet-connection)). - `OWNCLOUD_HTACCESS_REWRITE_BASE=${OWNCLOUD_SUB_URL}` \ @@ -122,9 +156,13 @@ Define apps or themes that are excluded from integrity checking (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-apps-or-themes-that-are-excluded-from-integrity-checking)). - `OWNCLOUD_KNOWLEDGEBASE_ENABLED=` - `OWNCLOUD_APPSTORE_ENABLED=` +- `OWNCLOUD_LDAP_IGNORE_NAMING_RULES=` \ + Ignore LDAP naming rules (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-ldap)). - `OWNCLOUD_LICENSE_KEY=` \ ownCloud Enterprise License Key (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/enterprise/installation/install.html#license-keys)). - `OWNCLOUD_LICENSE_CLASS=` +- `OWNCLOUD_LOGIN_POLICY_ORDER=` \ + Ordered list of login policy class names. Comma-separated (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-additional-login-buttons-on-the-logon-screen)). - `OWNCLOUD_LOGIN_ALTERNATIVES=` \ Define additional login buttons on the logon screen (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-additional-login-buttons-on-the-logon-screen)). - `OWNCLOUD_LOG_DATE_FORMAT=` \ @@ -143,6 +181,8 @@ Define the email RETURN address (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-email-return-address)). - `OWNCLOUD_MAIL_FROM_ADDRESS=` \ Define the email FROM address (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-email-from-address)). +- `OWNCLOUD_MAIL_REMOVE_SENDER_DISPLAY_NAME=` \ + Strip the display name from the From header in sharing notification emails (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-email-from-address)). - `OWNCLOUD_MAIL_SMTP_AUTH=` \ Define the SMTP authentication (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-smtp-authentication)). - `OWNCLOUD_MAIL_SMTP_AUTH_TYPE=` \ @@ -169,6 +209,8 @@ Developer option to connect to Marketplace testing instances. - `OWNCLOUD_MARKETPLACE_KEY=${OWNCLOUD_MARKETPLACE_APIKEY}` \ Developer option to get access to unreleased Apps in your Marketplace account. +- `OWNCLOUD_METRICS_SHARED_SECRET=` \ + Secret required to access the Metrics dashboard (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-metrics)). - `OWNCLOUD_MAX_EXECUTION_TIME=3600` \ Sets PHP option `max_execution_time`. It is recommended to keep the default (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/files/big_file_upload_configuration.html#configuring-via-php-global-settings)). - `OWNCLOUD_MAX_FILESIZE_ANIMATED_GIFS_PUBLIC_SHARING=` \ @@ -220,6 +262,8 @@ Maximum number of concurrent UploadPart operations allowed during the multipart upload (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/files/external_storage/s3_compatible_object_storage_as_primary.html)). - `OWNCLOUD_OBJECTSTORE_AVAILABLE_STORAGE=` \ Indicates available storage size in the objectstore in bytes (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/files/external_storage/s3_compatible_object_storage_as_primary.html)). +- `OWNCLOUD_OPENSSL_CONFIG=` \ + Path to a custom `openssl.cnf` file, e.g. when using a custom PKI or CA in the container (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-default-cipher-for-encrypting-files)). - `OWNCLOUD_OPERATION_MODE=` \ Define ownCloud operation modes (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-owncloud-operation-modes)). - `OWNCLOUD_OVERWRITE_CLI_URL=\${OWNCLOUD_PROTOCOL}://\${OWNCLOUD_DOMAIN}${OWNCLOUD_SUB_URL}` \ @@ -232,6 +276,10 @@ Override protocol (http/https) usage (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#override-protocol-httphttps-usage)). - `OWNCLOUD_OVERWRITE_WEBROOT=` \ Override ownClouds webroot (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#override-ownclouds-webroot)). +- `OWNCLOUD_PDF_VIEWER_ENABLE_SCRIPTING=` \ + Allow JavaScript execution in PDF files. Security risk — only enable if required (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-files-pdf-viewer)). +- `OWNCLOUD_POLLINTERVAL=` \ + Suggested client polling interval in milliseconds (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-ttl-for-garbage-collection)). - `OWNCLOUD_PART_FILE_IN_STORAGE=` \ Define where part files are located (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-where-part-files-are-located)). - `OWNCLOUD_POST_CRONJOB_PATH=/etc/post_cronjob.d` \ @@ -240,6 +288,8 @@ Path to custom scripts that need to be executed after an ownCoud installation command. - `OWNCLOUD_POST_SERVER_PATH=/etc/post_server.d` \ Path to custom scripts that need to be executed after an ownCloud server startup. +- `OWNCLOUD_PREVIEW_JPEG_IMAGE_DISPLAY_QUALITY=` \ + JPEG preview display quality from 1 to 100 (`-1` uses the PHP default of ~75%) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-preview-generation)). - `OWNCLOUD_PREVIEW_LIBREOFFICE_PATH=` \ Define the custom path for the LibreOffice / OpenOffice binary (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-custom-path-for-the-libreoffice-openoffice-binary)). - `OWNCLOUD_PREVIEW_MAX_DIMENSIONS=` \ @@ -262,6 +312,8 @@ Path to custom scripts that need to be executed before an ownCloud server startup. - `OWNCLOUD_PROTOCOL=http` \ Protocol used in `OWNCLOUD_OVERWRITE_CLI_URL` by default. +- `OWNCLOUD_PROXY_IGNORE=` \ + Comma-separated list of hostnames that bypass the proxy (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-url-of-your-proxy-server)). - `OWNCLOUD_PROXY=` \ Define the URL of your proxy server (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-url-of-your-proxy-server)). - `OWNCLOUD_PROXY_USERPWD=` \ @@ -314,10 +366,14 @@ Sets the PHP option `session.save_path`. If `OWNCLOUD_SESSION_SAVE_HANDLER=redis` is used, this must be set to a proper connection URL including authentication parameters if required by the redis server. It usually follows the following scheme: `tcp://IPADDRESS:PORT?auth=REDISPASSWORD`. - `OWNCLOUD_SHARE_FOLDER=` \ Define a default folder for shared files and folders other than root (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-a-default-folder-for-shared-files-and-folders-other-than-root)). +- `OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION=` \ + Show a quick-action button for creating public links in the file list (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-an-alternative-share-provider)). - `OWNCLOUD_SHARING_FEDERATION_ALLOW_HTTP_FALLBACK=` \ Allow schema fallback for federated sharing servers (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-schema-fallback-for-federated-sharing-servers)). - `OWNCLOUD_SHARING_MANAGER_FACTORY=` \ Define an alternative Share Provider (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-an-alternative-share-provider)). +- `OWNCLOUD_STRICT_LOGIN_ENFORCED=` \ + Only validate the exact login name entered by the user, not alternative formats (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enforce-token-only-authentication-for-apps-and-clients-connecting-to-owncloud)). - `OWNCLOUD_SHOW_SERVER_HOSTNAME=` \ Show or hide the server hostname in status.php (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#show-or-hide-the-server-hostname-in-status-php)). - `OWNCLOUD_SINGLEUSER=` \ @@ -336,10 +392,18 @@ URL path if ownCloud is deployed to a URL sub-path of a domain. - `OWNCLOUD_SYSTEMTAGS_MANAGER_FACTORY=` \ Define an alternative System Tags Manager (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-an-alternative-system-tags-manager)). +- `OWNCLOUD_TELEMETRY_ENABLED=` \ + Send daily telemetry reports (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-owncloud-operation-modes)). - `OWNCLOUD_TEMP_DIRECTORY=` \ Define the location for temporary files (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-location-for-temporary-files)). - `OWNCLOUD_TOKEN_AUTH_ENFORCED=` \ Enforce token only authentication for apps and clients connecting to ownCloud (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enforce-token-only-authentication-for-apps-and-clients-connecting-to-owncloud)). +- `OWNCLOUD_TRASHBIN_SKIP_DIRECTORIES=` \ + Comma-separated list of directory names that bypass the trash bin (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-trashbin-retention-obligation)). +- `OWNCLOUD_TRASHBIN_SKIP_EXTENSIONS=` \ + Comma-separated list of file extensions that bypass the trash bin (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-trashbin-retention-obligation)). +- `OWNCLOUD_TRASHBIN_SKIP_SIZE_THRESHOLD=` \ + Files larger than this size bypass the trash bin (e.g. `1GB`) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-trashbin-retention-obligation)). - `OWNCLOUD_TRASHBIN_PURGE_LIMIT=` \ Define the trashbin purge limit (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-trashbin-purge-limit)). - `OWNCLOUD_TRASHBIN_RETENTION_OBLIGATION=` \ @@ -352,8 +416,28 @@ Enable or disable updatechecker (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-updatechecker)). - `OWNCLOUD_UPGRADE_AUTOMATIC_APP_UPDATES=` \ Define whether or not to enable automatic update of market apps (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-whether-or-not-to-enable-automatic-update-of-market-apps)). +- `OWNCLOUD_USE_RELATIVE_DOMAIN_NAME=` \ + Use only the short hostname (no FQDN) in `status.php` (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#show-or-hide-the-server-hostname-in-status-php)). +- `OWNCLOUD_USER_LDAP_ENABLE_MEDIAL_SEARCH=` \ + Enable medial search in the LDAP user backend (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-ldap)). - `OWNCLOUD_USER_SEARCH_MIN_LENGTH=` \ Define minimum characters entered before a search returns results (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-minimum-characters-entered-before-a-search-returns-results)). +- `OWNCLOUD_WEB_BASEURL=` \ + Base URL for the ownCloud Web UI (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#override-cli-url)). +- `OWNCLOUD_WEB_REWRITE_LINKS=` \ + Redirect public/private links to the ownCloud Web UI (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#override-cli-url)). +- `OWNCLOUD_WORKFLOW_RETENTION_ENGINE=` \ + Retention engine for the workflow/tagging app: `tagbased` (default) or `userbased` (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-workflow-tagging)). +- `OWNCLOUD_WOPI_BUSINESS_FLOW_ENABLED=` \ + Enable the Microsoft Office 365 business flow for WOPI (`yes`/`no`) (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-microsoft-office-online-wopi)). +- `OWNCLOUD_WOPI_GROUP=` \ + Restrict Microsoft Office Online access to a specific group (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-microsoft-office-online-wopi)). +- `OWNCLOUD_WOPI_OFFICE_ONLINE_SERVER=` \ + URL of the Microsoft Office Online server (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-microsoft-office-online-wopi)). +- `OWNCLOUD_WOPI_PROXY_URL=` \ + Business proxy URL for Microsoft Office 365 (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-microsoft-office-online-wopi)). +- `OWNCLOUD_WOPI_TOKEN_KEY=` \ + Random key (minimum 32 bytes) used to sign WOPI JWT tokens (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-microsoft-office-online-wopi)). - `OWNCLOUD_VERSIONS_RETENTION_OBLIGATION=` \ Define the files versions retention obligation (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-files-versions-retention-obligation)). - `OWNCLOUD_VERSION_HIDE=` \ diff --git a/v24.04/overlay/etc/entrypoint.d/85-others.sh b/v24.04/overlay/etc/entrypoint.d/85-others.sh index a255a598..f01b1cf2 100755 --- a/v24.04/overlay/etc/entrypoint.d/85-others.sh +++ b/v24.04/overlay/etc/entrypoint.d/85-others.sh @@ -21,6 +21,18 @@ declare -x OWNCLOUD_ENABLE_AVATARS declare -x OWNCLOUD_ALLOW_USER_TO_CHANGE_DISPLAY_NAME [[ -z "${OWNCLOUD_ALLOW_USER_TO_CHANGE_DISPLAY_NAME}" ]] && OWNCLOUD_ALLOW_USER_TO_CHANGE_DISPLAY_NAME="" +declare -x OWNCLOUD_ALLOW_USER_TO_CHANGE_MAIL_ADDRESS +[[ -z "${OWNCLOUD_ALLOW_USER_TO_CHANGE_MAIL_ADDRESS}" ]] && OWNCLOUD_ALLOW_USER_TO_CHANGE_MAIL_ADDRESS="" + +declare -x OWNCLOUD_STRICT_LOGIN_ENFORCED +[[ -z "${OWNCLOUD_STRICT_LOGIN_ENFORCED}" ]] && OWNCLOUD_STRICT_LOGIN_ENFORCED="" + +declare -x OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH +[[ -z "${OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH}" ]] && OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH="" + +declare -x OWNCLOUD_USE_RELATIVE_DOMAIN_NAME +[[ -z "${OWNCLOUD_USE_RELATIVE_DOMAIN_NAME}" ]] && OWNCLOUD_USE_RELATIVE_DOMAIN_NAME="" + declare -x OWNCLOUD_REMEMBER_LOGIN_COOKIE_LIFETIME [[ -z "${OWNCLOUD_REMEMBER_LOGIN_COOKIE_LIFETIME}" ]] && OWNCLOUD_REMEMBER_LOGIN_COOKIE_LIFETIME="" @@ -78,12 +90,30 @@ declare -x OWNCLOUD_PROXY declare -x OWNCLOUD_PROXY_USERPWD [[ -z "${OWNCLOUD_PROXY_USERPWD}" ]] && OWNCLOUD_PROXY_USERPWD="" +declare -x OWNCLOUD_PROXY_IGNORE +[[ -z "${OWNCLOUD_PROXY_IGNORE}" ]] && OWNCLOUD_PROXY_IGNORE="" + +declare -x OWNCLOUD_WEB_BASEURL +[[ -z "${OWNCLOUD_WEB_BASEURL}" ]] && OWNCLOUD_WEB_BASEURL="" + +declare -x OWNCLOUD_WEB_REWRITE_LINKS +[[ -z "${OWNCLOUD_WEB_REWRITE_LINKS}" ]] && OWNCLOUD_WEB_REWRITE_LINKS="" + declare -x OWNCLOUD_TRASHBIN_RETENTION_OBLIGATION [[ -z "${OWNCLOUD_TRASHBIN_RETENTION_OBLIGATION}" ]] && OWNCLOUD_TRASHBIN_RETENTION_OBLIGATION="" declare -x OWNCLOUD_TRASHBIN_PURGE_LIMIT [[ -z "${OWNCLOUD_TRASHBIN_PURGE_LIMIT}" ]] && OWNCLOUD_TRASHBIN_PURGE_LIMIT="" +declare -x OWNCLOUD_TRASHBIN_SKIP_DIRECTORIES +[[ -z "${OWNCLOUD_TRASHBIN_SKIP_DIRECTORIES}" ]] && OWNCLOUD_TRASHBIN_SKIP_DIRECTORIES="" + +declare -x OWNCLOUD_TRASHBIN_SKIP_EXTENSIONS +[[ -z "${OWNCLOUD_TRASHBIN_SKIP_EXTENSIONS}" ]] && OWNCLOUD_TRASHBIN_SKIP_EXTENSIONS="" + +declare -x OWNCLOUD_TRASHBIN_SKIP_SIZE_THRESHOLD +[[ -z "${OWNCLOUD_TRASHBIN_SKIP_SIZE_THRESHOLD}" ]] && OWNCLOUD_TRASHBIN_SKIP_SIZE_THRESHOLD="" + declare -x OWNCLOUD_VERSIONS_RETENTION_OBLIGATION [[ -z "${OWNCLOUD_VERSIONS_RETENTION_OBLIGATION}" ]] && OWNCLOUD_VERSIONS_RETENTION_OBLIGATION="" @@ -96,6 +126,9 @@ declare -x OWNCLOUD_UPDATER_SERVER_URL declare -x OWNCLOUD_HAS_INTERNET_CONNECTION [[ -z "${OWNCLOUD_HAS_INTERNET_CONNECTION}" ]] && OWNCLOUD_HAS_INTERNET_CONNECTION="" +declare -x OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL +[[ -z "${OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL}" ]] && OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL="" + declare -x OWNCLOUD_CHECK_FOR_WORKING_WELLKNOWN_SETUP [[ -z "${OWNCLOUD_CHECK_FOR_WORKING_WELLKNOWN_SETUP}" ]] && OWNCLOUD_CHECK_FOR_WORKING_WELLKNOWN_SETUP="" @@ -234,4 +267,97 @@ declare -x OWNCLOUD_IOC_SCANNER_CONFIRMATION declare -x OWNCLOUD_ACTIVITY_EXPIRE_DAYS [[ -z "${OWNCLOUD_ACTIVITY_EXPIRE_DAYS}" ]] && OWNCLOUD_ACTIVITY_EXPIRE_DAYS="" +declare -x OWNCLOUD_MAIL_REMOVE_SENDER_DISPLAY_NAME +[[ -z "${OWNCLOUD_MAIL_REMOVE_SENDER_DISPLAY_NAME}" ]] && OWNCLOUD_MAIL_REMOVE_SENDER_DISPLAY_NAME="" + +declare -x OWNCLOUD_PREVIEW_JPEG_IMAGE_DISPLAY_QUALITY +[[ -z "${OWNCLOUD_PREVIEW_JPEG_IMAGE_DISPLAY_QUALITY}" ]] && OWNCLOUD_PREVIEW_JPEG_IMAGE_DISPLAY_QUALITY="" + +declare -x OWNCLOUD_POLLINTERVAL +[[ -z "${OWNCLOUD_POLLINTERVAL}" ]] && OWNCLOUD_POLLINTERVAL="" + +declare -x OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS +[[ -z "${OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS}" ]] && OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS="" + +declare -x OWNCLOUD_DAV_PROPFIND_DEPTH_INFINITY +[[ -z "${OWNCLOUD_DAV_PROPFIND_DEPTH_INFINITY}" ]] && OWNCLOUD_DAV_PROPFIND_DEPTH_INFINITY="" + +declare -x OWNCLOUD_BLACKLISTED_FILES_REGEX +[[ -z "${OWNCLOUD_BLACKLISTED_FILES_REGEX}" ]] && OWNCLOUD_BLACKLISTED_FILES_REGEX="" + +declare -x OWNCLOUD_EXCLUDED_DIRECTORIES_REGEX +[[ -z "${OWNCLOUD_EXCLUDED_DIRECTORIES_REGEX}" ]] && OWNCLOUD_EXCLUDED_DIRECTORIES_REGEX="" + +declare -x OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION +[[ -z "${OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION}" ]] && OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION="" + +declare -x OWNCLOUD_TELEMETRY_ENABLED +[[ -z "${OWNCLOUD_TELEMETRY_ENABLED}" ]] && OWNCLOUD_TELEMETRY_ENABLED="" + +declare -x OWNCLOUD_GRACE_PERIOD_DEMO_KEY_SHOW_POPUP +[[ -z "${OWNCLOUD_GRACE_PERIOD_DEMO_KEY_SHOW_POPUP}" ]] && OWNCLOUD_GRACE_PERIOD_DEMO_KEY_SHOW_POPUP="" + +declare -x OWNCLOUD_GRACE_PERIOD_DEMO_KEY_LINK +[[ -z "${OWNCLOUD_GRACE_PERIOD_DEMO_KEY_LINK}" ]] && OWNCLOUD_GRACE_PERIOD_DEMO_KEY_LINK="" + +declare -x OWNCLOUD_LOGIN_POLICY_ORDER +[[ -z "${OWNCLOUD_LOGIN_POLICY_ORDER}" ]] && OWNCLOUD_LOGIN_POLICY_ORDER="" + +declare -x OWNCLOUD_OPENSSL_CONFIG +[[ -z "${OWNCLOUD_OPENSSL_CONFIG}" ]] && OWNCLOUD_OPENSSL_CONFIG="" + +declare -x OWNCLOUD_DB_PLATFORM +[[ -z "${OWNCLOUD_DB_PLATFORM}" ]] && OWNCLOUD_DB_PLATFORM="" + +declare -x OWNCLOUD_ADMIN_AUDIT_GROUPS +[[ -z "${OWNCLOUD_ADMIN_AUDIT_GROUPS}" ]] && OWNCLOUD_ADMIN_AUDIT_GROUPS="" + +declare -x OWNCLOUD_ANTIVIRUS_AV_PATH +[[ -z "${OWNCLOUD_ANTIVIRUS_AV_PATH}" ]] && OWNCLOUD_ANTIVIRUS_AV_PATH="" + +declare -x OWNCLOUD_ANTIVIRUS_AV_CMD_OPTIONS +[[ -z "${OWNCLOUD_ANTIVIRUS_AV_CMD_OPTIONS}" ]] && OWNCLOUD_ANTIVIRUS_AV_CMD_OPTIONS="" + +declare -x OWNCLOUD_PDF_VIEWER_ENABLE_SCRIPTING +[[ -z "${OWNCLOUD_PDF_VIEWER_ENABLE_SCRIPTING}" ]] && OWNCLOUD_PDF_VIEWER_ENABLE_SCRIPTING="" + +declare -x OWNCLOUD_CUSTOMCLIENT_DESKTOP +[[ -z "${OWNCLOUD_CUSTOMCLIENT_DESKTOP}" ]] && OWNCLOUD_CUSTOMCLIENT_DESKTOP="" + +declare -x OWNCLOUD_CUSTOMCLIENT_ANDROID +[[ -z "${OWNCLOUD_CUSTOMCLIENT_ANDROID}" ]] && OWNCLOUD_CUSTOMCLIENT_ANDROID="" + +declare -x OWNCLOUD_CUSTOMCLIENT_IOS +[[ -z "${OWNCLOUD_CUSTOMCLIENT_IOS}" ]] && OWNCLOUD_CUSTOMCLIENT_IOS="" + +declare -x OWNCLOUD_LDAP_IGNORE_NAMING_RULES +[[ -z "${OWNCLOUD_LDAP_IGNORE_NAMING_RULES}" ]] && OWNCLOUD_LDAP_IGNORE_NAMING_RULES="" + +declare -x OWNCLOUD_USER_LDAP_ENABLE_MEDIAL_SEARCH +[[ -z "${OWNCLOUD_USER_LDAP_ENABLE_MEDIAL_SEARCH}" ]] && OWNCLOUD_USER_LDAP_ENABLE_MEDIAL_SEARCH="" + +declare -x OWNCLOUD_METRICS_SHARED_SECRET +[[ -z "${OWNCLOUD_METRICS_SHARED_SECRET}" ]] && OWNCLOUD_METRICS_SHARED_SECRET="" + +declare -x OWNCLOUD_COLLABORA_GROUP +[[ -z "${OWNCLOUD_COLLABORA_GROUP}" ]] && OWNCLOUD_COLLABORA_GROUP="" + +declare -x OWNCLOUD_WORKFLOW_RETENTION_ENGINE +[[ -z "${OWNCLOUD_WORKFLOW_RETENTION_ENGINE}" ]] && OWNCLOUD_WORKFLOW_RETENTION_ENGINE="" + +declare -x OWNCLOUD_WOPI_TOKEN_KEY +[[ -z "${OWNCLOUD_WOPI_TOKEN_KEY}" ]] && OWNCLOUD_WOPI_TOKEN_KEY="" + +declare -x OWNCLOUD_WOPI_OFFICE_ONLINE_SERVER +[[ -z "${OWNCLOUD_WOPI_OFFICE_ONLINE_SERVER}" ]] && OWNCLOUD_WOPI_OFFICE_ONLINE_SERVER="" + +declare -x OWNCLOUD_WOPI_GROUP +[[ -z "${OWNCLOUD_WOPI_GROUP}" ]] && OWNCLOUD_WOPI_GROUP="" + +declare -x OWNCLOUD_WOPI_PROXY_URL +[[ -z "${OWNCLOUD_WOPI_PROXY_URL}" ]] && OWNCLOUD_WOPI_PROXY_URL="" + +declare -x OWNCLOUD_WOPI_BUSINESS_FLOW_ENABLED +[[ -z "${OWNCLOUD_WOPI_BUSINESS_FLOW_ENABLED}" ]] && OWNCLOUD_WOPI_BUSINESS_FLOW_ENABLED="" + true diff --git a/v24.04/overlay/etc/templates/config.php b/v24.04/overlay/etc/templates/config.php index 2d819038..d9363fae 100644 --- a/v24.04/overlay/etc/templates/config.php +++ b/v24.04/overlay/etc/templates/config.php @@ -39,6 +39,7 @@ function getConfigFromEnv() { ], 'upgrade.disable-web' => true, + 'web-updater.enabled' => false, ]; if (getenv('OWNCLOUD_IOC_SCANNER_CONFIRMATION') != '') { @@ -77,6 +78,22 @@ function getConfigFromEnv() { $config['allow_user_to_change_display_name'] = getenv('OWNCLOUD_ALLOW_USER_TO_CHANGE_DISPLAY_NAME') === 'true'; } + if (getenv('OWNCLOUD_ALLOW_USER_TO_CHANGE_MAIL_ADDRESS') != '') { + $config['allow_user_to_change_mail_address'] = getenv('OWNCLOUD_ALLOW_USER_TO_CHANGE_MAIL_ADDRESS') === 'true'; + } + + if (getenv('OWNCLOUD_STRICT_LOGIN_ENFORCED') != '') { + $config['strict_login_enforced'] = getenv('OWNCLOUD_STRICT_LOGIN_ENFORCED') === 'true'; + } + + if (getenv('OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH') != '') { + $config['groups.enable_medial_search'] = getenv('OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH') === 'true'; + } + + if (getenv('OWNCLOUD_USE_RELATIVE_DOMAIN_NAME') != '') { + $config['use_relative_domain_name'] = getenv('OWNCLOUD_USE_RELATIVE_DOMAIN_NAME') === 'true'; + } + if (getenv('OWNCLOUD_REMEMBER_LOGIN_COOKIE_LIFETIME') != '') { $config['remember_login_cookie_lifetime'] = (int) getenv('OWNCLOUD_REMEMBER_LOGIN_COOKIE_LIFETIME'); } @@ -161,6 +178,10 @@ function getConfigFromEnv() { $config['mail_smtppassword'] = getenv('OWNCLOUD_MAIL_SMTP_PASSWORD'); } + if (getenv('OWNCLOUD_MAIL_REMOVE_SENDER_DISPLAY_NAME') != '') { + $config['remove_sender_display_name'] = getenv('OWNCLOUD_MAIL_REMOVE_SENDER_DISPLAY_NAME') === 'true'; + } + if (getenv('OWNCLOUD_OVERWRITE_HOST') != '') { $config['overwritehost'] = getenv('OWNCLOUD_OVERWRITE_HOST'); } @@ -193,6 +214,18 @@ function getConfigFromEnv() { $config['proxyuserpwd'] = getenv('OWNCLOUD_PROXY_USERPWD'); } + if (getenv('OWNCLOUD_PROXY_IGNORE') != '') { + $config['proxy_ignore'] = explode(',', getenv('OWNCLOUD_PROXY_IGNORE')); + } + + if (getenv('OWNCLOUD_WEB_BASEURL') != '') { + $config['web.baseUrl'] = getenv('OWNCLOUD_WEB_BASEURL'); + } + + if (getenv('OWNCLOUD_WEB_REWRITE_LINKS') != '') { + $config['web.rewriteLinks'] = getenv('OWNCLOUD_WEB_REWRITE_LINKS') === 'true'; + } + if (getenv('OWNCLOUD_TRASHBIN_RETENTION_OBLIGATION') != '') { $config['trashbin_retention_obligation'] = getenv('OWNCLOUD_TRASHBIN_RETENTION_OBLIGATION'); } @@ -201,6 +234,18 @@ function getConfigFromEnv() { $config['trashbin_purge_limit'] = (int) getenv('OWNCLOUD_TRASHBIN_PURGE_LIMIT'); } + if (getenv('OWNCLOUD_TRASHBIN_SKIP_DIRECTORIES') != '') { + $config['trashbin_skip_directories'] = explode(',', getenv('OWNCLOUD_TRASHBIN_SKIP_DIRECTORIES')); + } + + if (getenv('OWNCLOUD_TRASHBIN_SKIP_EXTENSIONS') != '') { + $config['trashbin_skip_extensions'] = explode(',', getenv('OWNCLOUD_TRASHBIN_SKIP_EXTENSIONS')); + } + + if (getenv('OWNCLOUD_TRASHBIN_SKIP_SIZE_THRESHOLD') != '') { + $config['trashbin_skip_size_threshold'] = getenv('OWNCLOUD_TRASHBIN_SKIP_SIZE_THRESHOLD'); + } + if (getenv('OWNCLOUD_VERSIONS_RETENTION_OBLIGATION') != '') { $config['versions_retention_obligation'] = getenv('OWNCLOUD_VERSIONS_RETENTION_OBLIGATION'); } @@ -221,6 +266,10 @@ function getConfigFromEnv() { $config['has_internet_connection'] = getenv('OWNCLOUD_HAS_INTERNET_CONNECTION') === 'true'; } + if (getenv('OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL') != '') { + $config['internet_connectivity_detect_url'] = getenv('OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL'); + } + if (getenv('OWNCLOUD_CHECK_FOR_WORKING_WELLKNOWN_SETUP') != '') { $config['check_for_working_wellknown_setup'] = getenv('OWNCLOUD_CHECK_FOR_WORKING_WELLKNOWN_SETUP') === 'true'; } @@ -273,6 +322,10 @@ function getConfigFromEnv() { $config['preview_max_filesize_image'] = getenv('OWNCLOUD_PREVIEW_MAX_FILESIZE_IMAGE'); } + if (getenv('OWNCLOUD_PREVIEW_JPEG_IMAGE_DISPLAY_QUALITY') != '') { + $config['previewJPEGImageDisplayQuality'] = (int) getenv('OWNCLOUD_PREVIEW_JPEG_IMAGE_DISPLAY_QUALITY'); + } + if (getenv('OWNCLOUD_PREVIEW_LIBREOFFICE_PATH') != '') { $config['preview_libreoffice_path'] = getenv('OWNCLOUD_PREVIEW_LIBREOFFICE_PATH'); } @@ -426,7 +479,7 @@ function getConfigFromEnv() { } if (getenv('OWNCLOUD_FILELOCKING_TTL') != '') { - $config['filelocking.ttl'] = getenv('OWNCLOUD_FILELOCKING_TTL'); + $config['filelocking.ttl'] = (int) getenv('OWNCLOUD_FILELOCKING_TTL'); } if (getenv('OWNCLOUD_MEMCACHE_LOCKING') != '') { @@ -453,6 +506,42 @@ function getConfigFromEnv() { $config['dav.enable.async'] = getenv('OWNCLOUD_DAV_ENABLE_ASYNC'); } + if (getenv('OWNCLOUD_DAV_PROPFIND_DEPTH_INFINITY') != '') { + $config['dav.propfind.depth_infinity'] = getenv('OWNCLOUD_DAV_PROPFIND_DEPTH_INFINITY') === 'true'; + } + + if (getenv('OWNCLOUD_POLLINTERVAL') != '') { + $config['pollinterval'] = (int) getenv('OWNCLOUD_POLLINTERVAL'); + } + + if (getenv('OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS') != '') { + $config['filesystem.max_mountpoint_move_attempts'] = (int) getenv('OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS'); + } + + if (getenv('OWNCLOUD_BLACKLISTED_FILES_REGEX') != '') { + $config['blacklisted_files_regex'] = explode(',', getenv('OWNCLOUD_BLACKLISTED_FILES_REGEX')); + } + + if (getenv('OWNCLOUD_EXCLUDED_DIRECTORIES_REGEX') != '') { + $config['excluded_directories_regex'] = explode(',', getenv('OWNCLOUD_EXCLUDED_DIRECTORIES_REGEX')); + } + + if (getenv('OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION') != '') { + $config['sharing.showPublicLinkQuickAction'] = getenv('OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION') === 'true'; + } + + if (getenv('OWNCLOUD_TELEMETRY_ENABLED') != '') { + $config['telemetry.enabled'] = getenv('OWNCLOUD_TELEMETRY_ENABLED') === 'true'; + } + + if (getenv('OWNCLOUD_GRACE_PERIOD_DEMO_KEY_SHOW_POPUP') != '') { + $config['grace_period.demo_key.show_popup'] = getenv('OWNCLOUD_GRACE_PERIOD_DEMO_KEY_SHOW_POPUP') === 'true'; + } + + if (getenv('OWNCLOUD_GRACE_PERIOD_DEMO_KEY_LINK') != '') { + $config['grace_period.demo_key.link'] = getenv('OWNCLOUD_GRACE_PERIOD_DEMO_KEY_LINK'); + } + if (getenv('OWNCLOUD_LICENSE_KEY') != '') { $config['license-key'] = getenv('OWNCLOUD_LICENSE_KEY'); } @@ -490,6 +579,95 @@ function getConfigFromEnv() { } } + if (getenv('OWNCLOUD_LOGIN_POLICY_ORDER') != '') { + $config['loginPolicy.order'] = explode(',', getenv('OWNCLOUD_LOGIN_POLICY_ORDER')); + } + + if (getenv('OWNCLOUD_OPENSSL_CONFIG') != '') { + $config['openssl'] = ['config' => getenv('OWNCLOUD_OPENSSL_CONFIG')]; + } + + if (getenv('OWNCLOUD_DB_PLATFORM') != '') { + $config['db.platform'] = getenv('OWNCLOUD_DB_PLATFORM'); + } + + // app: activity + if (getenv('OWNCLOUD_ADMIN_AUDIT_GROUPS') != '') { + $config['admin_audit.groups'] = explode(',', getenv('OWNCLOUD_ADMIN_AUDIT_GROUPS')); + } + + // app: files_antivirus + if (getenv('OWNCLOUD_ANTIVIRUS_AV_PATH') != '') { + $config['files_antivirus.av_path'] = getenv('OWNCLOUD_ANTIVIRUS_AV_PATH'); + } + + if (getenv('OWNCLOUD_ANTIVIRUS_AV_CMD_OPTIONS') != '') { + $config['files_antivirus.av_cmd_options'] = getenv('OWNCLOUD_ANTIVIRUS_AV_CMD_OPTIONS'); + } + + // app: files_pdfviewer + if (getenv('OWNCLOUD_PDF_VIEWER_ENABLE_SCRIPTING') != '') { + $config['files_pdfviewer.enableScripting'] = getenv('OWNCLOUD_PDF_VIEWER_ENABLE_SCRIPTING'); + } + + // app: firstrunwizard + if (getenv('OWNCLOUD_CUSTOMCLIENT_DESKTOP') != '') { + $config['customclient_desktop'] = getenv('OWNCLOUD_CUSTOMCLIENT_DESKTOP'); + } + + if (getenv('OWNCLOUD_CUSTOMCLIENT_ANDROID') != '') { + $config['customclient_android'] = getenv('OWNCLOUD_CUSTOMCLIENT_ANDROID'); + } + + if (getenv('OWNCLOUD_CUSTOMCLIENT_IOS') != '') { + $config['customclient_ios'] = getenv('OWNCLOUD_CUSTOMCLIENT_IOS'); + } + + // app: user_ldap + if (getenv('OWNCLOUD_LDAP_IGNORE_NAMING_RULES') != '') { + $config['ldapIgnoreNamingRules'] = getenv('OWNCLOUD_LDAP_IGNORE_NAMING_RULES') === 'true'; + } + + if (getenv('OWNCLOUD_USER_LDAP_ENABLE_MEDIAL_SEARCH') != '') { + $config['user_ldap.enable_medial_search'] = getenv('OWNCLOUD_USER_LDAP_ENABLE_MEDIAL_SEARCH') === 'true'; + } + + // app: metrics (enterprise) + if (getenv('OWNCLOUD_METRICS_SHARED_SECRET') != '') { + $config['metrics_shared_secret'] = getenv('OWNCLOUD_METRICS_SHARED_SECRET'); + } + + // app: richdocuments + if (getenv('OWNCLOUD_COLLABORA_GROUP') != '') { + $config['collabora_group'] = getenv('OWNCLOUD_COLLABORA_GROUP'); + } + + // app: workflow (enterprise) + if (getenv('OWNCLOUD_WORKFLOW_RETENTION_ENGINE') != '') { + $config['workflow.retention_engine'] = getenv('OWNCLOUD_WORKFLOW_RETENTION_ENGINE'); + } + + // app: wopi / microsoft office online (enterprise) + if (getenv('OWNCLOUD_WOPI_TOKEN_KEY') != '') { + $config['wopi.token.key'] = getenv('OWNCLOUD_WOPI_TOKEN_KEY'); + } + + if (getenv('OWNCLOUD_WOPI_OFFICE_ONLINE_SERVER') != '') { + $config['wopi.office-online.server'] = getenv('OWNCLOUD_WOPI_OFFICE_ONLINE_SERVER'); + } + + if (getenv('OWNCLOUD_WOPI_GROUP') != '') { + $config['wopi_group'] = getenv('OWNCLOUD_WOPI_GROUP'); + } + + if (getenv('OWNCLOUD_WOPI_PROXY_URL') != '') { + $config['wopi.proxy.url'] = getenv('OWNCLOUD_WOPI_PROXY_URL'); + } + + if (getenv('OWNCLOUD_WOPI_BUSINESS_FLOW_ENABLED') != '') { + $config['wopi.business-flow.enabled'] = getenv('OWNCLOUD_WOPI_BUSINESS_FLOW_ENABLED'); + } + switch (true) { case getenv('OWNCLOUD_REDIS_ENABLED') && getenv('OWNCLOUD_REDIS_ENABLED') === 'true': $config = array_merge_recursive($config, [ From 128246f1372e6ca821ead5a7a1d25d4a82f6dbe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= <1005065+DeepDiver1975@users.noreply.github.com> Date: Thu, 11 Jun 2026 15:57:50 +0200 Subject: [PATCH 2/5] fix(config): fix comment typo and alphabetical ordering in ENVIRONMENT.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix wrong comment '// app: activity' -> '// app: admin_audit' in config.php - Fix alphabetical ordering of new env vars in ENVIRONMENT.md Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: Thomas Müller <1005065+DeepDiver1975@users.noreply.github.com> --- ENVIRONMENT.md | 36 ++++++++++++------------- v24.04/overlay/etc/templates/config.php | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md index c81ad469..b5579bf8 100644 --- a/ENVIRONMENT.md +++ b/ENVIRONMENT.md @@ -8,12 +8,12 @@ Allow medial search on user account properties (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-medial-search-on-user-account-properties)). - `OWNCLOUD_ACTIVITY_EXPIRE_DAYS=` \ Activity expiration in days (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-activity)). +- `OWNCLOUD_ADMIN_AUDIT_GROUPS=` \ + Restrict audit logging to specific groups. Comma-separated list of group names (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-admin-audit)). - `OWNCLOUD_ANTIVIRUS_AV_CMD_OPTIONS=` \ Command line options for the clamscan antivirus scanner (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-files-antivirus)). - `OWNCLOUD_ANTIVIRUS_AV_PATH=` \ Path to the clamscan binary in the container (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-files-antivirus)). -- `OWNCLOUD_ADMIN_AUDIT_GROUPS=` \ - Restrict audit logging to specific groups. Comma-separated list of group names (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-admin-audit)). - `OWNCLOUD_ADMIN_PASSWORD=admin` \ ownCloud admin password. - `OWNCLOUD_ADMIN_USERNAME=admin` \ @@ -74,8 +74,6 @@ Enable or disable async DAV extensions (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-async-dav-extensions)). - `OWNCLOUD_DAV_PROPFIND_DEPTH_INFINITY=` \ Allow Depth: infinity PROPFIND requests (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-async-dav-extensions)). -- `OWNCLOUD_DB_PLATFORM=` \ - Force a specific Doctrine DBAL platform class, e.g. for MariaDB compatibility (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#identify-the-database-used-with-this-installation)). - `OWNCLOUD_DB_FAIL=true` \ Exit container if the database can't reached during the startup. - `OWNCLOUD_DB_HOST=` \ @@ -88,6 +86,8 @@ Define the prefix for the ownCloud tables in the database (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-prefix-for-the-owncloud-tables-in-the-database)). - `OWNCLOUD_DB_TIMEOUT=180` \ Time to wait for a successful connection to the database on container startup. +- `OWNCLOUD_DB_PLATFORM=` \ + Force a specific Doctrine DBAL platform class, e.g. for MariaDB compatibility (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#identify-the-database-used-with-this-installation)). - `OWNCLOUD_DB_TYPE=sqlite` \ Identify the database used with this installation (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#identify-the-database-used-with-this-installation)). - `OWNCLOUD_DB_USERNAME=` \ @@ -124,28 +124,28 @@ Enable transactional file locking (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-transactional-file-locking)). - `OWNCLOUD_FILELOCKING_TTL=` \ Define the TTL for file locking (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-ttl-for-file-locking)). -- `OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS=` \ - Maximum number of failed mountpoint rename attempts before giving up (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-how-often-filesystem-changes-are-detected)). - `OWNCLOUD_FILESYSTEM_CACHE_READONLY=` \ Prevent cache changes due to changes in the filesystem (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#prevent-cache-changes-due-to-changes-in-the-filesystem)). - `OWNCLOUD_FILESYSTEM_CHECK_CHANGES=` \ Define how often filesystem changes are detected (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-how-often-filesystem-changes-are-detected)). +- `OWNCLOUD_FILESYSTEM_MAX_MOUNTPOINT_MOVE_ATTEMPTS=` \ + Maximum number of failed mountpoint rename attempts before giving up (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-how-often-filesystem-changes-are-detected)). - `OWNCLOUD_FILES_EXTERNAL_ALLOW_NEW_LOCAL=${OWNCLOUD_ALLOW_EXTERNAL_LOCAL_STORAGE}` \ Enable or disable the files_external local mount option (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-the-files_external-local-mount-option)). - `OWNCLOUD_GRACE_PERIOD_DEMO_KEY_LINK=` \ Override the link shown in the grace period popup (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/enterprise/installation/install.html#license-keys)). - `OWNCLOUD_GRACE_PERIOD_DEMO_KEY_SHOW_POPUP=` \ Show or hide the grace period demo key popup (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/enterprise/installation/install.html#license-keys)). -- `OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH=` \ - Allow medial search on group IDs (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-medial-search-on-user-account-properties)). - `OWNCLOUD_FORWARDED_FOR_HEADERS=` \ Define forwarded_for_headers (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-forwarded_for_headers)). +- `OWNCLOUD_GROUPS_ENABLE_MEDIAL_SEARCH=` \ + Allow medial search on group IDs (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-medial-search-on-user-account-properties)). - `OWNCLOUD_HASHING_COST=` \ Define the hashing cost (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-hashing-cost)). -- `OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL=` \ - URL used to detect internet connectivity (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#check-for-an-internet-connection)). - `OWNCLOUD_HAS_INTERNET_CONNECTION=` \ Check for an internet connection (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#check-for-an-internet-connection)). +- `OWNCLOUD_INTERNET_CONNECTIVITY_DETECT_URL=` \ + URL used to detect internet connectivity (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#check-for-an-internet-connection)). - `OWNCLOUD_HTACCESS_REWRITE_BASE=${OWNCLOUD_SUB_URL}` \ Define clean URLs without /index.php (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-clean-urls-without-index-php)). - `OWNCLOUD_HTTP_COOKIE_SAMESITE=` \ @@ -161,10 +161,10 @@ - `OWNCLOUD_LICENSE_KEY=` \ ownCloud Enterprise License Key (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/enterprise/installation/install.html#license-keys)). - `OWNCLOUD_LICENSE_CLASS=` -- `OWNCLOUD_LOGIN_POLICY_ORDER=` \ - Ordered list of login policy class names. Comma-separated (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-additional-login-buttons-on-the-logon-screen)). - `OWNCLOUD_LOGIN_ALTERNATIVES=` \ Define additional login buttons on the logon screen (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-additional-login-buttons-on-the-logon-screen)). +- `OWNCLOUD_LOGIN_POLICY_ORDER=` \ + Ordered list of login policy class names. Comma-separated (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-additional-login-buttons-on-the-logon-screen)). - `OWNCLOUD_LOG_DATE_FORMAT=` \ Define the log date format (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-log-date-format)). - `OWNCLOUD_LOG_FILE=${OWNCLOUD_VOLUME_FILES}/owncloud.log` \ @@ -278,10 +278,10 @@ Override ownClouds webroot (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#override-ownclouds-webroot)). - `OWNCLOUD_PDF_VIEWER_ENABLE_SCRIPTING=` \ Allow JavaScript execution in PDF files. Security risk — only enable if required (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-files-pdf-viewer)). -- `OWNCLOUD_POLLINTERVAL=` \ - Suggested client polling interval in milliseconds (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-ttl-for-garbage-collection)). - `OWNCLOUD_PART_FILE_IN_STORAGE=` \ Define where part files are located (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-where-part-files-are-located)). +- `OWNCLOUD_POLLINTERVAL=` \ + Suggested client polling interval in milliseconds (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-ttl-for-garbage-collection)). - `OWNCLOUD_POST_CRONJOB_PATH=/etc/post_cronjob.d` \ Path to custom scripts that need to be executed after a cron run. - `OWNCLOUD_POST_INSTALL_PATH=/etc/post_install.d` \ @@ -366,14 +366,12 @@ Sets the PHP option `session.save_path`. If `OWNCLOUD_SESSION_SAVE_HANDLER=redis` is used, this must be set to a proper connection URL including authentication parameters if required by the redis server. It usually follows the following scheme: `tcp://IPADDRESS:PORT?auth=REDISPASSWORD`. - `OWNCLOUD_SHARE_FOLDER=` \ Define a default folder for shared files and folders other than root (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-a-default-folder-for-shared-files-and-folders-other-than-root)). -- `OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION=` \ - Show a quick-action button for creating public links in the file list (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-an-alternative-share-provider)). - `OWNCLOUD_SHARING_FEDERATION_ALLOW_HTTP_FALLBACK=` \ Allow schema fallback for federated sharing servers (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#allow-schema-fallback-for-federated-sharing-servers)). - `OWNCLOUD_SHARING_MANAGER_FACTORY=` \ Define an alternative Share Provider (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-an-alternative-share-provider)). -- `OWNCLOUD_STRICT_LOGIN_ENFORCED=` \ - Only validate the exact login name entered by the user, not alternative formats (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enforce-token-only-authentication-for-apps-and-clients-connecting-to-owncloud)). +- `OWNCLOUD_SHARING_SHOW_PUBLIC_LINK_QUICK_ACTION=` \ + Show a quick-action button for creating public links in the file list (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-an-alternative-share-provider)). - `OWNCLOUD_SHOW_SERVER_HOSTNAME=` \ Show or hide the server hostname in status.php (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#show-or-hide-the-server-hostname-in-status-php)). - `OWNCLOUD_SINGLEUSER=` \ @@ -388,6 +386,8 @@ Enable or disable debug logging for SMB access (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enable-or-disable-debug-logging-for-smb-access)). - `OWNCLOUD_SQLITE_JOURNAL_MODE=` \ Define sqlite3 journal mode (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-sqlite3-journal-mode)). +- `OWNCLOUD_STRICT_LOGIN_ENFORCED=` \ + Only validate the exact login name entered by the user, not alternative formats (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#enforce-token-only-authentication-for-apps-and-clients-connecting-to-owncloud)). - `OWNCLOUD_SUB_URL=/` \ URL path if ownCloud is deployed to a URL sub-path of a domain. - `OWNCLOUD_SYSTEMTAGS_MANAGER_FACTORY=` \ diff --git a/v24.04/overlay/etc/templates/config.php b/v24.04/overlay/etc/templates/config.php index d9363fae..7af0bf18 100644 --- a/v24.04/overlay/etc/templates/config.php +++ b/v24.04/overlay/etc/templates/config.php @@ -591,7 +591,7 @@ function getConfigFromEnv() { $config['db.platform'] = getenv('OWNCLOUD_DB_PLATFORM'); } - // app: activity + // app: admin_audit if (getenv('OWNCLOUD_ADMIN_AUDIT_GROUPS') != '') { $config['admin_audit.groups'] = explode(',', getenv('OWNCLOUD_ADMIN_AUDIT_GROUPS')); } From e846dd58c846289c63cc8936dd1f290cfd862e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= <1005065+DeepDiver1975@users.noreply.github.com> Date: Thu, 11 Jun 2026 16:44:41 +0200 Subject: [PATCH 3/5] feat(config): add OWNCLOUD_REDIS_TLS_* env vars for Redis TLS connections MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expose the full set of phpredis connection_parameters stream context options as OWNCLOUD_REDIS_TLS_* env vars, enabling TLS/mTLS connections to Redis without manually editing config.php. Single-server: options placed under redis.connection_parameters.stream.* Cluster: options placed flat in redis.cluster.connection_parameters.* (difference follows phpredis/ownCloud upstream structure) New variables: OWNCLOUD_REDIS_TLS_CAFILE, OWNCLOUD_REDIS_TLS_CAPATH, OWNCLOUD_REDIS_TLS_LOCAL_CERT, OWNCLOUD_REDIS_TLS_LOCAL_PK, OWNCLOUD_REDIS_TLS_PASSPHRASE, OWNCLOUD_REDIS_TLS_CIPHERS, OWNCLOUD_REDIS_TLS_PEER_NAME, OWNCLOUD_REDIS_TLS_VERIFY_PEER, OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME, OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: Thomas Müller <1005065+DeepDiver1975@users.noreply.github.com> --- ENVIRONMENT.md | 20 ++++++ v24.04/overlay/etc/entrypoint.d/25-redis.sh | 30 ++++++++ v24.04/overlay/etc/templates/config.php | 80 +++++++++++++++++++++ 3 files changed, 130 insertions(+) diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md index b5579bf8..b974bc42 100644 --- a/ENVIRONMENT.md +++ b/ENVIRONMENT.md @@ -346,6 +346,26 @@ Time to wait for a successful connection to the redis service on container startup. - `OWNCLOUD_REDIS_TIMEOUT=` \ Sets the redis timeout value (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-redis-cluster-connection-details)). +- `OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED=` \ + Allow self-signed certificates on the Redis server (`true`/`false`) (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_CAFILE=` \ + Path to CA certificate file for TLS-secured Redis connections (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_CAPATH=` \ + Directory containing CA certificates for TLS-secured Redis connections (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_CIPHERS=` \ + OpenSSL cipher list for Redis TLS connections (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_LOCAL_CERT=` \ + Path to client certificate file for mutual TLS to Redis (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_LOCAL_PK=` \ + Path to client private key file for mutual TLS to Redis (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_PASSPHRASE=` \ + Passphrase for an encrypted Redis client private key (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_PEER_NAME=` \ + Expected hostname in the Redis server certificate, overrides the connection host for SNI (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_VERIFY_PEER=` \ + Validate the Redis server certificate against the CA (`true`/`false`) (see [phpredis docs](https://github.com/phpredis/phpredis)). +- `OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME=` \ + Validate that the Redis server certificate CN/SAN matches the peer name (`true`/`false`) (see [phpredis docs](https://github.com/phpredis/phpredis)). - `OWNCLOUD_REMEMBER_LOGIN_COOKIE_LIFETIME=` \ Define the lifetime of the remember-login cookie (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-lifetime-of-the-remember-login-cookie)). - `OWNCLOUD_SAVE_VERSION_METADATA=` \ diff --git a/v24.04/overlay/etc/entrypoint.d/25-redis.sh b/v24.04/overlay/etc/entrypoint.d/25-redis.sh index e0b74618..ebc33421 100755 --- a/v24.04/overlay/etc/entrypoint.d/25-redis.sh +++ b/v24.04/overlay/etc/entrypoint.d/25-redis.sh @@ -21,4 +21,34 @@ declare -x OWNCLOUD_REDIS_TIMEOUT declare -x OWNCLOUD_REDIS_STARTUP_TIMEOUT [[ -z "${OWNCLOUD_REDIS_STARTUP_TIMEOUT}" ]] && OWNCLOUD_REDIS_STARTUP_TIMEOUT="180" +declare -x OWNCLOUD_REDIS_TLS_CAFILE +[[ -z "${OWNCLOUD_REDIS_TLS_CAFILE}" ]] && OWNCLOUD_REDIS_TLS_CAFILE="" + +declare -x OWNCLOUD_REDIS_TLS_CAPATH +[[ -z "${OWNCLOUD_REDIS_TLS_CAPATH}" ]] && OWNCLOUD_REDIS_TLS_CAPATH="" + +declare -x OWNCLOUD_REDIS_TLS_LOCAL_CERT +[[ -z "${OWNCLOUD_REDIS_TLS_LOCAL_CERT}" ]] && OWNCLOUD_REDIS_TLS_LOCAL_CERT="" + +declare -x OWNCLOUD_REDIS_TLS_LOCAL_PK +[[ -z "${OWNCLOUD_REDIS_TLS_LOCAL_PK}" ]] && OWNCLOUD_REDIS_TLS_LOCAL_PK="" + +declare -x OWNCLOUD_REDIS_TLS_PASSPHRASE +[[ -z "${OWNCLOUD_REDIS_TLS_PASSPHRASE}" ]] && OWNCLOUD_REDIS_TLS_PASSPHRASE="" + +declare -x OWNCLOUD_REDIS_TLS_CIPHERS +[[ -z "${OWNCLOUD_REDIS_TLS_CIPHERS}" ]] && OWNCLOUD_REDIS_TLS_CIPHERS="" + +declare -x OWNCLOUD_REDIS_TLS_PEER_NAME +[[ -z "${OWNCLOUD_REDIS_TLS_PEER_NAME}" ]] && OWNCLOUD_REDIS_TLS_PEER_NAME="" + +declare -x OWNCLOUD_REDIS_TLS_VERIFY_PEER +[[ -z "${OWNCLOUD_REDIS_TLS_VERIFY_PEER}" ]] && OWNCLOUD_REDIS_TLS_VERIFY_PEER="" + +declare -x OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME +[[ -z "${OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME}" ]] && OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME="" + +declare -x OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED +[[ -z "${OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED}" ]] && OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED="" + true diff --git a/v24.04/overlay/etc/templates/config.php b/v24.04/overlay/etc/templates/config.php index 7af0bf18..e8856807 100644 --- a/v24.04/overlay/etc/templates/config.php +++ b/v24.04/overlay/etc/templates/config.php @@ -701,6 +701,46 @@ function getConfigFromEnv() { } } + if (getenv('OWNCLOUD_REDIS_TLS_CAFILE') != '') { + $config['redis.cluster']['connection_parameters']['cafile'] = getenv('OWNCLOUD_REDIS_TLS_CAFILE'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_CAPATH') != '') { + $config['redis.cluster']['connection_parameters']['capath'] = getenv('OWNCLOUD_REDIS_TLS_CAPATH'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_LOCAL_CERT') != '') { + $config['redis.cluster']['connection_parameters']['local_cert'] = getenv('OWNCLOUD_REDIS_TLS_LOCAL_CERT'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_LOCAL_PK') != '') { + $config['redis.cluster']['connection_parameters']['local_pk'] = getenv('OWNCLOUD_REDIS_TLS_LOCAL_PK'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_PASSPHRASE') != '') { + $config['redis.cluster']['connection_parameters']['passphrase'] = getenv('OWNCLOUD_REDIS_TLS_PASSPHRASE'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_CIPHERS') != '') { + $config['redis.cluster']['connection_parameters']['ciphers'] = getenv('OWNCLOUD_REDIS_TLS_CIPHERS'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_PEER_NAME') != '') { + $config['redis.cluster']['connection_parameters']['peer_name'] = getenv('OWNCLOUD_REDIS_TLS_PEER_NAME'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER') != '') { + $config['redis.cluster']['connection_parameters']['verify_peer'] = getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER') === 'true'; + } + + if (getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME') != '') { + $config['redis.cluster']['connection_parameters']['verify_peer_name'] = getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME') === 'true'; + } + + if (getenv('OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED') != '') { + $config['redis.cluster']['connection_parameters']['allow_self_signed'] = getenv('OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED') === 'true'; + } + case getenv('OWNCLOUD_REDIS_HOST') != '' && getenv('OWNCLOUD_REDIS_SEEDS') == '': $config['redis']['host'] = getenv('OWNCLOUD_REDIS_HOST'); $config['redis']['port'] = getenv('OWNCLOUD_REDIS_PORT'); @@ -716,6 +756,46 @@ function getConfigFromEnv() { if (getenv('OWNCLOUD_REDIS_TIMEOUT') != '') { $config['redis']['timeout'] = (float) getenv('OWNCLOUD_REDIS_TIMEOUT'); } + + if (getenv('OWNCLOUD_REDIS_TLS_CAFILE') != '') { + $config['redis']['connection_parameters']['stream']['cafile'] = getenv('OWNCLOUD_REDIS_TLS_CAFILE'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_CAPATH') != '') { + $config['redis']['connection_parameters']['stream']['capath'] = getenv('OWNCLOUD_REDIS_TLS_CAPATH'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_LOCAL_CERT') != '') { + $config['redis']['connection_parameters']['stream']['local_cert'] = getenv('OWNCLOUD_REDIS_TLS_LOCAL_CERT'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_LOCAL_PK') != '') { + $config['redis']['connection_parameters']['stream']['local_pk'] = getenv('OWNCLOUD_REDIS_TLS_LOCAL_PK'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_PASSPHRASE') != '') { + $config['redis']['connection_parameters']['stream']['passphrase'] = getenv('OWNCLOUD_REDIS_TLS_PASSPHRASE'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_CIPHERS') != '') { + $config['redis']['connection_parameters']['stream']['ciphers'] = getenv('OWNCLOUD_REDIS_TLS_CIPHERS'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_PEER_NAME') != '') { + $config['redis']['connection_parameters']['stream']['peer_name'] = getenv('OWNCLOUD_REDIS_TLS_PEER_NAME'); + } + + if (getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER') != '') { + $config['redis']['connection_parameters']['stream']['verify_peer'] = getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER') === 'true'; + } + + if (getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME') != '') { + $config['redis']['connection_parameters']['stream']['verify_peer_name'] = getenv('OWNCLOUD_REDIS_TLS_VERIFY_PEER_NAME') === 'true'; + } + + if (getenv('OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED') != '') { + $config['redis']['connection_parameters']['stream']['allow_self_signed'] = getenv('OWNCLOUD_REDIS_TLS_ALLOW_SELF_SIGNED') === 'true'; + } } break; From dc36100e28151417509ce17b32ca9c349b689264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= <1005065+DeepDiver1975@users.noreply.github.com> Date: Thu, 11 Jun 2026 17:05:01 +0200 Subject: [PATCH 4/5] feat(config): remove memcache env vars from v24.04 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Docker image does not ship a memcached client library, so the OWNCLOUD_MEMCACHED_* and OWNCLOUD_MEMCACHE_* env vars are dead config. Remove the full memcached branch from config.php, the declarations from 20-memcached.sh, 45-caching.sh, and 85-others.sh, and the entries from ENVIRONMENT.md. Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: Thomas Müller <1005065+DeepDiver1975@users.noreply.github.com> --- ENVIRONMENT.md | 14 --------- .../overlay/etc/entrypoint.d/20-memcached.sh | 15 ---------- v24.04/overlay/etc/entrypoint.d/45-caching.sh | 3 -- v24.04/overlay/etc/entrypoint.d/85-others.sh | 3 -- v24.04/overlay/etc/templates/config.php | 30 ------------------- 5 files changed, 65 deletions(-) diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md index b974bc42..e9b2ff47 100644 --- a/ENVIRONMENT.md +++ b/ENVIRONMENT.md @@ -219,20 +219,6 @@ Sets PHP option `max_input_time`. It is recommended to keep the default (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/files/big_file_upload_configuration.html#configuring-via-php-global-settings)). - `OWNCLOUD_MAX_UPLOAD=20G` \ Sets PHP option `upload_max_filesize` and `post_max_size`. It is recommended to keep the default (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/files/big_file_upload_configuration.html#configuring-via-php-global-settings)). -- `OWNCLOUD_MEMCACHED_ENABLED=false` \ - Enabled memory caching via memcached (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#memory-caching-backend-for-distributed-data)). -- `OWNCLOUD_MEMCACHED_HOST=memcached` \ - Defines the hosts for memcached (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-server-details-for-memcached-servers-to-use-for-memory-caching)). -- `OWNCLOUD_MEMCACHED_OPTIONS=` \ - Define connection options for memcached (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-connection-options-for-memcached)). -- `OWNCLOUD_MEMCACHED_PORT=11211` \ - Defines the ports for memcached (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-server-details-for-memcached-servers-to-use-for-memory-caching)). -- `OWNCLOUD_MEMCACHED_STARTUP_TIMEOUT=180` \ - Time to wait for a successful connection to the memcached service on container startup. -- `OWNCLOUD_MEMCACHE_LOCAL=${OWNCLOUD_CACHING_CLASS:-\\OC\\Memcache\\APCu}` \ - Memory caching backend for locally stored data (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#memory-caching-backend-for-locally-stored-data)). -- `OWNCLOUD_MEMCACHE_LOCKING=` \ - Define the memory caching backend for file locking (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-memory-caching-backend-for-file-locking)). - `OWNCLOUD_MINIMUM_SUPPORTED_DESKTOP_VERSION=` \ Define the minimum supported ownCloud desktop client version (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#define-the-minimum-supported-owncloud-desktop-client-version)). - `OWNCLOUD_MOUNT_FILE=` diff --git a/v24.04/overlay/etc/entrypoint.d/20-memcached.sh b/v24.04/overlay/etc/entrypoint.d/20-memcached.sh index 83cf1717..007807b5 100755 --- a/v24.04/overlay/etc/entrypoint.d/20-memcached.sh +++ b/v24.04/overlay/etc/entrypoint.d/20-memcached.sh @@ -1,18 +1,3 @@ #!/usr/bin/env bash -declare -x OWNCLOUD_MEMCACHED_ENABLED -[[ -z "${OWNCLOUD_MEMCACHED_ENABLED}" ]] && OWNCLOUD_MEMCACHED_ENABLED="false" - -declare -x OWNCLOUD_MEMCACHED_HOST -[[ -z "${OWNCLOUD_MEMCACHED_HOST}" ]] && OWNCLOUD_MEMCACHED_HOST="memcached" - -declare -x OWNCLOUD_MEMCACHED_PORT -[[ -z "${OWNCLOUD_MEMCACHED_PORT}" ]] && OWNCLOUD_MEMCACHED_PORT="11211" - -declare -x OWNCLOUD_MEMCACHED_OPTIONS -[[ -z "${OWNCLOUD_MEMCACHED_OPTIONS}" ]] && OWNCLOUD_MEMCACHED_OPTIONS="" - -declare -x OWNCLOUD_MEMCACHED_STARTUP_TIMEOUT -[[ -z "${OWNCLOUD_MEMCACHED_STARTUP_TIMEOUT}" ]] && OWNCLOUD_MEMCACHED_STARTUP_TIMEOUT="180" - true diff --git a/v24.04/overlay/etc/entrypoint.d/45-caching.sh b/v24.04/overlay/etc/entrypoint.d/45-caching.sh index 73d383bc..007807b5 100755 --- a/v24.04/overlay/etc/entrypoint.d/45-caching.sh +++ b/v24.04/overlay/etc/entrypoint.d/45-caching.sh @@ -1,6 +1,3 @@ #!/usr/bin/env bash -declare -x OWNCLOUD_MEMCACHE_LOCAL -[[ -z "${OWNCLOUD_MEMCACHE_LOCAL}" ]] && OWNCLOUD_MEMCACHE_LOCAL="${OWNCLOUD_CACHING_CLASS:-\\OC\\Memcache\\APCu}" - true diff --git a/v24.04/overlay/etc/entrypoint.d/85-others.sh b/v24.04/overlay/etc/entrypoint.d/85-others.sh index f01b1cf2..6508a7a4 100755 --- a/v24.04/overlay/etc/entrypoint.d/85-others.sh +++ b/v24.04/overlay/etc/entrypoint.d/85-others.sh @@ -234,9 +234,6 @@ declare -x OWNCLOUD_MAX_FILESIZE_ANIMATED_GIFS_PUBLIC_SHARING declare -x OWNCLOUD_FILELOCKING_TTL [[ -z "${OWNCLOUD_FILELOCKING_TTL}" ]] && OWNCLOUD_FILELOCKING_TTL="" -declare -x OWNCLOUD_MEMCACHE_LOCKING -[[ -z "${OWNCLOUD_MEMCACHE_LOCKING}" ]] && OWNCLOUD_MEMCACHE_LOCKING="" - declare -x OWNCLOUD_UPGRADE_AUTOMATIC_APP_UPDATES [[ -z "${OWNCLOUD_UPGRADE_AUTOMATIC_APP_UPDATES}" ]] && OWNCLOUD_UPGRADE_AUTOMATIC_APP_UPDATES="" diff --git a/v24.04/overlay/etc/templates/config.php b/v24.04/overlay/etc/templates/config.php index e8856807..69e40ee8 100644 --- a/v24.04/overlay/etc/templates/config.php +++ b/v24.04/overlay/etc/templates/config.php @@ -366,10 +366,6 @@ function getConfigFromEnv() { $config['enable_certificate_management'] = getenv('OWNCLOUD_ENABLE_CERTIFICATE_MANAGEMENT'); } - if (getenv('OWNCLOUD_MEMCACHE_LOCAL') != '') { - $config['memcache.local'] = getenv('OWNCLOUD_MEMCACHE_LOCAL'); - } - if (getenv('OWNCLOUD_CACHE_PATH') != '') { $config['cache_path'] = getenv('OWNCLOUD_CACHE_PATH'); } @@ -482,10 +478,6 @@ function getConfigFromEnv() { $config['filelocking.ttl'] = (int) getenv('OWNCLOUD_FILELOCKING_TTL'); } - if (getenv('OWNCLOUD_MEMCACHE_LOCKING') != '') { - $config['memcache.locking'] = getenv('OWNCLOUD_MEMCACHE_LOCKING'); - } - if (getenv('OWNCLOUD_UPGRADE_AUTOMATIC_APP_UPDATES') != '') { $config['upgrade.automatic-app-update'] = getenv('OWNCLOUD_UPGRADE_AUTOMATIC_APP_UPDATES') === 'true'; } @@ -798,28 +790,6 @@ function getConfigFromEnv() { } } - break; - case getenv('OWNCLOUD_MEMCACHED_ENABLED') && getenv('OWNCLOUD_MEMCACHED_ENABLED') === 'true': - $config = array_merge_recursive($config, [ - 'memcache.distributed' => '\OC\Memcache\Memcached', - 'memcache.locking' => '\OC\Memcache\Memcached', - - 'memcached_servers' => [ - [ - getenv('OWNCLOUD_MEMCACHED_HOST'), - getenv('OWNCLOUD_MEMCACHED_PORT'), - ], - ], - ]); - - if (getenv('OWNCLOUD_MEMCACHED_OPTIONS') != '') { - parse_str(getenv('OWNCLOUD_MEMCACHED_OPTIONS'), $opts); - - foreach($opts as $key => $value) { - $config['memcached_options'][constant($key)] = $value; - } - } - break; } From 28adf2fb465ef2fd67fda53a98b1b2b3f43a13b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= <1005065+DeepDiver1975@users.noreply.github.com> Date: Thu, 11 Jun 2026 17:21:53 +0200 Subject: [PATCH 5/5] feat(config): restore OWNCLOUD_MEMCACHE_LOCAL env var MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OWNCLOUD_MEMCACHE_LOCAL controls the local memory cache backend (APCu by default) which is unrelated to the memcached service — it was incorrectly removed together with the memcached-specific vars. Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: Thomas Müller <1005065+DeepDiver1975@users.noreply.github.com> --- ENVIRONMENT.md | 2 ++ v24.04/overlay/etc/entrypoint.d/45-caching.sh | 3 +++ v24.04/overlay/etc/templates/config.php | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md index e9b2ff47..0fc108cf 100644 --- a/ENVIRONMENT.md +++ b/ENVIRONMENT.md @@ -209,6 +209,8 @@ Developer option to connect to Marketplace testing instances. - `OWNCLOUD_MARKETPLACE_KEY=${OWNCLOUD_MARKETPLACE_APIKEY}` \ Developer option to get access to unreleased Apps in your Marketplace account. +- `OWNCLOUD_MEMCACHE_LOCAL=${OWNCLOUD_CACHING_CLASS:-\\OC\\Memcache\\APCu}` \ + Memory caching backend for locally stored data (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_sample_php_parameters.html#memory-caching-backend-for-locally-stored-data)). - `OWNCLOUD_METRICS_SHARED_SECRET=` \ Secret required to access the Metrics dashboard (Enterprise only) (see [documentation](https://doc.owncloud.com/server/latest/admin_manual/configuration/server/config_apps_sample_php_parameters.html#app-metrics)). - `OWNCLOUD_MAX_EXECUTION_TIME=3600` \ diff --git a/v24.04/overlay/etc/entrypoint.d/45-caching.sh b/v24.04/overlay/etc/entrypoint.d/45-caching.sh index 007807b5..73d383bc 100755 --- a/v24.04/overlay/etc/entrypoint.d/45-caching.sh +++ b/v24.04/overlay/etc/entrypoint.d/45-caching.sh @@ -1,3 +1,6 @@ #!/usr/bin/env bash +declare -x OWNCLOUD_MEMCACHE_LOCAL +[[ -z "${OWNCLOUD_MEMCACHE_LOCAL}" ]] && OWNCLOUD_MEMCACHE_LOCAL="${OWNCLOUD_CACHING_CLASS:-\\OC\\Memcache\\APCu}" + true diff --git a/v24.04/overlay/etc/templates/config.php b/v24.04/overlay/etc/templates/config.php index 69e40ee8..a1c6ea8d 100644 --- a/v24.04/overlay/etc/templates/config.php +++ b/v24.04/overlay/etc/templates/config.php @@ -366,6 +366,10 @@ function getConfigFromEnv() { $config['enable_certificate_management'] = getenv('OWNCLOUD_ENABLE_CERTIFICATE_MANAGEMENT'); } + if (getenv('OWNCLOUD_MEMCACHE_LOCAL') != '') { + $config['memcache.local'] = getenv('OWNCLOUD_MEMCACHE_LOCAL'); + } + if (getenv('OWNCLOUD_CACHE_PATH') != '') { $config['cache_path'] = getenv('OWNCLOUD_CACHE_PATH'); }