Caddy Web Server/Proxy

Install Caddy to a service

Most people use Caddy as a web server or proxy, but at its core, Caddy is a server of servers. With the requisite modulesarrow-up-right, it can take on the role of any long-running process!

Configuration is both dynamic and exportable with Caddy's APIarrow-up-right. Although no config files required, you can still use them; most people's favorite way of configuring Caddy is using the Caddyfilearrow-up-right. The format of the config document takes many forms with config adaptersarrow-up-right, but Caddy's native config language is JSONarrow-up-right.

Caddy compiles for all major platforms and has no runtime dependencies.

Install Caddy on to Ubuntu system

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Configuring Caddyfile

Edit the config file which will be installed in /etc/caddy/Caddyfile

circle-info

You can either comment all lines with #.

Or just wipe whole content and create your own

Example Configuration

https://rpc.juno.chaintools.tech { 
  reverse_proxy http://<RPC-SERVER-IP>:<PORT> { 
     header_down Access-Control-Allow-Origin * 
  } log { 
         output file /var/log/caddy/rpc.juno.chaintools.tech.log
         } 
} 
 
https://api.juno.chaintools.tech { 
   reverse_proxy http://<API-SERVER-IP>:<PORT> { 
      header_down Access-Control-Allow-Origin * 
  } log { 
         output file /var/log/caddy/api.juno.chaintools.tech.log 
         } 
}
  
https://grpc.juno.chaintools.tech {
   reverse_proxy {
      to h2c://<GRPC-SERVER-IP>:<PORT>
      transport http  {
         versions h2c 2
      }
   }
   log {
       output file /var/log/caddy/grpc.juno.chaintools.tech.log
   }
}

Create a service file for Caddy

Once you are happy with the config and service file you can now start.

sudo systemctl daemon-reload

sudo systemctl start caddy

Last updated