selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
pihole-unbound-tailscale-dockerized logo

Self-host pihole-unbound-tailscale-dockerized

1.0.0

Docker stack for private DNS: Pi-hole, Unbound, Tailscale

ReleaseOpen SourceMIT
Docker ComposeCompose file & guide
docker compose up -d
Updated7 months ago
Setup difficultyModerate
Stars
161
CPU
2
RAM
2 GB
Storage
15 GB
Port
53 (Unbound DNS resolver (UDP))
Pi-hole admin dashboard showing query statistics and blocklistsTailscale DNS settings with Pi-hole Tailscale IP as global nameservernslookup test output showing DNS resolution via remote Tailscale connectionUnbound container logs showing recursive DNS resolution

What is pihole-unbound-tailscale-dockerized?

This project provides a Docker Compose stack that deploys Pi-hole for network-wide ad and tracker blocking, Unbound as a recursive DNS resolver for privacy, and Tailscale for secure VPN access to the DNS server even behind CGNAT. It includes detailed setup instructions for macOS with Colima, Tailscale ACL configuration, and Unbound root hints/keys preparation. The stack uses three containers networked together: Unbound listens on port 5335, Pi-hole uses Unbound as its upstream DNS, and Tailscale provides encrypted remote access. The project is licensed under MIT and includes screenshots of the architecture, Pi-hole admin dashboard, Tailscale DNS settings, and nslookup tests.

pihole-unbound-tailscale-dockerized alternatives

Should you self-host pihole-unbound-tailscale-dockerized?

pihole-unbound-tailscale-dockerized scores 42/100 on selfhost.directory (how scoring works) and ranks #30 of 41 in DNS. It has 161 GitHub stars.

It shipped 1 stable release in the past year. The latest, 1.0.0, came out on 29 March 2026.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed.

Its closest alternative on selfhost.directory is Pi-hole (87/100, 61 563 stars). It scores higher overall, so compare the two before you pick. See pihole-unbound-tailscale-dockerized vs Pi-hole side by side.

Features

  • 2FA for Pi-hole admin (planned)Planned future feature
  • DNS-over-HTTPS fallback (planned)Planned future feature
  • Headscale support (planned)Planned future feature
  • Network-wide ad blocking
  • Recursive DNS resolution
  • VPN remote access

pihole-unbound-tailscale-dockerized README

Private DNS Ad-Blocking and Remote Access with Pi-hole + Unbound + Tailscale

👋 Why I Built This

I care about online privacy and wanted to block ads and trackers across all my devices, not just in browsers. Public DNS providers like Google or Cloudflare are fast, but often log user data. I wanted full control over DNS resolution and to keep it private.

My internet provider (Jio Fiber) uses CGNAT, so I don’t get a public IP address. That makes remote access tricky. This project uses Tailscale to solve that problem while offering secure DNS resolution and ad-blocking.

How to install pihole-unbound-tailscale-dockerized

Install pihole-unbound-tailscale-dockerized with Docker Compose

Docker, Docker Compose, Tailscale account

Create the docker-compose.yml with services based on The docker-compose.yml File or download the latest version:

curl -o https://raw.githubusercontent.com/100dollarguy/pihole-unbound-tailscale-dockerized/refs/heads/master/docker-compose.yml

Create the necessary folders:

mkdir -p unbound-conf pihole/etc-pihole pihole/etc-dnsmasq.d

Download root DNS server list:

curl -o ./unbound-conf/root.hints https://www.internic.net/domain/named.cache

Download root DNSSEC trust key:

curl -o ./unbound-conf/root.key https://data.iana.org/root-anchors/root.key

Create your Unbound config in the "unbound-config" Folder:

touch ./unbound-config/unbound.conf

Start services:

docker compose up -d

Requires Tailscale auth key and ACL tag configuration in Tailscale admin panel

How to configure pihole-unbound-tailscale-dockerized

  • TZAsia/KolkataTimezone for Pi-hole container
  • FTLCONF_webserver_api_passwordadmin123Pi-hole web admin password
  • LISTEN_PORT5335Port Unbound listens on for DNS queries
  • TS_EXTRA_ARGS--accept-dns=false --advertise-tags=tag:piholeExtra arguments for Tailscale daemon
  • CUSTOM_RESOLVER_CONF/etc/unbound/unbound.confPath to custom Unbound configuration file

pihole-unbound-tailscale-dockerized releases & version history

More in DNS

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…