# Raspberry Pi 4 Note
## 設定 SSH 不用密碼登入
```shell
# local
ssh-copy-id -i ~/.ssh/id_rsa.pub pi@raspberrypi.local
```
:::spoiler
`ssh-copy-id` 做了以下事情:
1. 將你的公鑰(在這個例子中是 `id_rsa.pub`)複製到目標主機(這裡是 `raspberrypi.local`)的 `~/.ssh/authorized_keys` 文件中。
2. 設置適當的權限和所有權,確保只有用戶 `pi` 可以讀取和寫入這個文件。
如何撤銷:
1. SSH 登入到目標主機。
2. 打開 `~/.ssh/authorized_keys` 文件。
3. 找到和刪除與你的 `id_rsa.pub` 相對應的那一行。
:::
## 啟用 VNC
1. 執行 `sudo raspi-config`
2. 依序選擇 **3 Interface Options** → **I2 VNC** → **\<Yes\>**
### 為什麼沒辦法透過 RealVNC 連線了
在 [2023/10/09 發布的 Raspberry Pi OS Bookworm](
https://www.raspberrypi.com/news/bookworm-the-new-version-of-raspberry-pi-os/) 已遷移至 Wayland,預設改用 **wayvnc** 而非 RealVNC,因此客戶端必須改用 [TigerVNC](https://tigervnc.org/) 才可正常連線。
可以透過以下步驟切換回 X11:
1. 一樣執行 `sudo raspi-config`
2. 依序選擇 **6 Advanced Options** → **A6 Wayland** → **W1 X11**
3. 按照上面步驟再次啟用 VNC
即可繼續使用 RealVNC 連線
## 安裝常用工具
```shell
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo apt-get install vim -y
curl -s
https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest -y
```
## 在執行 `docker` 時不需要 `sudo`
將 user 加入 `docker` 群組
```
sudo gpasswd -a $USER docker
```
> https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
## 解決 Chromium 緩慢的問題
在 `/boot/cmdline.txt` **同一行**尾端新增 `video=HDMI-A-1:1600x1200@60D` 來強制開啟 hdmi mode。
```shell
sudo sed -i '1s/$/ video=HDMI-A-1:1600x1200@60D/' /boot/cmdline.txt
```
> https://forums.raspberrypi.com/viewtopic.php?t=337926#p2023407
## 從本機向遠端傳送檔案
```
# local
scp .env pi@raspberrypi.local:~/.watch-jks.env
```
## 手動執行 Docker 容器
```
docker run --pull=always --env-file ~/.watch-jks.env -- ngseke/watch-jks:latest
```
## 關於 systemd
新增並編輯 service 檔
```
sudo vim /etc/systemd/system/custom-app.service
```
重新載入 systemd 設定並啟用這個服務
```
sudo systemctl daemon-reload
sudo systemctl enable custom-app
```
也可以手動執行或停止
```
sudo systemctl start custom-app
sudo systemctl stop custom-app
```
查看狀態
```
sudo systemctl status custom-app
```
## 查看溫度
```shell
vcgencmd measure_temp
```
## 安裝 ZSH
https://hackmd.io/@xq/terminal
## 設定 DDNS(Dynu)
建立 `~/dynudns/dynu.sh`
```
vim ~/dynudns/dynu.sh
```
輸入內容
```sh
# ~/dynudns/dynu.sh
echo url="https://api.dynu.com/nic/update?hostname=HOST_NAME&username=USER_NAME&password=PASSWORD_HASHED_WITH_MD5" | curl -k -o ~/dynudns/dynu.log -K -
```
設定 cronjob 定時更新 IP 位置
```shell
crontab -e
# add following
*/5 * * * * sh /home/pi/dynudns/dynu.sh >/dev/null 2>&1
```
https://www.dynu.com/DynamicDNS/IPUpdateClient/RaspberryPi-Dynamic-DNS
## Minecraft Server
```shell
wget https://piston-data.mojang.com/v1/objects/5b868151bd02b41319f54c8d4061b8cae84e665c/server.jar
java -Xmx1024M -Xms1024M -jar server.jar nogui
```
> https://msmhq.com/docs/installation.html
> https://www.minecraft.net/zh-hant/download/server