# How to Install Sails.js Framework with Nginx as a Reverse Proxy on Ubuntu 20.04

> URL: https://www.atlantic.net/dedicated-server-hosting/how-to-install-sails-js-framework-with-nginx-as-a-reverse-proxy-on-ubuntu-20-04/ | Published: 2021-06-11 | Updated: 2026-02-28 | Author: Hitesh Jethva

Sails.js is the most popular MVC framework for Node.js. It allows you to build custom, enterprise-grade Node.js applications. Sails.js supports scalable, service-oriented architecture and provides basic security and role-based access control. It is used for developing chat, real-time dashboards, and multiplayer games.

## Step 1 – Install Node.js

First, install the necessary dependencies using the following command.

```
apt-get install -y ca-certificates curl gnupg
```

Next, download the Node.js GPG key.

```
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
```

Next, add the NodeSource repo to the APT source list.

```
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
```

Then, update the repository index and install the Ndoe.js with the following command.

```
apt update
apt-get install -y nodejs
```

Next, verify the Node.js version using the following command.

```
node -v
```

Output.

```
v18.19.0
```

## Step 2 – Install Sails.js

You can install Sails.js easily using the NPM command.

```
npm -g install sails
```

Once Sails.js is installed, create a new project named myapp with the following command:

```
sails new myapp
```

You will be asked to choose a template for your Sails application:

```
 Choose a template for your new Sails app:
 1. Web App  ·  Extensible project with auth, login, & password recovery
 2. Empty    ·  An empty Sails app, yours to configure
 (type "?" for help, or <CTRL+C> to cancel)
? 2
```

Type 2 and hit Enter to finish the installation:

```
 info: Installing dependencies...
Press CTRL+C to cancel.
(to skip this step in the future, use --fast)
 info: Created a new Sails app `myapp`!
```

Next, change the directory to myapp and start the Sails app with the following command:

```
cd myapp
sails lift
```

You should see the following output:

```
 info: Starting app...

 info: 
 info:                .-..-.
 info: 
 info:    Sails              <|    .-..-.
 info:    v1.4.3              |\
 info:                       /|.\
 info:                      / || \
 info:                    ,'  |'  \
 info:                 .-'.-==|/_--'
 info:                 `--'-------' 
 info:    __---___--___---___--___---___--___
 info:  ____---___--___---___--___---___--___-__
 info: 
 info: Server lifted in `/root/myapp`
 info: To shut down Sails, press  + C at any time.
 info: Read more at https://sailsjs.com/support.

debug: -------------------------------------------------------
debug: :: Sun Jun 13 2021 04:33:02 GMT+0000 (Coordinated Universal Time)

debug: Environment : development
debug: Port        : 1337
debug: -------------------------------------------------------
```

Press CTRL + C to stop the Sails application.

## Step 3 – Create a Systemd Service File for Sails.js App

Next, you will need to create a systemd service file to manage the Sails.js application. You can create it with the following command:

```
nano /lib/systemd/system/sails.service
```

Add the following lines:

```
[Unit]
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/myapp
ExecStart=/usr/bin/sails lift
Restart=on-failure

[Install]
WantedBy=multi-user.target
```

Save and close the file, then reload the systemd daemon to apply the changes:

```
systemctl daemon-reload
```

Next, start the Sails.js service and enable it to start at system reboot:

```
systemctl start sails
systemctl enable sails
```

You can check the status of the Sails.js service with the following command:

```
systemctl status sails
```

You should see the following output:

```
● sails.service
     Loaded: loaded (/lib/systemd/system/sails.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-06-13 04:41:48 UTC; 6s ago
   Main PID: 3730 (node)
      Tasks: 22 (limit: 2353)
     Memory: 114.0M
     CGroup: /system.slice/sails.service
             ├─3730 node /usr/bin/sails lift
             └─3752 grunt

Jun 13 04:41:49 ubuntu2004 sails[3730]:  info:  ____---___--___---___--___---___--___-__
Jun 13 04:41:49 ubuntu2004 sails[3730]:  info:
Jun 13 04:41:49 ubuntu2004 sails[3730]:  info: Server lifted in `/root/myapp`
Jun 13 04:41:49 ubuntu2004 sails[3730]:  info: To shut down Sails, press  + C at any time.
Jun 13 04:41:49 ubuntu2004 sails[3730]:  info: Read more at https://sailsjs.com/support.
Jun 13 04:41:49 ubuntu2004 sails[3730]: debug: -------------------------------------------------------
Jun 13 04:41:49 ubuntu2004 sails[3730]: debug: :: Sun Jun 13 2021 04:41:49 GMT+0000 (Coordinated Universal Time)
Jun 13 04:41:49 ubuntu2004 sails[3730]: debug: Environment : development
Jun 13 04:41:49 ubuntu2004 sails[3730]: debug: Port        : 1337
Jun 13 04:41:49 ubuntu2004 sails[3730]: debug: -------------------------------------------------------
```

## Step 4 – Configure Nginx as a Reverse Proxy for Sails.js

It is recommended to configure Nginx as a reverse proxy to access the Sails application through port 80.

First, install the Nginx web server with the following command:

```
apt-get install nginx -y
```

Once installed, create an Nginx virtual host configuration file:

```
nano /etc/nginx/conf.d/sails.conf
```

Add the following lines:

```
server {
 listen       80;
 server_name  sails.example.com;
   location / {
     proxy_pass        http://localhost:1337/;
     proxy_set_header  Host $host;
     proxy_buffering   off;
   }
 }
```

Save and close the file, then verify Nginx for any syntax error:

```
nginx -t
```

You should see the following output:

```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

Next, restart the Nginx service to apply the configuration changes:

```
systemctl restart nginx
```

## Step 5 – Access Sails.js Web Interface

Now, open your web browser and access the Sails.js application using the URL **http://sails.example.com**. You should see the Sails.js dashboard on the following screen:
 ![Sails.js Dashboard](https://www.atlantic.net/wp-content/uploads/2021/06/p1-4-1024x542.png)

## Conclusion

Congratulations! You have successfully installed Sails.js with Nginx as a reverse proxy on Ubuntu 20.04 server. You can now build your own real-time application with Sails.js easily. Get started on your [dedicated server hosting](https://www.atlantic.net/dedicated-server-hosting/) account today!
