First Push
This commit is contained in:
19
Dockerfile
Normal file
19
Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#ARG PIHOLE_VERSION
|
||||||
|
FROM pihole/pihole:development
|
||||||
|
RUN apk update
|
||||||
|
RUN apk add --no-cache unbound curl ca-certificates \
|
||||||
|
&& curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache
|
||||||
|
RUN apk add --no-cache iputils-ping
|
||||||
|
|
||||||
|
COPY config/unbound/unbound.conf /etc/unbound/unbound.conf
|
||||||
|
COPY config/unbound/unbound.conf.d /etc/unbound/unbound.conf.d
|
||||||
|
COPY config/unbound/unbound.log /etc/unbound/unbound.log
|
||||||
|
|
||||||
|
COPY config/entrypoint.sh /usr/bin/entrypoint.sh
|
||||||
|
COPY config/unbound/unbound.sh /usr/bin/unbound.sh
|
||||||
|
|
||||||
|
RUN chmod +x /usr/bin/entrypoint.sh
|
||||||
|
RUN chmod +x /usr/bin/unbound.sh
|
||||||
|
|
||||||
|
WORKDIR /usr/bin
|
||||||
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
1
config/99-edns.conf
Normal file
1
config/99-edns.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
edns-packet-max=1232
|
||||||
4
config/entrypoint.sh
Normal file
4
config/entrypoint.sh
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
/bin/bash /usr/bin/start.sh &
|
||||||
|
/bin/bash /usr/bin/unbound.sh &
|
||||||
|
wait
|
||||||
6
config/lighttpd-external.conf
Normal file
6
config/lighttpd-external.conf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
$HTTP["url"] =~ "^/admin/" {
|
||||||
|
# Allow using Pi-Hole admin in iframes (eg, for Home Assistant)
|
||||||
|
setenv.set-response-header += (
|
||||||
|
"X-Frame-Options" => "Allow"
|
||||||
|
)
|
||||||
|
}
|
||||||
62
config/unbound/unbound.conf
Normal file
62
config/unbound/unbound.conf
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Config pulled from https://docs.pi-hole.net/guides/unbound/
|
||||||
|
|
||||||
|
server:
|
||||||
|
# Working Directory
|
||||||
|
directory: "/etc/unbound"
|
||||||
|
|
||||||
|
# Include other configs
|
||||||
|
include: "/etc/unbound/unbound.conf.d/*.conf"
|
||||||
|
|
||||||
|
# If no logfile is specified, syslog is used
|
||||||
|
logfile: "/etc/unbound/unbound.log"
|
||||||
|
verbosity: 2
|
||||||
|
|
||||||
|
interface: 127.0.0.1
|
||||||
|
port: 5335
|
||||||
|
do-ip4: yes
|
||||||
|
do-udp: yes
|
||||||
|
do-tcp: yes
|
||||||
|
|
||||||
|
# May be set to yes if you have IPv6 connectivity
|
||||||
|
do-ip6: no
|
||||||
|
|
||||||
|
# You want to leave this to no unless you have *native* IPv6. With 6to4 and
|
||||||
|
# Terredo tunnels your web browser should favor IPv4 for the same reasons
|
||||||
|
prefer-ip6: no
|
||||||
|
|
||||||
|
# Use this only when you downloaded the list of primary root servers!
|
||||||
|
# If you use the default dns-root-data package, unbound will find it automatically
|
||||||
|
root-hints: "/etc/unbound/root.hints"
|
||||||
|
|
||||||
|
# Trust glue only if it is within the server's authority
|
||||||
|
harden-glue: yes
|
||||||
|
|
||||||
|
# Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS
|
||||||
|
harden-dnssec-stripped: yes
|
||||||
|
|
||||||
|
# Don't use Capitalization randomization as it known to cause DNSSEC issues sometimes
|
||||||
|
# see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further details
|
||||||
|
use-caps-for-id: no
|
||||||
|
|
||||||
|
# Reduce EDNS reassembly buffer size.
|
||||||
|
# Suggested by the unbound man page to reduce fragmentation reassembly problems
|
||||||
|
edns-buffer-size: 1232
|
||||||
|
|
||||||
|
# Perform prefetching of close to expired message cache entries
|
||||||
|
# This only applies to domains that have been frequently queried
|
||||||
|
prefetch: yes
|
||||||
|
|
||||||
|
# One thread should be sufficient, can be increased on beefy machines. In reality for most users running on small networks or on a single machine, it should be unnecessary to seek performance enhancement by increasing num-threads above 1.
|
||||||
|
num-threads: 2
|
||||||
|
|
||||||
|
# Ensure kernel buffer is large enough to not lose messages in traffic spikes
|
||||||
|
# Be aware that if enabled (requires CAP_NET_ADMIN or privileged), the kernel buffer must have the defined amount of memory, if not, a warning will be raised.
|
||||||
|
#so-rcvbuf: 1m
|
||||||
|
|
||||||
|
# Ensure privacy of local IP ranges
|
||||||
|
private-address: 192.168.0.0/16
|
||||||
|
private-address: 169.254.0.0/16
|
||||||
|
private-address: 172.16.0.0/12
|
||||||
|
private-address: 10.0.0.0/8
|
||||||
|
private-address: fd00::/8
|
||||||
|
private-address: fe80::/10
|
||||||
0
config/unbound/unbound.conf.d/.placeholder
Normal file
0
config/unbound/unbound.conf.d/.placeholder
Normal file
0
config/unbound/unbound.log
Normal file
0
config/unbound/unbound.log
Normal file
3
config/unbound/unbound.sh
Normal file
3
config/unbound/unbound.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
/usr/sbin/unbound -d -c /etc/unbound/unbound.conf
|
||||||
37
docker-compose.yml_docker
Normal file
37
docker-compose.yml_docker
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
version: '3.9'
|
||||||
|
|
||||||
|
# This is using local volumes. If you would like an example of nfs volumes look in docker-compose.yml_swarm.
|
||||||
|
volumes:
|
||||||
|
pihole-data:
|
||||||
|
pihole-unbound:
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: <your built image>
|
||||||
|
hostname: Pihole
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: pihole-data
|
||||||
|
target: /etc/pihole
|
||||||
|
# volume:
|
||||||
|
# nocopy: true
|
||||||
|
- type: volume
|
||||||
|
source: pihole-unbound
|
||||||
|
target: /etc/unbound
|
||||||
|
# volume:
|
||||||
|
# nocopy: true
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- type: tmpfs
|
||||||
|
target: /dev/shm
|
||||||
|
tmpfs:
|
||||||
|
size: 2048000000
|
||||||
|
ports:
|
||||||
|
- "443:443/tcp"
|
||||||
|
- "53:53/tcp"
|
||||||
|
- "53:53/udp"
|
||||||
|
- "80:80/tcp" #Allows use of different port to access pihole web interface when other docker containers use port 80
|
||||||
|
# - 5335:5335/tcp # Uncomment to enable unbound access on local server
|
||||||
|
# - 22/tcp # Uncomment to enable SSH
|
||||||
|
environment:
|
||||||
|
TZ: <your-timezone>
|
||||||
|
FTLCONF_webserver_api_password: '<password>'
|
||||||
68
docker-compose.yml_swarm
Normal file
68
docker-compose.yml_swarm
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
version: '3.9'
|
||||||
|
|
||||||
|
# I use nfs in my swarm so this is the config for nfs volumes.
|
||||||
|
# If you would rather use local volumes just remove the lines under pihole-data: and pihole-unbound: in the volumes section.
|
||||||
|
volumes:
|
||||||
|
pihole-data:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: "nfs"
|
||||||
|
o: "addr=<nfs-server-ip>,soft,rw"
|
||||||
|
device: ":/mnt/<nfs-directory>/PiHole/pihole-data/_data/"
|
||||||
|
pihole-unbound:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: "nfs"
|
||||||
|
o: "addr=<nfs-server-ip>,soft,rw"
|
||||||
|
device: ":/mnt/<nfs-directory>/PiHole/pihole-unbound/_data/"
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: <your built image>
|
||||||
|
hostname: Pihole
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: pihole-data
|
||||||
|
target: /etc/pihole
|
||||||
|
# volume:
|
||||||
|
# nocopy: true
|
||||||
|
- type: volume
|
||||||
|
source: pihole-unbound
|
||||||
|
target: /etc/unbound
|
||||||
|
# volume:
|
||||||
|
# nocopy: true
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- type: tmpfs
|
||||||
|
target: /dev/shm
|
||||||
|
tmpfs:
|
||||||
|
size: 2048000000
|
||||||
|
ports:
|
||||||
|
# I use host for the dns port to ensure my router can get to it directly without any docker bridge.
|
||||||
|
# This allows my known host file on my router to forward domain names for local machines to Pihole.
|
||||||
|
- target: 53
|
||||||
|
published: 53
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
- target: 53
|
||||||
|
published: 53
|
||||||
|
protocol: udp
|
||||||
|
mode: host
|
||||||
|
- "443:443/tcp"
|
||||||
|
# - 53:53/tcp
|
||||||
|
# - 53:53/udp
|
||||||
|
- "80:80/tcp" #Allows use of different port to access pihole web interface when other docker containers use port 80
|
||||||
|
# - 5335:5335/tcp # Uncomment to enable unbound access on local server
|
||||||
|
# - 22/tcp # Uncomment to enable SSH
|
||||||
|
environment:
|
||||||
|
TZ: <your-timezone>
|
||||||
|
FTLCONF_webserver_api_password: '<password>'
|
||||||
|
deploy:
|
||||||
|
mode: replicated
|
||||||
|
replicas: 1
|
||||||
|
restart_policy:
|
||||||
|
condition: any
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
# Whatever constraints you need. (I have 2 vms that use high availability on proxmox so i assign this service to them to
|
||||||
|
# ensure pihole is always up.
|
||||||
|
- node.labels.HA == true
|
||||||
Reference in New Issue
Block a user