Skip to main content
Worker processes keep an application running in the background on your website, start it again if it stops, and pass visitors’ requests to it. Use them for Node.js apps (such as Express or Next.js), Laravel queue workers or any other program that needs to keep running.

Difficulty

Advanced

Time

10–15 minutes

Before you start

  • Upload your application to your website with the File Manager, SFTP or FTP. Put it outside public_html, for example in a folder called myapp in your home directory, so its source files can’t be downloaded.
  • Install its packages if it has any. Connect with SSH, go to the app’s folder and run npm install.
  • Make sure your app listens on 0.0.0.0 and a fixed port, such as 3000.
If your website also runs WordPress or another site, don’t send the whole website to your app. Use a path such as /app instead (see step 4). Proxying / sends every visitor to your app, and your existing website stops showing.

Launch a worker process

1

Open Worker processes

Go to Websites, click your website, then open Advanced → Worker processes and click Launch. You can also click Launch on the website card on the Home tab.
2

Choose how it runs

  • Automatic (Production): your worker process will be started automatically and restarted if it exits. Choose this for live apps.
  • Manual (Development): requests are passed to your app, but it isn’t started for you. Use this while you start and stop the app yourself over SSH.
3

Pick a type and enter the command

Choose Node.js, Custom, Laravel or PHP. Each fills in a typical command that you can change:In Working directory, enter the folder that contains your app, for example myapp. Leave it empty to use your home directory.
Launch worker process form with Automatic and Manual options, Node.js, Custom, Laravel and PHP buttons, a Node.js version drop-down set to stable, startup command npm start, working directory, an HTTP Proxy toggle, path, port 3000 and a web socket checkbox

The Launch worker process form

4

Set up the HTTP proxy

Leave HTTP Proxy on if visitors should reach your app through your domain.
  • Path: where the app appears. For example, app makes it available at https://yourdomain.com/app. Leave it empty to send the whole website to your app.
  • Port: the port your app listens on, for example 3000.
  • Allow web socket proxy upgrade: tick this if your app uses websockets (for example live chat or Socket.IO).
Turn HTTP Proxy off for background workers that don’t serve web pages, such as a Laravel queue worker.
5

Click Launch

The worker appears as a card. The first time you launch a Node.js worker, Node.js is downloaded and installed for you, which can take a minute. Click View logs to watch.
6

Test it

Open https://yourdomain.com/app (or the path you chose) in your browser. In our test, a small app was answering about 15 seconds after it was saved.

Manage a worker process

Worker processes page with a Node.js worker card showing startup command node app.js, version Stable, working directory Home directory, start mode Automatic, proxy status HTTP, proxy path /node and proxy port 3000

A running Node.js worker

  • Click the pencil next to Startup command, Working directory, Proxy status, Proxy path or Proxy port to change it. Changing the startup command shows Startup command updated and restarts the app.
  • Use the Version and Start mode drop-downs to switch Node.js version or between Automatic and Manual.
  • View logs shows everything your app prints, plus start-up messages. The same log is saved as a persistent_app_….log file in your home directory.
  • ⋮ → Delete removes the worker.
The website card on the Home tab shows the worker’s status, for example Running.

Example: a minimal Node.js app

To check everything works, create a file called app.js in your home directory with the File Manager containing:
Launch a Node.js worker with the startup command node app.js, path node and port 3000. Visiting https://yourdomain.com/node shows Hello from Node.js.

Troubleshooting

The app isn’t running or isn’t listening where the proxy expects it.
  1. Open View logs and look for errors.
  2. Check the Proxy port matches the port your app listens on, and that it listens on 0.0.0.0.
  3. If Node.js is still being installed, wait a minute and refresh.
The startup command fails straight away. Check View logs. Put your code in a file and run it with a simple command such as node app.js or npm start rather than a long command with lots of quotes.
The app’s packages aren’t installed. Connect with SSH, go to the app’s folder and run npm install, then change the startup command (or restart the worker) to try again. Make sure Working directory points to the folder that contains package.json.
The worker’s Proxy path is empty or /, so the whole website goes to your app. Set a path such as app, or delete the worker.
The Deploy from GitHub option in Add website and the website’s GitHub tab can deploy apps from a GitHub repository. GitHub deployment isn’t available on a website that already has an app (such as WordPress) installed.

Need Extra Help?

If you encounter any issues, our support team is ready to assist:

Save on Your Hosting

Ready to upgrade your hosting? Use code KB20 at checkout for 20% off your first order!

Last Updated: October 2026