How to run node.js app forever when console is closed?


node.js Problem Overview

I connect to my remote server via ssh. Then I start my node.js app with Forever. Everything works fine until I close my console window. How to run node.js app FOREVER on my remote server even when I close my connection via ssh? I just want to start an app and shut down my copmputer. My app should be working in the background on my remote server.

node.js Solutions

Solution 1 - node.js

You may also want to consider using the upstart utility. It will allow you to start, stop and restart you node application like a service. Upstart can configured to automatically restart your application if it crashes.

Install upstart:

sudo apt-get install upstart

Create a simple script for your application that will look something like:

description "my app"

start on started mountall
stop on shutdown
# Automatically Respawn:
respawn limit 99 5

env NODE_ENV=production

exec node /somepath/myapp/app.js >> /var/log/myapp.log 2>&1

Then copy the script file (myapp.conf) to /etc/init and make sure its marked as executable. Your application can then be managed using the following commands:

sudo start myapp
sudo stop myapp
sudo restart myapp

Solution 2 - node.js

Two answers: One for Windows, one for *nix:

On Windows, you can use the start command to start the process disconnected from your instance of cmd.exe:

start node example.js

On *nix, there are two aspects of this: Disconnecting the process from the console, and making sure it doesn't receive the HUP signal ("hang up"), which most processes (including Node) will respond to by terminating. The former is possibly optional, but the latter is necessary.

Starting disconnected from the console is easy: Usually, you just put an ampersand (&) at the end of the command line:

# Keep reading, don't just grab this and use it
node example.js &

But the above doesn't protect the process from HUP signals. The program may or may not receive HUP when you close the shell (console), depending on a shell option called huponexit. If huponexit is true, the process will receive HUP when the shell exits and will presumably terminate.

huponexit defaults to false on the various Linux variants I've used, and in fact I happily used the above for years until coderjoe and others helped me understand (in a very long comment stream under the answer that may have since been deleted) that I was relying on huponexit being false.

To avoid the possibility that huponexit might be true in your environment, explicitly use nohup. nohup runs the process immune from HUP signals. You use it like this:

nohup node example.js > /dev/null &


nohup node example.js > your-desired-filename-or-stream-here &

The redirection is important; if you don't do it, you'll end up with a nohup.out file containing the output from stdout and stderr. (By default, nohup redirects stderr to stdout, and if stdout is outputting to a terminal, it redirects that to nohup.out. nohup also redirects stdin if it's receiving from a terminal, so we don't have to do that. See man nohup or info coreutils 'nohup invocation' for details.)

In general for these things, you want to use a process monitor so that if the process crashes for some reason, the monitor restarts it, but the above does work for simple cases.

Solution 3 - node.js

I would definitely recommend pm2
npm install -g pm2

To start server: pm2 start [yourServerFile.js]
To stop server: pm2 stop [yourServerFile.js]

Close client and server will run forever....will also restart if app crashes.
Ive been running a node server on Ubuntu for months with zero issues

Solution 4 - node.js

Always, simple is the best, no need upstart, no need forever, just nohup:

> nohup node file.js &

Believe me, I'm running so that for my case!

Solution 5 - node.js

You could install forever using npm like this:

  sudo npm install -g forever

Or as a service:

 forever start server.js

Or stop service

forever stop server.js

To list all running processes:

forever list

Solution 6 - node.js

node expamle.js & for example

Solution 7 - node.js

In Linux, SSH into your remote server and run


to launch into a new screen.

Finally, type ctrlad to detach the screen session without killing the process.

More info here.

Solution 8 - node.js

I had similar issue and I think using forever will help to handle crashed and restarts

You can install forever globally: sudo nom install -g forever

And run this command:

nohup forever server.js &

This should handle all the trouble of closing the terminal, closing ssh session, node crashes and restarts.

Solution 9 - node.js

If you're running node.js in a production environment, you should consider using PM2, forever.js, or Nodemon.

There is no shortage of articles online comparing the different packages.

Solution 10 - node.js

This is only a partial answer for Windows. I’ve created a single line Visual Basic Script called app.vbs that will start your node application within a hidden window:

CreateObject("Wscript.Shell").Run "node app.js", 0

To execute it automatically at startup, open the %AppData%\Microsoft\Windows\Start Menu\Programs\Startup\ directory and add a shortcut to the app.vbs file.

More info at:

Solution 11 - node.js

Wow, I just found a very simple solution:

First, start your process (node app)

forever dist/index.js

run: ^Z cmd + z.

Then: bg. Yeah.. bg (background). And pum.. you are out.

Finish with exitif you are with sshor just close the terminal.

Solution 12 - node.js

my file:


nohup forever -c php artisan your:command >>storage/logs/yourcommand.log 2>&1 &

There is one important thing only. FIRST COMMAND MUST BE "nohup", second command must be "forever" and "-c" parameter is forever's param, "2>&1 &" area is for "nohup". After running this line then you can logout from your terminal, relogin and run "forever restartall" voilaa... You can restart and you can be sure that if script halts then forever will restart it.

I <3 forever


All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPonoView Question on Stackoverflow
Solution 1 - node.jsDerrish RepchickView Answer on Stackoverflow
Solution 2 - node.jsT.J. CrowderView Answer on Stackoverflow
Solution 3 - node.jsjames murphyView Answer on Stackoverflow
Solution 4 - node.jstquangView Answer on Stackoverflow
Solution 5 - node.jssudhirView Answer on Stackoverflow
Solution 6 - node.jsEmmermanView Answer on Stackoverflow
Solution 7 - node.jsckirksey3View Answer on Stackoverflow
Solution 8 - node.jsPini CheyniView Answer on Stackoverflow
Solution 9 - node.jsOwen BrownView Answer on Stackoverflow
Solution 10 - node.jsKees C. BakkerView Answer on Stackoverflow
Solution 11 - node.jsValRobView Answer on Stackoverflow
Solution 12 - node.jskodmanyaghaView Answer on Stackoverflow