/fly-hole

Primary LanguageShell

fly-hole

A publicly available Pi-Hole on Fly.io.

The resolver supports just DNS-over-TLS. UDP (or TCP) port 53 are blocked to prevent abuse.

Statistics and settings remain persistent with Fly Volumes.

Not yet implemented:

  • Cross instance sync
  • DNS-over-HTTPS
  • Custom Pi Hole configs - the default setup is good enough for me at the moment.

Deploying

  1. Get started with Fly.io.

  2. Create the app with (it'll let you pick a unique name and region):

    $ flyctl launch --no-deploy --copy-config
    

    Note that this command modifies fly.toml - it adds app and primary_region to it; but it also removes comments and changes the actual service setup. Undo these latter changes.

  3. You'll have to create volume(s) named ph_data on every region you'd wish to deploy to:

    $ flyctl vol create ph_data --region REGION --size 1
    
  4. Allocate a public IP address, so the instance will be reachable:

    $ flyctl ips allocate-v4  # or allocate-v6
    
  5. Setup the password for the admin panel:

    $ flyctl secrets set WBEPASSWORD=a-good-password
    
  6. Finally,

    $ flyctl deploy
    
  7. DNS shall be served from APP-NAME.fly.dev over DoT, TCP port 853. The admin panel is available at APP-NAME.fly.dev/admin.