Caddy
Introduction
Caddy is a web server, similar to nginx and apache2. I love caddy because of how easy the configuration is, and how simple encryption is. The last time I thought about how old my SSL certificates were was…. never lol. Caddy does this automatically and it uses let’s encrypt.
This tutorial is for Arch linux and can be applied to arch-based distros. If you’re using something else, yell at someone else if this tutorial isn’t working for you :)
Installation
Install using pacman:
sudo pacman -S caddy
Enable systemd service
sudo systemctl enable --now caddy
Post-Installation
Make sure ports 80 and 443 are exposed, either through port forwarding or through your firewall.
Configuration
Reverse proxy configuration
If you’re like me, you’ll likely have many services running on the same computer. I like to have domain names for each service, as it’s nice and clean, and you can show off to your friends that you have a website/service.
Note: This part requires a domain name. You can get one from freenom for free if you’re a cheapskate like me
1. Edit make new configuration file in /etc/caddy/conf.d
The name of the file doesn’t matter. FYI caddy’s configuration is written in json.
sudo vim /etc/caddy/conf.d/jellyfin
<domain name> {
reverse_proxy 127.0.0.1:8096
}
Once this is done, SSL certificates will automatically be retrieved for your domain name, and when someone tries to connect to your domain name, their traffic will be directed to the appropriate ports, and no additional ports will be opened to the public.
2. Restart caddy systemd service
sudo systemctl restart caddy
That’s it, you’re done!