0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerを用いてpi holeの環境を整える方法

Last updated at Posted at 2025-01-10

Pi-HoleはAd Block機能付きのDNSサーバとDHCPサーバを持つツールである.本ページではそれをDockerを用いてUbuntu上に導入する方法を記述する.

前提条件

  • DNS,DHCPなどのネットワークの知識を有していること
  • Dockerの知識をある程度有していること
  • Pi-Holeについてある程度知識を有していること

準備

$ ip aを使用して,listenするネットワークインタフェース名を調べる

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 34:97:f6:8d:6a:68 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.102/24 brd 192.168.10.255 scope global noprefixroute enp0s31f6
       valid_lft forever preferred_lft forever
    inet6 fe80::3697:f6ff:fe8d:6a68/64 scope link
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:7a:85:3c brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:29:6a:19:15 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

この場合「enp0s31f6」である.

/opt/pi-holeディレクトリの作成

設定ファイルなどをDocker上で保持するため「/opt/pi-hole」ディレクトリを作成する.そしてその中に,「etc-dnsmasq.d」と「etc-pihole」というディレクトリを作成する.

compose.yamlの作成

先ほど作成した/opt/pi-holeにcompose.yamlを次のように作成する

services:
  pihole:
    image: pihole/pihole
    network_mode: host # DHCPを機能させるために必須
    environment:
      TZ: 'Asia/Tokyo'
      WEBPASSWORD: hogehoge #好きなパスワードに設定してください
      WEB_PORT: 8080 #好きなポートに設定してください
      PIHOLE_INTERFACE: enp0s31f6 #「準備」で調べたネットワークインタフェース名
      INTERFACE: enp0s31f6 #「準備」で調べたネットワークインタフェース名
    volumes:
      - './etc-pihole:/etc/pihole' # 先ほど作成したディレクトリをコンテナ内から見えるようにする
      - './etc-dnsmasq.d:/etc/dnsmasq.d'# 先ほど作成したディレクトリをコンテナ内から見えるようにする
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

最後に$ docker-compose up -d --buildすればOK

筆者がハマったポイント

PIHOLE_INTERFACE: enp0s31f6 #「準備」で調べたネットワークインタフェース名
INTERFACE: enp0s31f6 #「準備」で調べたネットワークインタフェース名
の両方の環境変数を設定しないとリッスンするインタフェースが勝手にeth0になって困っておりました.ChatGPTに助けてもらって解決しました.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?