Skip to content

[BUG] Fails to connect to Redis with no password #69

@Orgjvr

Description

@Orgjvr

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

On Unraid, the REDIS_PASSWORD is mandatory. Setting it to the default value 'none', causes an entry in the configuration.py with both tasks and caching having a setting:
PASSWORD': 'none',
This causes the app not to connect to Redis and failing.

Expected Behavior

Expect this environment variable to be optional and if not set, then no Redis PASSWORD entries to be generated in the configuration.py file.

Steps To Reproduce

  1. Create a new instance of Netbox in Unraid.
  2. Try and leave the REDIS_PASSWORD variable empty result in an error as it is required.
  3. Setting it to the default value of 'none' caused the app to fail to connect to Redis.

Environment

- OS:Unraid 7.0.1
- How docker service was installed: Enable function in Settings

CPU architecture

x86-64

Docker creation

Installed from Community Applications

Container logs

[migrations] started
[migrations] no migrations found
usermod: no changes
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    99
User GID:    100
───────────────────────────────────────
Linuxserver.io version: v4.3.0-ls274
Build-date: 2025-05-01T17:21:25+00:00
───────────────────────────────────────
    
[custom-init] No custom files found, skipping...
Operations to perform:
  Apply all migrations: account, auth, circuits, contenttypes, core, dcim, django_rq, extras, ipam, sessions, social_django, taggit, tenancy, users, virtualization, vpn, wireless
Running migrations:
  No migrations to apply.
145 objects imported automatically (use -v 2 for details).

Superuser creation skipped. Already exists.
[uWSGI] getting INI configuration from uwsgi.ini
[uwsgi-static] added mapping for /static => static
*** Starting uWSGI 2.0.25.1 (64bit) on [Sun May  4 13:23:28 2025] ***
compiled with version: 13.2.1 20240309 on 17 May 2024 06:11:37
os: Linux-6.6.78-Unraid #2 SMP PREEMPT_DYNAMIC Thu Feb 20 13:33:15 PST 2025
nodename: 092e1280d3c7
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 20
current working directory: /app/netbox/netbox
detected binary path: /usr/sbin/uwsgi
your processes number limit is 127073
your memory page size is 4096 bytes
detected max file descriptor number: 40960
building mime-types dictionary from file /etc/mime.types...1390 entry found
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address :8000 fd 3
Python version: 3.12.10 (main, Apr  9 2025, 07:23:41) [GCC 13.2.1 20240309]
PEP 405 virtualenv detected: /lsiopy
Set PythonHome to /lsiopy
Connection to localhost (127.0.0.1) 8000 port [tcp/*] succeeded!
Python main interpreter initialized at 0x14e3603c6c70
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 203184 bytes (198 KB) for 1 cores
*** Operational MODE: single process ***
running "exec:python3 ./manage.py collectstatic --noinput" (pre app)...
[ls.io-init] done.

0 static files copied to '/app/netbox/netbox/static', 502 unmodified.

running "exec:python3 ./manage.py remove_stale_contenttypes --no-input" (pre app)...
Traceback (most recent call last):
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 29, in _decorator
    return method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 99, in _get
    return self.client.get(key, default=default, version=version, client=client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/client/default.py", line 260, in get
    raise ConnectionInterrupted(connection=client) from e
django_redis.exceptions.ConnectionInterrupted: Redis AuthenticationError: AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/netbox/netbox/./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/base.py", line 416, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/base.py", line 460, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django/contrib/contenttypes/management/commands/remove_stale_contenttypes.py", line 102, in handle
    ct.delete()
  File "/lsiopy/lib/python3.12/site-packages/django/db/models/base.py", line 1281, in delete
    return collector.delete()
           ^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django/db/models/deletion.py", line 458, in delete
    signals.pre_delete.send(
  File "/lsiopy/lib/python3.12/site-packages/django/dispatch/dispatcher.py", line 189, in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/netbox/netbox/core/signals.py", line 120, in handle_deleted_object
    validators = get_config().PROTECTION_RULES.get(model_name, [])
                 ^^^^^^^^^^^^
  File "/app/netbox/netbox/netbox/config/__init__.py", line 28, in get_config
    _thread_locals.config = Config()
                            ^^^^^^^^
  File "/app/netbox/netbox/netbox/config/__init__.py", line 48, in __init__
    self._populate_from_cache()
  File "/app/netbox/netbox/netbox/config/__init__.py", line 71, in _populate_from_cache
    self.config = cache.get('config') or {}
                  ^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 92, in get
    value = self._get(key, default, version, client)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 36, in _decorator
    raise e.__cause__
  File "/lsiopy/lib/python3.12/site-packages/django_redis/client/default.py", line 258, in get
    value = client.get(key)
            ^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/commands/core.py", line 1829, in get
    return self.execute_command("GET", name, keys=[name])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/client.py", line 621, in execute_command
    return self._execute_command(*args, **options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/client.py", line 627, in _execute_command
    conn = self.connection or pool.get_connection()
                              ^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/utils.py", line 188, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 1520, in get_connection
    connection.connect()
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 379, in connect
    self.connect_check_health(check_health=True)
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 397, in connect_check_health
    self.on_connect_check_health(check_health=check_health)
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 469, in on_connect_check_health
    auth_response = self.read_response()
                    ^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 644, in read_response
    response = self._parser.read_response(disable_decoding=disable_decoding)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/_parsers/resp2.py", line 15, in read_response
    result = self._read_response(disable_decoding=disable_decoding)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/_parsers/resp2.py", line 38, in _read_response
    raise error
redis.exceptions.AuthenticationError: AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?
command "python3 ./manage.py remove_stale_contenttypes --no-input" exited with non-zero code: 1
Sun May  4 13:23:34 2025 - FATAL hook failed, destroying instance
SIGINT/SIGTERM received...killing workers...
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x14e3603c6c70 pid: 190 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 190)
spawned uWSGI worker 1 (pid: 220, cores: 1)
[uwsgi-daemons] spawning "python3 ./manage.py rqworker" (uid: 99 gid: 100)
Traceback (most recent call last):
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 29, in _decorator
    return method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 99, in _get
    return self.client.get(key, default=default, version=version, client=client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/client/default.py", line 260, in get
    raise ConnectionInterrupted(connection=client) from e
django_redis.exceptions.ConnectionInterrupted: Redis AuthenticationError: AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/netbox/netbox/./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/base.py", line 416, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/lsiopy/lib/python3.12/site-packages/django/core/management/base.py", line 460, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/netbox/netbox/core/management/commands/rqworker.py", line 26, in handle
    job.enqueue_once(**kwargs)
  File "/usr/lib/python3.12/contextlib.py", line 81, in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "/app/netbox/netbox/netbox/jobs.py", line 156, in enqueue_once
    return cls.enqueue(instance=instance, schedule_at=schedule_at, interval=interval, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/netbox/netbox/netbox/jobs.py", line 126, in enqueue
    return Job.enqueue(cls.handle, name=name, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/netbox/netbox/core/models/jobs.py", line 241, in enqueue
    rq_queue_name = get_queue_for_model(object_type.model if object_type else None)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/netbox/netbox/utilities/rqworker.py", line 18, in get_queue_for_model
    return get_config().QUEUE_MAPPINGS.get(model, RQ_QUEUE_DEFAULT)
           ^^^^^^^^^^^^
  File "/app/netbox/netbox/netbox/config/__init__.py", line 28, in get_config
    _thread_locals.config = Config()
                            ^^^^^^^^
  File "/app/netbox/netbox/netbox/config/__init__.py", line 48, in __init__
    self._populate_from_cache()
  File "/app/netbox/netbox/netbox/config/__init__.py", line 71, in _populate_from_cache
    self.config = cache.get('config') or {}
                  ^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 92, in get
    value = self._get(key, default, version, client)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/django_redis/cache.py", line 36, in _decorator
    raise e.__cause__
  File "/lsiopy/lib/python3.12/site-packages/django_redis/client/default.py", line 258, in get
    value = client.get(key)
            ^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/commands/core.py", line 1829, in get
    return self.execute_command("GET", name, keys=[name])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/client.py", line 621, in execute_command
    return self._execute_command(*args, **options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/client.py", line 627, in _execute_command
    conn = self.connection or pool.get_connection()
                              ^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/utils.py", line 188, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 1520, in get_connection
    connection.connect()
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 379, in connect
    self.connect_check_health(check_health=True)
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 397, in connect_check_health
    self.on_connect_check_health(check_health=check_health)
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 469, in on_connect_check_health
    auth_response = self.read_response()
                    ^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/connection.py", line 644, in read_response
    response = self._parser.read_response(disable_decoding=disable_decoding)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/_parsers/resp2.py", line 15, in read_response
    result = self._read_response(disable_decoding=disable_decoding)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lsiopy/lib/python3.12/site-packages/redis/_parsers/resp2.py", line 38, in _read_response
    raise error
redis.exceptions.AuthenticationError: AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?
daemon "python3 ./manage.py rqworker" (pid: 221) annihilated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions