Upgrading to 0.52.0 on self hosted server fails #2158

Open
opened 2025-11-20 07:04:53 -05:00 by saavagebueno · 2 comments
Owner

Originally created by @Urajmal on GitHub (Aug 7, 2025).

Describe the problem

I am having a problem of upgrading the previous version 0.50 to 0.52 via the recommended commands.
I fails with the following error:

`tadej@netbird-vm:~/netbird$ sudo docker-compose up -d --force-recreate management dashboard signal relay
WARNING: Python-dotenv could not parse statement starting at line 1
WARNING: Python-dotenv could not parse statement starting at line 2
Recreating netbird_signal_1 ...
Recreating netbird_management_1 ...
Recreating netbird_relay_1 ...
Recreating netbird_dashboard_1 ...

ERROR: for netbird_management_1 'ContainerConfig'

ERROR: for netbird_relay_1 'ContainerConfig'

ERROR: for netbird_signal_1 'ContainerConfig'

ERROR: for netbird_dashboard_1 'ContainerConfig'

ERROR: for management 'ContainerConfig'

ERROR: for relay 'ContainerConfig'

ERROR: for signal 'ContainerConfig'

ERROR: for dashboard 'ContainerConfig'
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 33, in
sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main
command_func()
~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 203, in perform_command
handler(command, command_options)
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/compose/metrics/decorator.py", line 18, in wrapper
result = fn(*args, **kwargs)
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1184, in up
to_attach = up(False)
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1164, in up
return self.project.up(
~~~~~~~~~~~~~~~^
service_names=service_names,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<14 lines>...
attach_dependencies=attach_dependencies,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/project.py", line 697, in up
results, errors = parallel.parallel_execute(
~~~~~~~~~~~~~~~~~~~~~~~~~^
services,
^^^^^^^^^
...<3 lines>...
get_deps,
^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
File "/usr/lib/python3/dist-packages/compose/project.py", line 679, in do
return service.execute_convergence_plan(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
plans[service.name],
^^^^^^^^^^^^^^^^^^^^
...<7 lines>...
override_options=override_options,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/service.py", line 579, in execute_convergence_plan
return self._execute_convergence_recreate(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
containers, scale, timeout, detached, start,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
renew_anonymous_volumes,
^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate
containers, errors = parallel_execute(
~~~~~~~~~~~~~~~~^
containers,
^^^^^^^^^^^
...<2 lines>...
"Recreating",
^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
File "/usr/lib/python3/dist-packages/compose/service.py", line 494, in recreate
return self.recreate_container(
~~~~~~~~~~~~~~~~~~~~~~~^
container, timeout=timeout, attach_logs=not detached,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
start_new_container=start, renew_anonymous_volumes=renew_anonymous_volumes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/service.py", line 612, in recreate_container
new_container = self.create_container(
previous_container=container if not renew_anonymous_volumes else None,
number=container.number,
quiet=True,
)
File "/usr/lib/python3/dist-packages/compose/service.py", line 330, in create_container
container_options = self._get_container_create_options(
override_options,
...<2 lines>...
previous_container=previous_container,
)
File "/usr/lib/python3/dist-packages/compose/service.py", line 921, in _get_container_create_options
container_options, override_options = self._build_container_volume_options(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
previous_container, container_options, override_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/service.py", line 960, in _build_container_volume_options
binds, affinity = merge_volume_bindings(
~~~~~~~~~~~~~~~~~~~~~^
container_volumes, self.options.get('tmpfs') or [], previous_container,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
container_mounts
^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/service.py", line 1548, in merge_volume_bindings
old_volumes, old_mounts = get_container_data_volumes(
~~~~~~~~~~~~~~~~~~~~~~~~~~^
previous_container, volumes, tmpfs, mounts
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compose/service.py", line 1579, in get_container_data_volumes
container.image_config['ContainerConfig'].get('Volumes') or {}
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'ContainerConfig'
`

I am following the Backup and Upgrade procedure in:
https://docs.netbird.io/selfhosted/selfhosted-quickstart

After I execute the last command: "docker compose up -d --force-recreate management dashboard signal relay"
there is an 502 Error on webpage, whether Zitadel UI console opens.

I have a succssessful backup copy, although the "docker compose" is now "docker-compose" command.
I am running it on Ubuntu Plucky 25.04 on a self hosted Virtual machine.

I would be glad if someone explains to me, how can I upgrade to newer version, if I will need in in the future.

Actual status after running the last command is output above. If I run just "docker-compose up -d" the docker runs and everything works.

Any ideas, what is with the "docker-compose up -d --force-recreate management dashboard signal relay" command wrong?

Originally created by @Urajmal on GitHub (Aug 7, 2025). **Describe the problem** I am having a problem of upgrading the previous version 0.50 to 0.52 via the recommended commands. I fails with the following error: `tadej@netbird-vm:~/netbird$ sudo docker-compose up -d --force-recreate management dashboard signal relay WARNING: Python-dotenv could not parse statement starting at line 1 WARNING: Python-dotenv could not parse statement starting at line 2 Recreating netbird_signal_1 ... Recreating netbird_management_1 ... Recreating netbird_relay_1 ... Recreating netbird_dashboard_1 ... ERROR: for netbird_management_1 'ContainerConfig' ERROR: for netbird_relay_1 'ContainerConfig' ERROR: for netbird_signal_1 'ContainerConfig' ERROR: for netbird_dashboard_1 'ContainerConfig' ERROR: for management 'ContainerConfig' ERROR: for relay 'ContainerConfig' ERROR: for signal 'ContainerConfig' ERROR: for dashboard 'ContainerConfig' Traceback (most recent call last): File "/usr/bin/docker-compose", line 33, in <module> sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')()) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main command_func() ~~~~~~~~~~~~^^ File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 203, in perform_command handler(command, command_options) ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/compose/metrics/decorator.py", line 18, in wrapper result = fn(*args, **kwargs) File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1184, in up to_attach = up(False) File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1164, in up return self.project.up( ~~~~~~~~~~~~~~~^ service_names=service_names, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<14 lines>... attach_dependencies=attach_dependencies, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/project.py", line 697, in up results, errors = parallel.parallel_execute( ~~~~~~~~~~~~~~~~~~~~~~~~~^ services, ^^^^^^^^^ ...<3 lines>... get_deps, ^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute raise error_to_reraise File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer result = func(obj) File "/usr/lib/python3/dist-packages/compose/project.py", line 679, in do return service.execute_convergence_plan( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ plans[service.name], ^^^^^^^^^^^^^^^^^^^^ ...<7 lines>... override_options=override_options, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/service.py", line 579, in execute_convergence_plan return self._execute_convergence_recreate( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ containers, scale, timeout, detached, start, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ renew_anonymous_volumes, ^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate containers, errors = parallel_execute( ~~~~~~~~~~~~~~~~^ containers, ^^^^^^^^^^^ ...<2 lines>... "Recreating", ^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute raise error_to_reraise File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer result = func(obj) File "/usr/lib/python3/dist-packages/compose/service.py", line 494, in recreate return self.recreate_container( ~~~~~~~~~~~~~~~~~~~~~~~^ container, timeout=timeout, attach_logs=not detached, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ start_new_container=start, renew_anonymous_volumes=renew_anonymous_volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/service.py", line 612, in recreate_container new_container = self.create_container( previous_container=container if not renew_anonymous_volumes else None, number=container.number, quiet=True, ) File "/usr/lib/python3/dist-packages/compose/service.py", line 330, in create_container container_options = self._get_container_create_options( override_options, ...<2 lines>... previous_container=previous_container, ) File "/usr/lib/python3/dist-packages/compose/service.py", line 921, in _get_container_create_options container_options, override_options = self._build_container_volume_options( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ previous_container, container_options, override_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/service.py", line 960, in _build_container_volume_options binds, affinity = merge_volume_bindings( ~~~~~~~~~~~~~~~~~~~~~^ container_volumes, self.options.get('tmpfs') or [], previous_container, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ container_mounts ^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/service.py", line 1548, in merge_volume_bindings old_volumes, old_mounts = get_container_data_volumes( ~~~~~~~~~~~~~~~~~~~~~~~~~~^ previous_container, volumes, tmpfs, mounts ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3/dist-packages/compose/service.py", line 1579, in get_container_data_volumes container.image_config['ContainerConfig'].get('Volumes') or {} ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ KeyError: 'ContainerConfig' ` I am following the Backup and Upgrade procedure in: https://docs.netbird.io/selfhosted/selfhosted-quickstart After I execute the last command: "docker compose up -d --force-recreate management dashboard signal relay" there is an 502 Error on webpage, whether Zitadel UI console opens. I have a succssessful backup copy, although the "docker compose" is now "docker-compose" command. I am running it on Ubuntu Plucky 25.04 on a self hosted Virtual machine. I would be glad if someone explains to me, how can I upgrade to newer version, if I will need in in the future. Actual status after running the last command is output above. If I run just "docker-compose up -d" the docker runs and everything works. Any ideas, what is with the "docker-compose up -d --force-recreate management dashboard signal relay" command wrong?
saavagebueno added the triage-needed label 2025-11-20 07:04:53 -05:00
Author
Owner

@ressys1978 commented on GitHub (Aug 7, 2025):

Try just "docker compose up -d --force-recreate"

@ressys1978 commented on GitHub (Aug 7, 2025): Try just "docker compose up -d --force-recreate"
Author
Owner

@skerit commented on GitHub (Nov 14, 2025):

Had the same issue, and the solution was pretty obvious. All I had to do first was take the running containers down 😅

docker-compose down

Seems very obvious now, but ... oh well.

And after that docker-compose up -d --force-recreate would work.

@skerit commented on GitHub (Nov 14, 2025): Had the same issue, and the solution was pretty obvious. All I had to do first was take the running containers down 😅 ```bash docker-compose down ``` Seems very obvious now, but ... oh well. And after that `docker-compose up -d --force-recreate` would work.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SVI/netbird#2158