diff --git a/docs/guides/caddy-configuration.md b/docs/guides/caddy-configuration.md new file mode 100644 index 0000000..ee997e2 --- /dev/null +++ b/docs/guides/caddy-configuration.md @@ -0,0 +1,62 @@ + +If you'd like to use Caddy as your main web server with Pi-hole, you'll need to make a few changes. + +## Modifying lighttpd configuration +First, change the listen port in this file: +`/etc/lighttpd/lighttpd.conf:` + +``` +server.port = 1080 +``` + +In this case I chose 1080 somewhat at random. Use whatever feels right to you. + +Next, restart the lighttpd server with either of these commands: +- `sudo systemctl restart lighttpd` +- `sudo service lighttpd restart.` + +## Setting up your Caddyfile +Now we need to set up a "virtual host" in our Caddyfile (default `/etc/caddy/Caddyfile`). There are many more options you can add, but at bare minimum you need to make a "default" host by binding `0.0.0.0:80` which will accept requests for any host. +```YAML +blackhole:80, pi.hole:80, 0.0.0.0:80 { + root /var/www/html/pihole + log /var/log/caddy/blackhole.log + + rewrite { + ext js + to index.js + } + + proxy / localhost:1080 { + transparent + } +} +``` +In this case I've chosen to also add blackhole and pi.hole as valid names to open the admin page with. + +Finally, restart your Caddy server: +- `sudo service caddy restart` + +## Verifying your set up +First, make sure that any other sites you're serving from caddy are still functioning. For example, if you have a block for `myawesomesite.com:80` in your Caddyfile, open up a browser to `http://myawesomesite.com` and verify it still loads. + +Next, verify you can load the admin page. Open up `http://pi.hole/admin` (or use the IP address of your server) and verify that you can access the admin page. + +Finally, verify that requests for ads are being black holed: +```BASH +$ curl -H "Host: badhost" pi.hole/ + + + + + + + +``` +Replace the URL `pi.hole` with the IP address or alternate DNS name you're using if necessary. + +Lastly, ensure that requests for JavaScript files from advertisement domains are being served properly: +```BASH +curl -H "Host: badhost" pi.hole/malicious.js +var x = "Pi-hole: A black hole for Internet advertisements." +``` diff --git a/mkdocs.yml b/mkdocs.yml index 14c477a..2ba67e2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -65,6 +65,7 @@ pages: - 'Configuring DNS-Over-HTTPS on Pi-hole': guides/dns-over-https.md - 'Editing Whitelist and Blacklist': guides/whitelist-blacklist.md - 'Configuring NGINX for Pi-hole': guides/nginx-configuration.md + - 'Configuring Caddy for Pi-hole': guides/caddy-configuration.md - 'Pi-hole and OpenVPN Server': - 'Overview': 'guides/vpn/overview.md' - 'Installation': 'guides/vpn/installation.md'