Nuxt is an intuitive Vue framework. It lets you build Vue application quickly as it has features such as Single Page application and creating Server rendered application. Nuxt was first released on October 26, 26 and has come along way. We are currently on our way to Nuxt 3 with the release candidate recently launched. Nuxt 2 in the most recent LTS version

Nuxt js can be deployed in two different ways depending on your deployment platform:

  • Static Site: 

This is where you application pages will be converted to static html code that can be deployed to any platform. The advantage of static site is that you have fast load time as nothing is processed. However, it is not suitable for sites whose content keep changing or is updated frequently.

  • Dynamic

You can deploy on a node server which will render the application. This method is suitable for applications that have dynamic content such as e-commerce  and also applications with many pages.



  • Node js installed (latest LTS version)

  • Digital Ocean Droplet with ssh access

  • Nginx Server


Ssh to the server 

ssh  server_user@server_ip 


Move to html directory, this is where we shall set up the application

Cd /var/www/html


Setup a New Nuxt Project

First we  are going to create a Nuxt project using npx


npx nuxi init nuxt-app

This creates a nuxt-app directory in your present working directory.

Cd into the project root

cd nuxt-app


Run npm install to install the required dependencies

npm install


Inside you can also run the following commands:

Npm run dev: to run the application in development mode

npm run build: to build the application from the apps package.json


Run The app in development mode


npm run dev 


To be able to view the application we need to configure nginx to point to the application folder, cd to /etc/nginx/sites-available


Update the content within the location configuration to look like this


    location / {

        proxy_redirect                      off;

        proxy_set_header Host               $host;

        proxy_set_header X-Real-IP          $remote_addr;

        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto  $scheme;

        proxy_read_timeout          1m;

        proxy_connect_timeout       1m;

        proxy_pass                ; # set the address of the Node.js instance here



Nuxt normally runs on port 3000 


To see if the nginx configuration is correct run

nginx -t


Reload Nginx for the changes to reflect

 systemctl reload nginx


Run the Nuxt application for production

 npm run build


Install Pm2

Pm2 is a daemon process manager which keeps an application online, we shall install using

npm install pm2@latest -g

For Nuxt 3 you need to create a ecosystem.config.js with the following content

module.exports = {

  apps: [


      name: 'NuxtAppName',

      exec_mode: 'cluster',

      instances: 'max', // Or a number of instances

      script: './node_modules/nuxt/bin/nuxt.js',

      args: 'start'





Start pm2 to view the application


pm2 start