自分だけのサーバーが欲しい
こう思う人は少なくないはずである。用途は人それぞれで, 僕が知る限りでは
・Kubernetesを学ぶのに自由に使えるサーバーが欲しいから
・ロードバランサーを体験するために自由に使えるサーバーが欲しいから
・逸般の誤家庭にはあるものだから
という理由がある。上の3つの理由の動機に共通することは, 大学の研究用, 会社のマシンなど以外に自由にインフラの勉強に使える壊しても良いマシンが欲しいということではないだろうか
だが実際のところ, 大学生的には自分だけのサーバーを持つだけの土地と, 親の同意と, 電気代を払うお金がないので, 自分だけのサーバーを持つことはできない。
と, ここでインフラの勉強を頓挫しようとしていたある日, Raspberry PiというマイコンにLinuxが入ることを思い出した私は, Raspberry Piを使って簡易的なサーバーが作れるのではないかと思った。
この記事はRaspberry Piで簡易的なサーバーを作るまでに困ったことや奮闘をまとめました。この記事ではハードウェアのセットアップまでを解説します。
最終的にこんなのが作れます。
必要な物
品物 | 備考 |
---|---|
Raspberry Pi 5 | リンク先は2024/7/4現在品切れになっていますが, 秋葉原の千石や秋月で買うことができます。今回は8GBのを2つ購入しました。今回制作するサーバーのメイン部分を担います。 |
Giga対応5ポートスイッチ(プラ筐体/ACアダプター)EHC-G05PA4シリーズEHC-G05PA4-W | スイッチングハブと呼ばれるものです。これを使うことでLANケーブルのポートを増設することができます。後述するルーターと組み合わせて使います。給電用コンセントはこの商品についていました。 |
TypeCケーブル×2(USB-USBC) | 百均で買いました。Raspberry Pi 5の給電用です。Raspberry Pi 5が5V5Aという日本だとほとんどみない規格なので失敗しても良いように安いケーブルを買いましたが大丈夫でした。 |
ACアダプタ | TypeCケーブルをつなげて給電するためのものです。百均で買いました。本当はAnker PowerPort 5が便利だと思います。 |
Cat6ALANケーブル0.5m | すみません何買ったのか忘れました。0.5mので電気屋で400円ぐらいだった気がします。 |
BUFFALO (バッファロー) USB 無線LAN親機 11ac/n/a/g/b 433/150Mbps トラベルルーター single_band ブラック WMR-433W2-BK | 無線ルーターです。 |
KIOXIA(キオクシア) 旧東芝メモリ microSD 32GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA032G×2 | これも電気屋で適当に買ったので詳しいことは覚えてないですが, KIOXIAのファンで応援しているのでKIOXIAのを買いました。microSDカードはマイコンのストレージの役割を担います。マイコンの数だけ買ってください。 |
GeeekPi Raspberry Pi4クラスターケース冷却ファンとRaspberryPi4ヒートシンク付きRaspberryPi4ケースアクリルケースPiラックケース | 制作したマイコンサーバーのケースとなる物です。カッコいいので絶対に買いましょう。Raspberry Pi 4と書いていますがRaspberry Pi 5でも問題なく使うことができます。あとヒートシンクがついてきますので追加でヒートシンクを買う必要はないです。 |
その辺にいるネットワークとかLinuxとかマイコンに詳しい人 | 必須です |
上の部品に関しては以下の記事を参考にしました。
補足
ここで, マイコンいじり初心者ながら抱いた疑問を解説(超初心者なので指摘あったらコメントにてお願いします。)
これ全部買わないといけないの?
結論から言うとそんなことはありません。例えば今回の記事でやるところまでならスイッチングハブとルーター, LANケーブル無しでも無線Wifiで作ることができます。
型番まで統一しなきゃダメ?
大丈夫だと思います。僕はとりあえず同一の機能を提供してあるであろう中で安いやつを買って動かなかったら高いやつを買うことにしました。
上の記事にPoE(Power over Ethernet)とあるけどスイッチングハブはそれじゃなくていいの?
PoEはLANケーブル経由で給電まで済ませてしまおうというものらしいです。それ対応のスイッチングハブを買うとできるようになります。が, 少し高めなのでとりあえず今回は初心者ながら安心安全のLANケーブルと給電ケーブルは別々の形を取ることにしました。組んでみてわかったのですが, 予想以上に配線がぐちゃぐちゃになるのでPoEの方が良かったかなと思います。
セットアップ
上の機材を購入したらRaspberry Piのセットアップを行いましょう。セットアップの手順は以下の通りです。
- SDカードにOSを焼く
- Raspberry PiにOSを焼いたSDカードを挿入し, ssh接続
これを行うことで普段ssh接続を行うパソコンのようにRaspberry Piを普通のコンピューターと変わらない使用感で扱えるようになります。だんだんサーバーっぽくなってきたんではないでしょうか
1. SDカードにOSを焼く
まずはこちらにアクセスしてRaspberry PiのOSをSDカードに焼くためのソフトであるRaspberry Pi Imagerを落としましょう。もしArch Linuxを入れたい人は, 検索してみてください。良いLinuxの勉強になると思います。
ダウンロードしたら, Raspberry Piを開き, OSをダウンロードするRaspberry PiデバイスとOSを指定しましょう。今回はUbuntu Server 24.04 LTSを選択しました。
その後, ユーザーネームと接続するWifiのSSIDとpasswordを設定します。
まだSAVEボタンを押さず, SSHを有効にしてください。僕は初めはUse password authenticationにしました
その後, SAVEボタンを押し, SDカードにOSを書き込みましょう。このときSDカードのデータは全消去されるとでますが, 新品のSDカードなら気にしないで大丈夫です。
補足
Raspberry Pi OSじゃなくていいの?
好みによると思います。僕は普段使っているOSがUbuntuなのと, GUIにリソースを割かれたくないのでUbuntu Serverにしています。あとはOSを書き込むときにSSHを有効にしても, モニターとキーボードを繋いでRaspberry Piを起動してSSHを再度有効にしないとRaspberry Pi OSではSSH接続ができませんでした
MacにSDカードをいれるところがなくてOSを焼けません‼️
Macを使うのをやめましょう。ThinkpadにはSDカードをいれるところがありました
SSH接続関連ではもう少し補足したいことがあります。
Raspberry Pi Lite OSでssh経由で初期設定しようとしたところ、ssh接続ができなかった
ラズパイ側からGUI経由でIPアドレスを取ってきて解決しましょう。モニターとキーボードとマウスを繋ぐ必要があります。これが嫌なのでRaspberry Pi OSは選びませんでした。
Raspberry Pi のIPアドレスにはpingが通るのにsshできない。
ラズパイのssh.serviceが動いていなかった。
systemctl start ssh
sudo lsof -i :22
でポートを確認してログインしてください。もしssh portが異なる場合は/etc/ssh/sshd_configを確認する方法もあります。
SSH接続
さて, Raspberry Pi OSを使用している方は上のQ&Aの方法でSSH接続を完了すればひとまずはこの記事でのセットアップは終了です。しかし, Ubuntu Serverを使っている人向けで, ディスプレイ, キーボードとマウスを使わない方法でのSSH接続の方法も教えておきます。ここでSDカードを差し込んでSSHログインするときに思うことはまず一つでしょう。
このRaspberry PiのIPアドレス何?
今回はnmapというものでポートスキャンをして見つけることにしました。まずはipconfig/ifconfigで接続しているネットワークの情報を取り出しましょう。
ifconfig | grep inet
するとこんなのが出てくるはずです。127.0.0.1はループバックアドレスなのでここにsshしても意味はありません127.0.0.1以外を見つけましょう。これを使って接続しているネットワークのネットワーク部を特定しましょう。
inet 127.0.0.1
参考:
ネットワーク部を特定したら, nmapでport scanしましょう。127.0.0.0以外を指定してください
sudo nmap -v -sn -n 127.0.0.0/25
このコマンドの25のところを調整することでどのぐらいport scanするかを調整することができます。
Scanning 127 hosts [1 port/host]
するとこんな感じの結果がでてくるはずです。
Nmap scan report for 192.168.0.8
Host is up (0.079s latency).
MAC Address: 00:00:00:00:00:00 (Raspberry Pi Trading)
これがRaspberry PiのIP addressです。あとはOSインストール時に決定したユーザーネームとパスワードを用いてssh接続を行いましょう。
ssh user@192.168.0.8
ssh接続後はauthorized_keysなどを編集することで次回以降のパスワード入力を省略することができます。
補足
nmapってネットワークに負荷がかかるんじゃない?
はいそうです。過度な負担をかけることはやめましょう
複数台Raspberry Piを買ったからどれがどれだかわからないお
見つけたRaspberry Piを片っ端からbrute forceしてください, 100台とかの場合はすみませんわかりません
とまあこんな感じでしょうか, こうしてssh接続できたRaspberry Piたちをクラスターケースに積み重ねると...
こんな感じになります。ここまででもssh接続できる自分だけの複数台パソコンとして使えます。
次回
ハードウェア・セットアップ編は以上になります。次回はルーター, スイッチングハブを使った設定と応用例の紹介です。
- ネットワーク構築
- 制作したマイコンサーバーでMPIを使ってプロセス並列処理
- ロードバランサーしてみた
- Microk8sでKubernetesクラスタ作成
- /etc/fstabいじってNAS作った
院試落ち着いたら書きます
余談
始まりはk8sの勉強会をするためでした。以下のPostや記事から影響を受けました。