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.

    MMM-OpenWeatherForecast - Replacement for MMM-DarkSkyForecast

    Scheduled Pinned Locked Moved Utilities
    256 Posts 55 Posters 631.6k Views 57 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.
    • C Offline
      chris1971 @sdetweil
      last edited by chris1971

      @sdetweil said in MMM-OpenWeatherForecast - Replacement for MMM-DarkSkyForecast:

      pm2 stop all

      have stopped with pm2 stop all

      pi@raspberrypi:~/MagicMirror $ pm2 stop all
      [PM2] Applying action stopProcessId on app [all](ids: [ 0 ])
      [PM2] MagicMirror ✓
      ┌────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
      │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
      ├────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
      │ 0 │ MagicMirror │ default │ 2.22.0 │ fork │ 0 │ 0 │ 0 │ stopped │ 0% │ 0b │ pi │ disabled │
      └────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

      the started with pm2 start all

      pi@raspberrypi:~/MagicMirror $ pm2 start all
      [PM2] Applying action restartProcessId on app [all](ids: [ 0 ])
      [PM2] MagicMirror ✓
      [PM2] Process successfully started
      ┌────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
      │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
      ├────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
      │ 0 │ MagicMirror │ default │ 2.22.0 │ fork │ 2414 │ 0s │ 0 │ online │ 0% │ 2.5mb │ pi │ disabled │
      └────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

      But no changes…

      checked the status and see only on 8080

      pi@raspberrypi:~ $ sudo netstat -lnptu
      Active Internet connections (only servers)
      Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
      tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 565/sshd: /usr/sbin
      tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 519/cupsd
      tcp 0 0 0.0.0.0:8080 0.0.0.0: LISTEN 1206/electron.js*
      tcp6 0 0 ::1:3350 :::* LISTEN 539/xrdp-sesman
      tcp6 0 0 :::22 :::* LISTEN 565/sshd: /usr/sbin
      tcp6 0 0 ::1:631 :::* LISTEN 519/cupsd
      tcp6 0 0 :::3389 :::* LISTEN 585/xrdp
      udp 0 0 0.0.0.0:68 0.0.0.0:* 526/dhcpcd
      udp 0 0 0.0.0.0:631 0.0.0.0:* 612/cups-browsed
      udp 0 0 0.0.0.0:5353 0.0.0.0:* 376/avahi-daemon: r
      udp 0 0 0.0.0.0:58721 0.0.0.0:* 376/avahi-daemon: r
      udp6 0 0 :::546 :::* 526/dhcpcd
      udp6 0 0 :::41014 :::* 376/avahi-daemon: r
      udp6 0 0 :::5353 :::* 376/avahi-daemon: r

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

        @chris1971 correct, and it should be running correctly now

        i never use pm2 when I am changing config

        pm2 stop all
        
        cd ~/MagicMirror
        npm start 
        (ctrl-m if on same screen, to minimize) 
        look at messages 
        ctrl-c to stop
        
        make changes, rinse and repeat til happy
        
        then pm2 start all
        

        Sam

        How to add modules

        learning how to use browser developers window for css changes

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

          @sdetweil Does that mean I have to stopp pm before I make changes in the config?

          Module is still not loading…

          When I remove the script for google maps from the config.js the weather module is working. When I place the script in the config.js again, the weather module is not loading.

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

            @chris1971 yes, when u make any change, you should stop MM and then then restart it…

            as I said before, some modules impact others…

            I fixed a similar problem in OpenWeatherMapForecast as the author was not updating it anymore

            this is my fork with the fix https://github.com/sdetweil/MMM-OpenWeatherMapForecast

            I would look at the messages

            pm2 stop all
            pm2 flush
            pm2 start all
            wait
            pm2 logs --lines=100

            or, not use pm2

            pm2 stop all
            cd ~/MagicMirror
            npm start >somefile.txt 2>&1

            wait
            ctrl-c to stop MM (in the window where you did npm start )
            then examine the contents of somefile.txt to see if there was any error that might causing the problem

            you can also look in the MagicMirror developers window to see if there is a problem there
            ctrl-shift-i on the running MM screen
            select the console tab
            and put weath in the filter field
            this will reduce the output to modules with weath in their name
            looking for any content in red

            Sam

            How to add modules

            learning how to use browser developers window for css changes

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

              @sdetweil lot of stuff…

              pi@raspberrypi:~ $ pm2 logs --lines=100
              [TAILING] Tailing last 100 lines for [all] processes (change the value with --lines option)
              /home/pi/.pm2/pm2.log last 100 lines:
              PM2 | 2023-03-31T16:08:12: PM2 log: App [MagicMirror:0] starting in -fork mode-
              PM2 | 2023-03-31T16:08:12: PM2 log: App [MagicMirror:0] online

              /home/pi/.pm2/logs/MagicMirror-error.log last 100 lines:
              0|MagicMir | [31.03.2023 16:08.20.333] [WARN] You’re using a full whitelist configuration to allow for all IPs
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2472:0331/160823.980369:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=134
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2472:0331/160825.475337:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=134
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | MESA-LOADER: failed to retrieve device information
              0|MagicMir | …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2472:0331/160827.345249:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=134
              0|MagicMir | [2512:0331/160829.375127:ERROR:command_buffer_proxy_impl.cc(128)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.

              /home/pi/.pm2/logs/MagicMirror-out.log last 100 lines:
              0|MagicMir |
              0|MagicMir | > magicmirror@2.22.0 start
              0|MagicMir | > DISPLAY=“${DISPLAY:=:0}” ./node_modules/.bin/electron js/electron.js
              0|MagicMir |
              0|MagicMir | [31.03.2023 16:08.18.855] [LOG] Starting MagicMirror: v2.22.0
              0|MagicMir | [31.03.2023 16:08.18.868] [LOG] Loading config …
              …
              …
              …

              I read something about the GPU process in the forum - could this infuence the system?

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

                @chris1971 possibly

                for pm2 add the

                export ELECTRON_DISABLE_GPU=1
                

                to the ~/MagicMirror/installers/mm.sh

                before the line

                DISPLAY=:0 npm start
                

                for using npm start
                just do it once in the terminal window

                Sam

                How to add modules

                learning how to use browser developers window for css changes

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

                  @sdetweil still not loading…

                  pi@raspberrypi:~/MagicMirror $ npm start

                  magicmirror@2.22.0 start
                  DISPLAY=“${DISPLAY:=:0}” ./node_modules/.bin/electron js/electron.js

                  [31.03.2023 16:29.04.053] [LOG] Starting MagicMirror: v2.22.0
                  [31.03.2023 16:29.04.077] [LOG] Loading config …
                  [31.03.2023 16:29.04.113] [LOG] Loading module helpers …
                  [31.03.2023 16:29.04.120] [LOG] No helper found for module: alert.
                  [31.03.2023 16:29.04.191] [LOG] Initializing new module helper …
                  [31.03.2023 16:29.04.194] [LOG] Module helper loaded: updatenotification
                  [31.03.2023 16:29.04.196] [LOG] No helper found for module: clock.
                  [31.03.2023 16:29.04.591] [LOG] Initializing new module helper …
                  [31.03.2023 16:29.04.592] [LOG] Module helper loaded: MMM-OpenWeatherForecast
                  [31.03.2023 16:29.05.736] [LOG] Initializing new module helper …
                  [31.03.2023 16:29.05.740] [LOG] Module helper loaded: calendar
                  [31.03.2023 16:29.05.754] [LOG] No helper found for module: MMM-TextClock.
                  [31.03.2023 16:29.06.143] [LOG] Initializing new module helper …
                  [31.03.2023 16:29.06.150] [LOG] Module helper loaded: newsfeed
                  [31.03.2023 16:29.06.155] [LOG] No helper found for module: MMM-RAIN-MAP.
                  [31.03.2023 16:29.06.170] [LOG] Initializing new module helper …
                  [31.03.2023 16:29.06.172] [LOG] Module helper loaded: MMM-GoogleMapsTraffic
                  [31.03.2023 16:29.06.173] [LOG] All module helpers loaded.
                  [31.03.2023 16:29.06.803] [LOG] Starting server on port 8080 …
                  [31.03.2023 16:29.06.828] [WARN] You’re using a full whitelist configuration to allow for all IPs
                  [31.03.2023 16:29.06.884] [ERROR] Whoops! There was an uncaught exception…
                  [31.03.2023 16:29.06.900] [ERROR] Error: listen EADDRINUSE: address already in use 0.0.0.0:8080
                  at Server.setupListenHandle [as _listen2] (node:net:1432:16)
                  at listenInCluster (node:net:1480:12)
                  at doListen (node:net:1629:7)
                  at process.processTicksAndRejections (node:internal/process/task_queues:84:21) {
                  code: ‘EADDRINUSE’,
                  errno: -98,
                  syscall: ‘listen’,
                  address: ‘0.0.0.0’,
                  port: 8080
                  }
                  [31.03.2023 16:29.06.901] [ERROR] MagicMirror² will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
                  [31.03.2023 16:29.06.902] [ERROR] If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues
                  [31.03.2023 16:29.08.680] [LOG] Launching application.
                  MESA-LOADER: failed to retrieve device information
                  MESA-LOADER: failed to retrieve device information
                  MESA-LOADER: failed to retrieve device information
                  …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2071:0331/162912.978009:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=6
                  MESA-LOADER: failed to retrieve device information
                  MESA-LOADER: failed to retrieve device information
                  MESA-LOADER: failed to retrieve device information
                  …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2071:0331/162914.498526:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=6
                  MESA-LOADER: failed to retrieve device information
                  MESA-LOADER: failed to retrieve device information
                  MESA-LOADER: failed to retrieve device information
                  …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2071:0331/162915.779583:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=6
                  [31.03.2023 16:29.37.588] [LOG] Shutting down server…
                  [31.03.2023 16:29.37.595] [LOG] Stopping module helper: updatenotification
                  [31.03.2023 16:29.37.596] [LOG] Stopping module helper: MMM-OpenWeatherForecast
                  [31.03.2023 16:29.37.596] [LOG] Stopping module helper: calendar
                  [31.03.2023 16:29.37.597] [LOG] Stopping module helper: newsfeed
                  [31.03.2023 16:29.37.597] [LOG] Stopping module helper: MMM-GoogleMapsTraffic

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

                    @chris1971 said in MMM-OpenWeatherForecast - Replacement for MMM-DarkSkyForecast:

                    Error: listen EADDRINUSE: address already in use 0.0.0.0:8080

                    did u do the pm2 stop all?

                    did you use any install instructions before my script? the manual install describes how to create a service to auto start MM

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

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

                      @sdetweil

                      yes - ich changed the mm.sh after stop all

                      my method for installation:

                      • format SD card
                      • install Bullseye
                      • install sudo apt-get install xrdp (to get a remote connection via remote desktop)
                      • install your scripts including screensaver/ pm2
                      • install the modules
                        it worked once … I do not understand what changed after a restart…
                      S 1 Reply Last reply Reply Quote 0
                      • S Offline
                        sdetweil @chris1971
                        last edited by

                        @chris1971 and u checked the pm2 status

                        before doing npm start ?

                        you don’t reboot after pm2 stop all, as t will restart MM on boot (its job)

                        Sam

                        How to add modules

                        learning how to use browser developers window for css changes

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

                          @sdetweil this is the pm2 status

                          pi@raspberrypi:~/MagicMirror $ pm2 status
                          ┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
                          │ id │ name │ mode │ ↺ │ status │ cpu │ memory │
                          ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
                          │ 0 │ MagicMirror │ fork │ 0 │ online │ 0% │ 2.3mb │

                          with npm start I only have a black screen in the terminal - I can see the conten in the browser with http://192.168.178.35:8080/

                          S 3 Replies Last reply Reply Quote 0
                          • S Offline
                            sdetweil @chris1971
                            last edited by

                            @chris1971 pm2 stop all

                            then cd ~/MagicMirror

                            npm start

                            only can have ONE instance running at a time on the same config.js port: setting

                            Sam

                            How to add modules

                            learning how to use browser developers window for css changes

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

                              @chris1971 yes, you have another instance running , so this one will fail

                              Sam

                              How to add modules

                              learning how to use browser developers window for css changes

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

                                @chris1971 said in MMM-OpenWeatherForecast - Replacement for MMM-DarkSkyForecast:

                                with npm start I only have a black screen in the terminal - I can see the conten in the browser with http://192.168.178.35:8080/

                                you are looking at the one running under pm2

                                Sam

                                How to add modules

                                learning how to use browser developers window for css changes

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

                                  @sdetweil

                                  sdetweil 5 minutes ago

                                  @chris1971 pm2 stop all

                                  then cd ~/MagicMirror

                                  npm start

                                  ahhh… ok: with this I am able to see the scree in the terminal - but the weather module is still not loading in the terminal

                                  Errors like before:

                                  [31.03.2023 17:19.15.233] [LOG] Launching application.
                                  MESA-LOADER: failed to retrieve device information
                                  MESA-LOADER: failed to retrieve device information
                                  MESA-LOADER: failed to retrieve device information
                                  …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2465:0331/171918.392802:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=6
                                  MESA-LOADER: failed to retrieve device information
                                  MESA-LOADER: failed to retrieve device information
                                  MESA-LOADER: failed to retrieve device information
                                  …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2465:0331/171919.478457:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=6
                                  MESA-LOADER: failed to retrieve device information
                                  MESA-LOADER: failed to retrieve device information
                                  MESA-LOADER: failed to retrieve device information
                                  …/…/buildtools/third_party/libc++/trunk/include/vector:1425: assertion __n < size() failed: vector[] index out of bounds[2465:0331/171920.679631:ERROR:gpu_process_host.cc(991)] GPU process exited unexpectedly: exit_code=6
                                  [2509:0331/171921.424506:ERROR:command_buffer_proxy_impl.cc(128)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
                                  [31.03.2023 17:19.25.235] [LOG] Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/c.euro%40gmx.de/private-8dd63e4cddfec3349/basic.ics - Interval: 50000
                                  [31.03.2023 17:19.25.774] [LOG] Create new newsfetcher for url: http://www.radiomuelheim.de/lokalnachrichten.xml - Interval: 300000
                                  [31.03.2023 17:19.25.793] [LOG] Create new newsfetcher for url: http://www.tagesschau.de/xml/rss2 - Interval: 300000
                                  [31.03.2023 17:19.25.813] [LOG] Working notification system. Notification: MMM-GOOGLE_MAPS_TRAFFIC-GET payload: { style: ‘standard’ }

                                  have to go out for a beer now…:dizzy_face:

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

                                    @chris1971 u have to enter the

                                    export ELECTRON_DISABLE_GPU=1

                                    EVERY time you open a new terminal window

                                    so, then i’d look in the MM screen developers window as previously described

                                    Sam

                                    How to add modules

                                    learning how to use browser developers window for css changes

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

                                      @sdetweil I placed the “export ELECTRON_DISABLE_GPU=1” in the install.

                                      Where do I have to place the “export ELECTRON_DISABLE_GPU=1” in the terminal window?

                                      Info from console (red):

                                      >Uncaught TypeError: Cannot read properties of undefined (reading ‘length’)
                                      at script.onload (MMM-GoogleMapsTraffic.js:77:52)
                                      MMM-OpenWeatherForecast.js:685 Uncaught (in promise) TypeError: console.log is not a function
                                      at Class.addIcon (MMM-OpenWeatherForecast.js:685:13)
                                      at Class.processWeatherData (MMM-OpenWeatherForecast.js:370:61)
                                      at Class.socketNotificationReceived (MMM-OpenWeatherForecast.js:282:40)
                                      at module.js:245:9
                                      at Socket. (socketclient.js:38:4)
                                      at Emitter.emit (index.mjs:136:20)
                                      at Socket.emitEvent (socket.js:498:20)
                                      at Socket.onevent (socket.js:485:18)
                                      at MMSocket.socket.onevent (socketclient.js:32:11)
                                      at Socket.onpacket (socket.js:455:22)
                                      js?key=cccc:221 You have included the Google Maps JavaScript API multiple times on this page. This may cause unexpected errors.
                                      js?key=uuuuu:217 Google Maps JavaScript API has been loaded directly without a callback. This is not supported and can lead to race conditions and suboptimal performance. For supported loading patterns please see https://goo.gle/js-api-loading
                                      MMM-GoogleMapsTraffic.js:77 Uncaught TypeError: Cannot read properties of undefined (reading ‘length’)
                                      at script.onload (MMM-GoogleMapsTraffic.js:77:52)

                                      S 2 Replies Last reply Reply Quote 0
                                      • S Offline
                                        sdetweil @chris1971
                                        last edited by

                                        @chris1971 said in MMM-OpenWeatherForecast - Replacement for MMM-DarkSkyForecast:

                                        Where do I have to place the “export ELECTRON_DISABLE_GPU=1” in the terminal window?

                                        you just enter that command string and hit enter

                                        Sam

                                        How to add modules

                                        learning how to use browser developers window for css changes

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

                                          @chris1971 said in MMM-OpenWeatherForecast - Replacement for MMM-DarkSkyForecast:

                                          You have included the Google Maps JavaScript API multiple times on this page. This may cause unexpected errors.

                                          I haven’t seen that one before

                                          I xxx’ed out your api key in the debug info

                                          Sam

                                          How to add modules

                                          learning how to use browser developers window for css changes

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

                                            @sdetweil thanks for xxx
                                            What is your recommendation? Delete maps and new install?
                                            Can you explain why I see the MM in the terminal correct, if I stop all and start npm? Is ist possible to delete PM2?

                                            S 1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 12
                                            • 13
                                            • 3 / 13
                                            • 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