Redis NOAUTH Authentication required after 6.0 migration

Infos:

  • Used Zammad version: After 5.4 => 6.0 Upgrade
  • Used Zammad installation type: debian package
  • Operating system: Ubuntu Server 22.04

Redis-Server installed locally and redis-cli works fine.

Expected behavior:

Actual behavior:

Configuring Elasticsearch…

nil versions are discouraged and will be deprecated in Rubygems 4
/opt/zammad/vendor/bundle/ruby/3.1.0/gems/redis-4.8.1/lib/redis/client.rb:162:in call': NOAUTH Authentication required. (Redis::CommandError) from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/redis-4.8.1/lib/redis.rb:270:in block in send_command’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/redis-4.8.1/lib/redis.rb:269:in synchronize' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/redis-4.8.1/lib/redis.rb:269:in send_command’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/redis-4.8.1/lib/redis/commands/sets.rb:131:in smembers' from /opt/zammad/lib/sessions/store/redis.rb:22:in sessions’
from /opt/zammad/lib/sessions.rb:61:in sessions' from /opt/zammad/lib/sessions.rb:285:in broadcast’
from /opt/zammad/app/models/setting.rb:199:in check_broadcast' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:427:in block in make_lambda’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:235:in block in halting_and_conditional' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:516:in block in invoke_after’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:516:in each' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:516:in invoke_after’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:107:in run_callbacks' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:824:in _run_update_callbacks’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/callbacks.rb:465:in _update_record' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/timestamp.rb:121:in _update_record’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/persistence.rb:900:in create_or_update' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/callbacks.rb:457:in block in create_or_update’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:98:in run_callbacks' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:824:in _run_save_callbacks’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/callbacks.rb:457:in create_or_update' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/timestamp.rb:126:in create_or_update’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/persistence.rb:507:in save!' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/validations.rb:53:in save!’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/transactions.rb:302:in block in save!' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/transactions.rb:354:in block in with_transaction_returning_status’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in block in within_new_transaction’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in within_new_transaction’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/transactions.rb:350:in with_transaction_returning_status’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/transactions.rb:302:in save!' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activerecord-6.1.7.3/lib/active_record/suppressor.rb:48:in save!’
from /opt/zammad/app/models/setting.rb:42:in set' from /opt/zammad/lib/static_assets.rb:135:in read’
from /opt/zammad/lib/static_assets.rb:173:in sync' from /opt/zammad/config/initializers/logo.rb:11:in block in ’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:427:in instance_exec' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:427:in block in make_lambda’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:198:in block (2 levels) in halting' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:604:in block (2 levels) in default_terminator’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:603:in catch' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:603:in block in default_terminator’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:199:in block in halting' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:512:in block in invoke_before’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:512:in each' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:512:in invoke_before’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/callbacks.rb:105:in run_callbacks' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/reloader.rb:88:in prepare!’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/application/finisher.rb:124:in block in <module:Finisher>' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/initializable.rb:32:in instance_exec’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/initializable.rb:32:in run' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/initializable.rb:61:in block in run_initializers’
from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:228:in block in tsort_each' from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:350:in block (2 levels) in each_strongly_connected_component’
from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:431:in each_strongly_connected_component_from' from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:349:in block in each_strongly_connected_component’
from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:347:in each' from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:347:in call’
from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:347:in each_strongly_connected_component' from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:226:in tsort_each’
from /opt/zammad/vendor/ruby-3.1.3/lib/ruby/3.1.0/tsort.rb:205:in tsort_each' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/initializable.rb:60:in run_initializers’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/application.rb:391:in initialize!' from /opt/zammad/config/environment.rb:7:in
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in require' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in require’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.7/lib/zeitwerk/kernel.rb:38:in require' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies.rb:332:in block in require’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies.rb:299:in load_dependency' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.7.3/lib/active_support/dependencies.rb:332:in require’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/application.rb:367:in require_environment!' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/command/actions.rb:28:in require_environment!’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/command/actions.rb:15:in require_application_and_environment!' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/commands/runner/runner_command.rb:33:in perform’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in run' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in invoke_command’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in dispatch' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/command/base.rb:69:in perform’
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/command.rb:48:in invoke' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/railties-6.1.7.3/lib/rails/commands.rb:18:in
from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in require' from /opt/zammad/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in require’
from /opt/zammad/bin/rails:5:in `’
– Nevermind, no es_url is set, leaving Elasticsearch untouched …!
– The above is all right if you don’t want to use Elasticsearch (locally) - if this is not intended, consult https://docs.zammad.org !

Steps to reproduce the behavior:

  • Starting rails server or console with zammad rails r or c

After following the instruction in a opposite way (disabled password authentification), everything seems to work now. https://stackoverflow.com/a/75046317

It seems to be impossible to use Zammad with a redis server instance with authentification?!

There is a variable in /etc/zammad/ that gets exported for REDIS with the URL that can include a password.

Here’s what worked for me:

sudo systemctl stop zammad
echo -n "export REDIS_URL=\"redis://:$(sudo grep "^requirepass " /etc/redis/redis.conf | cut -d" " -f2 | xxd -p | tr -d \\n | sed 's/../%&/g')@$(sudo grep "^bind " /etc/redis/redis.conf | cut -d" " -f2):$(sudo grep "^port " /etc/redis/redis.conf | cut -d" " -f2)\"" | sudo tee -a /etc/zammad/conf.d/redis
sudo apt reinstall zammad
sudo systemctl start zammad

JFI zammad config:set REDIS_URL=... should work as well for package installations.
This is the way to configure e.g. performance tunings as well and saves you from manually fiddling in environment files.