In Part 1 we turned our monero daemon into a service.
Here in Part 2 we will go over how to troubleshoot a service that is not starting.
Finally in Part 3 we’ll go deeper in security matters, such as using Monero with SELinux and firewalling your service.
Anticipating all of the potential problems would be an impossible task. Instead I will give you some basic ideas about how to troubleshoot your new Monero service.
Isolating the Problem
The first step is to determine whether it’s
monerod or some other part of the system that is complaining and preventing start up.
First let’s confirm it’s NOT an SELinux problem. This common enough that it may be worth doing first since there’s a quick workaround that will enable us to go in with checking our service is working.
Is SELinux currently enforcing?
> getenforce Enforcing
If you see anything other than
Enforcing then SELinux is not the problem and we can move on. If you do see
Enforcing we need to look at the journal to see exactly why it’s causing the service startup to fail. But we’ll do that in Part 3 – Security. For now, let’s just turn SELinux to
> setenforce 0 > getenforce Permissive
Turn off SELinux at your own risk! Doing so won’t harm the functionality on your system, but it may make your system vulnerable to attacks while it is turned off. If your system is behind a home router or firewall, it’s probably not a big risk. Be more careful with internet-facing systems.
Now restart the service and see if we’ve fixed the problem, or uncovered a new one.
systemctl restart monerod systemctl status monerod
The problem with the
status command is it only displays the the last 10 or so logs and problem may appear a bit further back in the logs. So let’s switch to our monitoring terminal and turn to
journalctl -t systemd -e
I can’t predict what you’re going to see, but if it’s not immediately obvious where the problem lies, try checking these gotchas:
- File permissions (particularly
- Typos (mine or yours!)
- A corrupted blockchain when using a pre-existing one
- Connectivity to network problem (no internet connection or traffic being blocked somewhere)
systemd, there’s a whole range of reasons that
monerod could fail to start. But hopefully the journals are informative.
journalctl -t monerod -e
A common gotcha might be passing invalid options to
monerod via the configuration file we created. The Monero Project often changes these, so check that one or more of these hasn’t changed in the current version against the help:
If you need more detail you can also up the
log-level to 1 or even 2 in the
monerod.conf and restart.
> vi /etc/monerod.conf log-level=1 > systemctl restart monerod
Hopefully that’s some useful general advice for troubleshooting your service and it’s now starting to sync.
In Part 3 we’ll tackle some more details about security matters.