###The Issue With Forever Forever is great for running node services, with a minor setback: the word "forever" doesn't apply to system reboots.
###The solution, run node apps as a system service logged in as root
vim /etc/init/node-app.conf
Contents for node-app.conf
start on filesystem and started networking
respawn
chdir /home/deploy/node-app #deployment directory
env NODE_ENV=production
env PORT=3000
exec /usr/local/bin/node server/cluster.js #start command - no forever needed, if it fails, the service restarts
SUCCESS! Now the app runs on reboot! You can also control the app as a service
service node-app start #node-app is filename of service.conf file
service node-app stop
service node-app restart #run this one command on deploy to either start | restart the service
###So how does my deploy script change?
Run visudo to give deploy
user permission to run only the node service without a password
echo "deploy ALL=(root) NOPASSWD: /sbin/restart node-app" >> /etc/sudoers
#this can be edited later by running visudo as root user
Now, run this with your deploy script as your deploy user
sudo restart node-app
perfectly!