Read the statement by Michael Teeuw here.
Starting MM Crontab
-
Hi.
I have been using crontab to start my MM for ages and it has always worked well. After updating it no longer seems to work. cron calls a script that has the following.
cd ~/MagicMirror DISPLAY=0 npm startNow, I have seen that it is suggest to use
node --run start:X11going forward and I have updated my start script with same but that does not seem to work either.So my
mm.shnow looks like,cd ~/MagicMirror DISPLAY=0 node --run start:X11But as mentioned, this does not work.
Any ideas?
-
KristjanESPERANTO Module Developerlast edited by KristjanESPERANTO Jul 3, 2025, 2:10 PM Jul 3, 2025, 2:10 PM
@mumblebaj said in Starting MM Crontab:
DISPLAY=0 node --run start:X11
It should be
start:x11and notstart:X11.Are you still using X11?
Does it run when you start it manually?
Can you provide the logs from the startup?
-
@KristjanESPERANTO Sorry, typo, it is lower
x. It start when I manually runnpm start. When I manually runnode --run start:x11it works fine. When I manually run the script./mm.shit works fine. When calling it from the cron nothing. In my log I see the commandnode --run start:x11but MM does not launch. -
@mumblebaj is the cron jon in the user crontab (contrab -e) ? or root (sudo crontab -e) ?
if root, the pm2 job doesn’t exist there, it opnly exists under user who created the pm2 job
-
@sdetweil in my user,
crontab -e. It worked just fine until I updated my mirror this morning. I don’t use pm2 on my installation for my own reasons… 😉 -
@mumblebaj said in Starting MM Crontab:
It worked just fine until I updated my mirror this morning.
only MM update?
note that we changed the startup strings.
“start”: “node --run start:x11”,
-
@sdetweil Yep, only MM update. Let me try
start: node --run start:x11and see what happens. -
KristjanESPERANTO Module Developerlast edited by KristjanESPERANTO Jul 4, 2025, 6:02 AM Jul 3, 2025, 10:05 PM
@mumblebaj Just an idea: Maybe the node version used in Cron could be to old. When you run a script manually in your terminal, your full user environment (including things like .bashrc or .zshrc) is loaded. Cron runs in a much more minimal environment — it often doesn’t load your shell config files, so tools like nvm (Node Version Manager) might not be available.
How to fix it:
- Use the full path to Node: Find it with
which nodeand use that path in your cron job. - Set the environment manually in cron: You can define your PATH at the top of the cron file.
- Source nvm in your script: If you use nvm, add source
~/.nvm/nvm.shandnvm use <version>before calling node.
- Use the full path to Node: Find it with
-
@KristjanESPERANTO Thanks Kristjan. But I don’t see how updating MM could cause this. I only updated MM with Sam’s upgrade script. Don’t see how that has changed anything with regards to how Crontab works. Maybe it is related to changing the launch to
node --run start. I can see the command being fired in the log but it does not launch MM like it did before the upgrade.Anyhow, I manually launch it for now till I find a suitable solution.
-
@mumblebaj did you use npm start before?
it ‘may’ be the path as @KristjanESPERANTO mentioned
so from the user command line do
which node
and use that result in the cron command
