Skip to content

Latest commit

 

History

History

docs

Wiki For Using and Deployment & Testing

🧩 SDK Library

🚢 deployment

Click here for Deployment .

🧪 Testing

🆕📰 Upgrading

Upgrading Details Here

Getting Start

🔥 Instrustions 🧑🏼‍💻 Commands

Installing Nodejs , NPM and NVM

 sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
~/.nvm/nvm.sh
 nvm install node

Cross Check Installed Versions

node -v
npm -v
nvm --version

Clone Source Code

git clone https://github.com/saurabharch/rollout
npm install

OR

yarn install
./node_modules/.bin/web-push generate-vapid-keys

OR

  • bellow command is used setup envriment variable also copy the vapid key from shell terminal and update in .env generated file and update it VAPID_PUBLIC_KEYS => public Key: and VAPID_PRIVATE_KEYS => private Key: , respectively
cp env.example /config/.env
  • Generating Vapid Public and Private Key copy it and Update in config folder files key_dev.js , key_prod.js and also paste your Vapid Public Key in your Service Worker File app.js
node src/index.js

APNS Push Certificates 📱

Setup your app for Remote Push Notifications using the docs and download the Remote Push Notifications certificate .cer files for Development and Production. Import them both into your keychain.

Open Keychain Access and export both the certificate and private key (highlight them both) to a .p12 file. I recommend saving them as:

apns_dev_Certificates.p12
apns_prod_Certificates.p12

Then create the corresponding .pem files:

#dev
openssl pkcs12 -clcerts -nokeys -out apns_dev_cert.pem -in apns_dev_Certificates.p12
openssl pkcs12 -nocerts -out apns_dev_key.pem -in apns_dev_Certificates.p12

#prod
openssl pkcs12 -clcerts -nokeys -out apns_prod_cert.pem -in apns_prod_Certificates.p12 
openssl pkcs12 -nocerts -out apns_prod_key.pem -in apns_prod_Certificates.p12

# optional to remove passphrase from keys
openssl rsa -in apns_dev_key.pem -out apns_dev_key.unencrypted.pem
openssl rsa -in apns_prod_key.pem -out apns_prod_key.unencrypted.pem

Copy the *.pem files into the certs folder of this repo.

OR

./gen-cert.sh example.com

Running Imutable stack with PM2

npm install -g pm2

Run as root user in Linux

  • in watch mode or simple
sudo pm2 start --name server-name index.js -- --name server-name --port 5500 --watch
  • standalone running at by default port 5500 on a single intance
sudo pm2 start --name server-name index.js
  • save as running always after on every boot performe on system
sudo pm2 startup
  • save all the setting with pm2
sudo pm2 save
  • Running Rollout Server using PM2 with babel as interpreter setting is Here
  • More About PM2 Configuration Details Here

Setting Up with Nginx Proxy as a load balancer

✋🏻 PREQUESTS

sudo apt-get install nginx
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt install python-certbot-nginx

Generate SSL Certificate using certbot command

sudo certbot --nginx -d pushgeek.com -d www.pushgeek.com

Alternate Command

sudo certbot certonly --standalone -d pushgeek.com www.pushgeek.com

Auto Renewal Certficate with certbot

sudo certbot --dry-run

More Help Visit Here

ALLOW PORTS FOR NGINX AND SETUP FIREWALL

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw enable
sudo ufw allow http
sudo ufw allow https
sudo ufw status
  • (should say active)
sudo ufw status

sudo ufw allow 443/tcp (should required)

systemctl status nginx
  • (above config applied)
sudo vim /etc/nginx/sites-available/rollout
sudo ln -s sites-available/rollout sites-enable/rollout
sudo nginx -t
sudo service nginx restart
sudo /etc/init.d/nginx reload
sudo journalctl -xe

Check nginx service worker status

sudo systemctl status nginx

installing fail2ban protecting DDoS

sudo apt-get install fail2ban

Fail2ban Configuration with Nginx

OR

refere config

File Structure

|
|
|________________________./congif
|                         |
|                         |____keys_prod.js
|                         |
|                         |____keys_dev.js
|                         |
|                         |____keys.js
|
|
|________________________./public
|                         |
|                         |____index.html
|                         |
|                         |____sw.js
|                         |
|                         |____app.js
|
|
|________________________./model
|                         |
|                         |____subscribers_model.js
|
|
|
|________________________./router
|                         |
|                         |____push.js
|                         |
|                         |____subscribe.js
|                         |____keygen.js
|
|___________________________server.js