we just tried to upgrade our self-hosted speckle server from V 2.23.5 to V 2.25.4, but get “valkey unhealthy” messages on starting with docker-compose and speckle stays unusable.
When reverting the valkey-entries in docker-compose.yml to redis, the server starts correctly.
Where to start debugging?
What can be done to resolve this issue?
If you’ve previously had Redis running, ensure there are no port or volume conflicts.
The Valkey container might be marked “unhealthy” if it’s not binding correctly or has resource issues. You can inspect logs with:
docker compose logs valkey
If you can share your docker-compose.yml (or at least the valkey service section), we can take a look at your config.
Let us know what the logs say!
You’ve already identified that reverting to Redis works, and that’s fine in the short term. However, in the longer term, we recommend updating your setup to work with Valkey, as Redis support may be deprecated in future versions.
To add to Jonathon’s response, Valkey is intended to be compatible with Redis so you can continue using Redis for the meantime.
The root cause is probably that the volume used by Redis is incompatible with Valkey.
If you wish to swap Redis for Valkey, then try stopping the Redis container, deleting the Redis volume, then starting Valkey. This should be achievable by approximately following the below steps. As always, we recommend that you back up Postgres database before upgrading or undertaking maintenance on your server.
List the containers, and find the name of the Redis container:
Redis is used as an ephemeral store. Any data temporarily stored in it will be recreated after the Speckle server restarts.
Speckle server does not have a maintenance mode state. If you wished, you could change the DNS or ingress configuration to point to a holding page or redirect while maintenance is ongoing.
Hi joanthon, hi iainsproat,
this is the redis section in our docker-compose.yml:
redis:
image: “valkey/valkey:8-alpine”
restart: always
volumes:
- ./redis-data:/data
ports:
- “127.0.0.1:6379:6379”
healthcheck:
test: [“CMD”, “valkey-cli”, “–raw”, “incr”, “ping”]
interval: 5s
timeout: 5s
retries: 30
I removed the redis-volume and startet speckle with docker-compose.
docker-compose logs redis says this 5 times:
redis_1 | 1:M 23 Jun 2025 15:33:51.645 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see vm.max_map_count growing steadily when vm.overcommit_memory is 2 · Issue #1328 · jemalloc/jemalloc · GitHub. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.
redis_1 | 1:M 23 Jun 2025 15:33:51.648 * oO0OoO0OoO0Oo Valkey is starting oO0OoO0OoO0Oo
redis_1 | 1:M 23 Jun 2025 15:33:51.648 * Valkey version=8.1.2, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:M 23 Jun 2025 15:33:51.648 # Warning: no config file specified, using the default config. In order to specify a config file use valkey-server /path/to/valkey.conf
redis_1 | 1:M 23 Jun 2025 15:33:51.648 * monotonic clock: POSIX clock_gettime
redis_1 | 1:M 23 Jun 2025 15:33:51.649 * Running mode=standalone, port=6379.
redis_1 | 1:M 23 Jun 2025 15:33:51.650 * Server initialized
redis_1 | 1:M 23 Jun 2025 15:33:51.650 # Can’t handle RDB format version 12
redis_1 | 1:M 23 Jun 2025 15:33:51.650 # Fatal error loading the DB, check server logs. Exiting.
When I revert to redis, speckle starts without errors.
Reverting to redis means: only the 2 lines “image:” and “healthcheck: / testcmd:” are different and refer to redis.
Hi all,
I could bring it to work.
Problem was: when stopping speckle, redis writes a rdb file into the redis-volume. This must be deleted before the start of valkey, since it is in a (more new) format, which valkey does not support.
After deleting this file, speckle and valkey start without error.