Start Service with Sudo

I am trying to run an Express API server with sudo permissions and have it automatically start on boot.

The API needs access to bcm2835 library, and I get the following when trying to run node server.js

bcm2835_init: Unable to open /dev/mem: Permission denied /home/pi/Documents/node_modules/rpio/lib/rpio.js:104
return bindfunc(optarg);

Error: Could not initialize bcm2835 library
at bindcall (/home/pi/...) etc.

However it boots up fine running sudo node server.js.

I have created a service file at /etc/systemd/system as follows:

[Unit]
Description=Node API
After=network.target
[Service]
ExecStart=/usr/bin/node /home/pi/Documents/server.js
Restart=always
SyslogIdentifier=controller
User=root
Group=root
Environment=
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target

I found some guidance here and here, but they seem slightly off, since a sub-command needs sudo/root privileges.

When running service controller start from the command line it prompts for a username and password.

How can I run this service with proper permissions so it boots up with the Pi?

5

1 Answer

you need to allow the following commands in the sudoers file:

systemctl start <your-systemd-service>
systemctl stop <your-systemd-service>
systemctl restart <your-systemd-service>
systemctl enable <your-systemd-service>

dont use the service command.

Remember to replace the service name with your systemd service. For example if your service file is with name:

/etc/systemd/system/controller.service

then it should be:

systemctl start controller.service
systemctl stop controller.service
systemctl restart controller.service
systemctl enable controller.service

also , you will need to do:

systemctl daemon-reload

after you place you service file in systemd

Adding commonads in sudoers:

example command:

<your-user> ALL=(ALL) NOPASSWD: /usr/bin/systemctl start controller.service
12

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like