Mise Ă  niveau vers Pro

how to set up an Express.js app on a live server, such as a VPS (Virtual Private Server) or a cloud service like DigitalOcean, AWS EC2, or Linode, and make it publicly accessible

Prerequisites

Before you start, ensure you have:

  • A VPS or cloud server (e.g., Ubuntu 20.04 or later)

  • Root or sudo access

  • A registered domain name (optional, but recommended)

  • Installed:

    • Node.js and npm

    • Git (optional, for deploying from GitHub)

    • Firewall configured (UFW or similar)

 Step-by-Step: Setting Up Express.js on a Live Server

1. 🔌 Connect to Your Server

Use SSH to connect to your server:

ssh your-username@your-server-ip

2.  Install Node.js and npm

On Ubuntu, install Node.js (use LTS version):

sudo apt update
sudo apt install nodejs npm -y

Check installation:

node -v
npm -v

3.  Create Your Express App

Either clone from GitHub:

git clone https://github.com/yourusername/your-express-app.git
cd your-express-app

Or create a new app manually:

mkdir my-express-app
cd my-express-app
npm init -y
npm install express

Create a file named server.js:

// server.js
const express = require('express');
const app = express();

const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello from Express on a live server!');
});

app.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}`);
});

4.  Start the Express App

To run the server:

node server.js

Now visit:
http://your-server-ip:3000
(Replace your-server-ip with your actual IP)

5.  Allow Traffic Through Firewall

If you're using UFW:

sudo ufw allow 3000

To allow HTTP (port 80):

sudo ufw allow 80

6.  Run the App in Background (Forever)

Install PM2, a process manager for Node.js:

sudo npm install -g pm2

Start your app with PM2:

pm2 start server.js

Enable startup script (auto-run after reboot):

pm2 startup
pm2 save

7.  Set Up Domain Name (Optional but Recommended)

If you have a domain name:

  • Point the domain’s A record to your server IP.

  • Install Nginx as a reverse proxy:

sudo apt install nginx

Edit Nginx config:

sudo nano /etc/nginx/sites-available/default

Replace contents with:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Restart Nginx:

sudo systemctl restart nginx

Now visit:
http://yourdomain.com

8.  (Optional) Secure with HTTPS using Let's Encrypt

Install Certbot:

sudo apt install certbot python3-certbot-nginx

Run Certbot:

sudo certbot --nginx -d yourdomain.com

This will configure HTTPS automatically.

 Summary

Step Task
1ïžâƒŁ SSH into server
2ïžâƒŁ Install Node.js & npm
3ïžâƒŁ Create Express app
4ïžâƒŁ Run app (node or pm2)
5ïžâƒŁ Open firewall port
6ïžâƒŁ (Optional) Reverse proxy with Nginx
7ïžâƒŁ (Optional) Link domain and use HTTPS

 

Flowisetech For easy access