Skip to content

Authentik Login integration crashes the container #3726

@TheGor1lla

Description

@TheGor1lla

Issue

Trying to setup Login with Authentik, following: https://docs.goauthentik.io/integrations/services/tandoor/

Once I set the SOCIAL... env variables, the app constatly restarts with errors.

Also tried setting REMOTE_USER_AUTH=1 with the same result

Tandoor Version

1.5.34

OS Version

Debian 12

Setup

Docker / Docker-Compose

Reverse Proxy

Traefik

Other

No response

Environment file

SECRET_KEY=....
DB_ENGINE=django.db.backends.postgresql
POSTGRES_HOST=...
POSTGRES_DB=...
POSTGRES_PORT=5432
POSTGRES_USER=....
POSTGRES_PASSWORD=....

EMAIL_HOST=...
EMAIL_PORT=587
EMAIL_HOST_USER=.....
EMAIL_HOST_PASSWORD=.....
EMAIL_USE_TLS=1
EMAIL_USE_SSL=0

DEFAULT_FROM_EMAIL=....
ACCOUNT_EMAIL_SUBJECT_PREFIX=[Tandoor]

Docker-Compose file

web_recipes:
    restart: unless_stopped
    image: vabene1111/recipes:1.5.34
    container_name: tandoor
    labels:
      - ${WUD_SEMVER_WATCHER}
    environment:
      - SOCIAL_PROVIDERS=allauth.socialaccount.providers.openid_connect
      - SOCIALACCOUNT_PROVIDERS='{"openid_connect":{"APPS":[{"provider_id":"authentik","name":"authentik","client_id":"CLIENT....","secret":"SECRET....","settings":{"server_url":"AUTHSERVERURL..."}}]}}'
    volumes:
      - staticfiles:/opt/recipes/staticfiles
      # Do not make this a bind mount, see https://docs.tandoor.dev/install/docker/#volumes-vs-bind-mounts
      - nginx_config:/opt/recipes/nginx/conf.d
      - ${VOLUMES_ROOT_PATH}/tandoor/mediafiles:/opt/recipes/mediafiles
    depends_on:
      - db_recipes
    env_file:
      - ./.env
    networks:
      - tandoor_network

Relevant logs

[2025-05-20 18:25:46 +0000] [14] [INFO] Booting worker with pid: 14
[2025-05-20 18:25:46 +0000] [15] [INFO] Booting worker with pid: 15
[2025-05-20 18:25:46 +0000] [16] [INFO] Booting worker with pid: 16
[2025-05-20 20:25:46 +0200] [14] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
    worker.init_process()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/gthread.py", line 95, in init_process
    super().init_process()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
                ^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
                    ^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/util.py", line 371, in import_app
    mod = importlib.import_module(module)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/recipes/recipes/wsgi.py", line 15, in <module>
    _application = get_wsgi_application()
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/apps/registry.py", line 116, in populate
    app_config.import_models()
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/apps/config.py", line 269, in import_models
    self.models_module = import_module(models_module_name)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/models.py", line 32, in <module>
    class SocialApp(models.Model):
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/models.py", line 36, in SocialApp
    provider = models.CharField(
               ^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/db/models/fields/__init__.py", line 1139, in __init__
    super().__init__(*args, **kwargs)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/db/models/fields/__init__.py", line 220, in __init__
    choices = list(choices)
              ^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/__init__.py", line 26, in as_choices
    self.load()
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/__init__.py", line 48, in load
    provider_class = provider_settings.get(cls.id, {}).get(
                     ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
[2025-05-20 20:25:46 +0200] [14] [INFO] Worker exiting (pid: 14)
[2025-05-20 20:25:46 +0200] [16] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
    worker.init_process()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/gthread.py", line 95, in init_process
    super().init_process()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
                ^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
                    ^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/util.py", line 371, in import_app
    mod = importlib.import_module(module)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/recipes/recipes/wsgi.py", line 15, in <module>
    _application = get_wsgi_application()
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/apps/registry.py", line 116, in populate
    app_config.import_models()
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/apps/config.py", line 269, in import_models
    self.models_module = import_module(models_module_name)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/models.py", line 32, in <module>
    class SocialApp(models.Model):
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/models.py", line 36, in SocialApp
    provider = models.CharField(
               ^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/db/models/fields/__init__.py", line 1139, in __init__
    super().__init__(*args, **kwargs)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/db/models/fields/__init__.py", line 220, in __init__
    choices = list(choices)
              ^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/__init__.py", line 26, in as_choices
    self.load()
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/__init__.py", line 48, in load
    provider_class = provider_settings.get(cls.id, {}).get(
                     ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
[2025-05-20 20:25:46 +0200] [16] [INFO] Worker exiting (pid: 16)
[2025-05-20 20:25:47 +0200] [15] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
    worker.init_process()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/gthread.py", line 95, in init_process
    super().init_process()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
                ^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
                    ^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/gunicorn/util.py", line 371, in import_app
    mod = importlib.import_module(module)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/recipes/recipes/wsgi.py", line 15, in <module>
    _application = get_wsgi_application()
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/apps/registry.py", line 116, in populate
    app_config.import_models()
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/apps/config.py", line 269, in import_models
    self.models_module = import_module(models_module_name)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/models.py", line 32, in <module>
    class SocialApp(models.Model):
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/models.py", line 36, in SocialApp
    provider = models.CharField(
               ^^^^^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/db/models/fields/__init__.py", line 1139, in __init__
    super().__init__(*args, **kwargs)
  File "/opt/recipes/venv/lib/python3.12/site-packages/django/db/models/fields/__init__.py", line 220, in __init__
    choices = list(choices)
              ^^^^^^^^^^^^^
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/__init__.py", line 26, in as_choices
    self.load()
  File "/opt/recipes/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/__init__.py", line 48, in load
    provider_class = provider_settings.get(cls.id, {}).get(
                     ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
[2025-05-20 20:25:47 +0200] [15] [INFO] Worker exiting (pid: 15)
[2025-05-20 18:25:47 +0000] [1] [ERROR] Worker (pid:14) exited with code 3
[2025-05-20 18:25:47 +0000] [1] [ERROR] Worker (pid:15) was sent SIGTERM!
[2025-05-20 18:25:47 +0000] [1] [ERROR] Worker (pid:16) was sent SIGTERM!
[2025-05-20 18:25:47 +0000] [1] [ERROR] Shutting down: Master
[2025-05-20 18:25:47 +0000] [1] [ERROR] Reason: Worker failed to boot.

Metadata

Metadata

Assignees

No one assigned

    Labels

    setup issuepossibly or definitely an issue with the user setup

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions