Table of Contents
Was this article helpful?

2  out of  2 found this helpful

Try Vultr Today with

$50 Free on Us!

Want to contribute?

You could earn up to $600 by adding new articles.

How to Setup a Koa.js Node Application on Ubuntu 20.04 with Nginx

Author: Nabeel Ahmed

Last Updated: Wed, Feb 9, 2022
Programming Ubuntu Web Servers


Koa.js is a modern web framework built on Node.js. It allows developers to build high-performace and scalable web applications by focusing on a concise and extendible API built on asynchronous functionality in Node.js.


Install Nodejs & Yarn

Koa requires Node.js version v7.6.0 or higher.

  1. Install the latest LTS version of Nodejs.

    $ curl -fsSL | sudo -E bash -
    $ sudo apt-get install nodejs
  2. Verify successful Nodejs installation.

    $ node -v
  3. Install Yarn.

    $ curl -fsSL | sudo apt-key add -
    $ echo "deb stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    $ sudo apt-get update && sudo apt-get install yarn
  4. Verify successful Yarn installation.

    $ yarn -v

Setup Application

  1. Create the project root directory.

    $ cd ~
    $ mkdir koaserver && cd koaserver
  2. Initialize the Node.js project environment through yarn and answer the question prompts according to your project.

    $ yarn init
  3. Install Koa.

    $ yarn add koa
  4. Create index.js.

    $ touch index.js
  5. Add sample code to index.js.

    const Koa = require("koa");
    const app = new Koa();
    app.use(async (ctx) => {
            ctx.body = "Hello World";

Setup PM2

PM2 will manage the Node.js application to run in the background as a system process. PM2 will automatically restart the server if it crashes, handle logs, and monitor performance.

  1. Install PM2.

    $ sudo yarn global add pm2
  2. Confirm successful installation.

    $ pm2 -V
  3. Navigate to the project folder and start the Koa server through PM2.

    $ cd ~/koaserver
    $ pm2 start index.js --name koaserver
  4. Set PM2 to run on startup.

    $ eval "$(pm2 startup | tail -1)"
  5. Save PM2 configuration.

    $ pm2 save

Setup Reverse Proxy through Nginx

  1. Install Nginx.

    $ sudo apt-get install nginx
  2. Delete default Nginx server block.

    $ sudo rm /etc/nginx/sites-enabled/default 
  3. Create a new Nginx server block.

    $ sudo touch /etc/nginx/sites-enabled/koaserver.conf
  4. Add the following text to the file.

    server {
        listen 80;
        listen [::]:80;
        server_name _;
        location / {
  5. Restart Nginx.

    $ sudo systemctl nginx restart
  6. Verify a working server response by navigating to your server's IP address in a browser. You should see a Hello World message.

Setup Firewall

For added security, configure a firewall to restrict access to internal service ports.

  1. Setup UFW rules.

    $ sudo ufw allow 22,80,443/tcp

Add any other ports according to your application and needs.

  1. Enable UFW.

    $ sudo ufw enable
  2. Verify UFW working.

    $ sudo ufw status
    Status: active


For more information, refer to the official Koa.js documentation.

Want to contribute?

You could earn up to $600 by adding new articles.