トップページ

setup & config

セットアップ&コンフィグレーション

Git clone と .env 編集、Docker Compose の起動、初期ログイン、REST トークン取得までを手順化しています。不要な手順やヒントは含めず、実施すべき操作だけを掲載しています。

セットアップの流れ

  1. リポジトリ取得
    git clone https://github.com/taqq505/mmam-docker.git
    cd mmam-docker
  2. .env 作成と編集
    cp .env.example .env
    # POSTGRES_PASSWORD, SECRET_KEY, MQTT, ポート番号などを任意値へ更新
  3. Docker Compose 起動
    docker compose up --build -d
    # mmam / ui / db / mqtt の4サービスが起動する
    docker compose ps
    # STATUS 列が "Up" であることを確認
  4. ログ確認(任意)
    docker compose logs -f mmam

    TLS 証明書が存在しない場合は scripts/entrypoint-mmam.shCERT_* で指定した情報を用いて自己署名証明書を生成します。

.env 設定と意味

以下では .env の主要項目を説明します。値を変更した場合は再起動が必要です。

アプリケーション / DB

キー 既定値 内容
POSTGRES_USER / PASSWORD / DBmmam / secret / mmamDB の認証情報です。db コンテナと API が共有します。
DB_HOST / DB_PORTdb / 5432FastAPI から PostgreSQL へ接続するホストとポートです。
SECRET_KEYsupersecretJWT 署名キーです。login エンドポイントで発行されるトークンが利用します。
INIT_ADMINtrue最初の起動時に admin / admin を自動作成します。
DISABLE_AUTHfalsetrue にすると REST API の JWT 認証を無効化します。
LOG_DIR / LOG_LEVEL/log / INFOAPI ログの保存先とレベルを指定します。ディレクトリが無い場合は自動生成します。

ネットワーク / 証明書

キー 既定値 内容
HTTPS_ENABLEDtrueAPI と UI の HTTPS を有効化します。false でも HTTP 8080/4173 は起動します。
HTTP_PORT / HTTPS_PORT8080 / 8443FastAPI の待ち受けポートです。両ポートが同時に開くため、未使用のポートは OS ファイアウォールで閉塞してください。
UI_HTTP_PORT / UI_HTTPS_PORT4173 / 4174Vue UI (nginx) の待ち受けポートです。
CERT_FILE / KEY_FILE / CA_FILE/certs/server.crt などAPI/UI が読み込む証明書です。存在しない場合は自己署名を生成します。
CERT_CN / CERT_SANS / CERT_DAYSlocalhost / DNS:localhost... / 3650自己署名証明書を生成するときの情報です。

MQTT / リアルタイム更新

キー 既定値 内容
MQTT_ENABLEDtrueFlow 更新を mmam/flows/events に publish します。
MQTT_HOST / MQTT_PORTmqtt / 1883API からブローカーに接続する宛先です。
MQTT_WS_URLws://localhost:9001UI が WebSocket で購読する URL です。
MQTT_CLIENT_ID / MQTT_WS_CLIENT_IDmmam-api / mmam-uiAPI と UI 用のクライアント ID です。

起動確認

UI ログイン

  1. ブラウザで http://localhost:4173 もしくは https://localhost:4174 へアクセスします。
  2. 初期ユーザー admin / admin でサインインします。
  3. ユーザー設定メニューからパスワードをすぐに変更します。

INIT_ADMIN=false の場合は scripts/create_admin.py などで手動作成してください。

REST トークン取得

curl -k -X POST https://localhost:8443/api/login \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d 'username=admin&password=admin'
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "token_type": "bearer"
}
curl -k https://localhost:8443/api/health \
  -H "Authorization: Bearer <access_token>"

`{"status":"ok"}` が返れば API への認証付きアクセスが確認済み。