Files
self-host-101/caddy/readme.md

45 lines
1.9 KiB
Markdown
Raw Normal View History

2025-10-15 01:47:36 +05:30
# Caddy web server and reverse proxy
Usually we will have multiple services and websites running on our VPS. So we need a web server which will listen on `HTTP` and `HTTPS` ports and redirect the traffic to correct service.
## Installation
I'll install caddy as a `systemd` service on my ubuntu machine. Hence I'll following [debian docs](https://caddyserver.com/docs/install#debian-ubuntu-raspbian) to install caddy.
To verify if caddy is installed and running run the following command.
```bash
sudo service caddy status
```
Caddy web server is now started on your VPS and you can visit `domain-name.com` and see the caddy homepage. Caddy homepage will tell you where to edit caddy config and where you can put your static files for your webserver.
## TLS Certificates
Right now Caddy is running on HTTP only `80` port. To use automatic HTTPS replace the `:80` port in caddy config to your domain name.
Before that ensure DNS record of domain name points to IP address of VPS.
```diff
- :80 {
+ domain-name.com {
}
```
After making any change to caddy config we also need to restart the caddy service.
```bash
sudo systemctl reload caddy
```
Now visit `domain-name.com` again and it will be serving site over HTTPS.
Caddy will automatically provision and renew TLS certificates from [LetsEncrypt](https://letsencrypt.org)
2025-10-15 01:56:24 +05:30
## Redirects
You might want to setup few redirects to your root domain for like IP Address and `www` sub domain.
```Caddyfile
192.168.1.1,
www.domain-name.com {
redir https://domain-name.com{uri}
}
```
You can setup this rule for multiple domains by either writing them space seperated or comma seperated as above.
`{uri}` specified at the end of domain name preserves the path from the URL user entered.
Now if anyone visits your website via server's IP address or using `www` subdomain they will be redirected to your root domain.
**It just looks cleaner.**