Setting up nginx + certbot
Desired domain
Nginx
Install and enable nginx
sudo apt install nginx
sudo systemctl enable nginxAdjust firewall
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'OpenSSH'
sudo ufw allow ssh
sudo ufw enable
sudo ufw statusCheck web server
systemctl status nginxShould output active status
curl -4 icanhazip.comOpen this IP in browser to checn Nginx default page
Setting Up Server Blocks
sudo mkdir -p /var/www/your_domain/html
sudo chown -R $USER:$USER /var/www/your_domain/html
sudo chmod -R 755 /var/www/your_domain
nano /var/www/your_domain/html/index.html<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>sudo nano /etc/nginx/sites-available/your_domainserver {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo nano /etc/nginx/nginx.confFind and uncomment server_names_hash_bucket_size
sudo nginx -t
sudo systemctl restart nginxCertbot
Install certbot
sudo snap install core; sudo snap refresh core
sudo apt remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbotReconfigure ufw
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'Obtaining an SSL Certificate
sudo certbot --nginx -d your_domain -d www.your_domainVerifying Certbot Auto-Renewal
sudo systemctl status snap.certbot.renew.service
sudo certbot renew --dry-runUpdate nginx config
sudo nano /etc/nginx/sites-available/your_domainReplace ONLY location section
server {
listen 443 ssl http2;
# Remove '#' in the next line to enable IPv6
# listen [::]:443 ssl http2;
server_name {name};
ssl_certificate /etc/letsencrypt/live/{name}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{name}/privkey.pem;
### copy from here
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
### to here
}Check nginx config and restart nginx
sudo nginx -t
sudo systemctl restart nginx