**Create an SSH key for local computer** ssh-keygen -t rsa -C "your_email@example.com" Copy the new key to clipboard: * Windows: clip < id_rsa.pub * Linux: sudo apt-get install xclip xclip -sel clip < ~/.ssh/id_rsa.pub * Mac: pbcopy < ~/.ssh/id_rsa.pub * Manual Copy: cat ~/.ssh/id_rsa.pub Add the SSH key to the drop creation screen. 1. Create a new user to replace root user 1. # adduser imex 2. # usermod -aG sudo imex 3. # su - imex 4. $ mkdir ~/.ssh 5. $ chmod 700 ~/.ssh 6. $ nano ~/.ssh/authorized_keys 7. Add the copied SSH key and save. 8. $ chmod 600 ~/.ssh/authorized_keys #Restrict access to authorized keys. 2. Setup the Firewall 1. $ sudo ufw allow OpenSSH. 2. $ sudo ufw enable 3. Add Nginx & Configure 1. $ sudo apt-get update 2. $ sudo apt-get install nginx 3. $ sudo ufw allow 'Nginx Full' 4. $ sudo ufw app list 1. Nginx Full: Opens both port 80 (normal, unencrypted web traffic) and port 443 (TLS/SSL encrypted traffic) 2. Nginx Http: Opens only port 80 (normal, unencrypted web traffic) 3. Nginx Https: Opens only port 443 (TLS/SSL encrypted traffic) 5. Should now be able to go to IP and see nginx responding with a blank page. 6. Install NodeJs 1. $ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - 2. $ sudo apt install nodejs 3. $ node --version 7. Clone Source Code 1. $ git clone git@bitbucket.org:snaptsoft/bodyshop.git //Requires SSH setup. 2. $ cd bodyshop && npm install //Install all server dependencies. 8. Setup PM2 1. $ npm install pm2 -g //Had to be run as root. 2. $ pm2 start ecosystem.config.js 3. $ pm2 startup ubuntu //Ensure it starts when server does. 9. Alter Nginx config 1. sudo nano /etc/nginx/sites-available/default 2. //Add Appropriate server names to the file. www. and non-www. 3. Add the following inside the location of the server block: proxy_pass http://localhost:5000; 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; 10. Install Certbot 4. $ sudo add-apt-repository ppa:certbot/certbot //Potential issue on ubuntu 20.04 5. $ sudo apt-get update 6. $ sudo apt install python-certbot-nginx 7. $ sudo nano /etc/nginx/sites-available/default 8. Find the existing server_name line and replace the underscore with your domain name: ... server_name example.com www.example.com; ... 9. $ sudo nginx -t //Verify syntax. 10. $ sudo systemctl reload nginx 11. Generate Certificate 11. $ sudo certbot --nginx -d example.com -d www.example.com //Follow prompts. 12. $ sudo certbot renew --dry-run //Dry run to test auto renewal. ADding Yarn curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn