Pi-holeは、家庭内や小規模ネットワークで広告をブロックするためのDNSサーバです。ネットワーク全体で広告をブロックできるので、広告の多いウェブサイトを閲覧する際や、アプリで広告が表示されるのを防ぐことができます。
Pi-holeは、Dockerで簡単に動かすことができます。まず、Dockerとdocker-composeをインストールしましょう。
sudo apt install docker.io docker-compose
次に、DockerでPi-holeを起動するためのcompose.ymlファイルを作成します。
nano compose.yml
以下の内容をcompose.ymlに貼り付けます。
version: '3'
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
- "443:443/tcp"
environment:
TZ: 'Asia/Tokyo'
# ウェブインターフェースのパスワード (適宜変更)
FTLCONF_webserver_api_password: 'your-secure-password'
FTLCONF_dns_listeningMode: 'all'
volumes:
- './etc-pihole:/etc/pihole'
restart: unless-stopped
nanoを使っている方は、Ctrl + Oの後にEnterを押して、Ctrl + Xで保存できます。
compose.ymlを作成したら、次はDockerコンテナを起動します。以下のコマンドでPi-holeを起動できます。もしコマンドを忘れてしまったのであれば、こちらの記事へどうぞ
docker compose up -d
Pi-holeのウェブインターフェースにアクセスするには、ブラウザで以下のURLにアクセスします。
https://<サーバIP>
httpでも入れます。http://<サーバIP>:80
ログイン画面が表示されたら、先ほどcompose.ymlで設定したパスワードを入力して、Log inをクリックします。
入ることができました。
構築できたところで、実際に使ってみたいと思います。
私は外部からも接続できるように、VPNを使っているので、サブネットが違いますが、気にしないでください。
Wifiの設定から、IP SettingsをStaticにして、DNSの部分にサーバIPを入力します。
VPNを立てたい方はこちら
設定が完了したら、Yahoo知恵袋や他のサイトを開いてみましょう。広告が表示されなくなっていることがわかります!
これでウェブサーフィンが快適になるに違いない!!
最初からブロックしているドメイン数は、13万個ほどのドメインなので対応できていないドメインがあります。
なので、hostsファイルを増やしてブロック数を増やします。(これをしないとlineなどの広告があまり消えていない気がする)
このツールを使用することによって、自動的にhostsファイルを入れてくれます。
このツールはpythonで作られているので、python3もインストールします。
pythonの最新バージョン(?)では、直接pipコマンドが使えないようなので、venvという仮想環境を作り、その中でコマンドを実行します。
python3 -m venv ~/.venvs/pihole5
source ~/.venvs/pihole5/bin/activate
pip install pihole5-list-tool --upgrade
sudo apt update
sudo apt install python3-pip
(pihole5) massango@pi-hole:~$ のようになっていたら成功です。
インストールが完了したら、pihoke5-list-toolとコンソールに入力します。
pihoke5-list-tool
実行すると、このような文が出力されると思います。
┌──────────────────────────────────────────┐
│ π-hole 5 list tool v0.6.2 │
└──────────────────────────────────────────┘
https://github.com/jessedp/pihole5-list-tool
! docker not found running, continuing...
? Gravity Db to Update: /home/ur-name/etc-pihole/gravity.db
このようになったら、etc-piholeというフォルダの中にあるgravity.dbの位置を入力します。
もしどこにあるかわからなかったら、このコマンドで探すことができます。
sudo find / -name gravity.db
コマンド実行後
(pihole5) massango@pi-hole:~$ sudo find / -name gravity.db
[sudo] password for massango:
/home/massango/etc-pihole/gravity.db
ここででた、/home/massango/etc-pihole/gravity.dbを、この部分に書きます。
? Gravity Db to Update: /home/ur-name/etc-pihole/gravity.db
そしてEnterを押すと、このようになります。
Blocks Enabled: All=1 │ Ours=0 │ Allows Enabled: All=0 │ Ours=0
? Options:
Manage Blocklists
Manage Allowlists
Full Stats
❯ Exit
矢印キーで操作ができるので、Manage Blacklistsを選択して、Enterを押します。
すると、こうなるので、Add a listを選択します。
Blocks Enabled: All=28 │ Ours=27 │ Allows Enabled: All=0 │ Ours=0
? Options: Manage Blocklists
? Blocklist action:
❯ Add a list
---------------
Remove Lists Added by This Tool
Reset to Pihole defaults
Remove ALL Blocklists
すると、このような選択肢が出ると思います。
必要なサイトまでブロックされてしまうと嫌なので、私はTicked listsを選択しました。
Blocks Enabled: All=28 │ Ours=27 │ Allows Enabled: All=0 │ Ours=0
? Options: Manage Blocklists
? Blocklist action: Add a list
? Where are the block lists coming from?
❯ Firebog | Non-crossed lists : Use when someone is usually around to allow
falsely blocked sites
Firebog | Ticked lists : Use where no one will be allowing falsely
blocked sites
Firebog | All lists : Use when someone will always be around to
allow falsely blocked sites
---------------
File | A file with urls of lists, 1 per line
Paste | Paste urls of lists, 1 per line - opens editor, save, close
警告されますので、EnterかYを押してblock listsを追加します。
何かを間違えていたら、Ctrl + Cで、キャンセルすることができます。
? Where are the block lists coming from? Firebog | Ticked lists : Use where no one will be allowing falsely
blocked sites
Do not hit ENTER or Y if a step seems to hang!
Use CTRL+C if you're sure it's hung and report it.
? Add 27 block lists? (Y/n)
次に、Gravityの更新をするかという質問が出てきますが、Dockerの中でしかpiholeコマンドは使えないので、ここはnを選択してください。
Dockerで実行していなければ、Yで大丈夫です。
? Add 27 block lists? Yes
27 block lists added! 0 already existed.
Ad/Blocklist Stats x Top 3 by Comment
qqqqqqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
Total : 28/28 x Firebog | Ticked lists [ph5lt] 27
Our Lists : 27/27 x Migrated from /etc/pihole/adlists.list 1
Others : 1/1 x
x
? Are you finished? Yes
? Update Gravity for immediate effect? (Y/n)n
Gravityを更新するためには、手動でdockerコンテナに入り、コマンドを撃つ必要があります。
このコマンドで、確認することができます。
sudo docker ps
このコマンドで、コンテナに入ります。
docker exec -it <コンテナIDまたは名前> /bin/bash
リストを更新、DNSキャッシュをフラッシュします。
pihole reloaddns
なぜか追加したhostsが利用できなかったので、データベースを再構築します。
pihole -g
これで完成です!