Raspberry Pi Start Up

初めてラズパイのセットアップをするときに躓いたところを分かりやすく解決する方法(筆者はラズパイにおいてGUIなんていらない教なので注意)

# OSインストール
1. Raspberry Pi ImagerでDevice選択
1. CHOOSE OSを選択(~~ぜひRaspberry Pi OS Lite(64-bit)(LiteはCUI版)を選択しよう~~)
1. CHOOSE STORAGEでSDカードもしくはUSBを選択
1. NEXTを選択
1. EDIT SETTINGを選択
1. `Set hostname:`にhostnameを入力(画像では`raspbrrypi`と入力)
1. `Set username and password`に`Username`と`Password`を入力(画像では`pi`と入力)
1. 無線LANに接続する場合は`Configure wireless LAN`の`SSID`と`password`を入力(画像ではテザリング予定のため`Xperia 5`)
1. `Set locale settings`を`Asia/Tokyo`に変更
1. SERVICEタブに移動
1. `Enable SSH`にチェックを入れる
1. `SAVE`をクリックして閉じる
1. `YES`をクリックしてインストール開始



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/c5811836-9433-50ee-9ff6-fb5d393b5b3a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/9a1107a8-e89b-57d6-4f0d-68343b6c1803.png)




# 初期設定

- Windows等のアクセス元のコマンドプロンプトからssh

```shell
ssh pi@raspberrypi.local
```
確認出来たらok
今後はこのコマンドプロンプトで操作

- rootパスワードを設定

```
sudo passwd root
```
新しいパスワードを設定後確認

```
su
```

- アップデートの確認・更新
```
sudo apt update && sudo apt full-upgrade -y
```

を実行、`sudo reboot`でリブート

- vimの再インストール
```
sudo apt-get --purge remove vim-common vim-tiny
sudo apt-get install vim
```

- ipアドレス固定

`/etc/dhcpd.conf`を編集

```
sudo vi /etc/dhcpcd.conf
```
`i`を押して以下の追加を行う

``` sh
# wifiの場合.有線LANの場合はwlan0をeth0にする.
interface wlan0
# 固定したいIP,他に割り当てられていないものにする.
static ip_address=192.168.xxx.yyy/24
# ルーターのIPアドレス.(だいたいxxx.1)
static routers=192.168.xxx.1
# ↑と同じでok
static domain_name_servers=192.168.xxx.1
```

`:wq`で保存

`sudo reboot`でリブート

`ifconfig`で確認

## ファイアウォールの設定

`ufw`をインストール
```
sudo apt-get install ufw
```

`ufw`がinactiveになっていることを確認する
```shell-session
sudo systemctl status ufw
● ufw.service - Uncomplicated firewall
     Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2023-01-03 15:15:28 JST; 3s ago
       Docs: man:ufw(8)
    Process: 15328 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SUCCESS)
    Process: 15754 ExecStop=/lib/ufw/ufw-init stop (code=exited, status=0/SUCCESS)
   Main PID: 15328 (code=exited, status=0/SUCCESS)
        CPU: 15ms
```

自動起動設定を確認
デフォルトはenable

```
sudo systemctl is-enabled ufw
```
受信パケットを全て遮断.
公開するポートだけを開ける.

```
sudo ufw default deny incoming
```

送信パケットは全て許可
```
sudo ufw default allow outgoing
```

ssh(22)ポートのみ許可

```
sudo ufw allow ssh
```

プロセスを起動
```
sudo systemctl start ufw
```

確認

```
sudo systemctl status ufw
```

有効にする

```
sudo ufw enable
```

設定を確認する

```
sudo ufw status verbose
```
## VSCodeからssh

Remote-SSHという拡張機能をインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/21000bf8-5087-95cb-348c-b46fad195399.png)

VSCodeを再起動して左下の緑色ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/34ea3dce-6be9-52b9-7b94-c7fedc60957c.png)

1. ホストに接続する
1. 新規SSHホストを追加する
1. 自分が設定したユーザーネーム@ipアドレスを入力
1. Linuxを選択

__ssh時に以下のエラーが出たら__

```shell-session
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for pi2.local has changed,
and the key for the corresponding IP address 240d:1a:134:6c00:77fc:41d8:6df2:b2cd
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:X+50dpXZ9SrwxMu11gkeCKSK7/cPDrsQfiLUAzS/LbA.
Please contact your system administrator.
Add correct host key in C:\\Users\\ryosh/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\ryosh/.ssh/known_hosts:19
ECDSA host key for pi2.local has changed and you have requested strict checking.
Host key verification failed.
```

以下のコマンドを実行
```shell-session

C:\Users\user>ssh-keygen -R raspberrypi.local

```


# Gitインストール
```terminal
sudo apt-get install git
```

```terminal
git config --global user.name "username"
git config --global user.email "useremail"
```

# VPN Server化

WireGuardをインストール

```shell-session
curl -L https://install.pivpn.io | bash
```
ちょっと待つ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/33e75e16-3bf3-6ca2-43f6-c4c9466e58f4.png)

okでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/cf52f273-43ba-6799-38c9-3ec4c0008492.png)

okでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/a951ae22-8ff8-e0ef-d54c-97f9f62597cb.png)

YesでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/2af835b4-8759-6831-d0ca-65715a582fa5.png)

okでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/b2ffdb34-48df-dbeb-12a0-2357280965e9.png)

Userを選択してEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/adb8877b-d7f7-3850-0dbd-984cac8324df.png)

WireGuardを選択してEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/60fe7b89-b887-0193-a4c5-a7453e705607.png)

51820portを使用していないならEnter使用しているなら他のportを指定してEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/b79d9290-3209-2742-28f6-0fcc194c90b8.png)

YesでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/180f4504-d753-9e7b-4e7f-daabb5e63930.png)

お好みのDNS Providerを選択してEnter(今回はGoogleを選択)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/0a5fe640-f132-1333-f0d2-bd3044834df0.png)

グローバルIPかduckdnsなどのpublic DNSを持っているならそちらを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/25a4b124-d7a3-ec33-cc14-565494453cd0.png)

okでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/2e7739c6-307a-a72c-cc7d-23e402fc0bc8.png)

okでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/6de923f5-19d3-e1c4-f56a-6d23bb7b4ef1.png)

Yesを選択してEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/e444e06f-e6c9-c123-3c17-21f65eb37465.png)

okでEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/6b66c770-5bfd-11ca-c818-17529f804d5a.png)

Yesを選択してEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/74a8a4b6-59dd-0da7-9ddd-cbc106f0da6f.png)

okを選択してReboot

新しくクライアントを作成
``` shell-session
test@test:~ $ pivpn add
/etc/pivpn/wireguard/setupVars.conf: line 8: 192.168.1.81/24: No such file or directory
Enter a Name for the Client: test
::: Client Keys generated
::: Client config generated
::: Updated server config
::: WireGuard reloaded
======================================================================
::: Done! test.conf successfully created!
::: test.conf was copied to /home/test1/configs for easytransfer.
::: Please use this profile only on one device and create additional
::: profiles for other devices. You can also use pivpn -qr
::: to generate a QR Code you can scan with the mobile app.
======================================================================
```

./config にtest.confができているのでそれをクライアント側にダウンロードする.
クライアント側PCに[WireGuard][WireGuard]をインストール

[WireGuard]:https://www.wireguard.com/install/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/7c69a700-cfed-76a6-55ec-d37427c258bf.png)

Add Tunnelからtest.confを選択しActivateを押すと接続できる.


-qrでQRコードをコマンドライン上で表示してくれるため,スマホからVPNしたい場合は活用できる.
``` shell-session
test1@test1:~ $ pivpn -qr
::  Client list  ::
1) test
Please enter the Index/Name of the Client to show: 1
::: Showing client test below
=====================================================================
```


# pyenvをインストール

必要らしいパッケージをインストール(本当に必要かはわからん)

```terminal
sudo apt install build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev \
  libreadline-dev libsqlite3-dev libopencv-dev tk-dev git
```

Git Hubよりクローン
```terminal
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
```

`.bashrc`にpyenvの情報を追記

```terminal
echo '' >> ~/.bashrc
```
```terminal
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
```
```terminal
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
```
```terminal
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
```
```terminal
source ~/.bashrc
```

もろもろ確認&インストール

```terminal
pyenv -v
```

```terminal
pyenv install 3.10
```

```terminal
pyenv global 3.10
```

```terminal
pyenv local 3.10
```

```terminal
pyenv versions
```

https://zenn.dev/hr0t15/articles/8ae3564bde2cce

# NAS化
⇓以下の様に外付けHDD等をsambaで共有する

![109520.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/3620b92c-5a85-ab9a-26c4-f7d38f45a24e.jpeg)

USB接続できているか確認

```terminal
sudo fdisk -l
```
`Disk /dev/sda: 5.46 TiB, 6001175126016 bytes, 11721045168 sectors`のような感じで新しく接続したデバイスの容量が認識できているか確認

必要ならフォーマットを行う
```
sudo mkfs.ext4 /dev/sdb1
```

`UUID`の確認

```terminal
sudo blkid
```

確認したデバイスの`UUID`をどこかにメモっておく



マウントしたい場所にフォルダを作る
例として`/mnt/main`フォルダを作る(mainは適宜変える)

```terminal
sudo mkdir /mnt/main/
```

権限を渡す

```terminal
sudo chmod 777 /mnt/main/
```

sambaのインストール

```terminal
sudo apt install samba
```

smb.confの設定

```terminal
sudo vi /etc/samba/smb.conf
```

以下を末尾に加える(※username等は適宜書き換える※)
```conf
[main] # 表示される名前
   comment = main
   path = /mnt/main/
   force user = username
   guest ok = no
   create mask = 0777
   directory mask = 0777
   read only = no
   writable = yes
   browsable = yes
   public = no
```

パスワードの設定
```terminal
sudo smbpasswd -a ユーザー名
```

自動マウント設定

```terminal
sudo vi /etc/fstab
```

以下を末尾に加える(さっきメモった`UUID`を`UUID=`の後ろにコピペ)

```conf
UUID=117c7329-80df-4ee0-913d-1076b1b00715 /mnt/main ext4 defaults,nofail 0 2
```

port開放
```terminal
sudo ufw allow 445
sudo ufw allow 139
```

再起動
```terminal
sudo reboot
```

samba再起動&有効化
```terminal
sudo systemctl restart smbd
```

```terminal
sudo systemctl enable smbd
```

Windowsからアクセス
エクスプローラーを開いて黄色で囲んでいるところをクリックして`Add a network location`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/8c5d2383-c96a-a747-c45a-f30fd0260cd3.png)

テキトーにNextを選択していって

![スクリーンショット 2024-05-12 225407.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/85555c88-7555-3d56-763b-968a6fb247b7.png)

この画面になったら`\\ipアドレス\main`を入力

接続できたらNextをクリックして接続完了