[GH-ISSUE #3892] docker compose up fails to bring up modoboa #1929

Open
opened 2026-02-27 11:19:56 +03:00 by kerem · 6 comments
Owner

Originally created by @danielfdickinson on GitHub (Jan 31, 2026).
Original GitHub issue: https://github.com/modoboa/modoboa/issues/3892

So, I finally got time to test the fix for https://github.com/modoboa/modoboa/issues/3821, but have run into an issue with the docker containers.

Impacted versions

  • OS Type: Debian
  • OS Version: 12.13 (bookworm)
  • Database Type: Mariadb (from docker-compose.yml)
  • Database version: 11
  • Modoboa: latest master as fo 2026-01-31 14:22
  • installer used: No (docker compose up)
  • Webserver: Nginx/Apache: default for docker-compose.yml
  • Docker: official CE version, not the one in Debian

Steps to reproduce

  1. git clone https://github.com/modoboa/modoboa.git
  2. touch test_project/envfile
  3. docker compose up

Current behavior

Modoboa fails to come up, with:

 => ERROR [rq build  6/11] RUN pip-compile --output-file=requirements.txt pyproject.toml                                                                                                              1.5s 
------                                                                                                                                                                                                     
 > [rq build  6/11] RUN pip-compile --output-file=requirements.txt pyproject.toml:                                                                                                                         
1.266 Traceback (most recent call last):                                                                                                                                                                   
1.270   File "/opt/venv/bin/pip-compile", line 7, in <module>                                                                                                                                              
1.270     sys.exit(cli())                                                                                                                                                                                  
1.270              ~~~^^                                                                                                                                                                                   
1.270   File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 1485, in __call__                                                                                                                
1.270     return self.main(*args, **kwargs)                                                                                                                                                                
1.270            ~~~~~~~~~^^^^^^^^^^^^^^^^^                                                                                                                                                                
1.270   File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 1406, in main                                                                                                                    
1.270     rv = self.invoke(ctx)                                                                                                                                                                            
1.270   File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 1269, in invoke                                                                                                                  
1.270     return ctx.invoke(self.callback, **ctx.params)                                                                                                                                                   
1.270            ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                   
1.270   File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 824, in invoke                                                                                                                   
1.270     return callback(*args, **kwargs)                                                                                                                                                                 
1.270   File "/opt/venv/lib/python3.14/site-packages/click/decorators.py", line 34, in new_func                                                                                                            
1.270     return f(get_current_context(), *args, **kwargs)                                                                                                                                                 
1.270   File "/opt/venv/lib/python3.14/site-packages/piptools/scripts/compile.py", line 475, in cli                                                                                                        
1.270     prereleases=repository.finder.allow_all_prereleases or pre,                                                                                                                                      
[+] up 14/21          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                              
 ✔ Image dovecot/dovecot:2.3-latest Pulled                                                                                                                                                            6.2s 
 ✔ Image redis:8-alpine             Pulled                                                                                                                                                            4.8s 
 ⠙ Image modoboa-rq-scheduler       Building                                                                                                                                                          50.7s
 ⠙ Image modoboa-api-unsecured      Building                                                                                                                                                          50.7s
 ⠙ Image modoboa-front              Building                                                                                                                                                          50.7s
 ⠙ Image modoboa-radicale           Building                                                                                                                                                          50.7s
 ⠙ Image modoboa-rq                 Building                                                                                                                                                          50.7s
 ⠙ Image modoboa-policyd            Building                                                                                                                                                          50.7s
 ⠙ Image modoboa-api                Building                                                                                                                                                          50.7s
Dockerfile.dev:20

--------------------

  18 |     COPY . /tmp

  19 |     RUN python -m pip install -U pip pip-tools ruff

  20 | >>> RUN pip-compile --output-file=requirements.txt pyproject.toml

  21 |     RUN pip-compile --extra=mysql --output-file=mysql-requirements.txt pyproject.toml

  22 |     RUN pip-compile --extra=ldap --output-file=ldap-requirements.txt pyproject.toml

--------------------

Expected behavior

Modoboa starts in Docker containers.

Originally created by @danielfdickinson on GitHub (Jan 31, 2026). Original GitHub issue: https://github.com/modoboa/modoboa/issues/3892 So, I finally got time to test the fix for https://github.com/modoboa/modoboa/issues/3821, but have run into an issue with the docker containers. # Impacted versions * OS Type: Debian * OS Version: 12.13 (bookworm) * Database Type: Mariadb (from docker-compose.yml) * Database version: 11 * Modoboa: latest master as fo 2026-01-31 14:22 * installer used: No (docker compose up) * Webserver: Nginx/Apache: default for docker-compose.yml * Docker: official CE version, not the one in Debian # Steps to reproduce 1. `git clone https://github.com/modoboa/modoboa.git` 2. `touch test_project/envfile` 3. `docker compose up` # Current behavior Modoboa fails to come up, with: ```plaintext => ERROR [rq build 6/11] RUN pip-compile --output-file=requirements.txt pyproject.toml 1.5s ------ > [rq build 6/11] RUN pip-compile --output-file=requirements.txt pyproject.toml: 1.266 Traceback (most recent call last): 1.270 File "/opt/venv/bin/pip-compile", line 7, in <module> 1.270 sys.exit(cli()) 1.270 ~~~^^ 1.270 File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 1485, in __call__ 1.270 return self.main(*args, **kwargs) 1.270 ~~~~~~~~~^^^^^^^^^^^^^^^^^ 1.270 File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 1406, in main 1.270 rv = self.invoke(ctx) 1.270 File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 1269, in invoke 1.270 return ctx.invoke(self.callback, **ctx.params) 1.270 ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1.270 File "/opt/venv/lib/python3.14/site-packages/click/core.py", line 824, in invoke 1.270 return callback(*args, **kwargs) 1.270 File "/opt/venv/lib/python3.14/site-packages/click/decorators.py", line 34, in new_func 1.270 return f(get_current_context(), *args, **kwargs) 1.270 File "/opt/venv/lib/python3.14/site-packages/piptools/scripts/compile.py", line 475, in cli 1.270 prereleases=repository.finder.allow_all_prereleases or pre, [+] up 14/21 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ✔ Image dovecot/dovecot:2.3-latest Pulled 6.2s ✔ Image redis:8-alpine Pulled 4.8s ⠙ Image modoboa-rq-scheduler Building 50.7s ⠙ Image modoboa-api-unsecured Building 50.7s ⠙ Image modoboa-front Building 50.7s ⠙ Image modoboa-radicale Building 50.7s ⠙ Image modoboa-rq Building 50.7s ⠙ Image modoboa-policyd Building 50.7s ⠙ Image modoboa-api Building 50.7s Dockerfile.dev:20 -------------------- 18 | COPY . /tmp 19 | RUN python -m pip install -U pip pip-tools ruff 20 | >>> RUN pip-compile --output-file=requirements.txt pyproject.toml 21 | RUN pip-compile --extra=mysql --output-file=mysql-requirements.txt pyproject.toml 22 | RUN pip-compile --extra=ldap --output-file=ldap-requirements.txt pyproject.toml -------------------- ``` # Expected behavior Modoboa starts in Docker containers.
Author
Owner

@tonioo commented on GitHub (Feb 3, 2026):

@danielfdickinson Could you try with the PR I created?

<!-- gh-comment-id:3841332739 --> @tonioo commented on GitHub (Feb 3, 2026): @danielfdickinson Could you try with the PR I created?
Author
Owner

@kryskool commented on GitHub (Feb 5, 2026):

Fix available on main branch (commit 0cc5bea70bc2e2ac64bde6f60360613001f6d86d ), @danielfdickinson can you retry ?

<!-- gh-comment-id:3855593524 --> @kryskool commented on GitHub (Feb 5, 2026): Fix available on main branch (commit [0cc5bea70bc2e2ac64bde6f60360613001f6d86d](https://github.com/modoboa/modoboa/commit/0cc5bea70bc2e2ac64bde6f60360613001f6d86d) ), @danielfdickinson can you retry ?
Author
Owner

@danielfdickinson commented on GitHub (Feb 17, 2026):

I confirm the issue described above is fixed. The container got a lot further (after a significant amount time, of course), and successfully built modoboa. However it now fails to bring up the redis container, with this note:

Error: short-name "redis:8-alpine" did not resolve to an alias and no unqualified-search 
registries are defined in "/etc/containers/registries.conf"

radicale container came up, but the policyd, rq, api-unsecured, and rq-scheduler containers all complained. (I can post those logs if you wish).

They all have this complaint:

ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py)
<!-- gh-comment-id:3913016124 --> @danielfdickinson commented on GitHub (Feb 17, 2026): I confirm the issue described above is fixed. The container got a lot further (after a significant amount time, of course), and successfully built modoboa. However it now fails to bring up the redis container, with this note: ``` Error: short-name "redis:8-alpine" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf" ``` radicale container came up, but the policyd, rq, api-unsecured, and rq-scheduler containers all complained. (I can post those logs if you wish). They all have this complaint: ```python ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py) ```
Author
Owner

@kryskool commented on GitHub (Feb 18, 2026):

Hi @danielfdickinson

Thanks for the confirmation, i see pip-tools is compatible with pip 26,

For your problem with redis container, can you post more logfiles ?

<!-- gh-comment-id:3919356345 --> @kryskool commented on GitHub (Feb 18, 2026): Hi @danielfdickinson Thanks for the confirmation, i see [pip-tools is compatible with pip 26](https://pip-tools.readthedocs.io/en/stable/changelog/#v7-5-3), For your problem with redis container, can you post more logfiles ?
Author
Owner

@danielfdickinson commented on GitHub (Feb 19, 2026):

Here is the result with the 'unqualified registries' error resolved (that was a configuration issue), but not a full rebuild. Will try that next.

Using podman for this test - original report was using docker-ce, but I do not currently have an available test instance with docker-ce.

68e4929188559bda266f4996db58b1132e4d5cf1a3b901b665e00ee02d2fab09
Resolving "redis" using unqualified-search registries (/etc/containers/registries.conf)
Trying to pull docker.io/library/redis:8-alpine...
Getting image source signatures
Copying blob 4f4fb700ef54 skipped: already exists  
Copying blob 3bce66bdaf29 done   | 
Copying blob 589002ba0eae skipped: already exists  
Copying blob 580cc54ee1be done   | 
Copying blob 23739fb30465 done   | 
Copying blob 7586fb43755e done   | 
Copying blob 0adf826af742 done   | 
Copying config 060b91c4b1 done   | 
Writing manifest to image destination
b6bbbaff388c04126e7ac5b9d674b394f7ae52bee1c4488616e88aa0b47093ea
1ad8037bf670ef14705a6aae4489a2742c53d853aecf672b06e85a2026e955c2
bbe01d032527fc1f5989167fed1439632bc88d69af47ea15c2478cbed952f26f
ba3d0ad7c4be850b44a14613ec8d17e356038e3bcae41f88bac9446fea35f928
0501fe2dda38cc731c48280da289e323183dbf448eefaa4f933dc3be4ea4dab9
b39d1f152d97f6e9fab23db88a265178d36f6fb583b445f97c6361d8b733d150
a795e4b00e8ed09ba8600a9d6d74d0e6dcbfd10763f68058030793ea0acee913
d318ec232aae96c083967d1d33dfb96b51471479e2dea3868836111a8dfd5f27
Resolving "dovecot/dovecot" using unqualified-search registries (/etc/containers/registries.conf)
Trying to pull docker.io/dovecot/dovecot:2.3-latest...
Getting image source signatures
Copying blob f25d19a4338c done   | 
Copying blob 82aabceedc2f done   | 
Copying blob 86ecae8c62b9 done   | 
Copying blob a61366e2689d done   | 
Copying blob a2b30249caed done   | 
Copying config b3fa53a298 done   | 
Writing manifest to image destination
4c7e182de318e2ebe693783e41cfcbf85c8b6b80168abffe812a424a3cedf8aa
[redis]         | /bin/sh: can't open '/usr/local/bin/docker-entrypoint.sh': Permission denied
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Logging of backtrace is disabled in this loglevel
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Logging messages starting with 'TRACE' disabled
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Loaded default config
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Loaded config file '/etc/radicale/config'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Skipped missing/unreadable config file '/root/.config/radicale/config'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Starting Radicale (python=3.12.10 radicale=3.6.0 vobject=0.9.9 passlib=1.9.3 defusedxml=0.7.1 bcrypt=n/a argon2-cffi=n/a pika=1.3.2 ldap=n/a ldap3=n/a pam=n/a) as user=root(0) groups=root(0),root(0),bin(1),daemon(2),sys(3),adm(4),disk(6),wheel(10),floppy(11),dialout(20),tape(26),video(27) on Linux-6.12.73+deb13-amd64-x86_64-with
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth type is 'radicale_modoboa_auth_oauth2'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.strip_domain: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.lc_username: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.uc_username: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.urldecode_username: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.delay: 1.000000 seconds
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.cache_logins: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] auth dovecot socket: '/var/run/dovecot/auth-client'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [WARNING] Using oauth2 introspection endpoint: http://dovecot:Toto12345@api-unsecured:8001/api/o/introspect/
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] storage cache version: "b'radicale=3.3.1;vobject=0.9.9;'"
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] storage type is 'radicale.storage.multifilesystem'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Lock file (StoragePartLock): '/collections/.Radicale.lock'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage folder umask (from system): '0022'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location: '/collections'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location permissions: path='/collections' owner=root(0) group=root(0) mode=40775
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location subfolder: '/collections/collection-root'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location subfolder permissions: path='/collections/collection-root' owner=root(0) group=root(0) mode=40755
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache subfolder usage for 'item': False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache subfolder usage for 'history': False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache subfolder usage for 'sync-token': False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache use mtime and size for 'item': False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage item mtime resolution test with file: '/collections/collection-root/.Radicale.mtime_test'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage item mtime resoultion test set: 999999999999
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage item mtime resoultion test get: 999999999999
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage item mtime resolution test result: 1 ns
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache using mtime and size for 'item' may be an option in case of performance issues
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage cache action logging: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] rights type is 'radicale.rights.from_file'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Read rights file
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] web type is 'radicale.web.none'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] hook type is 'radicale.hook.none'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] max_content_length set to: 100000000 bytes (95.4 Mbytes)
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] max_resource_size  set to: 10000000 bytes (9.5 Mbytes)
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] log bad put request content: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log request  header  on debug: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log request  content on debug: True
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log response header  on debug: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log response content on debug: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Default script name to strip from URI if called by reverse proxy is taken from HTTP_X_SCRIPT_NAME or SCRIPT_NAME
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] permit delete of collection: True
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] permit overwrite of collection: True
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] strict preconditions check: False
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] profiling: 'none'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] getaddrinfo of '0.0.0.0:5232': [(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '0.0.0.0', ('0.0.0.0', 5232))]
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [DEBUG] try to create server socket on '0.0.0.0:5232'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Listening on '0.0.0.0:5232'
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Maximum parallel connections: 8
[radicale]      | [2026-02-19 21:24:07 +0000] [1] [INFO] Radicale server ready
[rq]            | Traceback (most recent call last):
[rq]            |   File "/code/test_project/manage.py", line 24, in <module>
[rq]            |     execute_from_command_line(sys.argv)
[rq]            |     ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
[rq]            |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
[rq]            |     utility.execute()
[rq]            |     ~~~~~~~~~~~~~~~^^
[rq]            |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute
[rq]            |     django.setup()
[rq]            |     ~~~~~~~~~~~~^^
[rq]            |   File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup
[rq]            |     apps.populate(settings.INSTALLED_APPS)
[rq]            |     ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
[rq]            |   File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate
[rq]            |     app_config.import_models()
[rq]            |     ~~~~~~~~~~~~~~~~~~~~~~~~^^
[rq]            |   File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models
[rq]            |     self.models_module = import_module(models_module_name)
[rq]            |                          ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
[rq]            |   File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module
[rq]            |     return _bootstrap._gcd_import(name[level:], package, level)
[rq]            |            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rq]            |   File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
[rq]            |   File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
[rq]            |   File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
[rq]            |   File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
[rq]            |   File "<frozen importlib._bootstrap_external>", line 759, in exec_module
[rq]            |   File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
[rq]            |   File "/code/modoboa/contacts/models.py", line 16, in <module>
[rq]            |     from .. import __version__
[rq]            | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py)
[policyd]       | Traceback (most recent call last):
[policyd]       |   File "/code/test_project/manage.py", line 24, in <module>
[policyd]       |     execute_from_command_line(sys.argv)
[policyd]       |     ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
[policyd]       |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
[policyd]       |     utility.execute()
[policyd]       |     ~~~~~~~~~~~~~~~^^
[policyd]       |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute
[policyd]       |     django.setup()
[policyd]       |     ~~~~~~~~~~~~^^
[policyd]       |   File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup
[policyd]       |     apps.populate(settings.INSTALLED_APPS)
[policyd]       |     ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
[policyd]       |   File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate
[policyd]       |     app_config.import_models()
[policyd]       |     ~~~~~~~~~~~~~~~~~~~~~~~~^^
[policyd]       |   File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models
[policyd]       |     self.models_module = import_module(models_module_name)
[policyd]       |                          ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
[policyd]       |   File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module
[policyd]       |     return _bootstrap._gcd_import(name[level:], package, level)
[policyd]       |            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[policyd]       |   File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
[policyd]       |   File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
[policyd]       |   File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
[policyd]       |   File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
[policyd]       |   File "<frozen importlib._bootstrap_external>", line 759, in exec_module
[policyd]       |   File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
[policyd]       |   File "/code/modoboa/contacts/models.py", line 16, in <module>
[policyd]       |     from .. import __version__
[policyd]       | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py)
[api-unsecured] | Traceback (most recent call last):
[api-unsecured] |   File "/code/test_project/manage.py", line 24, in <module>
[api-unsecured] |     execute_from_command_line(sys.argv)
[api-unsecured] |     ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
[api-unsecured] |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
[api-unsecured] |     utility.execute()
[api-unsecured] |     ~~~~~~~~~~~~~~~^^
[api-unsecured] |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute
[api-unsecured] |     django.setup()
[api-unsecured] |     ~~~~~~~~~~~~^^
[api-unsecured] |   File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup
[api-unsecured] |     apps.populate(settings.INSTALLED_APPS)
[api-unsecured] |     ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
[api-unsecured] |   File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate
[api-unsecured] |     app_config.import_models()
[api-unsecured] |     ~~~~~~~~~~~~~~~~~~~~~~~~^^
[api-unsecured] |   File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models
[api-unsecured] |     self.models_module = import_module(models_module_name)
[api-unsecured] |                          ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
[api-unsecured] |   File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module
[api-unsecured] |     return _bootstrap._gcd_import(name[level:], package, level)
[api-unsecured] |            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[api-unsecured] |   File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
[api-unsecured] |   File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
[api-unsecured] |   File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
[api-unsecured] |   File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
[api-unsecured] |   File "<frozen importlib._bootstrap_external>", line 759, in exec_module
[api-unsecured] |   File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
[api-unsecured] |   File "/code/modoboa/contacts/models.py", line 16, in <module>
[api-unsecured] |     from .. import __version__
[api-unsecured] | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py)
[rq-scheduler]  | Traceback (most recent call last):
[rq-scheduler]  |   File "/code/test_project/manage.py", line 24, in <module>
[rq-scheduler]  |     execute_from_command_line(sys.argv)
[rq-scheduler]  |     ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
[rq-scheduler]  |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
[rq-scheduler]  |     utility.execute()
[rq-scheduler]  |     ~~~~~~~~~~~~~~~^^
[rq-scheduler]  |   File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute
[rq-scheduler]  |     django.setup()
[rq-scheduler]  |     ~~~~~~~~~~~~^^
[rq-scheduler]  |   File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup
[rq-scheduler]  |     apps.populate(settings.INSTALLED_APPS)
[rq-scheduler]  |     ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
[rq-scheduler]  |   File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate
[rq-scheduler]  |     app_config.import_models()
[rq-scheduler]  |     ~~~~~~~~~~~~~~~~~~~~~~~~^^
[rq-scheduler]  |   File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models
[rq-scheduler]  |     self.models_module = import_module(models_module_name)
[rq-scheduler]  |                          ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
[rq-scheduler]  |   File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module
[rq-scheduler]  |     return _bootstrap._gcd_import(name[level:], package, level)
[rq-scheduler]  |            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rq-scheduler]  |   File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
[rq-scheduler]  |   File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
[rq-scheduler]  |   File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
[rq-scheduler]  |   File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
[rq-scheduler]  |   File "<frozen importlib._bootstrap_external>", line 759, in exec_module
[rq-scheduler]  |   File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
[rq-scheduler]  |   File "/code/modoboa/contacts/models.py", line 16, in <module>
[rq-scheduler]  |     from .. import __version__
[rq-scheduler]  | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py)
<!-- gh-comment-id:3930170503 --> @danielfdickinson commented on GitHub (Feb 19, 2026): Here is the result with the 'unqualified registries' error resolved (that was a configuration issue), but not a full rebuild. Will try that next. Using podman for this test - original report was using docker-ce, but I do not currently have an available test instance with docker-ce. ```python 68e4929188559bda266f4996db58b1132e4d5cf1a3b901b665e00ee02d2fab09 Resolving "redis" using unqualified-search registries (/etc/containers/registries.conf) Trying to pull docker.io/library/redis:8-alpine... Getting image source signatures Copying blob 4f4fb700ef54 skipped: already exists Copying blob 3bce66bdaf29 done | Copying blob 589002ba0eae skipped: already exists Copying blob 580cc54ee1be done | Copying blob 23739fb30465 done | Copying blob 7586fb43755e done | Copying blob 0adf826af742 done | Copying config 060b91c4b1 done | Writing manifest to image destination b6bbbaff388c04126e7ac5b9d674b394f7ae52bee1c4488616e88aa0b47093ea 1ad8037bf670ef14705a6aae4489a2742c53d853aecf672b06e85a2026e955c2 bbe01d032527fc1f5989167fed1439632bc88d69af47ea15c2478cbed952f26f ba3d0ad7c4be850b44a14613ec8d17e356038e3bcae41f88bac9446fea35f928 0501fe2dda38cc731c48280da289e323183dbf448eefaa4f933dc3be4ea4dab9 b39d1f152d97f6e9fab23db88a265178d36f6fb583b445f97c6361d8b733d150 a795e4b00e8ed09ba8600a9d6d74d0e6dcbfd10763f68058030793ea0acee913 d318ec232aae96c083967d1d33dfb96b51471479e2dea3868836111a8dfd5f27 Resolving "dovecot/dovecot" using unqualified-search registries (/etc/containers/registries.conf) Trying to pull docker.io/dovecot/dovecot:2.3-latest... Getting image source signatures Copying blob f25d19a4338c done | Copying blob 82aabceedc2f done | Copying blob 86ecae8c62b9 done | Copying blob a61366e2689d done | Copying blob a2b30249caed done | Copying config b3fa53a298 done | Writing manifest to image destination 4c7e182de318e2ebe693783e41cfcbf85c8b6b80168abffe812a424a3cedf8aa [redis] | /bin/sh: can't open '/usr/local/bin/docker-entrypoint.sh': Permission denied [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Logging of backtrace is disabled in this loglevel [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Logging messages starting with 'TRACE' disabled [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Loaded default config [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Loaded config file '/etc/radicale/config' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Skipped missing/unreadable config file '/root/.config/radicale/config' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Starting Radicale (python=3.12.10 radicale=3.6.0 vobject=0.9.9 passlib=1.9.3 defusedxml=0.7.1 bcrypt=n/a argon2-cffi=n/a pika=1.3.2 ldap=n/a ldap3=n/a pam=n/a) as user=root(0) groups=root(0),root(0),bin(1),daemon(2),sys(3),adm(4),disk(6),wheel(10),floppy(11),dialout(20),tape(26),video(27) on Linux-6.12.73+deb13-amd64-x86_64-with [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth type is 'radicale_modoboa_auth_oauth2' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.strip_domain: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.lc_username: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.uc_username: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.urldecode_username: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.delay: 1.000000 seconds [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth.cache_logins: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] auth dovecot socket: '/var/run/dovecot/auth-client' [radicale] | [2026-02-19 21:24:07 +0000] [1] [WARNING] Using oauth2 introspection endpoint: http://dovecot:Toto12345@api-unsecured:8001/api/o/introspect/ [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] storage cache version: "b'radicale=3.3.1;vobject=0.9.9;'" [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] storage type is 'radicale.storage.multifilesystem' [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Lock file (StoragePartLock): '/collections/.Radicale.lock' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage folder umask (from system): '0022' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location: '/collections' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location permissions: path='/collections' owner=root(0) group=root(0) mode=40775 [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location subfolder: '/collections/collection-root' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage location subfolder permissions: path='/collections/collection-root' owner=root(0) group=root(0) mode=40755 [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache subfolder usage for 'item': False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache subfolder usage for 'history': False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache subfolder usage for 'sync-token': False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache use mtime and size for 'item': False [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage item mtime resolution test with file: '/collections/collection-root/.Radicale.mtime_test' [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage item mtime resoultion test set: 999999999999 [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage item mtime resoultion test get: 999999999999 [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage item mtime resolution test result: 1 ns [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Storage cache using mtime and size for 'item' may be an option in case of performance issues [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Storage cache action logging: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] rights type is 'radicale.rights.from_file' [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] Read rights file [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] web type is 'radicale.web.none' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] hook type is 'radicale.hook.none' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] max_content_length set to: 100000000 bytes (95.4 Mbytes) [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] max_resource_size set to: 10000000 bytes (9.5 Mbytes) [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] log bad put request content: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log request header on debug: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log request content on debug: True [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log response header on debug: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] log response content on debug: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Default script name to strip from URI if called by reverse proxy is taken from HTTP_X_SCRIPT_NAME or SCRIPT_NAME [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] permit delete of collection: True [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] permit overwrite of collection: True [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] strict preconditions check: False [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] profiling: 'none' [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] getaddrinfo of '0.0.0.0:5232': [(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '0.0.0.0', ('0.0.0.0', 5232))] [radicale] | [2026-02-19 21:24:07 +0000] [1] [DEBUG] try to create server socket on '0.0.0.0:5232' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Listening on '0.0.0.0:5232' [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Maximum parallel connections: 8 [radicale] | [2026-02-19 21:24:07 +0000] [1] [INFO] Radicale server ready [rq] | Traceback (most recent call last): [rq] | File "/code/test_project/manage.py", line 24, in <module> [rq] | execute_from_command_line(sys.argv) [rq] | ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ [rq] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line [rq] | utility.execute() [rq] | ~~~~~~~~~~~~~~~^^ [rq] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute [rq] | django.setup() [rq] | ~~~~~~~~~~~~^^ [rq] | File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup [rq] | apps.populate(settings.INSTALLED_APPS) [rq] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ [rq] | File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate [rq] | app_config.import_models() [rq] | ~~~~~~~~~~~~~~~~~~~~~~~~^^ [rq] | File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models [rq] | self.models_module = import_module(models_module_name) [rq] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ [rq] | File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module [rq] | return _bootstrap._gcd_import(name[level:], package, level) [rq] | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [rq] | File "<frozen importlib._bootstrap>", line 1398, in _gcd_import [rq] | File "<frozen importlib._bootstrap>", line 1371, in _find_and_load [rq] | File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked [rq] | File "<frozen importlib._bootstrap>", line 938, in _load_unlocked [rq] | File "<frozen importlib._bootstrap_external>", line 759, in exec_module [rq] | File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed [rq] | File "/code/modoboa/contacts/models.py", line 16, in <module> [rq] | from .. import __version__ [rq] | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py) [policyd] | Traceback (most recent call last): [policyd] | File "/code/test_project/manage.py", line 24, in <module> [policyd] | execute_from_command_line(sys.argv) [policyd] | ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ [policyd] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line [policyd] | utility.execute() [policyd] | ~~~~~~~~~~~~~~~^^ [policyd] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute [policyd] | django.setup() [policyd] | ~~~~~~~~~~~~^^ [policyd] | File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup [policyd] | apps.populate(settings.INSTALLED_APPS) [policyd] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ [policyd] | File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate [policyd] | app_config.import_models() [policyd] | ~~~~~~~~~~~~~~~~~~~~~~~~^^ [policyd] | File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models [policyd] | self.models_module = import_module(models_module_name) [policyd] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ [policyd] | File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module [policyd] | return _bootstrap._gcd_import(name[level:], package, level) [policyd] | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [policyd] | File "<frozen importlib._bootstrap>", line 1398, in _gcd_import [policyd] | File "<frozen importlib._bootstrap>", line 1371, in _find_and_load [policyd] | File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked [policyd] | File "<frozen importlib._bootstrap>", line 938, in _load_unlocked [policyd] | File "<frozen importlib._bootstrap_external>", line 759, in exec_module [policyd] | File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed [policyd] | File "/code/modoboa/contacts/models.py", line 16, in <module> [policyd] | from .. import __version__ [policyd] | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py) [api-unsecured] | Traceback (most recent call last): [api-unsecured] | File "/code/test_project/manage.py", line 24, in <module> [api-unsecured] | execute_from_command_line(sys.argv) [api-unsecured] | ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ [api-unsecured] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line [api-unsecured] | utility.execute() [api-unsecured] | ~~~~~~~~~~~~~~~^^ [api-unsecured] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute [api-unsecured] | django.setup() [api-unsecured] | ~~~~~~~~~~~~^^ [api-unsecured] | File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup [api-unsecured] | apps.populate(settings.INSTALLED_APPS) [api-unsecured] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ [api-unsecured] | File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate [api-unsecured] | app_config.import_models() [api-unsecured] | ~~~~~~~~~~~~~~~~~~~~~~~~^^ [api-unsecured] | File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models [api-unsecured] | self.models_module = import_module(models_module_name) [api-unsecured] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ [api-unsecured] | File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module [api-unsecured] | return _bootstrap._gcd_import(name[level:], package, level) [api-unsecured] | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [api-unsecured] | File "<frozen importlib._bootstrap>", line 1398, in _gcd_import [api-unsecured] | File "<frozen importlib._bootstrap>", line 1371, in _find_and_load [api-unsecured] | File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked [api-unsecured] | File "<frozen importlib._bootstrap>", line 938, in _load_unlocked [api-unsecured] | File "<frozen importlib._bootstrap_external>", line 759, in exec_module [api-unsecured] | File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed [api-unsecured] | File "/code/modoboa/contacts/models.py", line 16, in <module> [api-unsecured] | from .. import __version__ [api-unsecured] | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py) [rq-scheduler] | Traceback (most recent call last): [rq-scheduler] | File "/code/test_project/manage.py", line 24, in <module> [rq-scheduler] | execute_from_command_line(sys.argv) [rq-scheduler] | ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ [rq-scheduler] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line [rq-scheduler] | utility.execute() [rq-scheduler] | ~~~~~~~~~~~~~~~^^ [rq-scheduler] | File "/opt/venv/lib/python3.14/site-packages/django/core/management/__init__.py", line 416, in execute [rq-scheduler] | django.setup() [rq-scheduler] | ~~~~~~~~~~~~^^ [rq-scheduler] | File "/opt/venv/lib/python3.14/site-packages/django/__init__.py", line 24, in setup [rq-scheduler] | apps.populate(settings.INSTALLED_APPS) [rq-scheduler] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ [rq-scheduler] | File "/opt/venv/lib/python3.14/site-packages/django/apps/registry.py", line 116, in populate [rq-scheduler] | app_config.import_models() [rq-scheduler] | ~~~~~~~~~~~~~~~~~~~~~~~~^^ [rq-scheduler] | File "/opt/venv/lib/python3.14/site-packages/django/apps/config.py", line 269, in import_models [rq-scheduler] | self.models_module = import_module(models_module_name) [rq-scheduler] | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ [rq-scheduler] | File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module [rq-scheduler] | return _bootstrap._gcd_import(name[level:], package, level) [rq-scheduler] | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [rq-scheduler] | File "<frozen importlib._bootstrap>", line 1398, in _gcd_import [rq-scheduler] | File "<frozen importlib._bootstrap>", line 1371, in _find_and_load [rq-scheduler] | File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked [rq-scheduler] | File "<frozen importlib._bootstrap>", line 938, in _load_unlocked [rq-scheduler] | File "<frozen importlib._bootstrap_external>", line 759, in exec_module [rq-scheduler] | File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed [rq-scheduler] | File "/code/modoboa/contacts/models.py", line 16, in <module> [rq-scheduler] | from .. import __version__ [rq-scheduler] | ImportError: cannot import name '__version__' from 'modoboa' (/code/modoboa/__init__.py) ```
Author
Owner

@danielfdickinson commented on GitHub (Feb 19, 2026):

Ok, I've done a full rebuild. For the redis container there was the following error message:

[redis]         | /bin/sh: can't open '/usr/local/bin/docker-entrypoint.sh': Permission denied

I am attaching the full docker-compose up output in case you need that as well.

modoboa-up.log

<!-- gh-comment-id:3930277836 --> @danielfdickinson commented on GitHub (Feb 19, 2026): Ok, I've done a full rebuild. For the `redis` container there was the following error message: ``` [redis] | /bin/sh: can't open '/usr/local/bin/docker-entrypoint.sh': Permission denied ``` I am attaching the full docker-compose up output in case you need that as well. [modoboa-up.log](https://github.com/user-attachments/files/25427892/modoboa-up.log)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/modoboa-modoboa#1929
No description provided.