From d33cabda4586fd94d218e8f06e40e609d17384af Mon Sep 17 00:00:00 2001 From: J0WI Date: Fri, 27 Mar 2026 00:46:36 +0100 Subject: [PATCH] Refactor Redis connection for TLS and unix sockets Signed-off-by: J0WI --- .config/redis.config.php | 8 +++++--- README.md | 5 +++-- docker-entrypoint.sh | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.config/redis.config.php b/.config/redis.config.php index 2069812f4..415339d38 100644 --- a/.config/redis.config.php +++ b/.config/redis.config.php @@ -4,14 +4,16 @@ 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( - 'host' => getenv('REDIS_HOST'), + 'host' => (getenv('REDIS_HOST')[0] === '/' ? 'unix' : (getenv('REDIS_PROTOCOL') ?: 'tcp')) . "://" . getenv('REDIS_HOST'), 'password' => getenv('REDIS_HOST_PASSWORD_FILE') ? trim(file_get_contents(getenv('REDIS_HOST_PASSWORD_FILE'))) : (string) getenv('REDIS_HOST_PASSWORD'), ), ); - if (getenv('REDIS_HOST_PORT') !== false) { + if (getenv('REDIS_HOST')[0] === '/') { + $CONFIG['redis']['port'] = 0; + } elseif (getenv('REDIS_HOST_PORT') !== false) { $CONFIG['redis']['port'] = (int) getenv('REDIS_HOST_PORT'); - } elseif (getenv('REDIS_HOST')[0] != '/') { + } else { $CONFIG['redis']['port'] = 6379; } diff --git a/README.md b/README.md index 8188dcb27..b4ad5fca6 100644 --- a/README.md +++ b/README.md @@ -285,10 +285,11 @@ You might want to make sure the htaccess is up to date after each container upda To use Redis for memory caching as well as PHP session storage, specify the following values and also add a [Redis](https://hub.docker.com/_/redis/) container to your stack. See the [examples](https://github.com/nextcloud/docker/tree/master/.examples) for further instructions. -- `REDIS_HOST` (not set by default) Name of Redis container +- `REDIS_HOST` (not set by default) Name of Redis container. - `REDIS_HOST_PORT` (default: `6379`) Optional port for Redis, only use for external Redis servers that run on non-standard ports. - `REDIS_HOST_USER` (not set by default) Optional username for Redis, only use for external Redis servers that require a user. -- `REDIS_HOST_PASSWORD` (not set by default) Redis password +- `REDIS_HOST_PASSWORD` (not set by default) Redis password. +- `REDIS_PROTOCOL` (default: `tcp`) Set to `tls` to use TLS when connecting to Redis server. Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html) for more information. diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 4fc363f31..8c1a1f25b 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -108,7 +108,7 @@ configure_redis_session() { redis_save_path="unix://${REDIS_HOST}" ;; *) - redis_save_path="tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}" + redis_save_path="${REDIS_PROTOCOL:=tcp}://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}" ;; esac