シングルボードコンピュータのKHADAS VIM1Sを買ってLinuxが増えてきたのでローカルサービスのリンクをまとめたページを作っていきます。
それと、ラズパイやJetson nanoってたまにWifiが切断されたり重い動作をさせておくとフリーズするので、アクセスできなくなったら手動で再起動しなきゃいけないのでたまに監視する必要があるんですよねぇ、
そこでファイルサーバーとして使っているBMAX B3+(←レビュー)にDocker Desktopをインストールその中にnetdata、Ping、Dashyの便利なコンテナを追加して、ローカルエリア内でタブレットやスマホからも自作ツールや自作のWebサイトが見えるように設定していきます。
Jetson nanoのDashy ローカルサービスのリンク集完成の図↑、こちら↓はWindows11のDashyで作った各サーバーの生存確認ページ。
Windows用のDocker Desktopインストール
まずはDocker Desktopをインストール・設定していきます。
Linux用Windowsサブシステムと仮想マシンプラットフォーム
まず最初に確認としてLinux用Windowsサブシステムと仮想マシンプラットフォームがオンになっているかチェックしましょう。
たしかWindows11はWSL入ってた?と思いますが、無ければPowerShellで「wsl –install」を実行してWSLもインストールしましょう。
docker ダウンロード
こちらからWindows用のDocker Desktopをダウンロードできる。LinuxやAppleもあります。
ダウンロードしたらインストーラを起動して、適当にOKボタンを押していけば使えるようになる。
質問事項はコレだけ、あとはインストールしていってできたら再起動。
再起動すると自動的にDocker Desktopが起動するようになる。
WSLをアップデート
初回はうまく起動できなかった。
どうやらWSLが古いようでアップデートしろとのこと。
以下のようにPowerShellを右クリックして管理者として起動してコマンドを実行する。
wsl --update
これでDocker Desktopが起動するようになりました。
最初のチュートリアル
とりあえずチュートリアルをやったら以下の2つのコンテナが入りました。
いらない場合はコンテナの右側にあるゴミ箱アイコンをクリックすれば気軽に削除できます。
気軽に削除できるので、重要なコンテナを間違えて削除しないかちょっと心配。
コンテナの動作確認
チュートリアルを起動させてDockerが正常に動くか確認してみましょう。
docker-tutorial↑を起動して、ブラウザからlocalhostにアクセスすると以下↓のようなDockerが用意したWebページにアクセスできる。
Dockerはかなり簡単にWebサーバーやサービスを立てることができて便利ですね。
コマンド
Dockerのコマンドをいくつかメモとして書いておきます。
Linuxのシェルでコンテナ内のディレクトリにアクセス
Windows ではなくLinuxのCUIでDockerのコンテナ内にアクセスする方法です。
bashだとJetson nanoは『OCI runtime exec failed: exec failed: unable to start container process: exec: “/bin/bash”: stat /bin/bash: no such file or directory: unknown』と言われてログインできなかったのでshにした。(Raspberry PiはbashでもOKだった。)
docker exec -it [コンテナIDか名前] /bin/sh
例 docker exec -it df636d5479e1 /bin/sh
/app
例はDashyにログインした場合、Dashyは/appに入るのでpublicディレクトリに進むと設定ファイルconf.ymlがある。
a9813717b1940 はコンテナID
docker exec -it a9813717b1940 /bin/sh
bashだと無いと言われエラーになった。
OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
これでLinuxの基本的なコマンド[ls][pwd][cd]などが使える。
PowerShellとかを使わなくてもDocker DesktopではName(例はmystifying_kowalevski)クリックしてTerminalを選ぶ↓とコマンド打てるようになる。
コンテナ確認
docker ps #動いているコンテナのみ表示
docker ps -a #停止コンテナ
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
937f424a2789 hello-world "/hello" 17 minutes ago Exited (0) 17 minutes ago youthful_swirles
コンテナ一覧
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9813717b194 lissy93/dashy "docker-entrypoint.s…" 2 days ago Up 2 days (healthy) 0.0.0.0:8080->80/tcp mystifying_kowalevski
コンテナ 開始・停止
docker stop [コンテナ名]
docker stop netdata #例
docker start [CONTAINER ID]
コンテナ削除
コマンドで削除しなくてもDocker Desktopではゴミ箱アイコンを押せばできますが、一応書いておきます。
docker rm [CONTAINER ID]
docker rm 937f424a2789 #例
消えない場合?docker rm -f [CONTAINER ID]を使う。
コンテナ情報
後ほど説明するDashyコンテナはappディレクトリ内にあります。
docker inspect a9813717b194
[
{
"Id": "a9813717b1940abf2195cd4360c48c337fd5412851f124e28f62c7ffd78606ad",
"Created": "2023-02-06T07:52:08.420291799Z",
"Path": "docker-entrypoint.sh",
"Args": [
"yarn",
"start"
],
・・・省略
"Mounts": [],
"Config": {
"Hostname": "a9813717b194",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=16.13.2",
"YARN_VERSION=1.22.15",
"PORT=80",
"DIRECTORY=/app",
"IS_DOCKER=true"
],
・・・省略
Dashyを使ってローカルのサイトやアプリに簡単アクセス
ローカル用に作成したサイトやアプリはブラウザのブックマークしてありますが、ごちゃごちゃしていてタブレットやスマホからアクセスする場合には不便なので、リンクのWebページを作って視覚的に見えるようにするツールがDashy。
ローカルでなくてもブックマーク代わりにお好みのWebサイトをアイコン付きでリンクするのも楽しいですね。
こんな感じでローカルのWebサービスのリンク↑を視覚的に整理できるところが素敵。
テーマも気軽に変更可能↓
10種類くらいのテーマで見た目をすぐに変えられて、レイアウトも変更できるのでかなり視覚的に便利に整理できるところがスゴイ。
あと、Widgets(ウィジェット)も豊富にあってPingやnetdataをDockerからインストールしておけばWebページでサーバーの生存確認もできるのも便利なところ。(後ほど説明していきます。)
ダウンロード
まずはdashyのDockerコンテナをインストールしていきましょう。
docker run -p 8080:80 lissy93/dashy
8080:80の左側の外側から見るポートは8080で、Docker内のポートは80になるようです。
上記のようになればインストール完了。
http://localhost:8080 アクセス
今回はSSLは入れてないのでhttpsではなくhttpでアクセスします。
「http://localhost:8080」こちらにアクセス↓します。
常時起動
Windowsを起動した時に自動で起動するようにします。
docker update --restart=always mystifying_kowalevski
好みのテーマに変更する
気分によってテーマや2段組や列表示のレイアウトも変更可能。
編集は右上の鉛筆アイコンで視覚的に編集(sectionsのitemsみしか編集できない)でき、スパナアイコンの構成の編集からWidgetsなども編集可能。
conf.ymlファイルを直接編集することも可能です。
Sub Pagesリンク
ページの右上のほうにテキストだけのリンクを表示する時はconf.ymlファイルのpagesを直接編集するとよさそう。
/app/publicのconf.ymlを編集でpagesを編集するとリンク表示される。
右上に文字とリンクが表示される。↓(GitHubとDocumentationのリンクは最初からある。)
追加で↓試しにリンクを入れてみた。
保存
スパナアイコンや鉛筆アイコンから編集したら「Save to Disk」を押して保存します。
保存はそれ以外にもymlファイルに保存も可能で他のDachyに設定ファイルを同じように使いたい場合に便利。
Dachyのアイコンを選ぶ
Dachyにアイコンを表示させるとかなり楽しくなります。
ダッシュボードアイコンは選ぶだけ
アイコンは選ぶだけのものもあって使いやすい。
例えば3Dプリンターを操作するoctoprintのアイコンは「hl-octoprint」とIconの欄に入力するだけでアンコンが表示されます。
その他のアイコンは↓こちらのページに250個ほどありますので、メジャーなローカルサービス関係のアイコンはほとんどありそう。
絵文字
絵文字は使ったことないのでちょっと分かりませんが、こちらから取得できそう。
画像ファイルをdockerにコピー
アイコンが無い場合はWebで表示されているアイコンを使うか、アイコンをアップロードする必要があります。
ここではDockerにアイコンをアップロードする方法を紹介します。
Dockerの構造をまだ理解していないので、このDashyコンテナだけの話になりそうですが、Webでアクセスできるファイルのパスが「app/pubulic」内に画像ファイルを置けばよさそう。
まずは画像の置いてあるフォルダを右クリックしてシェルかPowerShellを開く。
シェルで以下のようにしてDashy内のWebからアクセスできる場所に画像ファイルを置く。
docker cp miwifi.png mystifying_kowalevski:/app/public/miwifi.png
以上で「http://192.168.31.232:8080/miwifi.png」にアクセスすると画像が表示するようになりました。
icoファイルを調べる
Webブラウザのタブ部分に表示されているicoファイルも取得可能。
[get Code]を押すとアイコンが表示され、右クリックでダウンロードする。
アイコンがあるとやはい見た目がよくなって楽しいですね。
Dashy対応のWidgets
Dashyが対応しているウィジェットはかなり多数のWebサービスがありますので、お好みのものが見つかるでしょう。
Widgetsは鉛筆アイコンの視覚的な編集は不可で、スパナアイコンの「構成の更新」ボタンを押します。
以下のようにツリーモードかテキストエディタで編集するしかない。
Widgetsは以下のページにたくさん紹介されていますので、お好みを追加してみてください。
簡単なところでいうと、時計表示や天気予報ですね。
いくつか自分が使っているWidgetsを紹介します。
Dockerでnetdataを使う
netdataはインストールしただけでサーバーの状態を詳細にグラフにして表示してくれる超便利なツール。
シングルボードコンピュータ(SBC)のLinuxが増えてきたので各SBCにnetdataを入れて生存確認しています。
ただ、Influxdbのように長期のデータ保存は苦手なのでゆくゆくデータを間引きしてInfuluxdbに送って長期保存できるようにします。
こちらの公式サイトを参考にしてDockerに導入していきます。
インストール&起動
Linuxの場合は以下をコピペすればインストール・起動可能。
docker run -d --name=netdata \
-p 19999:19999 \
-v netdataconfig:/etc/netdata \
-v netdatalib:/var/lib/netdata \
-v netdatacache:/var/cache/netdata \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /etc/os-release:/host/etc/os-release:ro \
--restart unless-stopped \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata
Linuxのシェルだと上記のようにしてインストールしますが、WindowsのPowerShellだと改行があってうまくいかないので1行にした。
docker run -d --name=netdata -p 19999:19999 -v netdataconfig:/etc/netdata -v netdatalib:/var/lib/netdata -v netdatacache:/var/cache/netdata -v /etc/passwd:/host/etc/passwd:ro -v /etc/group:/host/etc/group:ro -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /etc/os-release:/host/etc/os-release:ro --restart unless-stopped --cap-add SYS_PTRACE --security-opt apparmor=unconfined netdata/netdata
起動しただけで↓このようなCPUやメモリ・Netなどのサーバーの詳細データをリアルタイムに取得・表示してくれる。
これの一部をDashyに表示させます。
StatPingでSBCの生存確認
続いてPingを使ってシングルボードコンピュータ(SBC)の生存確認をしていきます。
Port8080はDashyが使っているのでホストのポートのみ8081にします。
docker run -p <ホストのポート>:<コンテナ内のポート> <イメージ名>
docker run -it -p 8081:8080 statping/statping
初期設定
初期設定が必要でStatPingのページにアクセスして設定します。
http://192.168.31.204:8081などにアクセス
以下のようなページが表示されるので設定していきます。
言語・ドメイン・ユーザ名・パスワード、あとは適当に。
常時起動
PowerShellで以下を実行する。Dockerでインストールすると適当な名前が付けられて全部名前が違うので「docker ps -a」でStatpingの名前を調べて実行する。
#Windows11のDockerは以下
docker update --restart=always cool_solomon
#Khadas VIM1Sの場合
docker update --restart=always amazing_kowalevski
#ラズパイのOptopiの場合
docker update --restart=always vigilant_raman
#Jetson nanoの場合
docker update --restart=always kind_borg
DashyでnetdataとStatPingを表示
以下のように設定したら
今のところ、サーバーがおかしくなったらメールなどで連絡が来るようにしていないので、このページ↓を見ないと各サーバーが動いているのか確認できないところが・・・役に立たないとも言う・・
Pingは接続が不安定でサーバーは生きてる時でも「error occured」の表示になる時もある。
マルチページはうまくいかなかった
ウィジェットとは関係ないのですが、Dashyはマルチページも対応していて、ymlファイルを/app/publicに置けばよさそうですが??↓以下のページで説明されています。
pages:
- name: server page
path: 'server.yml'
上記のように追加してみましたが何故かリンクが「http://192.168.31.232/home/server-page」になってしまいアクセスできなかった。
「http://192.168.31.232/server.yml」にアクセスしてもダメ。
フォーラムを覗いたらどうやら他の人もエラーになってるようなので諦める。
なのでBMAX B3+のWindows11とJetson nanoにDashyをインストールして2つのページに分けた。
ローカルにPCやSBCが増えてきている方はDashyやDockerを使って整理・遊んでみてくださいね。
コメント