Npm n8n version 2x stuck on stn8n v2 stuck on “n8n is starting up” on cPanel + CloudLinux (Node.js App)artup

Describe the problem/error/question

We have deployed n8n v2 on a cPanel + CloudLinux server using the Node.js App environment.
The same setup worked correctly with n8n v1, but with v2, the web UI gets stuck on:

“n8n is starting up. Please wait”

n8n does not fully load in the browser, even though the process appears to start from the command line.

We are trying to understand whether this is related to the new Python task runner introduced in n8n v2 and how to run n8n v2 correctly in a shared hosting / cPanel environment.

What is the error message (if any)?

When starting n8n from the command line, we see the following output:

/opt/alt/alt-nodejs22/root/bin/node ./node_modules/n8n/bin/n8n
Initializing n8n process
n8n ready on ::, port 5678
n8n Task Broker ready on 127.0.0.1, port 5679
spawn node ENOENT
Failed to start Python task runner in internal mode. because its virtual environment is missing from this system. Launching a Python runner in internal mode is intended only for debugging and is not recommended for production. Users are encouraged to deploy in external mode. See: https://docs.n8n.io/hosting/configuration/task-runners/#setting-up-external-mode
[license SDK] Skipping renewal on init: license cert is not initialized
Version: 2.3.5

Editor is now accessible via:
http://localhost:5678

Press "o" to open in Browser.

Please share your workflow

Not applicable.

Share the output returned by the last node

Not applicable.

Information on your n8n setup

  • **n8n version:**[email protected]
  • Database (default: SQLite):SQLite
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app): npm / Node.js App via cPanel (CloudLinux Node.js selector)
  • Operating system: CloudLinux

The issue you’re encountering is likely due to the Python task runner in n8n v2. The error message “Failed to start Python task runner in internal mode” indicates this. Since you’re on a shared hosting environment, you should configure n8n to use an external task runner, as the internal mode isn’t suitable for production. Check the n8n documentation on setting up an external task runner for detailed instructions.

The official documentation for task runners appears to primarily reference an n8n Docker-based setup, using the n8nio/runners container.

For a non-Docker deployment, specifically an npm-based setup (cPanel + CloudLinux Node.js App), can task runners be integrated by:

Installing the runner via:npm install -g @n8n/task-runner ;

Enabling external runners with the following environment variables:
N8N_RUNNERS_ENABLED=true
N8N_RUNNERS_MODE=external
N8N_RUNNERS_TASK_BROKER_URI=localhost:5679

Are there any additional required steps necessary for this configuration, for example, Python virtual environment setup, extra binaries, or specific runner configuration ?

not neccesarily, i believe, if you have it all set up. Test it though, and see if you get any errors!