Eclipse Hawkbitのサーバを立てる
なぜHawkbitなのか?
Yocto LinuxやらFreeeRTOSやらの組み込み機器のOTAを行うときに、個々の機器によってOTAの仕組みを変えていたりして管理が面倒になったため、一元管理できないかと探していたところEclipse hawkbitにたどり着いたので試してみた次第です。
調べてみたら組み込みLinuxのOTAでよく使われるSWUpdateやRAUCも対応しているみたいだし、ESP32などもクライアントとして使えるようなので。
Eclipse hawkbitとは
Javaで書かれたデバイスのソフトウェアアップデートを管理するためのバックエンドシステムです。Springbootを使っているようです。Web GUIとRESTfull APIを持ち、GUIからの操作や、RESTfull APIを用いて管理の自動化などもできるそうです。
格安VPSで動かしてみる
WebARENA Indigo(https://web.arena.ne.jp/indigo/)の2番目にお安いインスタンス(1CPU/1GByte/20GB) で試してみます。本当はIPv6 Onlyだと税込み319円なのですが使っているプロバイダがIPv6が通らないという、まさかの事情でIPv4も使えるプランです。それでも税込み449円です。OSはubuntu 22.04を選択します。
インスタンスを作成し、SSH接続用の鍵を生成してインスタンスに接続できるようにします。
インストール方法
ubuntuでは以下の方法でインストールすることができます。
- snapを使う
- dockerを使う
- ソースからビルド
今回はsnapで試してみます。
snapを用いたインストール
作成したインスタンスにSSHで接続し、以下のコマンドを実行します。
sudo su -
apt update
apt upgrade
snap install hawkbit
これで自動的にhawkbitが起動します。インスタンスのIPアドレスにWebブラウザでアクセスし、ログイン画面が表示されれば正常に動作しています。
設定を変更する
snapコマンドを用いて以下の設定が行えます。
root@i-19100000530466:~# snap get -d hawkbit
{
"address": "0.0.0.0",
"password": "admin",
"port": 8080,
"username": "admin"
}
これを見てわかるように、snapコマンドではログインに使用するユーザー名、パスワード、接続先アドレス、ポート番号が指定できます。例えばパスワードを設定する場合、以下のようにコマンドを実行します。
snap set hawkbit password=...
参考リンク:
httpsで接続するには
hawkbitはインストールしたままではhttpsアクセスができません。方法として以下の2つが説明されています。
- nginxでリバースプロキシを設定する
- jksを用いるように設定を行う
jksを用いるにはapplication.propertiesに設定を記入すればよさそうですがどこに配置するかがよくわからず。。。nginxでリバースプロキシを使うのがよさそうです。
Dockerを使うと簡単に構成できそうです。
- nginxのリバースプロキシのdocker-composeファイルの例(https://github.com/eclipse/hawkbit/blob/master/hawkbit-runtime/.sandbox/stacks/proxy/docker-compose-stack.yml)
- hawkbitのdocker-composeファイルの例(https://github.com/eclipse/hawkbit/blob/master/hawkbit-runtime/.sandbox/stacks/sandbox/docker-compose-stack.yml)
クライアントのサンプル
以下のようにサンプルがあります。
-
ESP32+Arduino環境でのサンプル
https://github.com/ctron/eclipse-hawkbit-arduino-ota-client/tree/master -
RAUC+Yoctoでの参考例
https://mickey-happygolucky.hatenablog.com/entry/2023/01/09/143856
今回はインストールまで確認しました。
次回、細かな設定や動作を確認していきます。
Discussion