← back to Homesonspec
cert-homesonspec.sh
58 lines
#!/usr/bin/env bash
# Valid Let's Encrypt cert for homesonspec.com via webroot (works despite the proxy-all vhost).
# ! bash ~/Projects/homesonspec/cert-homesonspec.sh
set -euo pipefail
KH=root@45.61.58.125; WEB=9975; ADMIN=9976
ssh $KH "
mkdir -p /var/www/certbot
# Phase 1 vhost: :80 serves ACME challenge from webroot (before the proxy), :443 self-signed for now
cat > /etc/nginx/sites-available/homesonspec.com <<'NGINX'
server {
listen 45.61.58.125:80;
server_name homesonspec.com www.homesonspec.com;
location /.well-known/acme-challenge/ { root /var/www/certbot; }
location / {
proxy_pass http://127.0.0.1:$WEB;
proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto \$scheme;
}
}
server {
listen 45.61.58.125:443 ssl;
server_name homesonspec.com www.homesonspec.com;
ssl_certificate /etc/nginx/ssl/homesonspec.crt;
ssl_certificate_key /etc/nginx/ssl/homesonspec.key;
location / {
proxy_pass http://127.0.0.1:$WEB;
proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto \$scheme;
}
}
server {
listen 45.61.58.125:443 ssl;
server_name admin.homesonspec.com;
ssl_certificate /etc/nginx/ssl/homesonspec.crt;
ssl_certificate_key /etc/nginx/ssl/homesonspec.key;
location / {
proxy_pass http://127.0.0.1:$ADMIN;
proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto \$scheme;
}
}
NGINX
nginx -t && systemctl reload nginx
echo ' requesting LE cert via webroot…'
certbot certonly --webroot -w /var/www/certbot -d homesonspec.com -d www.homesonspec.com \
--non-interactive --agree-tos -m steve@designerwallcoverings.com 2>&1 | grep -iE 'Congratulations|Successfully|Certificate is saved|error|failed' | head -6
# Phase 2: swap the public web+redirect blocks to the LE cert
LE=/etc/letsencrypt/live/homesonspec.com
if [ -f \$LE/fullchain.pem ]; then
sed -i 's#/etc/nginx/ssl/homesonspec.crt#'\$LE'/fullchain.pem#; s#/etc/nginx/ssl/homesonspec.key#'\$LE'/privkey.pem#' /etc/nginx/sites-available/homesonspec.com
# add HTTP→HTTPS redirect for the public site (keep acme location working)
nginx -t && systemctl reload nginx
echo ' ✓ LE cert installed on nginx'
else echo ' ✗ cert not issued — leaving self-signed'; fi
echo -n ' https://homesonspec.com cert issuer: '; echo | openssl s_client -servername homesonspec.com -connect 45.61.58.125:443 2>/dev/null | openssl x509 -noout -issuer 2>/dev/null | head -1
"