Requirements
- cPanel with Node.js Selector (Node 20+ or 22.x)
- SSH access (strongly recommended for
npm run build) - Domain or subdomain pointed to the account
- External PostgreSQL (Neon, Supabase) — most shared hosts do not include Postgres
- FFmpeg may require host support or a VPS for video features
Step 1 — Create the Node.js application
- Log in to cPanel → Setup Node.js App → Create Application.
- Settings:
- Node.js version: 20.x or 22.x
- Application mode: Production
- Application root:
voralis-web - Application URL: your domain or subdomain
- Application startup file:
.next/standalone/server.js
- Click Create.
Step 2 — Upload code
cd ~/voralis-web
git clone <your-repo-url> .
# or upload and extract ZIP via File ManagerStep 3 — Environment variables
In cPanel Node.js App → Environment Variables, add keys from deploy/env.example:
NEON_DATABASE_URL/DATABASE_URLNEXT_PUBLIC_APP_URL,NEXTAUTH_SECRET,JWT_SECRETNEXT_PUBLIC_BRAIN_SERVER_URLGEMINI_API_KEYand other AI keys you enable
Or via SSH:
cp deploy/env.example .env.production
ln -sf .env.production .env.local
nano .env.productionStep 4 — Build via SSH
Activate the cPanel Node virtualenv (path varies by host):
source /home/USER/nodevenv/voralis-web/20/bin/activate
cd ~/voralis-web
npm ci
npx prisma generate
export NODE_OPTIONS='--max-old-space-size=4096'
npm run build
cp -r public .next/standalone/public
cp -r .next/static .next/standalone/.next/static
cp -r lib/generated .next/standalone/lib/generated 2>/dev/null || true
npm run prisma:migrate:deployStep 5 — Start / restart
In cPanel Node.js App panel, click Restart.
If PM2 is allowed on your host:
npm install -g pm2
pm2 start ecosystem.config.cjs
pm2 saveStep 6 — Domain & SSL
- Use cPanel SSL/TLS or AutoSSL for HTTPS.
- cPanel usually proxies the Node app when configured in Setup Node.js App.
- For manual Apache proxy, contact your host or add reverse proxy rules (host-specific).
Step 7 — Verify
Visit https://yourdomain.com/api/health — should return OK.
Complete the License Setup Wizard on first visit if not already done.
cPanel notes
- Memory: if build fails, use
export NODE_OPTIONS='--max-old-space-size=4096' - FFmpeg: ask host to install, or deploy on a VPS for video features
- Build timeout: run
npm run buildover SSH, not in browser terminal - Standalone output: startup file must be
.next/standalone/server.js