😺

Eclipse Hawkbitのサーバを立てる

2023/11/16に公開

なぜ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://snapcraft.io/hawkbit

httpsで接続するには

hawkbitはインストールしたままではhttpsアクセスができません。方法として以下の2つが説明されています。

  • nginxでリバースプロキシを設定する
  • jksを用いるように設定を行う

jksを用いるにはapplication.propertiesに設定を記入すればよさそうですがどこに配置するかがよくわからず。。。nginxでリバースプロキシを使うのがよさそうです。

Dockerを使うと簡単に構成できそうです。

クライアントのサンプル

以下のようにサンプルがあります。

今回はインストールまで確認しました。
次回、細かな設定や動作を確認していきます。

Discussion