kit/caddy
mpmc 618f91c335 add files from misc repo 2022-09-14 23:09:19 +01:00
..
Caddyfile add files from misc repo 2022-09-14 23:09:19 +01:00
Caddyfile-localonly add files from misc repo 2022-09-14 23:09:19 +01:00
README.debian.md add files from misc repo 2022-09-14 23:09:19 +01:00

README.debian.md

Caddy

To setup Caddy you must be root ( sudo -s ).

Add the repo...

apt install -y curl debian-keyring debian-archive-keyring apt-transport-https
curl 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' -o /etc/apt/trusted.gpg.d/caddy_repo_signing.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list

Now update apt & install it...

apt update
apt install caddy

Once installed we need to make a backup of the default Caddyfile and replace it with our own...

mv -iv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.old
cp -v ./Caddyfile /etc/caddy/Caddyfile

We need somewhere to serve sites...

mkdir -v /var/www

Site setup

Create the site's base directory but don't include www. and change to it...

mkdir -v /var/www/example.com
cd /var/www/example.com

Make sure you're in the right directory before continuing. You can use a tilde ~ in your terminal to see your current directory.


The site needs some folders...

mkdir -v htdocs
mkdir data tmp sessions

htdocs is where the site's public-accessible files are kept, data is for private site files, tmp is for temporary site files - such as uploads, and sessions is for site vistor session data.


Everyone on the system can access the site's files and we don't want that, change the folder(s) permissions...

Take note of the . in the command below do not just enter / !

chmod -Rv 750 ./

Drat, only root can access the folders now, but Caddy and others need to be able to read the htdocs folder too...

chmod -Rv 755 htdocs

If you want another user on the system to own the files, say we have user fred and they're in group fred...

Take note of the . in the command below do not just enter / !

chown -Rv fred:fred ./*

If fred is in a different user group and you don't know which, you can run groups fred to find out!


Things to know

The Caddyfile included here will (in this order)...

  • Check if the requested host (without www.) is served here, if not return 404.

  • If the requested file exists serve it. The files index.html index.php take precedence and will always be served if no path is given. Requests where the requested path/file doesn't exist will be passed on to the other handlers (described below).

  • Reverse proxy the request if a socket matching the hostname (without www.) exists in /run/. This can be any service that understands how to handle HTTP requests. It just needs to be setup to listen via a socket matching the hostname in /run/, e.g. /run/myawesomesite.com.sock.

  • If the above socket does not exist and/or a php file is requested, attempt to pass along the request to php-fpm (setup to listen via a socket matching the hostname in /run/php, e.g. /run/php/myawesomesite.com.sock).

  • Return 404 if the request cannot be handled by any of the above.