1. Create user service in user's home directory ex. /home/<app_user>/.config/systemd/user/
Example:
[Unit] Description=my npm app After=network.target [Service] ExecStart=/usr/bin/npm start WorkingDirectory=/home/debian/mynpmapp/ Restart=on-failure [Install] WantedBy=default.target
2. Enable service
systemctl --user enable mynpmapp.service
3. From root enable lingering so that it persists over reboots and logouts
loginctl enable-linger username
4. Use systemctl –user start|stop <servicename>
to run service
Below is only needed if you switch to the user from root or another user on the system. If you login via ssh as a user, PAM subsystem will set up the required variables.
apt install dbus-user-session
In .bashrc of the user put:
export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
then logout and login again. If its still not working and you get na error
Failed to connect to bus: No such file or directory
try rebooting the server.