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.
Installation
Downloading the server
-
Create Caddy's directory
mkdir ~/caddy
-
Change to the directory
cd ~/caddy
-
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"
-
Make it executable
chmod +x caddy
Configuration
-
Create the configuration file
touch ~/caddy/Caddyfile
-
Edit the config
nano ~/caddy/Caddyfile
-
Copy in the example config
**my.domain.com** { tls { dns cloudflare } gzip proxy /**site** localhost:**52194** proxy /**site** localhost:**52195** proxy /**site** localhost:**52196** { transparent } }
-
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
-
Users do no not have root access so a few changes need to be made to ensure things can run.
-
Setup Cloudflare details for screen to use
nano ~/.screenrc
-
Copy in the below and edit to match your own details
setenv CLOUDFLARE_EMAIL abc setenv CLOUDFLARE_API_KEY 123
-
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
-
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
-
Service should be avaible at
https://my.domain.com:26987/site