Skip to content

A cryptocurrency statistical analysis app coded in React.

Notifications You must be signed in to change notification settings

Superklok/ReactCryptoStats

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

React Crypto Stats v1.18.5


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 21.10 server from Vultr named "CryptoStats".


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

ssh root@enter.CryptoStats.IP.address
  • Enter the password provided by Vultr on the CryptoStats 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 CryptoStats server then reconnect via SSH (repeat step 2).
sudo reboot

5. Install Node onto the server:

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

6. Clone the ReactCryptoStats GitHub repository to the CryptoStats server:

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

7. Install dependencies:

cd ReactCryptoStats/v1.x.x/
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="ThePortCryptoStatsIsRunningOn"
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/ReactCryptoStats/v1.x.x/
pm2 serve build/ ThePortCryptoStatsIsRunningOn --name "CryptoStats" --spa

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

pm2 startup ubuntu
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:ThePortCryptoStatsIsRunningOn;
        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 CryptoStats 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 CryptoStats server:
sudo reboot
  • Then reconnect to the CryptoStats server via SSH (repeat step 2).
  • Check PM2 to make sure CryptoStats is still running:
pm2 status
  • Logout of SSH:
exit


DONE!


Languages

Libraries, Frameworks & Runtime

Deployment Tools & Services