Skip to content

Superklok/SuperklokLabs

Repository files navigation


Basic Root User Deployment Guide For App Evaluation

This guide is intended for deployment testing purposes & it uses the Root user. Creating a new user is strongly suggested for a production setup.

1. Deploy a Cloud Compute Ubuntu 22.04 server from Vultr named "SuperklokLabs".


2. Open a PowerShell (as Admin) terminal & connect to your SuperklokLabs server's IP address via SSH:

ssh root@enter.SuperklokLabs.IP.address
  • Enter the password provided by Vultr on the SuperklokLabs server page & follow all prompts until connected.

3. Update Ubuntu OS:

sudo apt update && sudo apt upgrade -y

4. Enable & setup UFW Firewall:

sudo ufw enable
sudo ufw status
  • It should display that the UFW Firewall is active.
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
  • Restart the SuperklokLabs server then reconnect via SSH (repeat step 2).
sudo reboot

5. Install Node onto the server:

curl -sL https://deb.nodesource.com/setup_21.x | sudo -E bash -
apt-get install nodejs -y
npm --version
  • The NPM version should be displayed.
node --version
  • The Node version should be displayed.

6. Clone the SuperklokLabs GitHub repository to the SuperklokLabs server:

cd ~/
mkdir superkloklabs
cd superkloklabs
git clone https://github.com/Superklok/SuperklokLabs.git

7. Install dependencies:

cd SuperklokLabs/
npm i
  • Create a production build:
npm run build

8. Start app using PM2:

npm i pm2 -g
  • Set environment variables:
cd ~/
nano .bashrc
  • Add the following to the top of the file:
export PORT="ThePortSuperklokLabsIsRunningOn"
export NODE_ENV="production"
  • Press ctrl+x & save changes, then refresh the user environment:
source .bashrc
  • Double check that the new environment variables have been set correctly.
env
  • Then start the app:
cd superkloklabs/SuperklokLabs/
pm2 start npm --name SuperklokLabs -- run start -- -p 3000

9. Setup a start script to automatically start the app if the SuperklokLabs server is restarted:

pm2 startup
pm2 save

10. Install & configure NGINX:

sudo apt install nginx
sudo nano /etc/nginx/sites-available/default
  • Add the following to the location part of the server block:
server_name yourwebsite.com www.yourwebsite.com;
    location / {
        proxy_pass http://localhost:ThePortSuperklokLabsIsRunningOn;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
sudo nginx -t
  • Restart NGINX:
sudo service nginx restart

11. Update your DNS "A" records for "yourwebsite.com" & "www.yourwebsite.com" with the SuperklokLabs server IP address.


12. Setup SSL with LetsEncrypt:

sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d yourwebsite.com -d www.yourwebsite.com
  • Enter your@email.com for the email address it requests, & select (y)es, then (n)o.
  • Test the 90 day renewal process:
certbot renew --dry-run
  • Test the PM2 startup script by restarting the SuperklokLabs server:
sudo reboot
  • Then reconnect to the SuperklokLabs server via SSH (repeat step 2).
  • Check PM2 to make sure SuperklokLabs is still running:
pm2 status
  • Logout of SSH:
exit


DONE!


Languages

Libraries, Frameworks & Runtime

Deployment Tools & Services



About

[*Production Version*] The Superklok Labs corporate website.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors