ラズパイを使って広告なしの自宅ネットワークをつくりたい

# はじめに
子供の教育のためにラズパイを買いました。最初に作ったのが手書きできるウエブシステムです。A～Zまで一文字ずつ書いてもらい、OCRで自動判定するアプリをつくりました。ラズパイに[nginx](https://nginx.org/)をインストールし、OCRは[tesseract.js](https://github.com/naptha/tesseract.js)使いました。長男が楽しそうに使ってくれました。その効果かどうかわかりませんがA~Zは書けるようになりました。次はAIと絡んだゲームっぽいもの作りたいと思っています。

またテレビとHDMIでつないており、Youtubeも見てます。Youtubeで動画を見ると広告が表示されますが、いちいち閉じるのが面倒くさいから何か方法ないかと調べたところ[pi-hole](https://pi-hole.net/)があることが知りました。
インストールしながらこの記事を書いていきます。

## pi-holeとは
初心者ですが、現時点で分かったのを一覧にします。
① DNSサーバーである

- ネットワークレベルでネット広告を遮断できる
- ネットワークレベルでインタネットトラッキングのブロックだできる
- 広告はダウンロードされる前にブロックされるため、ネットワークのパフォーマンスが向上し、より速く感じられる
- とても使いやすいWeb画面から簡単に**ブラックリスト、ホワイトリスト**の作成、利用状況の統計などができる<br>
<font color="red">子供がYoutube見過ぎたら一時的にブラックリストに追加しようと考えてます :)</font>

>※ネットワークレベルとは、１つのPCのみではなく、ネットワークにつながった全デバイスを指す


② dhcpサーバー機能も付いている
>※ブラウザから簡単にIPの割り当て状況か確認できる


ダッシュボード![raspberrypi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474320/9d83ae66-9a80-8a04-4a8c-08101866ae2b.png)
## Installation
[こちらのページ](https://github.com/pi-hole/pi-hole)には色々な方法が書いてあります。一番簡単なのが以下の1行のコマンドを実行するのみです。

```bash
curl -sSL https://install.pi-hole.net | bash
```
> -s, --silent
silentモード （コンソールに何も出力されない）
-S, --show-error
--silentの時にエラーが起きた場合はその内容が表示される
-L, --location
サーバーの移動があった（レスポンスコード3XX）の場合は新しいサーバーに再びcurlしてくれます

上記のコマンドを実行すると、以下のように確認の画面が複数表示されました。

```
① This installer will transform your device into a network-wide ad blocker
->了解

② The Pi-hole is free, but powered by your donations:http://pi-hole.net/donate
->了解

③ The Pi-hole is a SERVER so it needs a STATIC IP ADDRESS to ....
->了解

④ Choose An Interface (press space to select) 
(*) eth0   available　←選択
( ) wlan0  available
->了解

⑤ Select Upstream DNS Provider. To use your own, select Custom.
Google (ECS)　←選択
OpenDNS (ECS)
...
->了解

⑥ Pi-hole relies on third party lists in order to block ads. 
[*] StevenBlack  StevenBlack's Unified Hosts List
[*] MalwareDom   MalwareDomains 
...
->了解

⑦ Select Protocols (press space to select)
[*] IPv4  Block ads over IPv4
[*] IPv6  Block ads over IPv6
->了解

⑧ Do you want to use your current network settings as a static address?
->はい

⑨ It is possible your router could still....
->了解

⑩ Do you wish to install the web admin interface?
(*) On(Recommended)
() Off
->了解

⑪ Do you wish to install the web server (lighttpd)?
(*) On(Recommended)
() Off
->了解

⑫ Do you want to log queries?
(*) On(Recommended)
() Off
->了解

⑬ Select a privacy mode for FTL
(*) 0 Show everything
()  1 Hide domains
...
->了解
```
インストール処理が開始され、終わると以下の画面が表示されました。

```
     ┌─────────────────────┤ Installation Complete! ├─────────────────────┐
     │                                                                    │ 
     │ Configure your devices to use the Pi-hole as their DNS server      │ 
     │ using:                                                             │ 
     │                                                                    │ 
     │ IPv4:        192.XXX.XXX.XXX                                       │ 
     │ IPv6:        Not Configured                                        │ 
     │                                                                    │ 
     │ If you set a new IP address, you should restart the Pi.            │ 
     │                                                                    │ 
     │ The install log is in /etc/pihole.                                 │ 
     │                                                                    │ 
     │ View the web interface at http://pi.hole/admin or                  │ 
     │ http://192.XXX.XXX.XXX/admin                                       │ 
     │                                                                    │ 
     │ Your Admin Webpage login password is tGtyhofd                      │ 
     │                                                                    │ 
     │                               <了解>                                │ 
     │                                                                    │ 
     └────────────────────────────────────────────────────────────────────┘ 
```
表示されたURLにアクセスするとpi-holeの管理者用ページに入れます。左側にログインボタンがあり、クリックするとパスワードが聞かれます。最後に表示されたパスワードを入力します。
パスワードコピーするのが忘れた場合は以下のコマンドで再設定することができます。

```bash
pihole -a -p
```

## Test
Windows PCのDNSをラズパイのIPに変えました。そして広告が表示されたページにアクセスしました。残念ながらインタネットに接続ができずページすら開けなかったです。2時間ほど色々調べながら最終的には以下の設定を変える事で無事アクセスができ、広告ブロックされたのを確認しました。

```
Settingsメニュ -> DNSタブ　-> Listen on all interfaces, permit all origins -> Save
```

**5/19追記**
WifiルーターのDNSサーバーをラズパイのIPアドレスに変える事で自宅の全デバイスから広告がブロックされました。
![wifi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474320/e4409497-7ade-c964-abc6-6fe22827fc40.png)

#最後に
以下の動画がとても参考になりました。インストールから様々な方法で広告のブロックの仕方がご覧になれます。
https://www.youtube.com/watch?v=KBXTnrD_Zs4