A few years ago, when I stumbled upon Node.js and began experimenting with it, I used to start my web server manually, each time calling a bash script that would handle the start/stop operations :

sudo ./server.sh && tail -f log/node.log

Since then, I've improved that server a lot and at some point, the need to have it started automatically during system bootup arose so I created a webserver.service systemd startup script in /etc/systemd/system, enabled it to be executed and finally executed it :

sudo systemctl enable webserver.service
sudo systemctl start webserver.service

The thing is, my Node.js app needed elevated privileges to bind to port 80, and I suspected there was a better solution than running the whole thing as root, so I googled around until I found this thread, stating that one can use the setcap command to grant low-numbered ports access to any executable :

sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/binary

Running that command on /usr/bin/node enabled me to start my webserver as a regular non-root user without it failing to bind to port 80.