私と同じように、いくつかのウェブサイト、特にソーシャルメディアに時間を費やしすぎている人は多いのではないでしょうか。どんなに避けようとしても、ついつい検索バーにFacebookやRedditなどと入力してしまいます。ブラウザ拡張機能、デスクトップアプリ、ルーターのルール設定などで手軽に使えるものはたくさんありますが、もっと具体的な対策が欲しかったのです。
このプロジェクトでは、照明スイッチとRaspberry Pi Zeroで動作する自宅のDNSサーバーを使って、特定のウェブサイトへのアクセスをオン/オフにします。ブロックしたサイトにアクセスしたい場合は、わざわざ立ち上がってスイッチをオフにする必要があります。これはブラウザ拡張機能をオフにするよりも少し難しい作業です。
ウェブサイトのオフスイッチを作るために必要なもの
- Raspberry Pi Zero W、SDカード、電源
- 2つの単極照明スイッチ
- PVC製ダブルギャングスイッチボックス
- プラスチック製の2トグルスイッチプレート
- オス-メスのジャンパー線4本
- プラスドライバーとマイナスドライバー
Raspberry Piでオフスイッチのウェブサイトを構築する方法
1. Raspberry Pi Zero Wをセットアップし、リモート接続します。方法がわからない場合は、ヘッドレスRaspberry Piのセットアップ方法に関するチュートリアルをご覧ください。
2.まだインストールされていない場合は、git を更新してインストールします。
sudo apt-get update && sudo apt-get install -y git
3.このリポジトリからコードをクローンします。このコードは、新しいDNSサーバーとなるdnsmasqツールの管理を担当します。
git clone https://github.com/rydercalmdown/internet_kill_switch
4.新しくクローンしたディレクトリ内からインストールコマンドを実行します。これにより、すべての基本依存関係のインストール、dnsmasqツールのインストール、そしてそれが確実に実行されるようになります。
cd internet_kill_switch
make install
5.次のコマンドを入力して、dnsmasq が実行中であることを確認します。終了するには、Ctrl + C を押します。緑色で「実行中」のステータスが表示されます。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
sudo systemctl status dnsmasq
# Use Ctrl + C to exit
6.ソフトウェアを実行して、すべてが適切に動作することを確認してください。エラーのないログメッセージがいくつか表示されるはずです。Ctrl + C でソフトウェアを終了してください。
make run
# Use Ctrl + C to exit
7.各ジャンパーケーブルのオス端子をスイッチに配線します。ピンをネジの下に押し込み、しっかりと締め付けられるはずです。これらのスイッチは高電圧AC用に設計されていますが、このプロジェクトでも同様に動作します。
8.ジャンパーケーブルのメス側をRaspberry Piに接続します。ピンの順序は問いません。スイッチの片側をGPIOピンに、もう片側をグランドピンに接続してください。デフォルトのコードではGPIO(BCM)ピン18と24が想定されていますが、これは変更可能です。
9.ラズベリーパイを PVC ダブルギャングスイッチボックスに押し込み、ホットグルーで背面に固定します。
10.電源ケーブルをスイッチボックスの入口に通して、Raspberry Pi に接続します。
11.付属のネジを使用して、両方のスイッチをスイッチボックスに取り付けます。
12.スイッチプレートをスイッチの上に置き、付属のネジで取り付けます。
13.どのスイッチがどのサイトに属しているかラベルを付けます。どのスイッチがどのピンに接続されているかを記録します。
14. src/toggle_switches.py ファイルを開いて編集します。
cd src/
nano toggle_switches.py
15.各スイッチでブロックするウェブサイトをリストするようにtoggle_switches.pyを修正します。SWITCHESリストを修正し、SwitchConfigクラスの新しいオブジェクトを追加することで、スイッチを追加または削除できます。指定できるパラメータは、BCMのピン番号と、それに続くブロックするウェブサイトのリストです。
# Example: The switch connected to BCM pin 18 blocks social media, and the switch connected to BCM pin 24 blocks video websites
SWITCHES = [ SwitchConfig(18, ['facebook.com', 'instagram.com']), SwitchConfig(24, ['netflix.com', 'youtube.com', 'vimeo.com']),
]
16.アプリケーションを実行してテストし、起動時に表示される IP アドレスをメモします。これが Pi の IP アドレスです。
cd ~/internet_kill_switch
make run
# IP Address is 10.0.0.25
17.そのIPアドレスを使って、コンピュータのDNSサーバーを設定します。私はMacBookのシステム環境設定 > ネットワークで設定していますが、ルーターレベルで設定することもできます。
18. PiをDNSサーバーとして使用しているマシン(私の場合はMacBook)のスイッチをテストします。スイッチがオフの状態では、ウェブサイトに自由にアクセスできるはずです。スイッチをオンにすると、少し時間が経ってから、そのウェブサイトにアクセスしようとするとネットワークエラーが表示されるはずです。
19.確認するには、コンピューターで次のコマンドを使用し、google.com をブロックするように選択したサイトに置き換えます。
# When the switch is off
dig +short google.com
172.217.164.238
# When the switch is on
dig +short google.com
127.0.0.1
20. /etc/rc.local ファイルを編集して次の行を追加し、Pi の再起動時にこのソフトウェアが実行されるようにする。
sudo nano /etc/rc.local
# Add this line before the very last line
cd /home/pi/internet_kill_switch/src && sudo ../env/bin/python app.py &
21. スイッチを取り付けます。このスイッチボックスを壁に設置する場合は、Raspberry Piに電源を供給できるコンセントの近くに設置する必要があります。あるいは、スイッチボックスをテーブルや棚の上に置いておくこともできます。
楽しんでください。Web サイトを読み込めない場合は、DNS サーバーから Pi の IP アドレスを削除してみてください。問題が発生している可能性があります。