Latest news from 5wire Networks

How to deploy your Next.js website to a Virtual Machine

This tutorial will focus on deploying Next.js to a Virtual Machine.

Prerequisites

  • Linux based cloud server
  • Basic understanding of command-line interface (CLI) and terminal usage
  • A Next.js application (if you don’t have one, use npx create-next-app my-app)

Steps

Deploy your Cloud Server

  • Choose a Cloud Server with sufficient resources (CPU, RAM) to handle your application’s traffic.
  • Select an appropriate operating system (OS) like Ubuntu or Debian, which are commonly used for Node.js deployments.

Connect to the VM

Use a tool like SSH to establish a secure connection to your VM. Refer to your cloud provider’s documentation for specific commands and authentication methods.

Set Up the Server Environment

Update package lists:

sudo apt update
sudo apt install nodejs npm
 
node -v
npm -v

Clone or Transfer Your Next.js App

If your app is in a Git repository, clone it using SSH:

git clone git@github.com:your-username/your-app.git

Alternatively, upload the built application files (from ./out after running npm run build) to the VM using a method like SCP or SFTP.

Install Dependencies and Build the Application

cd your-app

Install production dependencies:

npm install --production ``` (or `yarn install --production`)
 
Build the application for production:
 
npm run build ``` (or `yarn build`)
 

Configure a Process Manager (Optional):

Process managers (PMs) like PM2 or forever can help keep your Next.js server running automatically and handle restarts.

Install a PM (e.g., using npm install pm2 -g): 

npm install pm2 -g
 
pm2 start npm -- start  # Adjust the port if needed (e.g., pm2 start npm -- start -p 8080)

25% DISCOUNT FOR LIFE

Life time discount when you purchase your first order. Applies to Web Hosting, Reseller Hosting, and Cloud Servers.

Free Domain included on yearly Web Hosting plans.

Use code WEBOFF at the checkout!

Terms and Conditions apply. Voucher code is only valid for new customers.