家族写真のバックアップ用にNASを買いました。
このNASに付属するユーティリティでdocker-composeによるアプリケーションの実行が可能と分かったので、以前から試してみたいと思っていたCloudlogをLAN内で実行するべく環境を整えました。
Cloudlogとは
アマチュア無線のログ管理ソフトCloudlogはOSSで開発されています。PHP&MySQLで構築されているWebアプリケーションなので自分でホスティングすることで自分や自分のチーム向けにログ管理スペースを提供できます。
WebアプリケーションなのでOSや環境を問わず利用可能ですし、ホスティングする環境次第ではインターネット上のどこからでもアクセス可能です。
今回、このサービスをNAS上で実行してLAN内からアクセス可能な状態としました。
Dockerを使おう
Cloudlogのインストールガイドを見るとApacheやPHP、MySQLの準備が必要なようです。ただNASに様々なソフトをインストールして環境を作ると今後遊ぶときに支障が出そうです。
Cloudlogのリポジトリを見ると、Dockerfileやdocker-compose.ymlが最初から用意されていてDockerよるコンテナの実行を想定しているようです。
ただし開発環境用という位置づけのようでサービスとして実行するためにはいくつか追加のステップが必要でした。
index.php
実行時に開発環境かどうかでデバッグ用メッセージの表示をしています。出ていても支障は無いですが、邪魔なので消します。
#define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); - define('ENVIRONMENT', 'development'); + #define('ENVIRONMENT', 'development'); + define('ENVIRONMENT', 'production');
docker-compose.yml
デフォルトで80番のポートを公開していますがNASで実行させる場合ポートが競合するため変更します。
ports: - - "80:80" + - "8080:80"
.env
Dockerで実行する際、envファイルを用意します。envファイル内のホスト名がアプリケーション内部で使われるため、適切に設定が必要です。sampleファイルなどを参考にしつつ以下のようにしました。
MYSQL_ROOT_PASSWORD=***** MYSQL_DATABASE=cloudlog MYSQL_USER=cloudlog MYSQL_PASSWORD=***** MYSQL_HOST=db MYSQL_PORT=3306 BASE_LOCATOR=PM95GO WEBSITE_URL=http://192.168.1.156:8080 # 実行するホスト名 DIRECTORY=/var/www/html
セットアップ
Dockerで起動した場合、/install
にアクセスしてセットアップする手順は不要です。デフォルトでユーザー名m0abc
、パスワードdemo
のアカウントがセットアップされているのでログインしてメインで使う管理用アカウントを作成します。その後、管理用アカウントでログインしてからm0abc
を削除します。
Station LocationsとStation Logbooksを作成してログを記録できるようにします。
Log4OM2と連携
私がWindowsでメインで使っているログ管理ソフトのLog4OM2は2024年春のアップデートでCloudlogと連携可能となりました。Log4OM2上でログを保存すると自動的にCloudlogにログを送信します。
Cloudlogの管理者アカウントでAPI Keys
メニューからAPI Keyを発行してLog4OM2上で以下のように設定します。
- Cloudlog instance address:
<cloudlogのホスト>/index.php/api/qso
- Cloudlog API key: 払い出したAPI key
- Cloudlog Station ID: Log4OM2で記録したログを転送したい先のStation ID
Cloudlogを使った感想
Web上で動作するのでマルチプラットフォームによるアクセスができる点が良いです。私が使うPCは時と場合によってWindowsだったりMacだったり様々なのでログがプラットフォームに依存していると管理が面倒くさいなあと思っていました。とりあえずCloudlogに記録しておいて必要に応じてADIFをエクスポート、ローカルのソフトにインポートするなど管理が可能です。当面はLog4OM2での管理を主とし、じわじわとCloudlogに移動したいなあと思っています。
また、eQSLの連携も良いです。Station LocationsとeQSLのプロフィールを1対1で紐づけることで受信したカードを一括でダウンロードできます。eQSLのWebページの場合、いちいちプロフィールごとにログインが必須で面倒でした。
一方、PHP&MySQLという構成に若干のレガシーさを覚えましたがその辺りはアマチュア無線界隈だなぁという感じです。UIのデザインなんかは思った以上に今風でしたが。