pihole-v6-unbound

pihole-v6-unbound

Docker app from Eksistenze's Repository

Overview

This Docker deployment runs both Pi-Hole version 6 and Unbound in a single container. The base image for the container is the official Pi-Hole docker container, with an extra build step added to install the Unbound resolver directly into to the container based on instructions provided directly by the Pi-Hole team.

Pi-hole + Unbound on Docker

A Docker image for running Pi-hole with integrated Unbound DNS resolver in a single container.

This is the official and maintained successor repository of the original cbcrowe/pihole-unbound image by @chriscrowe

BREAKING CHANGE!

TL;DR: The image changed. chriscrowe/pihole-unbound is deprecated and no longer receives updates. Change your setup to use the new image mpgirro/pihole-unbound.

Overview

The base image for the container is the official Pi-Hole container, with an extra build step added to install the Unbound resolver directly into to the container based on instructions provided directly by the Pi-Hole team.

Features

  • Automated Builds: The Docker image is automatically built and published using GitHub Actions and Renovate, ensuring you always have access to the latest version.
  • Unbound integration: The Unbound DNS resolver is directly integrated and configured within this image. No need for setting up and linking a separate Unbound container.
  • Multi-Registry Publishing: Images are published to both Docker Hub and GitHub Container Registry (GHCR), giving you flexibility in where you pull your images from.
  • Consistent Tagging: Images are tagged with the same version tags as the official Pi-hole images.

Usage

The example Docker Compose file demonstrates how this image can be used.

Important: If you have an old setup using cbcrowe/pihole-unbound, you need to migrate to one of the image locations mentioned below.

Image Locations

Configuration Options

You can use all environment variables supported by the official Pi-hole container. Some examples are listed below. Vars and descriptions are replicated from the official documentation:

Variable Default Value Description
TZ UTC <Timezone> Set your timezone to make sure logs rotate at local midnight instead of at UTC midnight.
FTLCONF_webserver_api_password random <Admin password> http://pi.hole/admin password.
Run docker logs pihole | grep random to find your random password.
FTLCONF_dns_upstreams 127.0.0.1#5335 IPs delimited by ; Upstream DNS server(s) for Pi-hole to forward queries to, separated by a semicolon.

Supports non-standard ports with: #[port number], e.g 127.0.0.1#5053;8.8.8.8;8.8.4.4.

Supports Docker service names and links instead of IPs, e.g upstream0,upstream1 where upstream0 and upstream1 are the service names of or links to docker services.

Note: The existence of this environment variable assumes this as the sole management of upstream DNS. Upstream DNS added via the web interface will be overwritten on container restart/recreation.
FTLCONF_[SETTING] unset As per documentation Customize pihole.toml with settings described in the API Documentation.

Replace . with _, e.g for dns.dnssec=true use FTLCONF_dns_dnssec: 'true'.
Array type configs should be delimited with ;.

Alternatively you can use an .env file in the same directory as your compose.yaml file:

TZ=America/Los_Angeles
WEBPASSWORD=ChangeMe!
REV_SERVER=true
REV_SERVER_DOMAIN=local
REV_SERVER_TARGET=192.168.1.1
REV_SERVER_CIDR=192.168.0.0/16
HOSTNAME=pihole
DOMAIN_NAME=pihole.local
PIHOLE_WEBPORT=80
WEBTHEME=default-light
WEB_PORT=80

Filing Issues

Please file issues as follows:

  • Pi-hole: For issues related to Pi-hole itself, please report them directly in the Pi-hole repository.
  • Unbound: For issues related to the Unbound DNS resolver, please use the Unbound repository.
  • Image Publishing: For issues specifically related to the image publishing (e.g., missing tags, images not being updated or published correctly), report them here in this repository.

Install pihole-v6-unbound on Unraid in a few clicks.

Find pihole-v6-unbound in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for pihole-v6-unbound Review the template variables and paths Click Install

Download Statistics

75,390
Total Downloads
6,993
This Month
6,186
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
mpgirro/docker-pihole-unbound
Last Updated2026-06-15
First Seen2025-04-01

Runtime arguments

Web UI
http://[IP]:[PORT:80]/admin
Network
br0
Shell
sh
Privileged
false
Extra Params
--cap-add=NET_ADMIN --restart=unless-stopped --hostname=piholev6unbound

Template configuration

HTTPPorttcp

HTTP Web Interface Port

Target
80
Default
80
Value
80
HTTPSPorttcp

HTTPS Web Interface Port

Target
443
Default
443
Value
443
Port 53 TCPPorttcp

Port 53 TCP/UDP used for DNS traffic

Target
53
Default
53
Value
53
Port 53 UDPPortudp

Port 53 TCP/UDP used for DNS traffic

Target
53
Default
53
Value
53
Unbound PortPorttcp

Used internally by PiHole to route DNS requests to unbound.

Target
5335
Default
5335
Value
5335
TimezoneVariable

See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Target
TZ
Web PasswordVariable

Not setting this will result in a random password being generated.

Target
FTLCONF_webserver_api_password
ThemeVariable
Target
FTLCONF_webserver_interface_theme
Default
default-auto
PiHole DNS serversVariable

Set the DNS server(s) that Pi-hole uses seperated by semi-colons. Since we are using unbound, should be set to 127.0.0.1#5335

Target
FTLCONF_dns_upstreams
Default
127.0.0.1#5335
Value
127.0.0.1#5335
DNSSECVariable

Set to true to enable DNSSEC. Will add to logs.

Target
FTLCONF_dns_dnssec
Value
true
DNS Listening ModeVariable
Target
FTLCONF_dns_listeningMode
Default
single
Value
single
Host Path for /configPathrw

Appdata folder

Target
/config
Default
/mnt/user/appdata/pihole-unbound
Value
/mnt/user/appdata/pihole-unbound
/etc/piholePathrw

Pi-hole v6 moves all configuration into this folder.

Default
/mnt/user/appdata/pihole-unbound/etc_pihole-unbound
Value
/mnt/user/appdata/pihole-unbound/etc_pihole-unbound
Enable /dnsmasq.dVariable

Load custom user configuration files from /etc/dnsmasq.d/

Target
FTLCONF_misc_etc_dnsmasq_d
Default
false
Value
false
/etc/dnsmasq.dPathrw

This path is no longer necessary. Pi-hole V6 moves all config to the /etc/pihole/pihole.toml file.

Default
/mnt/user/appdata/pihole-unbound/etc_pihole_dnsmasq-unbound
Value
/mnt/user/appdata/pihole-unbound/etc_pihole_dnsmasq-unbound
DNSMASQ Config LinesVariable

Use this to add dnsmasq config lines without adding .conf files. Lines should be seperated with a semi-colon.

Target
FTLCONF_misc_dnsmasq_lines
DHCP Server PortPortudp

Set to 67 if using Pi-hole as your DHCP server

Target
67
Value
67
NTP Server Port(Time)Portudp

Set to 123 if you are using Pi-hole as your NTP server and add--cap-add=SYS_TIME to Extra Parameters

Target
123
Value
123
Rev ServerVariable

Used to forward DNS requests to local records(router) for resolution. Use the following format: true,192.168.0.0/24,192.168.0.1#53,lan

Target
FTLCONF_dns_revServers
Default
false
Value
false