経緯
以前から音楽再生用としてアンプの上に置き、LANのどこからでもアクセスして音楽を流すことが出来たRaspberry PiのSDカードが壊れたので、再構築。 swapを利用しない方法は他の方の記事を参照し、次は壊れないといいな…
ぱっと見Web上でRaspberry Piのデスクトップが操作できる感じになります。
ネット上に無数にPython環境やNodeJS環境をインスコする情報は転がっているが、なかなか最新のものが出てこないので備忘として。
2021年7月中旬~8月中旬 2022年6月末くらいの『最新』情報です。
用意するもの
- Raspberry Pi 4B 一式
- 64Bit版Raspberry Pi OSイメージ 今回は
21年5月22年4月 公開のもの
サーバー構築
1.microSDにRaspberryPiOSを焼き上げる。
今回はノーマル版だがLiteでやってもやることは同じ
sudo raspi-config
ホストネームでアクセスしたいので、ホストネームを「radiberrypi」にする。ラジオ再生用なので。
SSH有効化。
2.Pythonたくさん使いそうだからPyenv入れる。
sudo apt install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
~/.profileに
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
を追記し、PATH通す。
source ~/.profile
で再読み込み。
pyenv install --list
リストからなるべく最新に近いrcとdev以外のやつ
今回は3.10.5をインスコする。
pyenv install 3.10.5
結構時間かかる。心配しないように。
pyenv rehash
pyenv global 3.10.5
python --version
これでPython 3.10.5と表示されればOK
3.NodeJSを入れる。Python新しいのにしたし、これも新しめがいいな…
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install nodejs
でサクサクっと最新版。14.19.3が入った。
npmも勝手に入る。6.14.17が入ってた。
4.次にVNC、noVNCをインスコする。
Raspberry Pi OS標準のRealVNCを利用し、noVNC利用する。
noVNCを導入。aptだと若干古いバージョンをインスコしてしまうため、gitで直接持ってくる。
sudo git clone https://github.com/novnc/noVNC
websockifyは 出来上がった/noVNC/utilsの中 novnc_proxyを実行する際にはいっていないと勝手にインストールしてくれる。便利。
cd /ダウンロードした場所/noVNC/utils/
sudo ./novnc_proxy
一度起動して、Ctrl + C で終了する。
5.vncのパスワードを決定し、CERTを設定し、VNCを起動した後にnovnc_proxyを起動する。
vncpasswd
cd /etc/ssl
sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout novnc.pem -out novnc.pem -days 365
名前とかメアドとか組織名とか入力したりしなかったり
sudo chmod 644 novnc.pem
6.試しに起動
cd /ダウンロードした場所/noVNC/utils/
sudo ./novnc_proxy --cert /etc/ssl/novnc.pem
次に違う端末のWebブラウザで
https://[ラズパイのホスト名 or IPアドレス]:6080/vnc.html
今回はhttps://radiberrypi.local:6080/vnc.html
にアクセスし、VNCパスワードを入力したらWebブラウザ上でラズパイが動いているような感じに。
7.サービス化
novnc.shというファイルを作成
#!/bin/bash
sudo /home/shinshu/noVNC/utils/novnc_proxy --cert /etc/ssl/novnc.pem
sudo chmod 755 novnc.sh
で権限付け、
次に/etc/systemd/system/novnc.serviceを作成
[Unit]
Description=Run vnc and novnc
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/[novnc.sh保存した場所]
ExecStop=sudo vncserver -kill :1 && killall websockify
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
保存できたら、
sudo systemctl daemon-reload
sudo systemctl enable novnc.service
sudo systemctl start novnc.service
これでウェブブラウザから先程のリンクをクリックして無事に起動できているかどうかを確認する。
2022年6月末更新
pyenvの使い方完全にミスってたり
各所のバージョンが少し新しくなってたりしたので実際に試しながら復習しました。
ディスプレイあってもなくてもウェブブラウザ1つでアクセスしてリモートコントロールできるのは強みかと思います。
家中どこからでもラズパイを操作できます。