MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Version 2.34.0 - Missing X Server or $DISPLAY (Docker version of MMOS)

    Scheduled Pinned Locked Moved Solved Troubleshooting
    15 Posts 3 Posters 574 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      Mathes75
      last edited by

      G’Morning everyone reading this!

      Yesterday I set up a new MagicMirror, using a Raspberry Pi 3 B+, a 16GB SD with the most recent image from https://gitlab.com/khassel/magicmirror, connected to a HDMI monitor.
      It fired up, did some magic, I was able to install my favorite modules, but after individualizing the config.js to use those modules (MMM-WordClock, MMM-Remote-Control) and to customize my view, the MagicMirror just starts every third (hard-)reboot.

      docker logs mm output:

      [entrypoint 07:02:17.102] [INFO]  symlink default modules
      [2026-01-09 08:02:20.468] [LOG]   [app] Starting MagicMirror: v2.34.0 
      [2026-01-09 08:02:20.489] [LOG]   [app] Loading config ... 
      [2026-01-09 08:02:20.496] [LOG]   [app] config template file not exists, no envsubst 
      [2026-01-09 08:02:21.782] [INFO]  [check_config] Checking config file /opt/magic_mirror/config/config.js ... 
      [2026-01-09 08:02:22.038] [INFO]  [check_config] Your configuration file doesn't contain syntax errors :) 
      [2026-01-09 08:02:22.042] [INFO]  [check_config] Checking modules structure configuration ... 
      [2026-01-09 08:02:22.352] [INFO]  [check_config] Your modules structure configuration doesn't contain errors :) 
      [2026-01-09 08:02:22.358] [LOG]   [app] Loading module helpers ... 
      [2026-01-09 08:02:22.362] [LOG]   [app] No helper found for module: MMM-WordClock. 
      [2026-01-09 08:02:22.364] [LOG]   [app] No helper found for module: alert. 
      [2026-01-09 08:02:22.386] [LOG]   [node_helper] Initializing new module helper ... 
      [2026-01-09 08:02:22.388] [LOG]   [node_helper] Module helper loaded: updatenotification 
      [2026-01-09 08:02:22.390] [LOG]   [app] No helper found for module: clock. 
      [2026-01-09 08:02:22.560] [LOG]   [node_helper] Initializing new module helper ... 
      [2026-01-09 08:02:22.562] [LOG]   [node_helper] Module helper loaded: calendar 
      [2026-01-09 08:02:22.563] [LOG]   [app] No helper found for module: weather. 
      [2026-01-09 08:02:22.763] [LOG]   [node_helper] Initializing new module helper ... 
      [2026-01-09 08:02:22.764] [LOG]   [node_helper] Module helper loaded: newsfeed 
      [2026-01-09 08:02:22.957] [LOG]   [node_helper] Initializing new module helper ... 
      [2026-01-09 08:02:22.958] [LOG]   [node_helper] Module helper loaded: MMM-Remote-Control 
      [2026-01-09 08:02:22.960] [LOG]   [app] All module helpers loaded. 
      [2026-01-09 08:02:22.980] [LOG]   [server] Starting server on port 8080 ...  
      [2026-01-09 08:02:22.986] [WARN]  [server] You're using a full whitelist configuration to allow for all IPs 
      [2026-01-09 08:02:23.076] [LOG]   [app] Server started ... 
      [2026-01-09 08:02:23.079] [LOG]   [node_helper] Connecting socket for: updatenotification 
      [2026-01-09 08:02:23.081] [LOG]   [node_helper] Starting module helper: updatenotification 
      [2026-01-09 08:02:23.083] [LOG]   [node_helper] Connecting socket for: calendar 
      [2026-01-09 08:02:23.085] [LOG]   [calendar] Starting node helper for: calendar 
      [2026-01-09 08:02:23.087] [LOG]   [node_helper] Connecting socket for: newsfeed 
      [2026-01-09 08:02:23.088] [LOG]   [newsfeed] Starting node helper for: newsfeed 
      [2026-01-09 08:02:23.090] [LOG]   [node_helper] Connecting socket for: MMM-Remote-Control 
      [2026-01-09 08:02:23.092] [LOG]   [MMM-Remote-Control] Starting node helper for: MMM-Remote-Control 
      [2026-01-09 08:02:23.108] [LOG]   [app] Sockets connected & modules started ... 
      [22:0109/070223.113337:ERROR:ui/ozone/platform/x11/ozone_platform_x11.cc:249] Missing X server or $DISPLAY
      [22:0109/070223.113675:ERROR:ui/aura/env.cc:257] The platform failed to initialize.  Exiting.
      /opt/magic_mirror/node_modules/electron/dist/electron exited with signal SIGSEGV
      

      I tried to use the search, but as I am running the lite OS without X Server, I don’t know where to start.

      A successful start with everything displaying fine gives something strange in the logs:

      [2026-01-09 09:38:26.915] [LOG]   [app] Sockets connected & modules started ... 
      [21:0109/083829.686193:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory
      [21:0109/083829.686503:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory
      [21:0109/083829.686874:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory
      [2026-01-09 09:38:30.770] [LOG]   [electron] Launching application. 
      [21:0109/083832.536207:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= /org/freedesktop/DBus: unknown error type: 
      [21:0109/083832.553143:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory
      [21:0109/083832.553419:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory
      [21:0109/083832.553587:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory
      [21:0109/083832.554321:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory
      [21:0109/083832.554443:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= /org/freedesktop/DBus: unknown error type: 
      [2026-01-09 09:38:43.125] [INFO]  [utils] 
      ####  System Information  ####
      - SYSTEM:   manufacturer: ; model: Docker Container; virtual: false; MM: 2.34.0
      - OS:       platform: linux; distro: Debian GNU/Linux; release: 13; arch: arm64; kernel: 6.12.47+rpt-rpi-v8
      - VERSIONS: electron: 39.2.7; used node: 22.21.1; installed node: 24.12.0; npm: 11.7.0; pm2: 
      - ENV:      XDG_SESSION_TYPE: undefined; MM_CONFIG_FILE: undefined
                  WAYLAND_DISPLAY:  wayland-0; DISPLAY: unix:0.0; ELECTRON_ENABLE_GPU: 0
      - RAM:      total: 906.04 MB; free: 443.12 MB; used: 462.92 MB
      - OTHERS:   uptime: 2 minutes; timeZone: Europe/Berlin 
      
      
      S 1 Reply Last reply Reply Quote 0
      • karsten13K Offline
        karsten13 @Mathes75
        last edited by

        @Mathes75

        looks like you still have an old labwc image, try from /opt/mm/run folder:

        docker compose pull
        docker compose up -d
        
        M 1 Reply Last reply Reply Quote 0
        • S Offline
          sdetweil @Mathes75
          last edited by sdetweil

          @Mathes75 you are runnng the pios with desktop,
          correct. ?

          A browser requires the graphical desktop as all the ui is drawn in graphics mode

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          S 1 Reply Last reply Reply Quote 0
          • S Offline
            sdetweil @sdetweil
            last edited by

            @karsten13 any debug we can look at?

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            karsten13K 1 Reply Last reply Reply Quote 0
            • karsten13K Offline
              karsten13 @sdetweil
              last edited by

              the dbus errors in the mm logs are only noise, see https://forum.magicmirror.builders/topic/20032/docker-watchtower-container-restarting-and-mm-container-errors-after-upgrade/7#

              If the problem occurs:

              • can you provide the logs of the labwc container? docker logs labwc
              • can yo try to restart the containers without reboot with cd /opt/mm/run && docker compose up -d --force-recreate?
              S 1 Reply Last reply Reply Quote 1
              • S Offline
                sdetweil @karsten13
                last edited by

                @karsten13 thanks

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                karsten13K 1 Reply Last reply Reply Quote 0
                • karsten13K Offline
                  karsten13 @sdetweil
                  last edited by

                  other questions (not clear from description):

                  Are you using mmos or are you using Raspberry Pi OS or another OS?

                  If not mmos, how did you the install? With the install script inside the repo?

                  Can you provide output of docker compose config?

                  1 Reply Last reply Reply Quote 0
                  • M Offline
                    Mathes75
                    last edited by

                    Thanks a lot for having a look at my issue!

                    As mentioned in the first post, I downloaded the most recent Docker image of MagicMirrorOS. - no desktop, lite version. Wrote the image with Balena Etcher and let the Rpi do it’s magic after booting until “factory” MagicMirror was shown. SSHed into the Rpi and ran sudo raspi-config to adjust locales and WiFi.
                    I installed the desired Modules, modified the config.js - and now the Mirror works only at every third or fourth boot. (Sometimes real power cycle, sometimes sudo shutdown -r now - sometimes first works, sometimes second)

                    Currently it’sworking, only one Module has issues. Both containers recreated and restarted, output of docker logs labwc

                    00:00:00.000 [INFO] [seatd/seat.c:48] Created VT-bound seat seat0
                    00:00:00.000 [INFO] [seatd/seatd.c:194] seatd started
                    failed to connect to display
                    00:00:01.036 [INFO] [seatd/server.c:145] New client connected (pid: 1, uid: 1000, gid: 1000)
                    00:00:01.036 [INFO] [seatd/seat.c:239] Added client 1 to seat0
                    00:00:01.037 [INFO] [seatd/seat.c:563] Opened client 1 on seat0
                    failed to connect to display
                    failed to connect to display
                    failed to connect to display
                    failed to connect to display
                    failed to connect to display
                    failed to connect to display
                    HDMI-A-1 "Lenovo Group Limited T2224pD V902B58B (HDMI-A-1)"
                      Make: Lenovo Group Limited
                      Model: T2224pD
                      Serial: V902B58B
                      Physical size: 480x270 mm
                      Enabled: yes
                      Modes:
                        1920x1080 px, 60.000000 Hz (preferred, current)
                        1920x1080 px, 60.000000 Hz
                        1920x1080 px, 59.939999 Hz
                        1920x1080 px, 50.000000 Hz
                        1680x1050 px, 59.882999 Hz
                        1600x900 px, 75.000000 Hz
                        1600x900 px, 60.000000 Hz
                        1280x1024 px, 75.025002 Hz
                        1280x1024 px, 70.000999 Hz
                        1280x1024 px, 60.020000 Hz
                        1440x900 px, 59.901001 Hz
                        1366x768 px, 59.790001 Hz
                        1152x864 px, 75.000000 Hz
                        1280x720 px, 60.000000 Hz
                        1280x720 px, 59.939999 Hz
                        1280x720 px, 50.000000 Hz
                        1024x768 px, 75.028999 Hz
                        1024x768 px, 70.069000 Hz
                        1024x768 px, 60.004002 Hz
                        832x624 px, 74.551003 Hz
                        800x600 px, 75.000000 Hz
                        800x600 px, 72.188004 Hz
                        800x600 px, 60.317001 Hz
                        800x600 px, 56.250000 Hz
                        720x576 px, 50.000000 Hz
                        720x576 px, 50.000000 Hz
                        720x480 px, 60.000000 Hz
                        720x480 px, 60.000000 Hz
                        720x480 px, 59.939999 Hz
                        720x480 px, 59.939999 Hz
                        640x480 px, 75.000000 Hz
                        640x480 px, 72.808998 Hz
                        640x480 px, 60.000000 Hz
                        640x480 px, 59.939999 Hz
                        640x480 px, 59.939999 Hz
                        720x400 px, 70.082001 Hz
                      Position: 0,0
                      Transform: normal
                      Scale: 1.000000
                      Adaptive Sync: disabled
                    

                    Output of docker compose config

                    name: magicmirror
                    services:
                      labwc:
                        container_name: labwc
                        environment:
                          LAB_WC_HIDE_CURSOR: "true"
                          RANDR_PARAMS: ""
                          RANDR_POLL: 1m
                          XDG_RUNTIME_DIR: /run/user/1000
                        image: karsten13/labwc:latest
                        networks:
                          default: null
                        privileged: true
                        restart: always
                        volumes:
                          - type: bind
                            source: /run/user/1000
                            target: /run/user/1000
                            bind: {}
                          - type: bind
                            source: /run/udev
                            target: /run/udev
                            bind: {}
                      magicmirror:
                        container_name: mm
                        environment:
                          DBUS_SESSION_BUS_ADDRESS: unix:path=/run/user/1000/bus
                          DBUS_SYSTEM_BUS_ADDRESS: unix:path=/run/user/1000/bus
                          DISPLAY: unix:0.0
                          ELECTRON_ENABLE_GPU: "0"
                          MM_CUSTOMCSS_FILE: css/custom.css
                          MM_MODULES_DIR: modules
                          MM_OVERRIDE_DEFAULT_MODULES: "true"
                          MM_SCENARIO: electron
                          MM_SHOW_CURSOR: "false"
                          WAYLAND_DISPLAY: wayland-0
                          XDG_RUNTIME_DIR: /run/user/1000
                        image: karsten13/magicmirror:latest
                        network_mode: host
                        privileged: true
                        restart: always
                        shm_size: "268435456"
                        volumes:
                          - type: bind
                            source: /tmp/.X11-unix
                            target: /tmp/.X11-unix
                            bind: {}
                          - type: bind
                            source: /home/pi/.Xauthority
                            target: /home/node/.Xauthority
                            bind: {}
                          - type: bind
                            source: /run/user/1000
                            target: /run/user/1000
                            bind: {}
                          - type: bind
                            source: /opt/mm/mounts/config
                            target: /opt/magic_mirror/config
                            bind: {}
                          - type: bind
                            source: /opt/mm/mounts/modules
                            target: /opt/magic_mirror/modules
                            bind: {}
                          - type: bind
                            source: /opt/mm/mounts/css/custom.css
                            target: /opt/magic_mirror/css/custom.css
                            bind: {}
                        post_start:
                          - command:
                              - /bin/sh
                              - -c
                              - |
                                [ "init" = "init" ] || exit 0
                                chown -R 1000:1000 config modules css/custom.css
                                chmod -R 777 config modules css/custom.css
                            user: root
                            environment:
                              MM_CHMOD: null
                              MM_GID: null
                              MM_INIT: null
                              MM_UID: null
                    networks:
                      default:
                        name: magicmirror_default
                    
                    

                    Have a nice weekend!

                    karsten13K 1 Reply Last reply Reply Quote 0
                    • karsten13K Offline
                      karsten13 @Mathes75
                      last edited by

                      @Mathes75

                      not sure I really fixed it but you can try

                      cd /opt/mm
                      git pull
                      ./install/install.sh electron
                      

                      Let me know if there are still problems after reboot or not.

                      M 1 Reply Last reply Reply Quote 0
                      • M Offline
                        Mathes75 @karsten13
                        last edited by

                        Thanks @karsten13!

                        git pull needed a commit to work. Done. Installing Electron revealed no change to apply.

                        At least I seem to be one step further: Recreating the images as mentioned in a post above repeatedly resolved the "missing X Server"message each time and started MagicMirror…

                        As I am quite done with all changes and adaptions, I am fine to keep the workaround with recreating the image(s), once the mirror needs a restart.

                        karsten13K 1 Reply Last reply Reply Quote 0
                        • karsten13K Offline
                          karsten13 @Mathes75
                          last edited by

                          @Mathes75

                          Let me know if you get another black screen without mm start after reboot (I want to know if it is fixed or not …)

                          Can you please show me again the output of docker compose config (so I can check if you have the latest changes)?

                          M 1 Reply Last reply Reply Quote 0
                          • 1
                          • 2
                          • 1 / 2
                          • First post
                            Last post
                          Enjoying MagicMirror? Please consider a donation!
                          MagicMirror created by Michael Teeuw.
                          Forum managed by Sam, technical setup by Karsten.
                          This forum is using NodeBB as its core | Contributors
                          Contact | Privacy Policy