Setting up nginx + certbot
Desired domain
Nginx
Install and enable nginx
sudo apt install nginx
sudo systemctl enable nginx Adjust firewall
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'OpenSSH'
sudo ufw allow ssh
sudo ufw enable
sudo ufw status Check web server
systemctl status nginx Should output active status
curl -4 icanhazip.com Open 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_domain server {
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.conf Find and uncomment server_names_hash_bucket_size
sudo nginx -t
sudo systemctl restart nginx Certbot
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/certbot Reconfigure 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_domain Verifying Certbot Auto-Renewal
sudo systemctl status snap.certbot.renew.service
sudo certbot renew --dry-run Update nginx config
sudo nano /etc/nginx/sites-available/your_domain Replace 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