Skip to content

Instantly share code, notes, and snippets.

@davalapar
Last active November 10, 2020 13:09
Show Gist options
  • Save davalapar/5419617ba4ec3f7d99a7722033075d39 to your computer and use it in GitHub Desktop.
Save davalapar/5419617ba4ec3f7d99a7722033075d39 to your computer and use it in GitHub Desktop.
LetsEncrypt Setup, Renew & NodeJS Usage
const fs = require('fs');
const http = require('http');
const https = require('https');
const express = require('express');
const app = express();
app.get('*', (req, res) => res.send('yehh'));
http.createServer(app).listen(80);
if (fs.existsSync('./letsencrypt') === true) {
https.createServer({
key: fs.readFileSync('./letsencrypt/privkey.pem', 'utf8'),
cert: fs.readFileSync('./letsencrypt/cert.pem', 'utf8'),
ca: fs.readFileSync('./letsencrypt/chain.pem', 'utf8'),
}, app).listen(443);
}
#!/bin/bash
DOMAIN="$1"
EMAIL="$2"
if [ -z "$DOMAIN" ] || [ -z "$EMAIL" ]; then
echo "You must provide DOMAIN and EMAIL parameter" 1>&2
exit 1
fi
# create the certificates
sudo certbot certonly --standalone --preferred-challenges http --domain ${DOMAIN} --email ${EMAIL} --agree-tos --no-eff-email
# create target folder
mkdir -p letsencrypt
# copy new files to local folder
sudo cp /etc/letsencrypt/live/${DOMAIN}/privkey.pem ./letsencrypt/privkey.pem
sudo cp /etc/letsencrypt/live/${DOMAIN}/fullchain.pem ./letsencrypt/fullchain.pem
sudo cp /etc/letsencrypt/live/${DOMAIN}/fullchain.pem ./letsencrypt/chain.pem
sudo cp /etc/letsencrypt/live/${DOMAIN}/cert.pem ./letsencrypt/cert.pem
# fix permissions
sudo chmod 666 ./letsencrypt/privkey.pem
sudo chmod 666 ./letsencrypt/fullchain.pem
sudo chmod 666 ./letsencrypt/chain.pem
sudo chmod 666 ./letsencrypt/cert.pem
#!/bin/bash
# install essentials
sudo apt-get update
sudo apt-get install software-properties-common -y
sudo add-apt-repository universe -y
sudo add-apt-repository ppa:certbot/certbot -y
sudo apt-get update
sudo apt-get install certbot -y
#!/bin/bash
DOMAIN="$1"
if [ -z "$DOMAIN" ]; then
echo "You must provide a DOMAIN parameter" 1>&2
exit 1
fi
# renew certificates
sudo certbot renew --force-renewal
# delete files
rm -f ./letsencrypt/privkey.pem
rm -f ./letsencrypt/fullchain.pem
rm -f ./letsencrypt/chain.pem
rm -f ./letsencrypt/cert.pem
# copy new files to local folder
sudo cp /etc/letsencrypt/live/${DOMAIN}/privkey.pem ./letsencrypt/privkey.pem
sudo cp /etc/letsencrypt/live/${DOMAIN}/fullchain.pem ./letsencrypt/fullchain.pem
sudo cp /etc/letsencrypt/live/${DOMAIN}/fullchain.pem ./letsencrypt/chain.pem
sudo cp /etc/letsencrypt/live/${DOMAIN}/cert.pem ./letsencrypt/cert.pem
# fix permissions
sudo chmod 666 ./letsencrypt/privkey.pem
sudo chmod 666 ./letsencrypt/fullchain.pem
sudo chmod 666 ./letsencrypt/chain.pem
sudo chmod 666 ./letsencrypt/cert.pem
@davalapar
Copy link
Author

davalapar commented Nov 5, 2019

  • need to separate install.sh from init.sh
  • install.sh > init.sh > renew.sh
  • needs /letsencrypt in .gitignore

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment