Caddy: Free SSL over server

Manas Mishra - Oct 30 - - Dev Community

I have always been a fan of Nginx, but with Nginx, I always have to buy SSL for the domain configuration, with HTTPS. And, when it comes to Wildcard SSL, it costs more than the normal SSL.

Recently, I have been working with a server architect, and I came to know about Caddy - The Ultimate Server, and it's fascinating to see how it can obtain and renew the SSL certificates, automatically.

It provides the same features as Nginx but with fewer configurations and security has been added automatically too.

It supports Compression, Virtual file systems, TLS configurations, etc.

How to configure it in AWS: EC2

I created an EC2 instance, with AMI ( Amazon Linux v3 ) as an image.

After creating an instance, you can connect it either via SSH or directly through the EC2, and then you have to enter the following commands to install it

sudo yum -y install yum-plugin-copr
sudo yum -y copr enable @caddy/caddy epel-8-$(arch)
sudo yum -y install caddy
Enter fullscreen mode Exit fullscreen mode

This will install the caddy server in the EC2 instance.

Creating the CaddyFile

After installing the caddy in your EC2 instance, you have to create a Caddyfile, in /etc/caddy folder.

To create the Caddyfile, you have to enter the below command.

sudo nano /etc/caddy/Caddyfile
Enter fullscreen mode Exit fullscreen mode

And, after creating the file, you have to enter the following configuration

domain_name {
    reverse_proxy Ip_address:port 
}
Enter fullscreen mode Exit fullscreen mode

For example, I have deployed the frontend and backend code in the EC2 and now I want to configure the caddy for the frontend and backend, by attaching the domain name to it.

app.aceinterview.co {
    reverse_proxy 3.24.60.134:3000
}

api.aceinterview.co {
    reverse_proxy 3.24.60.145:8000
}
Enter fullscreen mode Exit fullscreen mode

As you can see in the example, I configured two different domains, one for the frontend and the other for the backend.

Run the caddy server

First, you have to enable the caddy server.

sudo systemctl enable caddy
Enter fullscreen mode Exit fullscreen mode

The above step will create the symlink of the caddy.

Then, you have to start the caddy

sudo systemctl start caddy
Enter fullscreen mode Exit fullscreen mode

Hurray!. Your caddy server configuration is completed. Now, you got reverse proxy, SSL configuration, etc.

More commands to handle caddy in EC2.

To stop the caddy server

sudo systemctl stop caddy
Enter fullscreen mode Exit fullscreen mode

If you change something in Caddyfile, then you have to restart it to take effect.

sudo systemctl restart caddy
Enter fullscreen mode Exit fullscreen mode

Today I have highlighted the basic setup of caddy, and this setup will do the most of the job. For more information, you can directly checkout the caddy server website https://caddyserver.com/

. . . . . .