sync: update from private repo (2336949a)
CI / build-and-test (push) Canceled after 0s

This commit is contained in:
oss-sync
2026-09-17 11:29:31 +00:00
parent 28f74c4e37
commit 57702b4f34
2139 changed files with 321270 additions and 17494 deletions
+85
View File
@@ -0,0 +1,85 @@
# ---------------------------------------------------------------------------
# MAESTRO + Caddy リバースプロキシ (Cloudflare DNS-01 でワイルドカード証明書)
#
# ベースの docker-compose.yml に重ねて使う。単体では動かない。
#
# cp .env.caddy.example .env.caddy # 編集して Cloudflare トークンを入れる
# docker cp maestro:/app/config.yaml ./config.yaml # 先に必ずやること (下記)
# docker compose -f docker-compose.yml -f docker-compose.caddy.yml up -d --build
#
# 重ねない (`docker compose up` のまま) 既定の構成は一切変わらない。
# 手順書: docs/operations/caddy-cloudflare-tls.html
#
# 必要な Docker Compose: v2.24 以上。これはベースファイルの env_file 記法
# (path: / required:) が要求する条件で、下の `!reset` 自体はそれより前の版から
# 使える。
# ---------------------------------------------------------------------------
services:
maestro:
# 前段に Caddy を置くので、MAESTRO 自身のポートはホストに出さない。
#
# profiles ではこれができない。ports は {ip, target, published, protocol}
# を一意キーとして「追記」されるだけで、別サービスの公開を取り消す手段が
# 無いため。`!reset` は重ねたファイルから元の値を消すための Compose の
# 仕組み。(`!override []` でも同じ結果になる)
ports: !reset []
volumes:
# config.yaml をホスト側に置く。これを重ねると maestro サービスの構成が
# 変わるのでコンテナが作り直され、イメージ内の config.yaml は初期状態に
# 戻る。プロキシ構成では auth.secure_cookie を書くのが必須なので、
# 書いた先が消えないようここで永続化する。
#
# 【重要】起動する前に、ホスト側の ./config.yaml を用意すること。
# 無いまま起動すると Docker が config.yaml という名前の「ディレクトリ」を
# 作る。MAESTRO はそれを読もうとして失敗するが、この失敗では止まらず、
# 認証設定を持たない状態で読み込まれる。パスワードを持つローカル管理者が
# いる環境と新規インストールは起動を拒否するが、OAuth だけの環境は
# 認証なしで起動してしまう。既に動いている環境なら重ねる前に
# docker cp maestro:/app/config.yaml ./config.yaml
# で取り出す。新規なら `config_version: 2` の 1 行だけのファイルでよい。
#
# 【OAuth を使っている場合はとくに注意】退避せずに起動すると認証設定ごと
# 消える。OAuth だけの環境では自動復旧が働かず、認証がかかっていない状態で
# 立ち上がる (エージェントは Bash を持つので実質的に遠隔からの任意コード
# 実行になる)。上のディレクトリ誤作成も同じ結末に行き着く。
#
# :ro を付けないこと。設定画面からの保存が書き込むため。コンテナ内の
# MAESTRO は node (UID 1000) で動くので、その UID から書ける所有者に
# しておくこと。
#
# ベースの docker-compose.yml で /app/config.yaml に別のホストパスを
# 渡している場合、この行が勝ってそちらの指定は黙って捨てられる。
# パスを揃えるか、この行を自分のパスに書き換えること。
- ./config.yaml:/app/config.yaml
caddy:
build:
context: ./deploy/caddy
dockerfile: Dockerfile
image: maestro-caddy:latest
container_name: maestro-caddy
restart: unless-stopped
depends_on:
- maestro
ports:
- "80:80" # HTTP→HTTPS リダイレクト用。DNS-01 なので発行には不要
- "443:443"
- "443:443/udp" # HTTP/3
# Cloudflare のトークンとホスト名はここだけに置く。ベースの .env は
# maestro サービスの env_file なので、そちらに書くとエージェントが
# 動くコンテナの環境変数に入ってしまう (Bash ツールから読める)。
env_file:
- .env.caddy
volumes:
- ./deploy/caddy/Caddyfile:/etc/caddy/Caddyfile:ro
# 取得済みの証明書と ACME アカウント鍵。消すと再発行になり、
# Let's Encrypt の発行回数制限に当たりうるので必ず永続化する。
- caddy-data:/data
- caddy-config:/config
volumes:
caddy-data:
driver: local
caddy-config:
driver: local