diff --git a/README.md b/README.md index 6745faa3..0c5b0f05 100644 --- a/README.md +++ b/README.md @@ -238,6 +238,10 @@ To use Redis for memory caching as well as PHP session storage, specify the foll - `REDIS_HOST_PORT` (default: `6379`) Optional port for Redis, only use for external Redis servers that run on non-standard ports. - `REDIS_HOST_PASSWORD` (not set by default) Redis password +To use Redis in cluster mode, you can use + +- `REDIS_CLUSTER` (not set by default) Name and port number of a redis host. + Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html) for more information. ### E-mail (SMTP) Configuration diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8e178f2e..61551869 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -132,6 +132,26 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi + if [ -n "${REDIS_CLUSTER+x}" ]; then + + echo "Configuring Rediscluster as session handler" + { + file_env REDIS_HOST_PASSWORD + echo 'session.save_handler = rediscluster' + # check if redis password has been set + if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then + echo "session.save_path = \"seed[]=${REDIS_CLUSTER}&auth=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"seed[]=${REDIS_CLUSTER}\"" + fi + echo "redis.session.locking_enabled = 1" + echo "redis.session.lock_retries = -1" + # redis.session.lock_wait_time is specified in microseconds. + # Wait 10ms before retrying the lock rather than the default 2ms. + echo "redis.session.lock_wait_time = 10000" + } > /usr/local/etc/php/conf.d/redis-session.ini + fi + # If another process is syncing the html folder, wait for # it to be done, then escape initalization. (