Synology DiskStation DS215jにSpring bootアプリをデプロイ

はじめに

自宅で常時稼働しているSynologyのDS215jに先日構築した'roomba_client'をデプロイし、
ネットワーク上の各デバイスからいつでも簡単にルンバを操作できるようにしました。

hiroki-sawano.hatenablog.com

環境

DS215jにSSH接続

DS215jにSSH接続するためには設定を変更する必要があります。
Control Panelで右上の「Advance Mode」を押下します。

f:id:hiroki-sawano:20180106043316p:plain

遷移先の画面で「Terminal & SNMP」を選択します。 f:id:hiroki-sawano:20180106043408p:plain

Enable SSH Serviceにチェックを入れ、Portにポート番号を指定します。 f:id:hiroki-sawano:20180106043430p:plain

以上で、ターミナル等からSSH接続が可能になります。

$ ssh <user_name>@<ds215j_ip_address> -p <port_number>

ビルド

DS215jにデプロイするSpring bootのFully Executable Jarを作成するため、
build.gradleに次の設定を追加し、gradle buildします。

build.gradle

springBoot {
  executable = true
}
$ gradle build

デプロイとサービス登録

DS215にビルドしたroomba_client.jarを配置します。

$ ls <deploy_destination>
roomba_client.jar

Upstartでサービスを管理するため/etc/initにroomba-client.confを作成します。
これでroomba-clientがdaemon化され、システム起動時に自動で立ち上がるようになりました。 /etc/init/roomba-client.conf

description "roomba_client daemon"
author "Hiroki Sawano <hiroki.sawano.2512@gmail.com>"
start on runlevel [2345]
stop on runlevel [016]
respawn # attempt service restart if stops abruptly
exec <java_installation_path>/java -jar <deploy_destination>/roomba_client.jar

動作確認

roomba-clientを起動します。 ここでは手動で起動しています。

$ initctl list | grep roomba-client
roomba-client stop/waiting
$ sudo start roomba-client
roomba-client start/running, process 11518
$ sudo tail -f /var/log/upstart/roomba-client.log
…
…jp.gr.java_conf.hs.roomba.client.Roomba  : Connected to Roomba
…
…j.g.j.hs.roomba.client.RoombaClient      : Started RoombaClient in 67.775 seconds (JVM running for 71.916)

Webブラウザからアプリケーション(<ds215j_ip_address>:8080)にアクセスすると正常起動していることが確認できます。

f:id:hiroki-sawano:20171203174800p:plain