How to deploy Next.js with Nginx and PM2

11.29.2021

In this tutorial, I will show you how to deploy a Next.js app with Nginx and PM2.

First, launch an Ubuntu 20.04 compute instance with a cloud platform of your choice and ssh into it.

Update packages.

sudo apt-get update

Install nodejs and nginx.

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs nginx

Install pm2.

sudo npm install -g pm2

Create next app. Run this command and follow the prompts.

npx create-next-app@latest

Run the build.

npm run build

Start the process with pm2.

pm2 start "npm start"

Verify the server is running.

curl localhost:3000

Create the Nginx configuration.

sudo nano /etc/nginx/conf.d/default.conf

Paste the following into default.conf. Make sure to replace the IP address.

server {
  listen 80;

  server_name 123.456.789.10 example.com;


  location / {
    proxy_pass http://localhost:3000;
  }
}

Restart Nginx.

sudo service nginx restart

Go to the ip address in your browser. You should see the Next.js welcome page.