Read the statement by Michael Teeuw here.
How to upgrade a Linux "server" with minimal modules?
-
I’ve been using MM for a number of years in a couple of different forms. For the most part, I did what everyone else does and I ran it standalone on a RPi. After having some issues with the RPi hardware and older software causing lock-up’s, I moved to more of a “client-server” setup where the server pieces was installed and running on a linux client (headless) and my local RPi would launch a browser session to connect.
I now find myself in the situation where I would very much like to upgrade the server-side component, but I don’t see a clear directive on the steps I should consider. Attempting to use @sdetweil 's upgrade script results in errors about wrong platform and such, so that’s a no-go.
I’ve tried a couple of other npm type updates but they leave the system in a completely unstable state and I end up having to just revert back to a previous snapshot and restart the server to its former state.
Any general suggestions of where to start?
-
@ember1205 by default, install puts down all the code, with three different start options
// server only - probably what you have now
npm run server// npm start, npm run start , npm run start:x11, npm run start:wayland (last two in latest releases)
// launch UI, thru embedded electron browser or browser on system thru my browser over server setup
npm run start// or client
npm run clientthe latest releases will need a new OS, and new JS, and a new …
one thing you can use to move between environments, is my backup/restore scripts.
https://github.com/sdetweil/MagicMirror-backup-restorewhich backup the config.js, custom.css (and any other files related)
and the list of modules installed… NOT the BINARYthis backup can be placed on github, so you don’t have to store it on the local machine
storing with git, also allows you to keep track of changes/versions of your setupbecause it is NOT a binary, you can use it to transition to new SD cards, or new systems (pi->minipc…etc)
backup here, restore there
restore assumes MM is installed and runnable…as an example
backup now, save to github (still free today)
make new sd card,
boot
install MM
then run restore to put saved config and modules on the new systemyou can run the backup/restore by copy/pasting the links and adding parms if need be (like push to repo, not default)
in the meantime, you can just change the start command from run server to run start to start the MM ui on the same machine (needs a head of course)
ps. you cannot upgrade ONE feature and not others… its all or nothing
we ALWAYS start the server, and sometimes start the UI depending on the command used
but the files are all one instance at the same version -
@ember1205 I recommend
make a backup, store to github
make a new SD card, latest OS
install MM, verify it starts (full service, UI etc)
run restore from github to restore your configuration and modules…
restart and verifyold system is untouched
-
@sdetweil Thanks for the response.
I’m familiar with the different options that come with a new install and would be ok with having to DO a new install if that’s the only way to get upgrades completed. I guess I’m wondering if there’s a simpler way to upgrade the one or two modules that I have and get the core MM upgraded as well without having to start from scratch with the configuration and such. This instance is server only (there’s nothing attached to any sort of output here, and I don’t even run MM as the client any more - it’s a linux shell with its own GUI, auto-starts firefox in kiosk mode, and the page is set to always launch the mirror address).
I’m not even concerned with how to back everything up because my installation is actually fairly simple. And I’m not actually looking to change environments - I’ve already done that from a short while back. This is all entirely for the server side which is a linux guest running on a XCP-NG virtualization host.
-
@ember1205 the difficulty is that the core has been kept up to date, and it requires new system parts that require new system parts…
you MUST upgrade nodejs if not on node 22
upgrading on older systems fails, the next node upgrade, 24 or above, drops support for 32bit systems completely… we are holding off as long as we can… but the clock is ticking…my install and upgrade scripts enforce the systems path… if they fail now, there is no manual way to get there from where you are… (without rebuild)
and if you use my installer script, its a copy/paste… not a lot of work
make the backup regardless
-
@ember1205 you can attempt to upgrade modules…
each is separate
cd module_folder
git pull
if successful, npm installrestart mm… to load the new modules…
only a few have latest as dependencies… which would force all the above work
-
@ember1205 upgrade of the core code is
cd MagicMirror_folder git pull npm installif it will run… needs at least node 22.22.1
let me know how I can help
you can fall back to a prior version by switching to one of the earlier releases, thru the git tag we created.
if you try the upgrade (manual) and it fails and want to try this, let me know i’ll provide the commands needed -
@sdetweil I am running (currently) on opensuse Leap 15.6. I will be updating in the not-too-distant future to Leap 16.0.
In looking at the installed packages, Node.js lists “22.22.0” as the package but “22.15.1” as the installed version. So…
zypper ref ; zypper upLet it install all of the pertinent updates… Reboot (new kernel was part of the updates)… Everything is back online. Checking the installed software list now shows Node.js as “22.22.0”.
Leap 16.0 will allow me to go to Node.js 24, but that would be an undertaking for later today or later this week (depending on what time I might have elsewhere).
Updating the modules went fine (overall). This is what a git pull in the main MM directory shows me:
From https://github.com/MichMich/MagicMirror 3dbe8bfbb..fb41d24ef master -> origin/master ec80b2508..e747db16d develop -> origin/develop * [new tag] v2.1.3 -> v2.1.3 * [new tag] v2.14.0 -> v2.14.0 * [new tag] v2.15.0 -> v2.15.0 * [new tag] v2.16.0 -> v2.16.0 * [new tag] v2.17.0 -> v2.17.0 * [new tag] v2.17.1 -> v2.17.1 * [new tag] v2.18.0 -> v2.18.0 * [new tag] v2.19.0 -> v2.19.0 * [new tag] v2.2.1 -> v2.2.1 * [new tag] v2.20.0 -> v2.20.0 * [new tag] v2.21.0 -> v2.21.0 * [new tag] v2.22.0 -> v2.22.0 * [new tag] v2.23.0 -> v2.23.0 * [new tag] v2.24.0 -> v2.24.0 * [new tag] v2.25.0 -> v2.25.0 * [new tag] v2.26.0 -> v2.26.0 * [new tag] v2.27.0 -> v2.27.0 * [new tag] v2.28.0 -> v2.28.0 * [new tag] v2.29.0 -> v2.29.0 * [new tag] v2.30.0 -> v2.30.0 * [new tag] v2.31.0 -> v2.31.0 * [new tag] v2.32.0 -> v2.32.0 * [new tag] v2.33.0 -> v2.33.0 * [new tag] v2.34.0 -> v2.34.0 * [new tag] v2.35.0 -> v2.35.0 * [new tag] v2.36.0 -> v2.36.0 Updating 3dbe8bfbb..fb41d24ef error: Your local changes to the following files would be overwritten by merge: package-lock.json package.json Please commit your changes or stash them before you merge. Aborting -
Update…
Updating the modules crashes the server. So, I’m going to have to get the main server updated… I had to revert to a prior snapshot to get the MM server running again.
-
package-lock.json
package.jsonerase those and git pull again
-
@sdetweil I’ll have to try again a little later today maybe… I had to revert the snapshot (removing the module updates) to get it running again.
-
@ember1205 understand… please advise your results when you can
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