NKGitwebhook
GIT Webhook connection for PM2
How to install
Install your webstack
apt update; apt -y upgrade; apt -y autoremove; apt install -y mongodb npm certbot nginx python-certbot-nginx git-hub; npm install -g pm2; pm2 startup
edit your hostname
echo "mydomain.com" > /etc/hostname
generate a private deploy key with no passphrase
ssh-keygen -t rsa -b 4096 -C "your email" ; cat /home/ubuntu/.ssh/id_rsa.pub
Save this result in Github under Settings -> deploy keys you DO NOT need write access for this hook
Modify your /etc/nginx/sites-available/defualt server { listen 80; listen [::]:80; server_name mycoolserver.com; root /var/www/html; index index.html index.html; location / { try_files $uri $uri/ =404; } }
systemctl restart nginx ; certbot certonly --nginx
Clone and install the githook
https://github.com/Encke/NKGitwebhook .; npm i
mkdir /var/www/GITwebhook/; cd /var/www/GITwebhook/; git clonethen modift your config.json to match your settings
nano config.json
{ "sslCert": "/etc/letsencrypt/live/mycoolserver.com", //What SSL Certificate will we use "deployTo": "/var/www/html/", //Where should we deploy the GIT Repo "chownUser": "ubuntu" //Which user needs to own the files }
pm2 start index.js ; pm2 save
Add the hook in GitHub https://mycoolserver.com:3420/ set to post only the event
Modify your /etc/nginx/sites-available/defualt server { listen 80; listen [::]:80; server_name mycoolserver.com; root /var/www/html; index index.html index.html; location / { try_files $uri $uri/ =404; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/mycoolserver.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/mycoolserver.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot }