Raspberry Pi 5対応済みマイコンサーバーの作り方【ハードウェア・セットアップ編】

# 自分だけのサーバーが欲しい
こう思う人は少なくないはずである。用途は人それぞれで, 僕が知る限りでは
・Kubernetesを学ぶのに自由に使えるサーバーが欲しいから
・ロードバランサーを体験するために自由に使えるサーバーが欲しいから
・逸般の誤家庭にはあるものだから

という理由がある。上の3つの理由の動機に共通することは, **大学の研究用, 会社のマシンなど以外に自由にインフラの勉強に使える壊しても良いマシンが欲しい**ということではないだろうか
だが実際のところ, 大学生的には自分だけのサーバーを持つだけの土地と, 親の同意と, 電気代を払うお金がないので, 自分だけのサーバーを持つことはできない。
と, ここでインフラの勉強を頓挫しようとしていたある日, **Raspberry PiというマイコンにLinuxが入ることを思い出した私は, Raspberry Piを使って簡易的なサーバーが作れるのではないかと思った。**
![61rqWZwgAML._AC_UF1000,1000_QL80_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3311006/166459ee-4682-8de3-a240-3add2a784560.jpeg)

この記事はRaspberry Piで簡易的なサーバーを作るまでに困ったことや奮闘をまとめました。この記事ではハードウェアのセットアップまでを解説します。
![GRUdKIXaMAAsoZy.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3311006/f541e7b8-0bf6-6670-ff2d-9e9b295534e4.jpeg)

最終的にこんなのが作れます。
# 必要な物
![GRTQsK1bQAASWNa.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3311006/91887274-789c-6677-34ed-450f50fa0096.jpeg)
|品物|備考|
| ------ | ------ |
|[Raspberry Pi 5](https://raspberry-pi.ksyic.com/main/index)|リンク先は2024/7/4現在品切れになっていますが, 秋葉原の千石や秋月で買うことができます。今回は8GBのを2つ購入しました。今回制作するサーバーのメイン部分を担います。|
|[Giga対応5ポートスイッチ(プラ筐体/ACアダプター)EHC-G05PA4シリーズEHC-G05PA4-W](https://www.elecom.co.jp/products/EHC-G05PA4-W.html)|スイッチングハブと呼ばれるものです。これを使うことでLANケーブルのポートを増設することができます。後述するルーターと組み合わせて使います。給電用コンセントはこの商品についていました。|
|TypeCケーブル×2(USB-USBC)|百均で買いました。Raspberry Pi 5の給電用です。Raspberry Pi 5が5V5Aという日本だとほとんどみない規格なので失敗しても良いように安いケーブルを買いましたが大丈夫でした。|
|ACアダプタ|TypeCケーブルをつなげて給電するためのものです。百均で買いました。本当は[Anker PowerPort 5](https://www.amazon.co.jp/gp/product/B00Z8Z7WEE/ref=ppx_yo_dt_b_asin_image_o01_s01?ie=UTF8&psc=1)が便利だと思います。|
|Cat6ALANケーブル0.5m|すみません何買ったのか忘れました。0.5mので電気屋で400円ぐらいだった気がします。|
|[BUFFALO (バッファロー) USB 無線LAN親機 11ac/n/a/g/b 433/150Mbps トラベルルーター single_band ブラック WMR-433W2-BK](https://www.amazon.co.jp/gp/product/B07R2CKQXC/ref=ppx_yo_dt_b_asin_title_o01_s01?ie=UTF8&th=1)|無線ルーターです。|
|[KIOXIA(キオクシア) 旧東芝メモリ microSD 32GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA032G](https://www.amazon.co.jp/KIOXIA-%E3%82%AD%E3%82%AA%E3%82%AF%E3%82%B7%E3%82%A2-microSDHC%E3%82%AB%E3%83%BC%E3%83%89-Amazon-co-jp%E3%83%A2%E3%83%87%E3%83%AB-KLMEA032G/dp/B08PTNWQ6P/ref=sr_1_7_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3GSG6S28Q76Q5&dib=eyJ2IjoiMSJ9.tv5gRHbKndbSAWgCQ0-1QX8J_AxFCES5-KGghAaK7cxtGAn4xqvXEXjpcR_Ivva52wUfFkk_6WFIxzhaMHGhtzQ71v060zbOEHJpi9qonato_YLt3QzhnWhk0hKcvIxYXI7fdQDAQA0EVIkilxyofjt03aoWuHR5K-R662iDMTs79zgqY7f0PPi_gXKRNkUfBNqxwR2MgNQ1kmxcC3FpfE8oJ_w-nzRvQZOKImkRTZVyGU-CFf8drNAWAnm-YmNI7To8_m14RQGDgQhdqfD9An4Z6XQ-8NLo6H4redU0zrw.Q_BqVKdqBWp75maXnlSgBZpEc5kkxIhVC5iRTH14a4I&dib_tag=se&keywords=%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%ADSD&qid=1720113462&s=computers&sprefix=%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%ADsd%2Ccomputers%2C223&sr=1-7-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9tdGY&psc=1)×2|これも電気屋で適当に買ったので詳しいことは覚えてないですが, KIOXIAのファンで応援しているのでKIOXIAのを買いました。microSDカードはマイコンのストレージの役割を担います。マイコンの数だけ買ってください。|
|[GeeekPi Raspberry Pi4クラスターケース冷却ファンとRaspberryPi4ヒートシンク付きRaspberryPi4ケースアクリルケースPiラックケース](https://www.amazon.co.jp/GeeekPi-Pi%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%82%B1%E3%83%BC%E3%82%B9%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AB%E3%83%96%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9%E5%86%B7%E5%8D%B4%E3%83%95%E3%82%A1%E3%83%B3%E4%BB%98%E3%81%8DRaspberry-4%E3%82%B1%E3%83%BC%E3%82%B9Raspberry-4%E3%83%A2%E3%83%87%E3%83%ABB%E3%81%8A%E3%82%88%E3%81%B33B-2B%E7%94%A8%E3%83%92%E3%83%BC%E3%83%88%E3%82%B7%E3%83%B3%E3%82%AF%EF%BC%884%E3%83%AC%E3%83%99%E3%83%AB%EF%BC%89%EF%BC%88%E8%8C%B6%E8%89%B2%EF%BC%89/dp/B07TJZ2HDG/ref=asc_df_B07TJZ2HDG/?tag=jpgo-22&linkCode=df0&hvadid=342534617213&hvpos=&hvnetw=g&hvrand=15244982997885779287&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009307&hvtargid=pla-918091163687&psc=1&mcid=1d25eba09e283daabe302b0fe8cf065d)|制作したマイコンサーバーのケースとなる物です。カッコいいので絶対に買いましょう。Raspberry Pi 4と書いていますがRaspberry Pi 5でも問題なく使うことができます。あとヒートシンクがついてきますので追加でヒートシンクを買う必要はないです。|
|その辺にいるネットワークとかLinuxとかマイコンに詳しい人|必須です|

上の部品に関しては以下の記事を参考にしました。

https://qiita.com/butterv/items/4b7868a3007d5652fe2b

https://qiita.com/Domao/items/093c93ff5f3ee6f49cea

https://zenn.dev/zulinx86/scraps/fe18412a15cc9d

https://www.raspberrypi.com/tutorials/cluster-raspberry-pi-tutorial/

## 補足
ここで, マイコンいじり初心者ながら抱いた疑問を解説(超初心者なので指摘あったらコメントにてお願いします。)

:::note warn
これ全部買わないといけないの?
:::

結論から言うとそんなことはありません。例えば今回の記事でやるところまでならスイッチングハブとルーター, LANケーブル無しでも無線Wifiで作ることができます。

:::note warn
型番まで統一しなきゃダメ?
:::
大丈夫だと思います。僕はとりあえず同一の機能を提供してあるであろう中で安いやつを買って動かなかったら高いやつを買うことにしました。

:::note warn
[上の記事](https://zenn.dev/zulinx86/scraps/fe18412a15cc9d)にPoE(Power over Ethernet)とあるけどスイッチングハブはそれじゃなくていいの?
:::
PoEはLANケーブル経由で給電まで済ませてしまおうというものらしいです。それ対応のスイッチングハブを買うとできるようになります。が, 少し高めなのでとりあえず今回は初心者ながら安心安全のLANケーブルと給電ケーブルは別々の形を取ることにしました。組んでみてわかったのですが, 予想以上に配線がぐちゃぐちゃになるのでPoEの方が良かったかなと思います。

# セットアップ
上の機材を購入したらRaspberry Piのセットアップを行いましょう。セットアップの手順は以下の通りです。

:::note info
1. SDカードにOSを焼く
2. Raspberry PiにOSを焼いたSDカードを挿入し, ssh接続
:::
これを行うことで普段ssh接続を行うパソコンのようにRaspberry Piを普通のコンピューターと変わらない使用感で扱えるようになります。だんだんサーバーっぽくなってきたんではないでしょうか

## 1. SDカードにOSを焼く
まずはこちらにアクセスしてRaspberry PiのOSをSDカードに焼くためのソフトであるRaspberry Pi Imagerを落としましょう。もしArch Linuxを入れたい人は, 検索してみてください。良いLinuxの勉強になると思います。

https://www.raspberrypi.com/software/

![スクリーンショット 2024-07-04 22.45.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3311006/907429cf-7f03-decd-464f-7e110e4b6f74.png)

ダウンロードしたら, Raspberry Piを開き, OSをダウンロードするRaspberry PiデバイスとOSを指定しましょう。今回はUbuntu Server 24.04 LTSを選択しました。

![スクリーンショット 2024-07-04 22.48.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3311006/1ecf1fef-6d2a-737b-f3fd-15a00564f44d.png)

その後, ユーザーネームと接続するWifiのSSIDとpasswordを設定します。
![](https://www.raspberrypi.com/documentation/computers/images/imager/os-customisation-general.png?hash=6509321c9eebb02e53dd711c12395571)

まだSAVEボタンを押さず, SSHを有効にしてください。僕は初めは**Use password authentication**にしました
![](https://www.raspberrypi.com/documentation/computers/images/imager/os-customisation-services.png?hash=bbc8c0ff2f1eb7207d43180d7694c399)

その後, SAVEボタンを押し, SDカードにOSを書き込みましょう。このときSDカードのデータは全消去されるとでますが, 新品のSDカードなら気にしないで大丈夫です。

## 補足

:::note warn
Raspberry Pi OSじゃなくていいの?
:::

好みによると思います。僕は普段使っているOSがUbuntuなのと, GUIにリソースを割かれたくないのでUbuntu Serverにしています。あとはOSを書き込むときにSSHを有効にしても, モニターとキーボードを繋いでRaspberry Piを起動してSSHを再度有効にしないとRaspberry Pi OSではSSH接続ができませんでした

:::note warn
MacにSDカードをいれるところがなくてOSを焼けません‼️
:::
**Macを使うのをやめましょう。ThinkpadにはSDカードをいれるところがありました**

SSH接続関連ではもう少し補足したいことがあります。

:::note warn
Raspberry Pi Lite OSでssh経由で初期設定しようとしたところ、ssh接続ができなかった
:::
ラズパイ側からGUI経由でIPアドレスを取ってきて解決しましょう。モニターとキーボードとマウスを繋ぐ必要があります。これが嫌なのでRaspberry Pi OSは選びませんでした。

:::note warn
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ログインするときに思うことはまず一つでしょう。

:::note warn
このRaspberry PiのIPアドレス何?
:::

今回はnmapというものでポートスキャンをして見つけることにしました。まずはipconfig/ifconfigで接続しているネットワークの情報を取り出しましょう。
```bash
ifconfig | grep inet
```
するとこんなのが出てくるはずです。127.0.0.1はループバックアドレスなのでここにsshしても意味はありません127.0.0.1以外を見つけましょう。これを使って接続しているネットワークのネットワーク部を特定しましょう。
```
inet 127.0.0.1
```
参考: 

https://qiita.com/mogulla3/items/efb4c9328d82d24d98e6

ネットワーク部を特定したら, 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などを編集することで次回以降のパスワード入力を省略することができます。

## 補足

:::note warn
nmapってネットワークに負荷がかかるんじゃない?
:::
**はいそうです。過度な負担をかけることはやめましょう**

:::note warn
複数台Raspberry Piを買ったからどれがどれだかわからないお
:::
**見つけたRaspberry Piを片っ端からbrute forceしてください, 100台とかの場合はすみませんわかりません**

とまあこんな感じでしょうか, こうしてssh接続できたRaspberry Piたちをクラスターケースに積み重ねると...

![GRT3AbSbUAATj1n.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3311006/ef83f096-8cc9-f0cf-1d3d-4c4933f50fb8.jpeg)

こんな感じになります。ここまででもssh接続できる自分だけの複数台パソコンとして使えます。

# 次回

ハードウェア・セットアップ編は以上になります。次回はルーター, スイッチングハブを使った設定と応用例の紹介です。

- ネットワーク構築
- 制作したマイコンサーバーでMPIを使ってプロセス並列処理
- ロードバランサーしてみた
- Microk8sでKubernetesクラスタ作成
- /etc/fstabいじってNAS作った

院試落ち着いたら書きます

# 余談
始まりはk8sの勉強会をするためでした。以下のPostや記事から影響を受けました。

https://x.com/jalva_dev/status/1801178878708470039

https://ubuntu.com/tutorials/how-to-kubernetes-cluster-on-raspberry-pi#1-overview

https://zenn.dev/eiden0029/articles/kubernetes-cluster