# Running the Docker version of Pi-hole as a systemd service

I use this on Ubuntu 16.04, but as long as your systemd is recent enough, I don't see why this should not work for you.

1. Set your IP address to a static one, using e.g. NetworkManager or by editing `/etc/network/interfaces`. Set `127.0.0.1` as your DNS server.
2. Write the `/etc/systemd/system/pihole.service` file below.
3. Start and enable ("install") the systemd unit file by typing `sudo systemctl start pihole.service` and `sudo systemctl enable pihole.service`.
4. Configure your other devices to use your computer's now static IP address as their DNS server.

Here's what you should put in `/etc/systemd/system/pihole.service`:

```
[Unit]
Description=Pi-Hole Ad muncher
After=docker.service
[Service]
ExecStartPre=-/usr/bin/docker rm --force pihole
ExecStartPre=-/usr/bin/docker pull diginc/pi-hole:alpine
ExecStartPre=/bin/bash -c "/bin/systemctl set-environment IP=$(ip route get 8.8.8.8 | awk '{ print $NF; exit }')"
ExecStartPre=/bin/bash -c "/bin/systemctl set-environment IPv6=$(ip -6 route get 2001:4860:4860::8888 | awk '{ print $10; exit }')"
ExecStartPre=/bin/mkdir -p /var/lib/pihole/config
ExecStartPre=/bin/mkdir -p /var/lib/pihole/dnsmasq.d
ExecStart=/usr/bin/docker run --name pihole -p 53:53/tcp -p 53:53/udp -p 80:80 -v "/var/lib/pihole/config:/etc/pihole/" -v "/var/lib/pihole/dnsmasq.d/:/etc/dnsmasq.d/" -e    ServerIP="${IP}" -e ServerIPv6="${IPv6}" -e DNS1=9.9.9.9 -e DNS2=9.9.9.9 diginc/pi-hole:alpine
Restart=always
RemainAfterExit=no
RestartSec=10s

[Install]
WantedBy=multi-user.target
```

## Notes

I have configured this to use the [Quad 9](https://www.quad9.net/) DNS servers instead of Google's, since Google is tracking us enough as it is. If you would rather have Google handle your DNS queries, by all means, just remove `-e DNS1=9.9.9.9 -e DNS2=9.9.9.9` from the unit file. It will default to using Google's DNS service.

## Acknowledgements

Thank you to the team behind [Pi-hole](https://pi-hole.net/) (@pi-hole), and to the team behind the [Docker version](https://github.com/diginc/docker-pi-hole) (@diginc).