box service keeps restarting, SyntaxError: Unexpected token '.'
-
I've been having odd issues with my Cloudron for the past week or so. Apps were running fine, but backup tasks were failing. It'd refer me to the logs, which when checked, stated the file had been moved or did not exist.
I'm set up to backup to S3 via rsync. It was working fine initially, so I'm not sure what happened. In any case, I created a snapshot (which supposedly saves state, and yet...) and made the boneheaded decision to reboot my VPS. It came back up, but I got the dreaded red "Cloudron is offline. Reconnecting..." banner. Something I've seen way too many times.
I attempted to restore via snapshot, still getting the banner. I'm honestly wondering if the Cloudron distribution that Hostinger uses is fully stable. This has to be my 3rd or 4th attempt. It'll work fine at first, but inevitably the ticking time bomb goes off, and all I get is a red banner for no good reason.
Cloudron-troubleshoot instructed me to run cloudron --fix-docker, as somehow Docker was a newer version. I've learned my lesson about running apt upgrade long ago, so I have no idea how that's possible. Would simply adding the PPA upgrade it as well?
Regardless, it appeared it was going to succeed, but when it tries to start box, it just keeps restarting. This leads to an output of
[FAIL] box service keeps restarting, please investigate the error by inspecting /home/yellowtent/platformdata/logs/box.log
. The box.log (and 1, 2, and 3) are massive, and I have no idea what I'm looking for.Running
journalctl -xeu box
gave me the following:░░ Subject: Unit process exited ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ An ExecStart= process belonging to unit box.service has exited. ░░ ░░ The process' exit code is 'exited' and its exit status is 1. Jan 10 06:37:24 c.example.com systemd[1]: box.service: Failed with result 'exit-code'. ░░ Subject: Unit failed ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ The unit box.service has entered the 'failed' state with result 'exit-code'. Jan 10 06:37:24 c.example.com systemd[1]: box.service: Scheduled restart job, restart counter is at 2815. ░░ Subject: Automatic restarting of a unit has been scheduled ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ Automatic restarting of the unit box.service has been scheduled, as the result for ░░ the configured Restart= setting for the unit. Jan 10 06:37:24 c.example.com systemd[1]: Stopped Cloudron Admin. ░░ Subject: A stop job for unit box.service has finished ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ A stop job for unit box.service has finished. ░░ ░░ The job identifier is 868014 and the job result is done. Jan 10 06:37:24 c.example.com systemd[1]: Started Cloudron Admin. ░░ Subject: A start job for unit box.service has finished successfully ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ A start job for unit box.service has finished successfully. ░░ ░░ The job identifier is 868014. Jan 10 06:37:24 c.example.com box.js[514142]: /home/yellowtent/box/src/ldapserver.js:206 Jan 10 06:37:24 c.example.com box.js[514142]: if (req.app.accessRestriction?.groups?.indexOf(group.id) === -1) continue; Jan 10 06:37:24 c.example.com box.js[514142]: ^ Jan 10 06:37:24 c.example.com box.js[514142]: SyntaxError: Unexpected token '.' Jan 10 06:37:24 c.example.com box.js[514142]: at wrapSafe (internal/modules/cjs/loader.js:915:16) Jan 10 06:37:24 c.example.com box.js[514142]: at Module._compile (internal/modules/cjs/loader.js:963:27) Jan 10 06:37:24 c.example.com box.js[514142]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) Jan 10 06:37:24 c.example.com box.js[514142]: at Module.load (internal/modules/cjs/loader.js:863:32) Jan 10 06:37:24 c.example.com box.js[514142]: at Function.Module._load (internal/modules/cjs/loader.js:708:14) Jan 10 06:37:24 c.example.com box.js[514142]: at Module.require (internal/modules/cjs/loader.js:887:19) Jan 10 06:37:24 c.example.com box.js[514142]: at require (internal/modules/cjs/helpers.js:85:18) Jan 10 06:37:24 c.example.com box.js[514142]: at Object.<anonymous> (/home/yellowtent/box/box.js:7:18) Jan 10 06:37:24 c.example.com box.js[514142]: at Module._compile (internal/modules/cjs/loader.js:999:30) Jan 10 06:37:24 c.example.com box.js[514142]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) Jan 10 06:37:24 c.example.com systemd[1]: box.service: Main process exited, code=exited, status=1/FAILURE ░░ Subject: Unit process exited ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ An ExecStart= process belonging to unit box.service has exited. ░░ ░░ The process' exit code is 'exited' and its exit status is 1. Jan 10 06:37:24 c.example.com systemd[1]: box.service: Failed with result 'exit-code'. ░░ Subject: Unit failed ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ The unit box.service has entered the 'failed' state with result 'exit-code'. Jan 10 06:37:24 c.example.com systemd[1]: box.service: Scheduled restart job, restart counter is at 2816.
SyntaxError: Unexpected token '.'
appears to be the issue, but from what I've read the error only occurs in very old (<14) Node versions. Would really appreciate some assistance getting this up and running.If I have to nuke this box again, I think I'll forego Cloudron and just use the dedicated Nextcloud image. Far more limiting than I'd like, but better than endless failures.
~ SunDevil ~
-
-
@SunDevil that is interesting indeed. I wonder how that is possible given that yellowtent is actually a disabled yser (you cannot do
su - yellowtent
). Cloudron has also never used that specific version of node, so I am not sure where it's coming from.Can you debug further with
sudo -u yellowtent which node
etc and remove that node? Maybeapt remove nodejs
? The system node /usr/bin/node should be a symlink to /usr/local/node-20.18.0/bin/node .sudo -u yellowtent bash
will give you a bash with yellowtent user and then you can check where that node is coming from as well. -
@SunDevil said in box service keeps restarting, SyntaxError: Unexpected token '.':
learned my lesson about running apt upgrade long ago, so I have no idea how that's possible.
Sounds like your snapshots are all using whatever borked-up state the system was at when it was made. So, of course any restores to these snapshots are going to continue to not work. If you can indeed reinstall fresh, do that. I'm not familiar with how Hostinger offers its VPSes, but those extra node versions, Docker, etc., all got installed "somehow". If it isn't Hostinger...
-
@scooke Of course you're right. The only conclusion I can come up with is that simply adding the Docker PPA results in an
apt update
ANDapt upgrade
. The update is visible, but there's no indication it's runningapt upgrade
.Node is more complicated. I'll double check, but I don't recall installing fnm or anything. I may have to reach out to Hostinger about these issues.
-
@girish I'm even more confused. To the best of my knowledge, I haven't messed with the Node version.
It's using
/usr/bin/node
, which oddly enough seems to be the only package not symlinked. The first command you gave me shows Node v20.18.0. The second command shows Node v12.22.9. The latter appears to be a default package included with Ubuntu 24.04.1 LTS.Full Data:
Listing of /usr/bin, scoped to
grep node
Listing of installed packages, scoped to
grep node
-
@SunDevil Perhaps Hostinger provides "non-fresh" servers to its customers with a variety of programs already installed to save you time. Normally a fresh server would not come with Docker, node, etc., at all. Cloudron needs the fresh server because it needs to follow it's own install script. Sounds like Hostinger has maybe gotten the two "fresh" settings overlapped.
-
@SunDevil it seems there is a whole bunch of node modules installed via apt on the system. Cloudron doesn't install these. Cloudron installs the node version it wants under /usr/local/node-20.18.0/ and then creates a symlink. Something like this:
apt remove nodejs ln -sf /usr/local/node-20.18.0/bin/node /usr/bin/node
After this, node should be 20.18.0 . Then, you can
systemctl restart box
and it will start with the correct node.