# How To Install Sails.js Framework with Nginx on Arch Linux

> URL: https://www.atlantic.net/dedicated-server-hosting/how-to-install-sails-js-framework-with-nginx-on-arch-linux/ | Published: 2023-04-11 | Updated: 2024-06-04 | Author: Hitesh Jethva

Sails is a free, open-source, popular MVC framework for Node.js. It is built on Express and used for building scalable production-ready Node.js applications. It is very similar to the Ruby on Rails web framework used to quickly build REST APIs, single-page apps, and real-time apps. It has a powerful code generator that helps you to build your application with less coding.

This post will show you how to install Sails JS with Nginx on Arch Linux.

## Prerequisites

- A fresh Arch Linux server
- A root password configured on your server
- An **IPV6 IP address** associated with your instance

## Step 1 – Configure Repository

By default, the default repository is outdated in Arch Linux, so you will need to modify the default mirror list. You can do it by editing the mirror list configuration file:

```
nano  /etc/pacman.d/mirrorlist
```

Remove all lines and add the following lines:

```
## Score: 0.7, United States
Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch
## Score: 0.8, United States
Server = http://lug.mtu.edu/archlinux/$repo/os/$arch
Server = http://mirror.nl.leaseweb.net/archlinux/$repo/os/$arch
## Score: 0.9, United Kingdom
Server = http://mirror.bytemark.co.uk/archlinux/$repo/os/$arch
## Score: 1.5, United Kingdom
Server = http://mirrors.manchester.m247.com/arch-linux/$repo/os/$arch
Server = http://archlinux.dcc.fc.up.pt/$repo/os/$arch
## Score: 6.6, United States
Server = http://mirror.cs.pitt.edu/archlinux/$repo/os/$arch
## Score: 6.7, United States
Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch
## Score: 6.8, United States
Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch
## Score: 7.1, India
Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch
## Score: 10.1, United States
Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch
```

Save and close the file, then update all the package indexes with the following command:

```
pacman -Syu
```

## Step 2 – Install Node JS and NPM

First, install NVM on your system with the following command.

```
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
```

You will get the following output.

```
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

=> Close and reopen your terminal to start using nvm or run the following to use it now:
```

Next, run the following command to activate the NVM environment variable.

```
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
```

Now, verify the NVM version using the following command.

```
nvm --version
```

Output.

```
0.39.2
```

Next, install the latest version of Node JS using the following command.

```
nvm install --lts
```

You will get the following output.

```
Installing latest LTS version.
Downloading and installing node v18.14.2...
Downloading https://nodejs.org/dist/v18.14.2/node-v18.14.2-linux-x64.tar.xz...
####################################################################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v18.14.2 (npm v9.5.0)
Creating default alias: default -> lts/* (-> v18.14.2)
```

To verify the Node JS version, run the following command.

```
node --version
```

Output.

```
v18.14.2
```

Next, find the Node JS installation path using the following command.

```
which node
```

You will get the following output.

```
/root/.nvm/versions/node/v18.14.2/bin/node
```

Next, use the above path to create a symbolic link for Node JS.

```
ln -s /root/.nvm/versions/node/v18.14.2/bin/node /usr/bin/node
```

## Step 3 – Install Sails JS

You can use the NPM to easily install the Sails JS on your server.

```
npm -g install sails
```

You will see the following output.

```
added 230 packages in 10s

6 packages are looking for funding
  run `npm fund` for details
npm notice 
npm notice New patch version of npm available! 9.5.0 -> 9.5.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.5.1
npm notice Run npm install -g npm@9.5.1 to update!
npm notice
```

## Step 4 – Create a Sails JS Application

First, create a directory to hold Sails JS with the following command.

```
mkdir sails
```

Next, navigate to the Sails directory and create a Sails app with the following command.

```
cd sails
sails new app
```

You will be asked to select the template:

```
 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)
? 1
```

Type 1 and press the Enter key to continue.

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

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

```
cd app
sails lift
```

You will see the following output.

```
 info: Starting app...

 info: Initializing project hook... (`api/hooks/custom/`)
 info: Initializing `apianalytics` hook...  (requests to monitored routes will be logged!)
 info: ·• Auto-migrating...  (alter)
 info:    Hold tight, this could take a moment.
 info:  ✓ Auto-migration complete.

debug: Running v0 bootstrap script...  (looks like this is the first time the bootstrap has run on this computer)
 info: 
 info:                .-..-.
 info: 
 info:    Sails              <|    .-..-.
 info:    v1.5.4              |\
 info:                       /|.\
 info:                      / || \
 info:                    ,'  |'  \
 info:                 .-'.-==|/_--'
 info:                 `--'-------' 
 info:    __---___--___---___--___---___--___
 info:  ____---___--___---___--___---___--___-__
 info: 
 info: Server lifted in `/root/sails/app`
 info: To shut down Sails, press  + C at any time.
 info: Read more at https://sailsjs.com/support.

debug: -------------------------------------------------------
debug: :: Fri Feb 24 2023 10:13:10 GMT+0000 (Coordinated Universal Time)

debug: Environment : development
debug: Port        : 1337
debug: -------------------------------------------------------
```

Press the **CTRL+C** to stop the application

Next, find the Sails installation path with the following command.

```
which sails
```

Output.

```
/root/.nvm/versions/node/v18.14.2/bin/sails
```

Use the above path to create a symbolic link of Sails binary.

```
ln -s /root/.nvm/versions/node/v18.14.2/bin/sails /usr/bin/sails
```

## Step 5 – Create a Systemd Service File for Sails JS

Next, it is a good idea to create a systemd file to manage the Sails JS service.

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

Add the following configurations.

```
[Unit]
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/sails/app
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 and enable the Sails service with the following command.

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

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

```
systemctl status sails
```

You will get the following output.

```
● sails.service
     Loaded: loaded (/usr/lib/systemd/system/sails.service; disabled; preset: disabled)
     Active: active (running) since Fri 2023-02-24 10:15:30 UTC; 4s ago
   Main PID: 56668 (node)
      Tasks: 22 (limit: 4700)
     Memory: 174.2M
     CGroup: /system.slice/sails.service
             ├─56668 node /usr/bin/sails lift
             └─56677 grunt

Feb 24 10:15:32 archlinux sails[56668]:  info:  ____---___--___---___--___---___--___-__
Feb 24 10:15:32 archlinux sails[56668]:  info:
Feb 24 10:15:32 archlinux sails[56668]:  info: Server lifted in `/root/sails/app`
Feb 24 10:15:32 archlinux sails[56668]:  info: To shut down Sails, press  + C at any time.
Feb 24 10:15:32 archlinux sails[56668]:  info: Read more at https://sailsjs.com/support.
Feb 24 10:15:32 archlinux sails[56668]: debug: -------------------------------------------------------
Feb 24 10:15:32 archlinux sails[56668]: debug: :: Fri Feb 24 2023 10:15:32 GMT+0000 (Coordinated Universal Time)
Feb 24 10:15:32 archlinux sails[56668]: debug: Environment : development
Feb 24 10:15:32 archlinux sails[56668]: debug: Port        : 1337
Feb 24 10:15:32 archlinux sails[56668]: debug: -------------------------------------------------------
```

## Step 6 – Install Nginx for Sails JS

Next, you will need to install and configure Nginx as a reverse proxy for Sails JS. First, install the Nginx package using the following command.

```
pacman -S nginx-mainline
```

Next, start and enable the Nginx service with the following command.

```
systemctl start nginx
systemctl enable nginx
```

Next, create a directory to store Nginx virtual host.

```
mkdir /etc/nginx/sites-enabled
```

Next, create an Nginx configuration file for Sails JS.

```
nano /etc/nginx/sites-enabled/sails.conf
```

Add the following configuration.

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

Save the file, then edit the Nginx main configuration file.

```
nano /etc/nginx/nginx.conf
```

Add the following lines after http{:

```
server_names_hash_bucket_size 64;
include sites-enabled/*;
```

Save the file then verify the Nginx configuration.

```
nginx -t
```

You will get the following output.

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

Finally, restart the Nginx service to apply the changes.

```
systemctl restart nginx
```

## Step 7 – Access Sails JS Web UI

Now, open your web browser and access the Sails JS web interface using the URL **http://sails.example.com.** You should see the Sails JS registration page on the following screen.
 ![](https://www.atlantic.net/wp-content/uploads/2023/02/p2-6-1024x508.png)
 Provide your name, email, password then click on the **Create account** button. You should see the Sails JS dashboard on the following screen.
 ![Sails dashboard page](https://www.atlantic.net/wp-content/uploads/2023/02/p1-9-1024x506.png)

## Conclusion

In this tutorial, we explained how to install Sails JS on Arch Linux. We also explained how to configure Nginx as a reverse proxy for Sails JS. You can now start deploying your Sails JS app on the production environment. You can now install Sails JS on [dedicated server hosting](https://www.atlantic.net/dedicated-server-hosting/) from Atlantic.Net!
