How to install Nginx with Let’s Encrypt on Ubuntu 20.04

In your terminal, enter the commands

sudo su
apt update
apt install nginx-full
ufw allow ssh
ufw allow 'Nginx Full'
ufw status
systemctl status nginx
mkdir -p /var/www/
nano /etc/nginx/sites-available/

Note: Please change with your actual domain name, add the below code and save the file.

server {
        listen 80;
        listen [::]:80;

        root /var/www/;
        index index.html index.htm;


        location / {
                try_files $uri $uri/ =404;

Save the file by pressing Ctrl + o then press Enter key

Then press Ctrl + x to close the nano editor

After that, enable the site using the below command

ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Then change hash bucket memory size using the below command

nano /etc/nginx/nginx.conf

Add server_names_hash_bucket_size 64; in http{ .. } bracket like below

http {
    server_names_hash_bucket_size 64;

Check Nginx file have any error or not using the below command

nginx -t

If the output is successful, then restart the Nginx server using the below command

systemctl restart nginx

Now add your project file to /var/www/ folder

After that, Install Certbot and Nginx plugin using the below command

apt install certbot python3-certbot-nginx
sudo certbot --nginx -d -d

After that, follow the process of Certbot then showing success message like below

Congratulations! Your certificate and chain have been saved at:

After that, verify auto-renewal using the below command

systemctl status certbot.timer
certbot renew --dry-run

If you want to add a cron job for auto-renewal, you can use the below process

crontab -e

Add the below line and save the file

0 12 * * * /usr/bin/certbot renew --quiet

Leave a Reply