A private Tailscale ad-blocking DNS proxy container ready to be deployed to Fly.io.
docker build -t blocky-tailscale .
docker run \
--rm \
-e TS_AUTHKEY=tskey-auth-XXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
-e TS_HOSTNAME=blocky-tailscale \
-p 5353:53/udp \
blocky-tailscale
-
Create an app.
fly apps create blocky-tailscale
-
Set
TS_AUTHKEY
.fly secrets set \ --app=blocky-tailscale \ TS_AUTHKEY=tskey-auth-XXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-
Set
TS_HOSTNAME
and deploy the app.fly deploy \ --app=blocky-tailscale \ --env TS_HOSTNAME=blocky-tailscale \ --ha=false \ --no-public-ips \ --local-only
-
Persist the
tailscaled.state
file toTS_STATE
.MACHINE_ID="$(fly machine list --app blocky-tailscale --json | jq --raw-output '.[0].id')" TS_STATE="$(fly console \ --app blocky-tailscale \ --machine=$MACHINE_ID \ --command 'sh -c "cat /var/lib/tailscale/tailscaled.state | gzip | base64 -w 0"')" fly secrets set \ --app=blocky-tailscale \ TS_STATE=$TS_STATE
-
Finally, in Tailscale admin console, disable the key expiry for the the newly added node and add the IPv4 address as a nameserver.