I’m trying to self-host n8n CE on a FastComet VPS (AlmaLinux 9, cPanel/WHM). I can start the app fine with PM2, but I keep hitting two issues:
- RuntimeError OOM:
RuntimeError: abort(RangeError: WebAssembly.instantiate(): Out of memory:
Cannot allocate Wasm memory for new instance)
at /node_modules/ssh2/lib/protocol/crypto/poly1305.js
Node.js v20.19.5
- License activation always fails (both in the UI and with CLI). The UI shows:
Activation failed
Failed to activate license: Connection Error: fetch failed
Information on my n8n setup
-
- n8n version: 1.110.1 (npm, PM2 managed)
- Database: SQLite (default)
- n8n EXECUTIONS_PROCESS setting: regular/own
- Running n8n via: npm + PM2 on VPS
- Operating system: AlmaLinux 9 (CloudLinux environment, FastComet VPS with cPanel/WHM)
- Node.js version: 20.19.5 (installed via nvm)
ecosystem.config.js excerpt:
module.exports = {
apps: [{
name: "n8n",
script: "/home/taftc/n8n.taftc.org/node_modules/n8n/bin/n8n",
args: "start",
interpreter: "/home/taftc/.nvm/versions/node/v20.19.5/bin/node",
node_args: "--max-old-space-size=2048 --dns-result-order=ipv4first",
env: {
N8N_HOST: "n8n.taftc.org",
N8N_PROTOCOL: "https",
N8N_PUBLIC_URL: "https://n8n.taftc.org",
WEBHOOK_URL: "https://n8n.taftc.org",
GENERIC_TIMEZONE: "Asia/Singapore",
N8N_DEFAULT_BINARY_DATA_MODE: "filesystem",
N8N_ENCRYPTION_KEY: "<redacted>",
N8N_LICENSE_ACTIVATION_KEY: "<redacted>"
}
}]
}
What we’ve tried so far
-
Initially on Node 21 → switched to Node 20 LTS via nvm.
-
Clean reinstall of node_modules under Node 20.
-
Added
--max-old-space-size=2048and setN8N_DEFAULT_BINARY_DATA_MODE=filesystem. -
Confirmed outbound connectivity:
-
curl -I https://api.n8n.io→ 200 OK -
curl -I https://license.n8n.io→ 404 (but this happens everywhere, so not sure if expected).
-
-
Tried seeding license key via env (
N8N_LICENSE_ACTIVATION_KEY) and CLI activation (n8n license:activate), but both fail with “Connection Error: fetch failed”.
Questions
-
Is the poly1305 WebAssembly OOM a known issue? Any way to disable poly1305/llhttp WASM or bypass ssh2 crypto in n8n?
-
Would switching from SQLite → Postgres help with stability, or unrelated?
-
For license activation:
-
Is a 404 on
https://license.n8n.ioroot expected? -
Is there a way to force licence activation purely via env or CLI without the UI fetch?
-
Are there any additional env vars we should set (e.g.
N8N_LICENSE_SERVER_URL)?
-
-
Could CloudLinux LVE limits (per-user memory/network) be breaking fetch/licence calls even though curl works?
-
Should we try Node 22.x LTS, or is Node 20.x strictly recommended?