コンテンツにスキップ

Synology Container Topology

Purpose

この文書は、Synology 上で常時運用される AEGIS container 群の topology を整理する。 焦点は「どの container がどの network に属し、どの volume を source of truth として読むか」である。

Topology summary

  • 共有公開面は aegis-shared-net に集約される。
  • stack ごとの isolation は compose default network に残る。
  • 例外は aegis-lt-ibkr-quote-collectorhost network で、gateway と localhost API を共有する。
flowchart TB
    subgraph Shared["aegis-shared-net (bridge)"]
        WFT["aegis-wft"]
        Quote["aegis-quote-collector"]
        Token["aegis-token-keeper-live"]
        Dash["aegis-dashboard"]
        Cloud["aegis-cloudflared"]
        Monitor["aegis-monitor"]
    end

    subgraph LT["lt-rust-docker_default"]
        LTRust["aegis-lt-rust"]
        LTParity["aegis-lt-parity"]
        LTValidator["aegis-lt-validator"]
        LTScan["aegis-lt-scan-cycle"]
        LTToken["aegis-lt-token-keeper"]
        LTQuote["aegis-lt-quote-collector"]
        LTLdas["aegis-lt-ldas-intraday / eod"]
        IBKRGw["aegis-lt-ibkr-gateway"]
    end

    subgraph Host["host network"]
        IBKRQC["aegis-lt-ibkr-quote-collector"]
    end

    subgraph LDAS["ldas-standalone_default / ldas-main_default"]
        LDASMain["aegis-ldas"]
        Poly["aegis-polygon-quotes"]
    end

    WFT --> Dash
    Quote --> Dash
    Token --> WFT
    LTScan --> LTParity
    LTScan --> LTValidator
    IBKRGw --> IBKRQC

Shared bridge

aegis-shared-net192.168.224.0/20 の external bridge で、cross-stack connectivity の中心である。 2026-04-12 時点の attached set は以下。

  • aegis-cloudflared
  • aegis-dashboard
  • aegis-quote-collector
  • aegis-token-keeper-live
  • aegis-wft

aegis-monitor も compose 定義上この shared bridge を使う。

Container x network x volume

Container Network family Key volumes / mounts Purpose
aegis-wft aegis-shared-net + PT stack default /volume1/aegis/tokens, /volume1/aegis/wft_state, repo/config mounts Python PT main lane
aegis-quote-collector aegis-shared-net + PT stack default /volume1/aegis/tokens, /volume1/aegis/quote_samples Python live quote collection
aegis-token-keeper-live aegis-shared-net + PT stack default /volume1/aegis/tokens canonical Saxo token refresh
aegis-dashboard aegis-shared-net + dashboard default dashboard app mounts operator UI
aegis-cloudflared aegis-shared-net + dashboard default none significant public ingress tunnel
aegis-monitor aegis-shared-net + monitor default monitor config/log mounts SMS/Slack monitoring
aegis-lt-rust lt-rust-docker_default /volume1/aegis/tokens:ro, /volume1/aegis/wft_state, configs Rust shadow summary
aegis-lt-parity lt-rust-docker_default /volume1/aegis/wft_state, configs parity / diff lane
aegis-lt-validator lt-rust-docker_default /volume1/aegis/wft_state, configs cutover validation
aegis-lt-scan-cycle lt-rust-docker_default /volume1/aegis/tokens:ro, /volume1/aegis/wft_state/lt_rust, configs Rust multi-scenario scan runner
aegis-lt-token-keeper lt-rust-docker_default /volume1/aegis/tokens:rw, configs Rust token keeper
aegis-lt-quote-collector lt-rust-docker_default /volume1/aegis/tokens:ro, /volume1/aegis/quote_samples_rust, configs, reports Rust quote collector
aegis-lt-ldas-intraday lt-rust-docker_default /volume1/aegis/live_data_archive_rust, configs Rust LDAS intraday
aegis-lt-ldas-eod lt-rust-docker_default /volume1/aegis/live_data_archive_rust, configs Rust LDAS EOD one-shot
aegis-lt-ibkr-gateway lt-rust-docker_default credential env via host .env IBeam / Client Portal gateway
aegis-lt-ibkr-quote-collector host /volume1/aegis/quote_samples_rust IBKR shadow quote sampling
aegis-ldas ldas-main_default archive/output mounts legacy Python LDAS
aegis-polygon-quotes ldas-standalone_default /volume1/aegis/polygon_v2, quotes logs Polygon enrichment

Design reading

Public / operator surface

  • PT, dashboard, monitor, and tunnel share a common bridge because they must reach each other across compose roots.
  • この shared bridge があるため、dashboard 系 deploy は PT stack を直接いじらずに連携できる。

Rust migration surface

  • LT Rust lane は原則として own default bridge に閉じる。
  • shared state integration は network 経由ではなく host volume contract で行う。
  • これにより Python PT と Rust sidecars の failure domain を分けやすい。

IBKR exception

  • aegis-lt-ibkr-quote-collectorhost network で localhost port を直接使う。
  • Why: gateway container の API endpoint と quote collector の依存が密で、bridge 越し DNS より localhost binding を優先しているため。

Source references

  • AEGIS/aegis-docs/docs/operations/synology_container_inventory.md
  • AEGIS/WORK_LOG/2026-04-12_codex_docker_network_topology.md
  • aegis_v3/pt-docker/docker-compose.yml
  • aegis_v3/dashboard-docker/docker-compose.yml
  • aegis_v3/monitor-docker/docker-compose.yml
  • aegis_v3/ldas-standalone/docker-compose*.yml
  • aegis_v3/lt-rust-docker/docker-compose*.yml