FastAPIレイヤー
8 つのルーターをモジュール化し、APScheduler がバックグラウンドジョブを統括します。
routers/flows.pyに REST PATCH と Checker API を集約しています。- NMOS 連携は
routers/nmos.pyとservices/nmosが担当します。 - ログは
LOG_DIR(既定では/log。権限が無い場合は./logsにフォールバック)配下のapi.logとaudit.logに保存します。
stack
Docker Compose が起動する各サービスの役割や接続経路、設定ファイルを把握できるようにまとめています。トラブル時の調査にも役立つ情報を含めています。
MMAM は 4 つのコンテナで構成されています。各サービスの役割と設定場所を以下の表にまとめています。
| サービス | 役割と保存先 | ポート / 備考 |
|---|---|---|
| mmam | FastAPI サービスです。REST エンドポイントや Scheduler、NMOS ツールを集約します。 | 8080 (HTTP) / 8443 (HTTPS) を待ち受けます。TLS 証明書は certs/ に保存します。 |
| ui | Vue 3 UI を nginx で配信します。frontend/dist を読み込みます。 |
4173 / 4174 を使用し、UI が API URL を自動判別します。 |
| db | PostgreSQL 16 です。flows や planner_buckets、scheduled_jobs(自動化設定)などを保存します。 | 5432 (内部) を利用します。永続化は ./pgdata に行います。 |
| mqtt | Mosquitto です。REST 更新を MQTT / MQTT-WS でブロードキャストします。 | 1883 / 9001 を使用します。無効化したい場合は MQTT_ENABLED=false に設定します。 |
HTTP(8080) と HTTPS(8443) は常に同時起動します。利用しないプロトコルがある場合は OS 側のファイアウォールで該当ポートを閉じてください。
8 つのルーターをモジュール化し、APScheduler がバックグラウンドジョブを統括します。
routers/flows.py に REST PATCH と Checker API を集約しています。routers/nmos.py と services/nmos が担当します。LOG_DIR(既定では /log。権限が無い場合は ./logs にフォールバック)配下の api.log と audit.log に保存します。schema.sql で初期化されるテーブル構造です。テキストハブ用フィールドは UTF-8 を前提にしています。
flows.alias_1-8 / user_field_1-8 がメモ領域です。planner_buckets は再帰 CTE で階層を取得します。docker exec db pg_dump mmam > backup.sql で取得します。各サービスがどのように連携して動作するかを順を追って説明します。
https://localhost:4174(または 4173)にアクセスすると、Vue 3 で構築された UI が表示されます。UI は API ベース URL を自動的に判別します。
certs/ ディレクトリで管理されています。
scheduled_jobs テーブルに保存され、Automation UI と /api/automation/summary から参照できます。
セキュリティのヒント: 本番環境では、UI→API 間を社内 CA の証明書で暗号化し、API→DB 間は Docker の内部ネットワークに閉じて外部からアクセスできないようにしてください。