Published on · Updated on: · By Jaikishan Singh Rajawat
- 7 min read
How to Deploy an Express.js REST API in 2026 (No Docker, No DevOps)
Building an Express.js REST API is fast. Getting it to production is where most developers lose time.
Your API runs perfectly on localhost:3000. Taking it live means choosing a server, installing Node.js, running npm install, keeping the process alive with PM2 or systemd, setting up Nginx as a reverse proxy, getting an SSL certificate via Certbot, and then wiring up a CI/CD pipeline so you are not manually SSHing in every time you push. That is a full day of infrastructure work before your first endpoint serves a real user.
Kuberns removes all of that. It is an agentic AI deployment platform built on AWS. It detects your Node.js project, installs dependencies, starts your server, handles SSL, and manages auto-scaling automatically. You push to GitHub. Your API is live in under five minutes.
What this guide covers:
- Two things to confirm before deploying
- Step-by-step deployment on Kuberns
- Connecting a PostgreSQL database
- Platform comparison for Express.js APIs in 2026
- Common deployment issues and fixes
Before You Deploy: Two Things to Confirm
1. Listen on process.env.PORT and bind to 0.0.0.0
Kuberns injects PORT at runtime. Your app must use it:
const PORT = process.env.PORT || 3000;
app.listen(PORT, '0.0.0.0');
Binding to localhost or 127.0.0.1 will cause a connection refused error in production.
2. Push to GitHub and add a start script
Kuberns deploys from your repo and runs npm start. Make sure package.json has:
{ "scripts": { "start": "node index.js" } }
No Dockerfile. No Procfile. Nothing else needed.
How to Deploy an Express.js REST API on Kuberns (Step by Step)
Kuberns is an agentic AI cloud platform that auto-detects your Node.js project, runs npm install, starts your server using the start script in package.json, provisions compute on AWS, issues SSL, and sets up CI/CD automatically.
Step 1: Create Your Kuberns Account

Go to kuberns.com and click Deploy for Free. Create your account and verify your phone number.
Kuberns has a free tier to start. After that, $7 gets you $14 in compute credits (2x value) to apply toward your deployment. See what each tier includes.
Step 2: Connect Your GitHub Repository

On the Creating a Service page, connect your GitHub account and select your Express.js repository and the branch to deploy.
- Click Connect and Configure and authorise Kuberns access to your repositories
- Select your repository and the branch you are deploying (typically
main) - Kuberns AI scans your project and detects the language (Node.js from
package.json), the start command, and the Node version from.nvmrcorenginesfield if present
You confirm, not configure.
Step 3: Add Environment Variables

Before clicking Deploy, navigate to the Environment section and add your configuration:
- Click Add Env Vars to add key-value pairs manually, or
- Click Upload .env file to import all variables at once
For a typical Express REST API, add:
| Variable | Example value |
|---|---|
DATABASE_URL | Your PostgreSQL connection string |
JWT_SECRET | Your JWT signing secret |
NODE_ENV | production |
API_KEY | Any third-party API keys |
Kuberns encrypts all values at rest. They never appear in build logs or deployment output.
Step 4: Click Deploy

Click Deploy. Kuberns agentic AI takes over from here:
- Clones your repository from GitHub
- Detects Node.js from
package.jsonand reads the start command - Runs
npm installto install all dependencies - Starts your server with
NODE_ENV=productionand the injectedPORT - Provisions AWS compute in your chosen region
- Issues an SSL certificate and assigns a live HTTPS URL
- Enables monitoring, logging, and AI-driven auto-scaling
- Sets up CI/CD so every future push to the connected branch triggers an automatic redeploy
Step 5: Your Express API is Live

Your Express.js REST API is live in under five minutes. From the Kuberns dashboard you can:
- Open your deployed HTTPS URL and test your endpoints
- View live usage stats and resource consumption
- Check real-time logs and build history
- Update environment variables without redeploying
- Monitor AI-driven auto-scaling metrics
Deploy your Express.js API on Kuberns →
Connecting a PostgreSQL Database to Your Express API
Most Express REST APIs connect to a database. Here is how to do it on Kuberns with pg or an ORM like Sequelize.
Using the pg library
Install pg:
npm install pg
Connect using the DATABASE_URL environment variable:
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: { rejectUnauthorized: false }
});
module.exports = pool;
Using Sequelize
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize(process.env.DATABASE_URL, {
dialect: 'postgres',
dialectOptions: {
ssl: { require: true, rejectUnauthorized: false }
}
});
module.exports = sequelize;
Add DATABASE_URL in the Kuberns environment tab with your full Postgres connection string. Your app reads it at startup without any code changes between local and production.
Recommended database providers for Kuberns
- Neon for serverless PostgreSQL with connection pooling and a generous free tier
- Supabase for managed PostgreSQL with a built-in dashboard and auth
- AWS RDS for PostgreSQL on the same AWS infrastructure as Kuberns, which gives the lowest latency
Express.js API Deployment Platform Comparison (2026)
| Platform | Auto-detects Node.js | Docker required | Free tier | Sleeps on idle | Starting price | Best for |
|---|---|---|---|---|---|---|
| Kuberns | Yes, from package.json | No | Yes, free credits | No | $7/mo | Full-stack APIs, zero-ops teams |
| Heroku | Yes | No | No (removed 2022) | No | $7/mo | Legacy apps |
| Render | Yes | Optional | Yes (sleeps after 15 min) | Yes | $7/mo | Prototypes |
| Railway | Yes | Optional | Trial credits only | No | $5/mo + usage | Short-lived projects |
| Fly.io | No | Yes (required) | Yes (limited) | No | $5/mo + usage | Config-heavy workflows |
| DigitalOcean App Platform | Yes | Optional | No | No | $5/mo | Teams with DevOps skills |
For a deeper comparison with Render, Railway, and Heroku, see the best Heroku alternatives guide and the Render alternatives guide.
Common Express.js Deployment Issues and Fixes
App returns 502 or connection refused immediately after deploy
Your server is binding to localhost or 127.0.0.1 instead of 0.0.0.0. Update your app.listen call as shown in the prerequisites section.
Build succeeds but app crashes on startup
Check the Kuberns build logs. The most common cause is a missing environment variable. Make sure all variables your app reads with process.env are added in the Kuberns environment tab before deploying.
npm install fails during build
Ensure your package.json and package-lock.json are both committed to your repository. If you have native modules, confirm they are listed under dependencies, not devDependencies.
App works locally but returns 500 errors in production
Set NODE_ENV to production in your Kuberns environment variables. Some Express middleware and error handlers behave differently between environments. Also confirm that all database connection strings include ssl: { rejectUnauthorized: false } for managed Postgres providers.
Logs show port already in use
Your app is using a hardcoded port. Replace it with process.env.PORT as shown in the prerequisites section.
Why Teams Deploy Express APIs on Kuberns
Express.js is one of the most widely used Node.js frameworks in production. The problem is never the framework. It is all the infrastructure that surrounds it.
On a VPS, you install Node, configure PM2 to keep the process alive, set up Nginx to forward requests, run Certbot for SSL renewal, and write GitHub Actions YAML to automate deploys. That is hours of work for a setup that still requires ongoing maintenance.
Kuberns eliminates that entirely:
- No server configuration. Kuberns runs on AWS and manages the compute layer for you.
- No DevOps team needed. One developer can ship a production API in under five minutes.
- Auto-scaling built in. The AI watches your traffic and scales instances up or down automatically.
- CI/CD on every push. Every commit to your main branch triggers a redeploy. No pipelines to write.
- 40% lower cost than direct AWS. Kuberns is built on AWS infrastructure but priced more efficiently than running EC2 yourself.
If you are running a Node.js app and want to go further, the Node.js deployment guide covers the broader Node ecosystem. For full-stack apps, the MERN stack deployment guide walks through front end and back end together.
Frequently Asked Questions
Do I need to write a Dockerfile to deploy an Express API on Kuberns?
No. Kuberns detects Node.js from your package.json, runs npm install, and starts your server using the start script. You do not need a Dockerfile, a Procfile, or any deployment configuration.
How does Kuberns handle auto-scaling for an Express API?
Kuberns uses AI-driven auto-scaling that monitors CPU and memory usage in real time. When traffic spikes, it provisions additional compute automatically. When traffic drops, it scales back down. You do not configure any rules or thresholds.
Can I deploy multiple Express services on Kuberns?
Yes. Each service connects to its own GitHub repository and branch. You manage all of them from the same Kuberns dashboard with separate environment variables, logs, and scaling settings.
What Node.js versions does Kuberns support?
Kuberns supports all current LTS versions of Node.js. Specify your version in the engines field in package.json or in a .nvmrc file at the project root. Kuberns reads it and uses the correct version automatically.
Is Kuberns suitable for production Express APIs?
Yes. Kuberns is built on AWS, supports custom domains with auto-renewed SSL, AI-driven auto-scaling, and persistent environment variable management. It is designed for production workloads, not just prototypes.