(備忘) ラズパイ5で自宅サーバを作ってみる 準備編

## はじめに  

今回はラズパイでサーバ構築をしてみた備忘録です
この記事ではOSや各種アプリのインストール、SSH接続の設定手順を載せています

使用したのはこちらです

https://www.switch-science.com/products/9810?srsltid=AfmBOoo8y7V5je2P1V1ZlzFrbh2WVSE96ac-1D7VV1VIS87c0DnTDN81

さすがに基盤むき出しで置いとくわけにもいかないので、ケースも用意しました

https://www.amazon.co.jp/dp/B0D2R6M7TK?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_8&th=1

こんなかんじになりました
![PXL_20250331_142210753.MP.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/195e5d53-f9ca-4138-b3e4-a10b00066a67.jpeg)


## 起動してみる
まずは起動してみます
電源：USB
映像出力：mirco HDMI

起動しました！
![DSC_0517.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/0f3f52fc-c6c2-410a-9bdd-4de18aac08b5.jpeg)

ですがOSを入れていないのでこれ以上画面は変わりません。
なので次はOSを入れていきます

## OSのインストール
Raspberry Pi ImagerというソフトからOSをmicroSDカードへ書き込みます

ソフトを起動したらデバイス、OS、ストレージを選択してきます。
今回は以下を選択しました。
デバイス：Raspberry Pi 5
OS：Raspberry Pi OS (64-bit)
ストレージ：microSDカードを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/0ba492c3-12da-4b15-a026-79f375f90b10.png)

次へを押すと、設定の確認ウィンドウが出てくるので設定を編集します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/16c79888-baf0-49f7-aade-cede1569a57e.png)

とりあえずユーザ名、パスワード、ロケール設定を追加しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/9bee3376-9f12-4522-aec6-9d5b2e193c54.png)

microSDカードのデータが削除される警告が表示されるのではいを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/df99159b-119f-4b66-b220-8a861644a14a.png)

書き込みが完了しました！ではこのSDカードを差してもう一度起動してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/a5a62d17-99a9-4c5e-8fd6-b3f7f9b9e3f7.png)

無事立ち上がりました！
![DSC_0518.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/54118bab-8df8-477f-b459-b3e093d7733d.jpeg)

## 初期設定
OSが起動してデスクトップがでてきたら、まずは日本語化しようと思います。
Raspberry Pi Configuration > Localisationから設定を変更していきます
Language：ja (Japanese)
Country：JP (Japan)
Character Set：UTF-8

・・・とここでスクリーンショットを撮影しようとしたところ、真っ黒の画像が撮影されてしまったので、次にスクリーンショットの設定をしていこうと思います。
撮影には「scrot」コマンドを使用していましたが、どうやらRaspberry Pi 5ではウィンドウマネージャーがWaylandを使用している影響で画面が黒くなってしまうようです。
なので、今回は別のソフトをインストールしようと思います。
インストールするのは「gnome-screenshot」です。以下コマンドでインストールします。
```
$ sudo apt install gnome-screenshot
```
インストールしたので実行したところなぜか撮影できないエラー、、、
ターミナルで実行すると「Unable to use GNOME Shell's builtin screenshot interface, resorting to fallback X11」とのこと
色々調べましたが、最終的にはX11に切り替えることで対応できました。。
手順はこちらが参考になりました。

https://www.indoorcorgielec.com/resources/raspberry-pi/window-manager/

## 各種インストール・設定
次にサーバーとして使うために諸々設定をしていきます。

### Apacheインストール
```
sudo apt install apache2
```
インストールできたか確認
```
sudo systemctl status apache2
```
![apache_install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/b7d0e8a5-513a-40c7-ab38-ea97caa864ae.png)

動作していることが確認できたら、ブラウザでアクセスしてみる
IPアドレスを確認して192.168.xxx.xxxのIPアドレスをブラウザで入力
```
hostname -I
```
アクセス成功！
![apache_webaccess_success.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/1b823e4e-d040-4b21-a048-8d87f07e6bf0.png)


### rootパスワード変更
```
$ sudo passwd root
```
このコマンドを実行した後に新しいパスワードを入力して設定します

### ファイアウォール設定
まずはファイアウォールをインストールします
```
$ sudo apt install ufw
```
インストールできたか確認
```
$ sudo ufw status
```
以下の出力になっていればOK
```
Status: inactive
```
すべての接続を拒否する設定
```
$ sudo ufw default deny
```

一旦ローカルからの接続のみ許可するので、以下コマンドを実行
```
$ sudo ufw allow from 192.168.xxx.0/24 to any port 22
$ sudo ufw allow from 192.168.xxx.0/24 to any port 80
```
設定したら、ファイアウォールを有効化
```
sudo ufw enable
```
設定が2行出力されていればOK
```
To                      Action       From
--                      ------       ----
22                      ALLOW        192.168.xxx.0/24
80                      ALLOW        192.168.xxx.0/24
```

### ネットワーク内の他のブラウザからアクセスしてみる
ブラウザで192.168.xxx.xxxにアクセスすると、以下の画面が表示できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/8e5d6cc7-119f-46db-88e1-1ab54585a62b.png)

### SSH接続の設定
#### SSHの有効化
以下コマンドで設定画面を開いて設定を進める
```
sudo raspi-config
```
「3 Interface Options」を選択
![2025-03-31-054455_1920x1080_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/bdfe00d3-99c5-4597-9384-500c939940e1.png)

「I1 SSH」を選択
![2025-03-31-054601_1920x1080_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/8e148a6f-c738-4986-b1c7-8e900eaa761c.png)

SSHサーバーを有効にするか聞かれるので、はいを選択
![2025-03-31-054643_1920x1080_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/af06551b-96a6-472d-bcc7-08bc33abf58b.png)

設定完了
![2025-03-31-054653_1920x1080_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/08fc95c7-d2f0-429b-8589-044e5e5540d5.png)

最初の画面に戻るので「Finish」を選択
![2025-03-31-054704_1920x1080_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/9719d13a-cc9f-4ad3-963e-39da5c0a1a78.png)

#### 公開鍵認証にする
まず接続元のPCで以下コマンドを入力（今回はwindows環境で実施）
```
$ ssh-keygen -t rsa -b 4096
```
C:\Users\ユーザ名\.ssh配下にid_rsaとid_rsa.pubが作成される

作成できたらscpコマンドでラズパイにファイルを送信
```
$ cd <.sshフォルダのパス>
$ ./id_rsa.pub <ラズパイのユーザ名>@<ラズパイのIPアドレス>:~/
```
※パスワードが要求されるので、OS書き込み時に設定したパスワードを入力

ファイルが送信できたら、ラズパイ側で以下コマンドを入力して公開鍵を登録する
```
$ cd ~
$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
```

設定ファイルを修正して公開鍵認証を有効化
```
$ sudo vi /etc/ssh/sshd_config
```
以下の行のコメントアウトを削除
```
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
```

最後に再起動
```
$ sudo shutdown -r now
```

これで設定完了！
TeraTermで接続できるか確認

接続できた！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2706027/8f966b69-94af-4f94-ab6e-a07fb5f3cfd8.png)

## 今回はここまで
次回はサーバ上にアプリを配置するところまでやってみたいと思います。
ここまでできたら色々なことができそうなので、何をするか悩みますね。。。