Whatbox Logo

Wiki > Caddy Server Reverse Proxy

"Caddy, sometimes clarified as the Caddy web server, is an open source, HTTP/2-enabled web server written in Go. It uses the Go standard library for its HTTP functionality. One of Caddy's most notable features is enabling HTTPS by default. It is the first general-purpose web server to do so without requiring extra configuration"

This guide is to help setup a reverse proxy for your slot with free SSL security from Lets Encrypt. You will need your own domain and it will need to be managed by Cloudflare. There are other ways to get this working but this guide will assume you own a domain and have it in your own Cloudflare account.


Downloading the server

  1. Create Caddy's directory

     mkdir ~/caddy
  2. Change to the directory

     cd ~/caddy
  3. Download the latest version of the Caddy server software

     wget -O caddy "https://caddyserver.com/api/download?os=linux&arch=amd64&p=github.com%2Fcaddy-dns%2Fcloudflare"
  4. Make it executable

     chmod +x caddy


  1. Create the configuration file

     touch ~/caddy/Caddyfile
  2. Edit the config

     nano ~/caddy/Caddyfile
  3. Copy in the example config

     **my.domain.com** {
     tls {
     dns cloudflare
     proxy /**site** localhost:**52194**
     proxy /**site** localhost:**52195**
     proxy /**site** localhost:**52196** {
  4. Adust the bold values to enter your own domain/sub-domain, the site value is what needs to be entered after the domain to access the service. In this example, https://my.domain.com/site would display whatever service was running at localhost:52194 More proxy sites can be added by adding additional lines (proxy /site localhost:52194) as long as formatting is kept.

Starting the server

  1. Users do no not have root access so a few changes need to be made to ensure things can run.

  2. Setup Cloudflare details for screen to use

     nano ~/.screenrc
  3. Copy in the below and edit to match your own details

     setenv CLOUDFLARE_EMAIL abc
     setenv CLOUDFLARE_API_KEY 123
  4. Now run the server in screen, random ports have been set for your use.

     screen -dmS caddy ~/caddy/caddy -conf ~/caddy/Caddyfile -http-port 21975 -https-port 26987
  5. You will need to accept the terms on the first run and provide your email address for Lets Encrypt

     screen -r caddy
     then *ctrl + a*, then *d* to exit the screen but not stop it running
  6. Service should be avaible at