openems release 2025.6.0 backend docker deployment fails

After having waited for a month to get the UI working, I tried to deploy the latest OpenEMS 2025.6.0 backend as docker on a fully updated Debian 12. But it fails:

root@Test-OpenEMS-BE-UI:~# docker compose pull
[+] Pulling 3/3
 ✔ openems_influxdb Pulled                                                                                            1.0s 
 ✔ openems_backend Pulled                                                                                             1.1s 
 ✔ openems-ui Pulled                                                                                                  1.1s 
root@Test-OpenEMS-BE-UI:~# docker compose up -d
[+] Running 3/3
 ✔ Container openems_ui        Running                                                                                0.0s 
 ✔ Container openems_influxdb  Running                                                                                0.0s 
 ✔ Container openems_backend   Running                                                                                0.0s 
root@Test-OpenEMS-BE-UI:~# docker compose ps
NAME               IMAGE                       COMMAND                  SERVICE            CREATED          STATUS          PORTS
openems_backend    openems/backend:latest      "/init"                  openems_backend    28 minutes ago   Up 55 seconds   0.0.0.0:8079->8079/tcp, [::]:8079->8079/tcp, 0.0.0.0:8081-8082->8081-8082/tcp, [::]:8081-8082->8081-8082/tcp
openems_influxdb   influxdb:alpine             "/entrypoint.sh infl…"   openems_influxdb   28 minutes ago   Up 55 seconds   0.0.0.0:8086->8086/tcp, [::]:8086->8086/tcp
openems_ui         openems/ui-backend:latest   "/init"                  openems-ui         28 minutes ago   Up 55 seconds   0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp
root@Test-OpenEMS-BE-UI:~# docker logs openems_backend 
s6-rc-oneshot-run: fatal: unable to exec /etc/s6-overlay/s6-rc.d/init-adduser/run: Permission denied
s6-rc: warning: unable to start service init-adduser: command exited 126
[migrations] started
[migrations] no migrations found
[migrations] started
[migrations] no migrations found
s6-rc-oneshot-run: fatal: unable to exec /etc/s6-overlay/s6-rc.d/init-adduser/run: Permission denied
s6-rc: warning: unable to start service init-adduser: command exited 126
[migrations] started
[migrations] no migrations found
s6-rc-oneshot-run: fatal: unable to exec /etc/s6-overlay/s6-rc.d/init-adduser/run: Permission denied
s6-rc: warning: unable to start service init-adduser: command exited 126
root@Test-OpenEMS-BE-UI:~# uname -a
Linux Test-OpenEMS-BE-UI 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux

What did I do wrong?

As far as I understand it has been fixed here

Please use develop.

Also if you use Backend commercially - could you consider joining the Association? :slight_smile:

Greetings

Thx, I switched for be to develop and pulled the updated image. Now I get a java exception…:

2025-06-12T09:14:18.858091191Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Stopping configuration org.apache.logging.log4j.core.config.DefaultConfiguration@2838dd48...
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Configuration org.apache.logging.log4j.core.config.DefaultConfiguration@2838dd48 stopped.
2025-06-12T09:14:18.858926671Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Configuration org.apache.logging.log4j.core.config.DefaultConfiguration@2838dd48 stopped.
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Starting LoggerContext[name=pax-logging] with configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224...
2025-06-12T09:14:18.881070561Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Starting LoggerContext[name=pax-logging] with configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224...
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Starting configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224...
2025-06-12T09:14:18.965475441Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Starting configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224...
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Start watching for changes to stream (375 bytes, unknown location) every 0 seconds
2025-06-12T09:14:18.965855371Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Start watching for changes to stream (375 bytes, unknown location) every 0 seconds
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224 started.
2025-06-12T09:14:18.966986811Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224 started.
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Stopping configuration org.apache.logging.log4j.core.config.NullConfiguration@3ec4633b...
2025-06-12T09:14:18.968306991Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Stopping configuration org.apache.logging.log4j.core.config.NullConfiguration@3ec4633b...
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Configuration org.apache.logging.log4j.core.config.NullConfiguration@3ec4633b stopped.
2025-06-12T09:14:18.968610161Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Configuration org.apache.logging.log4j.core.config.NullConfiguration@3ec4633b stopped.
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : LoggerContext[name=pax-logging] started with configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224.
2025-06-12T09:14:18.968912511Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO LoggerContext[name=pax-logging] started with configuration org.apache.logging.log4j.core.config.properties.PropertiesConfiguration@3d82a224.
org.ops4j.pax.logging.pax-logging-api [log4j2] INFO : Log4J2 configured using configuration from passed properties
2025-06-12T09:14:18.969744171Z CM Configuration Updater (ManagedService Update: pid=[org.ops4j.pax.logging]) INFO Log4J2 configured using configuration from passed properties
2025-06-12T09:14:18,978 [ogging])] INFO  [ventAdminConfigurationNotifier] Sending Event Admin notification (configuration successful) to org/ops4j/pax/logging/Configuration
2025-06-12T09:14:19,002 [artLevel] INFO  [backend.application.BackendApp] ===================================================
2025-06-12T09:14:19,002 [artLevel] INFO  [backend.application.BackendApp] OpenEMS Backend version [2025.7.0-SNAPSHOT] started
2025-06-12T09:14:19,003 [artLevel] INFO  [backend.application.BackendApp] ===================================================
2025-06-12T09:14:19,026 [artLevel] INFO  [.debugcycle.DebugCycleExecutor] Update metrics all 5 Seconds
2025-06-12T09:14:19,075 [artLevel] INFO  [end.metadata.file.MetadataFile] Activate [path=/var/opt/openems/metadata.json]
2025-06-12T09:14:19,083 [hread-12] WARN  [end.metadata.file.MetadataFile] [Metadata.File] Unable to read file [/var/opt/openems/metadata.json]: /var/opt/openems/metadata.json (No such file or directory)
java.io.FileNotFoundException: /var/opt/openems/metadata.json (No such file or directory)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(Unknown Source)
	at java.base/java.io.FileInputStream.<init>(Unknown Source)
	at java.base/java.io.FileInputStream.<init>(Unknown Source)
	at java.base/java.io.FileReader.<init>(Unknown Source)
	at io.openems.backend.metadata.file.MetadataFile.refreshData(MetadataFile.java:188)
	at io.openems.backend.metadata.file.MetadataFile.lambda$activate$0(MetadataFile.java:115)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
2025-06-12T09:14:19,111 [artLevel] INFO  [d.timedata.dummy.TimedataDummy] [Timedata.Dummy] Activate
2025-06-12T09:14:19,261 [artLevel] INFO  [rg.eclipse.jetty.server.Server] jetty-12.0.21; built: 2025-05-09T00:32:00.688Z; git: 1c4719601e31b05b7d68910d2edd980259f1f53c; jvm 21.0.7+6-LTS
2025-06-12T09:14:19,289 [artLevel] INFO  [ession.DefaultSessionIdManager] Session workerName=node0
2025-06-12T09:14:19,301 [artLevel] INFO  [.server.handler.ContextHandler] Started oeje10s.ServletContextHandler@5053ad17{ROOT,/,b=null,a=AVAILABLE,h=oeje10s.SessionHandler@11a23ff0{STARTED}}
2025-06-12T09:14:19,303 [artLevel] INFO  [.servlet.ServletContextHandler] Started oeje10s.ServletContextHandler@5053ad17{ROOT,/,b=null,a=AVAILABLE,h=oeje10s.SessionHandler@11a23ff0{STARTED}}
2025-06-12T09:14:19,305 [artLevel] INFO  [rg.eclipse.jetty.server.Server] Started oejs.Server@39e153fa{STARTING}[12.0.21,sto=0] @1790ms
2025-06-12T09:14:19,335 [artLevel] INFO  [jetty.server.AbstractConnector] Started ServerConnector@7d0dd7ba{HTTP/1.1, (http/1.1)}{localhost:8079}
2025-06-12T09:14:19,336 [artLevel] INFO  [org.apache.felix.http         ] Started Jetty 12.0.21 at port(s) HTTP:8079 on context path / [minThreads=8,maxThreads=200,acceptors=1,selectors=1,virtualThreadsEnabled=false]
2025-06-12T09:14:19,383 [artLevel] INFO  [org.apache.felix.webconsole   ] org.apache.felix.webconsole.internal.compendium.PreferencesConfigurationPrinter not enabled. Reason: Class org/osgi/service/prefs/BackingStoreException missing
2025-06-12T09:14:19,407 [artLevel] INFO  [org.apache.felix.webconsole   ] Servlet 3 bridge enabled
Connection to 127.0.0.1 8079 port [tcp/*] succeeded!
[ls.io-init] done.
2025-06-12T09:14:24,028 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:14:29,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:14:34,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:14:39,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:14:44,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:14:49,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:14:54,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:14:59,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:15:04,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:15:09,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED
2025-06-12T09:15:14,027 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] NOT STARTED

Is there something else, what I need to do?

Until now we are not using it. :wink: We are still evaluating it – and “we” is primary a (non-profit orientated) community, see: https://www.schloss-tempelhof.de/

@da-Kai You are the expert on Docker. I am not using it. Could you have a look maybe?

After I learned, that running an edge without a BE is a valid option, I’m trying to get the edge via docker deployed, as described in the documentation (switching from latest to develop , because of the permission issue): Deploy OpenEMS Edge to Docker :: Open Energy Management System
Unfortunately nothing seems to listen on port 8080 (nmap reports port closed ). docker logs openems_edge doesn’t show any errors. Logging in to the UI does work. Any idea what I missed?

What do you need more?

I assumed logging in into the felix web console to define our devices and schedulers.

Please read the Getting Started again, you can do so in the UI..

I might overlook something, but if I’m having a look at the readme, it says:

3. Access OpenEMS in your browser.

And opening the edge link does not work.

As i told you - please configure your Edge via the UI.

IMHO the getting started and your advice contradicted each other. Thus I create a pull request for the readme linked in the getting started to reflect your advice: Update README.md: removed link to felix, as it is neither accessible nor needed by sjjh · Pull Request #3199 · OpenEMS/openems · GitHub
Thx for your support!

No, the Console is indeed available in Non-Docker Enviroment. Also your PR is not using the latest develop Branch but the “latest” or “main” tag, which scrumbles up latest changes..

The PR is completely unnecessary in terms of Improving things but scrambling up 2 different Problems - instead the Apache Felix Web Console should be fixed to be available in Docker Environments.

Thx for your quick reply and sry for the mess with the pr. I did read your reply just now after having closed the pr and opened a new one: Update README.md: removed link to felix, added first steps to log in and configure by sjjh · Pull Request #3200 · OpenEMS/openems · GitHub
But this new pr seems to be unnecessary as well, if I understand you correctly, as the issue is rooted in the felix web console not being available when using docker (which I wasn’t aware of).
So, I’ll stick with the workaround of using the UI to configure OpenEMS for now, and try the felix console at a later time again. If the issue is fixed, it is maybe an improvement to add a sentence to the docker readme, where to jump back and continue with the normal getting started (or add respective contents to the docker readme).
Sry for the noise, I’m new to OpenEMS and sometimes a little overwhelmed with the complexity & documentation. I just try to improve the experience for beginners of OpenEMS.

1 Like

Noting that I seem unable to access to access localhost:8080/system/console/configMgr when deploying via prebuilt .jar or via docker. Both return a 401 error.

Yeah, well, 401 means just Uanuthorized.. Use another Browser or clear all Cache Data and try again

Also maybe you could consider joining the Association if you use OpenEMS Commerically ? :slight_smile:

Thanks, appreciate the response. We will consider joining if it works out; currently in very initial stages. Error persists across browsers. Will keep trying.

EDIT: Got it working in firefox, login process seems broken in msedge. You can bypass the login prompt with http://admin:admin@localhost:8080/system/console/configMgr