ð³ Docker Guide â OmniRoute (æ¥æ¬èª)
ã¯ã€ãã¯å®è¡
Section titled âã¯ã€ãã¯å®è¡â1ã€ã®ã³ãã³ãã§ã»ã«ããã¹ãããŸããïŒ ã»ã«ããã¹ãã¬ã€ããåç §ããŠãã ãã â
docker compose -f docker-compose.selfhost.yml up -dïŒå ¬éæžã¿ã€ã¡ãŒãž + Redisãã«ãŒãããã¯éå®ããããã¡ã€ã«éžæãªãïŒã以äžã®ã¯ã€ãã¯å®è¡ã¯ã ãã§ã«å¥ã®å Žæã§Redisãå®è¡ããŠãããŠãŒã¶ãŒåãã®ã·ã³ã°ã«ã³ã³ããæ§æã§ãã
docker run -d \ --name omniroute \ --restart unless-stopped \ --stop-timeout 40 \ -p 20128:20128 \ -v omniroute-data:/app/data \ diegosouzapw/omniroute:latestç°å¢ãã¡ã€ã«ã䜿çšããå Žå
Section titled âç°å¢ãã¡ã€ã«ã䜿çšããå Žåâ# ãŸã .env ãã³ããŒããŠç·šécp .env.example .env
docker run -d \ --name omniroute \ --restart unless-stopped \ --stop-timeout 40 \ --env-file .env \ -p 20128:20128 \ -v omniroute-data:/app/data \ diegosouzapw/omniroute:latestDocker Compose
Section titled âDocker Composeâ# ããŒã¹ãããã¡ã€ã«ïŒCLI ããŒã«ãªãïŒdocker compose --profile base up -d
# CLI ãããã¡ã€ã«ïŒClaude CodeãCodexãOpenClaw ãå
èµïŒdocker compose --profile cli up -d
# ãã¹ããããã¡ã€ã«ïŒLinux åªå
ããã¹ãã® CLI ãã€ããªãèªã¿åãå°çšã§ããŠã³ãïŒdocker compose --profile host up -d
# Web ãããã¡ã€ã«ïŒWeb ã»ãã·ã§ã³ãããã€ããŒåãã® Chromium/PlaywrightïŒdocker compose --profile web up -d
# CLI ãš CLIProxyAPI ãµã€ãã«ãŒãçµã¿åãããdocker compose --profile cli --profile cliproxyapi up -då©çšå¯èœãªãããã¡ã€ã«
Section titled âå©çšå¯èœãªãããã¡ã€ã«âOmniRoute ã«ã¯ãäž»èŠãªãããã€æ§æåãã® Compose ãããã¡ã€ã«ãçšæãããŠããŸããç°å¢ã«åã£ããã®ãéžæããŠãã ããã
| ãããã¡ã€ã« | ãµãŒãã¹ | 䜿çšããå Žé¢ | ã³ãã³ã |
|---|---|---|---|
baseïŒããã©ã«ãïŒ |
omniroute-base |
ãããã¬ã¹ãµãŒããŒïŒæå°ã©ã³ã¿ã€ã åãããããã€ã㌠CLI ã¯å«ãŸããŸãã | docker compose --profile base up -d |
cli |
omniroute-cli |
omniroute providers/setup/doctor ããã³å梱 CLIïŒCodexãClaude CodeãDroidãOpenClawïŒãåŒã³åºããšãŒãžã§ã³ãåã¯ãŒã¯ãããŒåã |
docker compose --profile cli up -d |
host |
omniroute-host |
~/.local/binã~/.codexã~/.claude ãªã©ãèªã¿åãå°çšã§ããŠã³ããããã¹ãã® CLI ãž network_mode ã®ããã«ã¢ã¯ã»ã¹ããå¿
èŠããã Linux ãã¹ãåã |
docker compose --profile host up -d |
cliproxyapi |
cliproxyapi |
ã¢ããã¹ããªãŒã CLI ã®ãããã·çšãšããŠãããŒã 8317 ã§ CLIProxyAPI ãµã€ãã«ãŒãå®è¡ããå Žå |
docker compose --profile cliproxyapi up -d |
web |
omniroute-web |
ãã©ãŠã¶ãŒãå¿
èŠãšãã Web ã»ãã·ã§ã³ãããã€ããŒåãïŒgemini-webãclaude-webãclaude-turnstileïŒrunner-web ããã«ãããChromium ãå«ãïŒ |
docker compose --profile web up -d |
è€æ°ã®ãããã¡ã€ã«ãçµã¿åãããããšãã§ããŸãïŒ
docker compose --profile cli --profile cliproxyapi up -dã
OmniRoute ã Docker ã§å®è¡ããéã®ãã¹ã CLI ããŒã«ã®èšå®
Section titled âOmniRoute ã Docker ã§å®è¡ããéã®ãã¹ã CLI ããŒã«ã®èšå®âomniroute setup-codexãsetup-claudeãconfig set <tool>ãããã³ããã·ã¥ããŒãã®
èšå®ãä¿åãã¿ã³ã¯ããããã ~/.codex/*.config.toml ã®ãããªãã¡ã€ã«ãæžã蟌ã¿ãŸãããããã®ãã¹ã
æå³ãæã€ã®ã¯ãCLI ãå®éã«åäœããŠãããã·ã³äžã ãã§ããã³ã³ããå
ã§å®è¡ãããšã
æžã蟌ã¿å
ã¯ã³ã³ããèªèº«ã®ããŒã ïŒ/home/node â
ã€ã¡ãŒãžã¯ USER node ã§å®è¡ãããŸãïŒã«ãªããŸãããã¹ãåŽã® CLI ããããèªã¿åãããšã¯ãªãã
ã³ã³ãããåäœæãããæç¹ã§ç Žæ£ãããŸãã
OmniRoute ã¯ãã®ç¶æ³ãæ€åºãã䜿çšã§ããªãæåçµæãå ±åãã代ããã«ã
æé ã瀺ããŠæžã蟌ã¿ãæåŠããŸããCLI ã¯çµäºã³ãŒã 2 ã§çµäºããAPI ã¯
containerEphemeralTarget: true ãå«ã 422 ãè¿ããŸãã
æšå¥š: CLI ã¯ãã¹ãã§ãOmniRoute 㯠Docker ã§å®è¡ãã
Section titled âæšå¥š: CLI ã¯ãã¹ãã§ãOmniRoute 㯠Docker ã§å®è¡ããâã³ã³ãã㯠API ãæäŸããCLI ã¯ãã¹ãäžã®ããŒã«ãèšå®ããŸãã
docker compose --profile base up -d
npm install -g omnirouteomniroute connect http://localhost:20128 # CLI ã®æ¥ç¶å
ãã³ã³ããã«èšå®omniroute setup-codex # ãã¹ãäžã®å®éã® ~/.codex ã«æžã蟌ãCodexãClaude CodeãCursorããŸãã¯åæ§ã®ããŒã«ãããŒã PC äžã§å®è¡ããå Žåã¯ã ãããé©åãªéžæã§ããéåžžã¯ãã®æ§æã«ãªããŸãã
ä»£æ¿ææ®µ: ãã¹ãã®èšå®ãã£ã¬ã¯ããªããã€ã³ãããŠã³ãããïŒhost ãããã¡ã€ã«ïŒ
Section titled âä»£æ¿ææ®µ: ãã¹ãã®èšå®ãã£ã¬ã¯ããªããã€ã³ãããŠã³ãããïŒhost ãããã¡ã€ã«ïŒâã³ã³ããèªäœãããã¹ãã®èšå®ãžæžã蟌ã¿ããå Žåã¯ã察象ã®
ãã£ã¬ã¯ããªãããŠã³ãããCLI_CONFIG_HOME ãããŠã³ãã®ã«ãŒããæãããã«ããŸããhost ãããã¡ã€ã«ã§ã¯
ãã§ã«ãã®èšå®ãè¡ãããŠããŸãã
environment: - CLI_CONFIG_HOME=/host-home - CLI_ALLOW_CONFIG_WRITES=truevolumes: - ~/.codex:/host-home/.codex:rw - ~/.claude:/host-home/.claude:rwãã€ã³ãããŠã³ãã«ãã£ãŠããã¹ãä¿¡é Œã§ãããã®ã«ãªããŸããOmniRoute ã¯
/proc/self/mountinfo ãèªã¿åããããŠã³ãæžã¿ã®ãã¹ïŒããã³åãã£ã¬ã¯ããªãããŠã³ããããŠãã
ãã£ã¬ã¯ããªãããã¯ãŸãã«äžèšã® /host-home ã®æ§é ã§ãïŒãžã®æžã蟌ã¿ãèš±å¯ããäžæ¹ã§ã
ããŠã³ããããŠããªããã¹ãžã®æžã蟌ã¿ã¯åŒãç¶ãæåŠããŸãã
åé¿ææ®µ: ã³ã³ããèªèº«ã® CLI ãèšå®ããïŒå¿ èŠãªå Žåã®ã¿äœ¿çšïŒ
Section titled âåé¿ææ®µ: ã³ã³ããèªèº«ã® CLI ãèšå®ããïŒå¿ èŠãªå Žåã®ã¿äœ¿çšïŒâCLI ãå®éã«ã³ã³ããå
ã«ååšããå ŽåïŒcli ãããã¡ã€ã«ïŒã¯ãæžã蟌ã¿ã¯
æå³ããããã®ã§ããä»»æã® setup-* ã³ãã³ãã« --allow-container-write ãæž¡ããã
ãµãŒããŒã«å¯Ÿã㊠OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE=true ãèšå®ããŸããæžã蟌ã¿ã¯ã
ã³ã³ããã®åäœæåŸã«ã¯ä¿æãããªããšããèŠåä»ãã§ç¶è¡ãããŸãã
ã»ãã¥ãªãã£èŠå â
cliãããã¡ã€ã«ãšdocker.sockã®ããŠã³ããcliãããã¡ã€ã«ã¯/var/run/docker.sockããã€ã³ãããŠã³ããããããã³ã³ããå ã® èªåã¢ããããŒã¿ãŒã¯ãã¹ãã®ããŒã¢ã³ã䜿çšããŠã¹ã¿ãã¯ãåäœæã§ããŸã ïŒsrc/lib/system/autoUpdate.tsã¯ãã®ãœã±ããã®ååšã確èªãã ååšããªãå Žå㯠Docker çµç±ã®åŠçãã¹ãããããŸãïŒããã®ãœã±ããã¯ãã¹ãã® root æš©éã«é¢ãã ä¿¡é Œå¢çã§ãããã®ãœã±ãããžã¢ã¯ã»ã¹ã§ãããã®ã¯ãã¹ãŠãroot ãšããŠãã¹ãã® Docker ããŒã¢ã³ã æäœã§ããŸããã€ãŸãããã¹ãäžã®ä»»æã®ã³ã³ãããäœæãæ€æ»ã忢ãåé€ã§ããŸãã ãã®åœ±é¿ã¯æ¬¡ã®ãšããã§ãã
cliãããã¡ã€ã«ã®ããŒãããããã¯ãŒã¯ã«å ¬éããªãã§ãã ããã127.0.0.1äžã§å ¬éããŠãã ããïŒports: "127.0.0.1:${DASHBOARD_PORT:-20128}:..."ïŒã LAN ããå°éå¯èœãªcliãããã¡ã€ã«ã§ã¯ãããã·ã¥ããŒãã¬ãã«ã® RCE ãçºçãããšã ãã¹ãå šäœã䟵害ãããŸãã- 远å ã®ãã¹ããã£ã¬ã¯ããªã
cliãããã¡ã€ã«ã«ãã€ã³ãããªãã§ãã ããã Docker ãœã±ãããšè¿œå ã®ããŠã³ããçµã¿åããããšãã³ã³ãããããã¡ã€ã«ã·ã¹ãã ãšãã¹ãèšå®ãž å®å šãªèªã¿æžããå¯èœã«ãªããŸããããŒã«ãããããžã§ã¯ããåç §ããå¿ èŠãããå Žåã¯ã CLI ãã€ããªã䜿çšããŠããŒã«ã«ã§å®è¡ããŠãã ãããcliã³ã³ãããžã¯ããŠã³ãããªãã§ãã ãããã³ã³ããå ã§ã®èªåæŽæ°ãäžèŠãªå Žåã¯ã
cliãããã¡ã€ã«ãç¡å¹ã®ãŸãŸã«ããŠãã ãã ïŒCOMPOSE_PROFILES=core,redisããŸãã¯ããçãæå®ïŒããã®ä»ã®ãããã¡ã€ã«ã§ã¯ Docker ãœã±ããã¯ããŠã³ããããŸãããMITM ã«é¢é£ããè åšã¢ãã«ã«ã€ããŠã¯
docs/security/MITM-TPROXY-DECRYPT.mdïŒgit äžã«ããã/docsã«ã¯çµã¿èŸŒãŸããŸããïŒããcodex/claude-code/droid/openclawãã€ããªã®åºæãã§ãŒã³ã«ã€ããŠã¯docs/security/SUPPLY_CHAIN.mdãåç §ããŠãã ããã
Redis ãµã€ãã«ãŒ
Section titled âRedis ãµã€ãã«ãŒâOmniRoute ã¯ã忣ã¬ãŒããªããã¿ãŒãšå
±æãã£ãã·ã¥ã®ããã¯ãšã³ããšã㊠Redis ã䜿çšããŸããredis ãµãŒãã¹ã¯ docker-compose.yml ã§åžžã«å®çŸ©ãããŠããïŒãããã¡ã€ã«ã«ããå¶éã¯ãããŸããïŒãä»ã®ã©ã®ãããã¡ã€ã«ãšãåæã«èµ·åããŸãã
| 詳现 | å€ |
|---|---|
| ã€ã¡ãŒãž | redis:7-alpine |
| ã³ã³ããå | omniroute-redis |
| å éšããŒã | 6379 |
| ãã¹ãããŒãïŒäžæžãïŒ | REDIS_PORTïŒããã©ã«ã㯠6379ïŒ |
| ãã¹ããã€ã³ãïŒäžæžãïŒ | REDIS_BIND_HOSTïŒããã©ã«ã㯠127.0.0.1ïŒ |
| ããªã¥ãŒã | omniroute-redis-data â /data |
| ãã«ã¹ãã§ã㯠| redis-cli pingïŒ10ç§ééïŒ |
é¢é£ããç°å¢å€æ°ïŒ
REDIS_URLâ ã¢ããªã«æ³šå ¥ãããæ¥ç¶æååïŒããã©ã«ãã¯redis://redis:6379ïŒãREDIS_PORTâ Redis ã³ã³ããã®ãã¹ãåŽããŒããããã³ã°ãREDIS_BIND_HOSTâ ããŒããå ¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ãããã©ã«ãã¯127.0.0.1ã
ããã©ã«ãã§ã«ãŒãããã¯ã䜿çšããçç±ïŒ ãµã€ãã«ãŒã¯
requirepassãªãã§å®è¡ãããã¢ã㪠ã³ã³ãã㯠Compose ãããã¯ãŒã¯ïŒredis:6379ïŒçµç±ã§æ¥ç¶ããŸããå ¬éããŒã㯠ãã¹ãåŽã®ããŒã«ïŒredis-cliãããŒã«ã«ã®npm run devïŒã§äœ¿çšããããã ãã«ãããŸãã0.0.0.0ã§å ¬éãããšãèªèšŒãããŠããªã Redis ã LAN äžã®ãã¹ãŠã®ãã¹ãã«å ¬éãããŸããREDIS_BIND_HOST=0.0.0.0ãèšå®ããå Žåã¯ããµãŒãã¹ã®command:ã«--requirepassã远å ããŠãã ããã
Redis ã®ç¡å¹åã¯æšå¥šãããŸããïŒã¬ãŒããªããã¿ãŒãã€ã³ã¡ã¢ãªã®ãã©ãŒã«ããã¯ã«çž®éããŸãïŒãç¡å¹åããå¿
èŠãããå Žåã¯ãdocker-compose.yml å
ã® redis: ãµãŒãã¹ãããã¯ãåé€ãŸãã¯ã³ã¡ã³ãã¢ãŠããããããŒãã«ã¹ã±ãŒã«ããŠãã ããïŒ
docker compose up -d --scale redis=0æ¬çªç°å¢çš Compose
Section titled âæ¬çªç°å¢çš Composeâéçºç°å¢ãšäžŠè¡ããŠå®è¡ããåé¢ãããæ¬çªç°å¢ã¹ãããã·ã§ããã«ã¯ãdocker-compose.prod.yml ã䜿çšããŸãã
| 詳现 | å€ |
|---|---|
| ãã¡ã€ã« | docker-compose.prod.yml |
| ããã©ã«ãã®ããã·ã¥ããŒãããŒã | PROD_DASHBOARD_PORT=20130ïŒå
éšã® ${DASHBOARD_PORT:-20128} ã«ãããã³ã°ïŒ |
| ããã©ã«ãã® API ããŒã | PROD_API_PORT=20131 |
| ã€ã¡ãŒãž | omniroute:prodïŒrunner-cli ã¿ãŒã²ãããããã«ãïŒ |
| Redis ã³ã³ãã | omniroute-redis-prodïŒredis:8.6.2ãå°çšã® redis-prod-data ããªã¥ãŒã ïŒ |
| ããŒã¿ããªã¥ãŒã | omniroute-prod-dataïŒååä»ãã§ãåãã«ãåŸãæ°žç¶åïŒ |
| ãã«ã¹ãã§ã㯠| node healthcheck.mjs + redis-cli pingãdepends_on 㯠Redis ã®æ£åžžæ§ãæ¡ä»¶ãšãã |
äœ¿çšæ¹æ³ïŒ
# æ¬çªç°å¢ã¹ã¿ãã¯ããã«ãããŠèµ·ådocker compose -f docker-compose.prod.yml up -d --build
# ãã°ãã¹ããªãŒãã³ã°docker compose -f docker-compose.prod.yml logs -f
# 忢ããŠåé€ïŒããªã¥ãŒã ã¯ä¿æïŒdocker compose -f docker-compose.prod.yml downæ¬çªç°å¢ã¹ã¿ãã¯ã¯éçºç°å¢çš Compose ãšäžŠè¡ããŠå®è¡ãããŸãïŒã³ã³ããåãããŒããããªã¥ãŒã ãç°ãªããŸãïŒããã®ãããæ¬çªç°å¢ã皌åããããŸãŸããŒã«ã«ã§å埩éçºãç¶ããããŸãã
Dockerfile ã®ã¹ããŒãž
Section titled âDockerfile ã®ã¹ããŒãžâãã®ãªããžããªã«ã¯ããã«ãã¹ããŒãž DockerfileïŒDockerfileïŒãå«ãŸããŠããŸãã4 ã€ã®ã¹ããŒãžãå
¬éãããŠãããããçšéã«é©ãã target ãéžæããŠãã ããã
| ã¹ããŒãž | ããŒã¹ã€ã¡ãŒãž | çšé |
|---|---|---|
builder |
node:26-trixie-slim |
äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãïŒnpm ci --legacy-peer-depsïŒãnpm run build ãå®è¡ããŸãïŒããã©ã«ãã§ã¯ Turbopack â äžèšã®ããã«ãæã®ãªãœãŒã¹ããåç
§ïŒ |
runner-base |
node:26-trixie-slim |
Next.js ã® standalone åºåã䜿çšããæ¬çªã©ã³ã¿ã€ã ã§ãããããã€ã㌠CLI ã¯å«ãŸããŠããŸããã |
runner-cli |
runner-base |
gitãdocker.ioãdocker-compose ãšãã°ããŒãã« CLI ã® @openai/codexã@anthropic-ai/claude-codeãdroidãopenclaw ã远å ããŸãããšãŒãžã§ã³ãåã¯ãŒã¯ãããŒã«ã¯ãããéžæããŠãã ããã |
runner-web |
runner-base |
Web ã»ãã·ã§ã³ãããã€ããŒã® gemini-webãclaude-webãclaude-turnstile çšã«ãPlaywright ãš Chromium ãã©ãŠã¶ãŒïŒ--with-depsïŒã远å ããŸãããããã®ãããã€ããŒã䜿çšããå Žåã¯ãããéžæããŠãã ãã â éåžžã®ã€ã¡ãŒãžã§ã¯ãããããªããšãªã¯ãšã¹ãæã«å€±æããŸãïŒããªãªãŒã¹ãã£ãã«ãã® -web ã«é¢ããæ³šèšãåç
§ïŒã |
ç¹å®ã®ã¿ãŒã²ãããæåã§ãã«ãããã«ã¯ã次ãå®è¡ããŸãã
docker build --target runner-base -t omniroute:base .docker build --target runner-cli -t omniroute:cli .docker build --target runner-web -t omniroute:web .ãã«ãæã®ãªãœãŒã¹
Section titled âãã«ãæã®ãªãœãŒã¹âbuilder ã¹ããŒãžã®ãªãœãŒã¹æ¶è²»ã¯ã3 ã€ã®ãã«ãåŒæ°ã§å¶åŸ¡ããŸãããããã¯ãã«ãæã«ã®ã¿äœ¿çšãããŸã â
OMNIROUTE_MEMORY_MBïŒåŸè¿°ïŒã¯ãããããšã¯å¥ã®ã©ã³ã¿ã€ã èšå®ã§ãã
| ãã«ãåŒæ° | ããã©ã«ã | 广 |
|---|---|---|
OMNIROUTE_USE_TURBOPACK |
1 |
0 ã®å Žåã¯ã代ããã« webpack ã§ãã«ãããŸããããŒã¯ã¡ã¢ãªã¯å°ãªããªããŸãããäœéã§ãã |
OMNIROUTE_BUILD_MEMORY_MB |
6144 |
èµ·åããã next build ã® V8 ããŒãäžéïŒ--max-old-space-sizeïŒã§ãã |
OMNIROUTE_BUILD_WORKERS |
2 |
CIRCLE_NODE_TOTAL ã«å€ãæž¡ããŸããNext ã¯ããŒãžããŒã¿åéçšã« workers = N - 1 ãå°åºããŸãã |
å€§èŠæš¡ãªãã«ããŒã§å¢ããã¹ããªã®ã¯ OMNIROUTE_BUILD_WORKERS ã§ããããªãœãŒã¹ãå¶éãããç°å¢ã§ â Compiled successfully ã®åŸã«ãã«ãã忢ããå Žåã«çãã¹ããªã®ããã®èšå®ã§ããåããŒãžããŒã¿ã¯ãŒã«ãŒã¯ããããç¬ç«ããããã»ã¹ã§ããã芪㮠next build èªäœãç¬ç«ããããã»ã¹ã§ããå®éã® VPS ã§ã®åçŸïŒissue #7518ïŒã§ã¯ãåããã»ã¹ã®ããŒã¯ RSS ã NODE_OPTIONS ã®ããŒããã©ã°ãšã¯ç¡é¢ä¿ã«çŽ 4.5 GB ã§ããããšã枬å®ãããŸããïŒTurbopack 㯠V8 ããŒãå€ã®ãã€ãã£ã/Rust ã¡ã¢ãªã§ã³ã³ãã€ã«ããŸãïŒãããã©ã«ãã® 2ïŒâ 1 ã¯ãŒã«ãŒãåèš 2 ããã»ã¹ïŒã¯ãå
¬éãã€ãã©ã€ã³ã§äœ¿çšãã 16 GB / 4 vCPU ã® GitHub ãã¹ãããã©ã³ããŒåãã«èšå®ãããŠããŸãã8ïŒâ 7 ã¯ãŒã«ãŒïŒã§ã¯ããã®ã©ã³ããŒãã¡ã¢ãªäžè¶³ã«ãªããbuildkit 㯠ResourceExhausted: ... cannot allocate memory ã§ã¹ãããã«å€±æããŸãããããã»ã¹ããšã® RSS ãæšæž¬ã§ã¯ãªãçŽæ¥æž¬å®ãããšã3ïŒâ 2 ã¯ãŒã«ãŒïŒã§ãã¡ã¢ãªã«åãŸããŸããã§ãããtests/unit/docker-build-memory-budget.test.ts ã¯æž¬å®å€ã«åºã¥ããŠèšç®ãè¡ããããããã®èšå®å€ãã©ã³ããŒã®å®¹éãè¶
ããå Žåã¯å€±æããŸãã
Turbopack 㯠V8 ããŒãã®å€éšã«ãããã€ãã£ã Rust ã¡ã¢ãªã§ã³ã³ãã€ã«ãããããOMNIROUTE_BUILD_MEMORY_MB ã§ã¯ãã®äœ¿çšéãå¶éã§ããŸãããã¡ã¢ãªäžéã®ãããã¹ãã§ã¯ããã«ãã OOM killer ã«ãã£ãŠãšã©ãŒããã¹ããªãã§ SIGKILL ãããŸããã€ãŸããCreating an optimized production build ã®éäžã§åã«åæ¢ãããããã¡ã¢ãªäžè¶³ã§ã¯ãªããã³ã°ããããã«èŠããŸãããã«ããã¹ãã®ãªãœãŒã¹ãå¶éãããŠããå Žåã¯ããã³ãã©ãŒãåãæ¿ããŠãã ããã
docker build --target runner-base \ --build-arg OMNIROUTE_USE_TURBOPACK=0 \ -t omniroute:base .webpackBuildWorker ãæå¹ã«ãªã£ãŠãããããnext build ã¯èŠªããã»ã¹ãšã¯ãŒã«ãŒããã»ã¹ãå®è¡ãããããããåå¥ã« OMNIROUTE_BUILD_MEMORY_MB ã«åŸããŸããã³ã³ããã®äžéã¯ããã®å€ã®çŽ 1 åã§ã¯ãªãã2 åãäžåãããã«èšå®ããŠãã ããã
ãã®ããªãŒã§ã®æž¬å®çµæïŒ--target runner-baseãOMNIROUTE_BUILD_MEMORY_MB=6144ïŒïŒ
| ãã³ãã©ãŒ | ã³ã³ããäžé | çµæ |
|---|---|---|
| Turbopack | 8 GiB / 16 GiB | ã©ã¡ãã§ãç¡èšã§ OOM ã«ãã匷å¶çµäº |
| webpack | 8 GiB | ãã«ãã¯ãŒã«ãŒã SIGKILL ããã |
| webpack | 12 GiB | æåãããŒã¯ã¯ 11.1 GiB |
ã©ã³ã¿ã€ã ã®ããã©ã«ãèšå®
Section titled âã©ã³ã¿ã€ã ã®ããã©ã«ãèšå®ârunner-base ã«ãã£ãŠãšã¯ã¹ããŒããããããã©ã«ãå€ïŒPORT=20128ãHOSTNAME=0.0.0.0ãOMNIROUTE_MEMORY_MB=1024ãNODE_OPTIONS=--max-old-space-size=1024ãDATA_DIR=/app/dataãOMNIROUTE_MIGRATIONS_DIR=/app/migrationsã
Docker ã§ã®ã¡ã¢ãªåäœïŒ
- ã€ã¡ãŒãžã§ã¯
OMNIROUTE_MEMORY_MB=1024ãèšå®ããããããNODE_OPTIONS=--max-old-space-size=1024ãå°åºããŸãã - å®éã®ãµãŒããŒããã»ã¹ã¯ã¹ã¿ã³ãã¢ãã³ã©ã³ãã£ãŒã«ãã£ãŠèµ·åãããŸããã©ã³ãã£ãŒã¯
OMNIROUTE_MEMORY_MBãèªã¿åãã--max-old-space-size=<OMNIROUTE_MEMORY_MB>ã远å ããŸãã - Node ã¯ç¹°ãè¿ãæå®ãããæåŸã®
--max-old-space-sizeã®å€ã䜿çšãããããOMNIROUTE_MEMORY_MBãèšå®ããããšã§ãDocker ã«ãããå®å¹ããŒãäžéãå¶åŸ¡ã§ããŸãã - ã€ã¡ãŒãžã§ã¯åžžã«ãã®å€ãèšå®ããããããDocker ã§ã¯ã©ã³ãã£ãŒç¬èªã® RAM ã«å¿ãããã©ãŒã«ããã¯ã¯é©çšãããŸãããã¯ãŒã¯ããŒãã«åãããŠæç€ºçã«å¢ãããŠãã ããïŒäžè¡šãåç
§ïŒãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®
/v1/responsesã«ã¯ã2048ã§ããŸã å°ããããŸãã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãåãã®å®è¡æ RAM
Section titled âã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãåãã®å®è¡æ RAMâDocker ã®ããã©ã«ãã§ãã 1â¯GiB ã¯ãããã·ã¥ããŒãã軜éãã£ããåãã®æäœã©ã€ã³ã§ãããæ¬çªç°å¢åãã®ãµã€ãºã§ã¯ãããŸãããé·å€§ãª POST /v1/responses ã®æ¬æïŒæ°çŸä»¶ã®ã¡ãã»ãŒãžãæ°ååã®ããŒã«ïŒã§ã¯ãå§çž®äžã«è€æ°ã®ã€ã³ã¡ã¢ãªã°ã©ããä¿æãããŸããçŽ 3â¯MiBïŒçŽ 750k ããŒã¯ã³ã®ãªã¯ãšã¹ãã 2 ä»¶éãªããšãold-space ã 12â¯GiB ã§ã V8 ãç°åžžçµäºãïŒFATAL ERROR: Reached heap limitïŒã16â¯GiB ã® cgroup OOM ã«ãéããäºäŸããããŸãã#7849 ãåç
§ããŠãã ããã
cgroup ã® --memory ã¯ããŒããã倧ããèšå®ããŠãã ãã â ãã€ãã£ããããã¡ãSQLiteãããã³å§çž®åŠçã®äžéããŒã¿ã¯ V8 ã®å€éšã«ååšããŸãã
| ã¯ãŒã¯ããŒã | OMNIROUTE_MEMORY_MB |
ã³ã³ããïŒcgroup | åè |
|---|---|---|---|
| ããã·ã¥ããŒãã軜éãã£ãã 1 ä»¶ | 1024ïŒã€ã¡ãŒãžã®ããã©ã«ãïŒ |
â¥2â¯GiB | |
| ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ã 1 ä»¶ïŒClaude/Codex/GrokïŒ | 8192 |
â¥10â¯GiB | äžè¬çãªåäžã»ãã·ã§ã³ã® /v1/responses |
é·å€§ãª /v1/responses ã 2 ä»¶åæå®è¡ |
10240â12288 |
â¥12â16â¯GiB | çŽ 12â¯GiB ã®ããŒãã§ V8 ã®ç°åžžçµäºãèšæž¬ |
| é·ãã³ã³ããã¹ãã 3 件以äžåæå®è¡ | 1 ããã»ã¹ã§ã¯å®è¡ããªã | çŽååïŒRAM ã®å¢èš | ããã©ã«ãã§ã¯é«è² è·ãªã¯ãšã¹ãã®å®è¡äžäžé㯠1 ä»¶ã§ããRAM ãå¢èšããã«ãã®äžéãåŒãäžãããšãåã³ç°åžžçµäºãçºçããŸã |
ãã¢ã¡ã¿ã«äžã® omniroute serve ã¯ãOMNIROUTE_MEMORY_MB ãæªèšå®ã®å ŽåãRAM ã®çŽ 35%ïŒ[512, 4096] ã®ç¯å²ã«å¶éïŒã«èª¿æŽããŸããDocker ã§ã¯åžžã« 1024 ãèšå®ããããããå
¬åŒã€ã¡ãŒãžã§ã¯ãã®èª¿æŽã¯å®è¡ãããŸããã
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \ -e OMNIROUTE_MEMORY_MB=8192 --memory=10g \ -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latestéèŠãªç°å¢å€æ°
Section titled âéèŠãªç°å¢å€æ°âENVIRONMENT.md ã«èšèŒãããŠããããã©ã«ãèšå®ã«å ããŠãDocker ç°å¢ã§å®è¡ããéã«ã¯ã以äžã®å€æ°ãç¹ã«éèŠã§ãã
| 倿° | ç®ç | ããã©ã«ã |
|---|---|---|
OMNIROUTE_WS_BRIDGE_SECRET |
WebSocket ããªããžçšã®å ±æã·ãŒã¯ã¬ãããæ¬çªç°å¢ã§ã¯å¿ é â 匷åãªã©ã³ãã æååãèšå®ããŠãã ããã | æªèšå®ïŒæå®å¿ é ïŒ |
REDIS_URL |
ã¬ãŒããªããã¿ãŒïŒãã£ãã·ã¥ããã¯ãšã³ããžã®æ¥ç¶æåå | redis://redis:6379 |
REDIS_PORT |
忢±ãããŠãã Redis ã³ã³ããã®ãã¹ãåŽããŒã | 6379 |
REDIS_BIND_HOST |
忢±ãããŠãã Redis ã®ããŒããå ¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ïŒAUTH ã远å ããªãéãã«ãŒãããã¯ïŒ | 127.0.0.1 |
AUTO_UPDATE_HOST_REPO_DIR |
èªåæŽæ°ã¯ãŒã¯ãããŒã®ããã«ãcli ãããã¡ã€ã«å
ã® /workspace/omniroute ã«ããŠã³ãããããã¹ããã¹ |
.ïŒã«ã¬ã³ããã£ã¬ã¯ããªïŒ |
OMNIROUTE_MEMORY_MB |
Docker ã¹ã¿ã³ãã¢ãã³ãµãŒããŒã®å®è¡æ Node ããŒãäžéãäžèšã®ã€ã¡ãŒãžããã©ã«ããäžæžãããŸããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®å ŽåïŒ8192 以äžïŒå®è¡æ RAM ãåç
§ïŒã |
1024 |
DASHBOARD_PORT / API_PORT |
ããã·ã¥ããŒãïŒ20128ïŒããã³ APIïŒ20129ïŒã®å ¬éããŒããäžæžã | 20128 / 20129 |
APP_BIND_HOST |
docker-compose ãããã·ã¥ããŒãïŒAPIïŒã©ã€ã WS ã®ããŒããå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ãREQUIRE_API_KEY=falseïŒããã©ã«ãïŒã®å Žåã0.0.0.0 ã¯å¿åã® /v1 ãããã·ã LAN ã«å
¬éããŸããREQUIRE_API_KEY=true ã«èšå®ããããåæ®µã«ãªããŒã¹ãããã·ãé
眮ããå Žåã«ã®ã¿å
¬éç¯å²ãåºããŠãã ããã |
127.0.0.1 |
CLIPROXY_BIND_HOST |
docker-compose ã cliproxyapi ãµã€ãã«ãŒãå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ããã®ããŒã¿ããªã¥ãŒã ã«ã¯ãããã€ããŒã®èªèšŒæ
å ±ãä¿åãããŸãã |
127.0.0.1 |
OMNIROUTE_PLUGINS_DIR |
ã©ã³ã¿ã€ã ã®ãã©ã°ã€ã³ã¹ãã£ããŒãèªã¿åãããã³ã€ã³ã¹ããŒã«ã«äœ¿çšãããã£ã¬ã¯ããªããã©ã°ã€ã³ããã€ã³ãããŠã³ãããå Žåã¯èšå®ããŠãã ãããããã©ã«ãå€ã¯ HOME ã«åŸããŸãããã€ã¡ãŒãžã«ãã£ãŠã¯ããããšã¯ã¹ããŒããããŠããªãå ŽåããããŸãã |
~/.omniroute/plugins |
OMNIROUTE_BASE_PATH |
ã¢ããªããªããŒã¹ãããã·çµç±ã§å
¬éããå Žåã® URL ãµããã¹ïŒäŸïŒ/omnirouteïŒ |
ïŒç©º = ã«ãŒãïŒ |
NEXT_PUBLIC_BASE_URL |
ãµããã¹ãå«ãå
¬éãã©ãŠã¶ãŒãªãªãžã³ïŒäŸïŒhttps://host/omnirouteïŒ |
æªèšå® |
PROD_DASHBOARD_PORT |
docker-compose.prod.yml çšã®ãã¹ãåŽããã·ã¥ããŒãããŒã |
20130 |
CLIPROXYAPI_PORT |
cliproxyapi ãµã€ãã«ãŒçšã®ãã¹ãåŽããŒã |
8317 |
ãµããã¹äžã®ãªããŒã¹ãããã·ïŒTraefik / nginxïŒ
Section titled âãµããã¹äžã®ãªããŒã¹ãããã·ïŒTraefik / nginxïŒâNext.js ã® basePath ã¯ã¹ã¿ã³ãã¢ãã³ãã³ãã«ã«ã³ã³ãã€ã«ãããŸããOmniRoute ã¯ãã«ãæã®å€ãã¢ããªã«ãŒãã®ã»ã³ããã«ãã¡ã€ã«ã«èšé²ãïŒnpm run build ã®å®è¡äžã«æžã蟌ãŸããscripts/docker/ensure-docker-base-path.mjs ã«ãã£ãŠèªã¿åãããŸãïŒãã³ã³ããã®èµ·åæã« OMNIROUTE_BASE_PATH ãšæ¯èŒããŸããå€ãç°ãªããã€ã¡ãŒãžããã¡ã€ã³ã«ãŒãçšã«ãã«ããããŠããå Žåããšã³ããªãŒãã€ã³ã㯠node dev/run-standalone.mjs ãå®è¡ãããåã«ãã¹ã¿ã³ãã¢ãã³ãããã§ã¹ããåã蟌ãŸãã basePath/assetPrefix ãªãã©ã«ïŒNext 16 㯠SSR ã¢ã»ãã URL ã assetPrefix ã®ã¿ããçæããããããããã£ãŒã¯ãµããã¹ãããã«ãåæ ããŸãïŒããã«ãæã«åã蟌ãŸãã /_next/static ã¢ã»ãã URLïŒã¯ã©ã€ã¢ã³ãåç
§ãããã§ã¹ããã¡ãã£ã¢ã€ã³ããŒããäºåã¬ã³ããªã³ã°ããããšã©ãŒããŒãžïŒãããã³ã¯ã©ã€ã¢ã³ãåŽã® process.env shim ãæžãæããŸãã
Compose ãã«ãïŒæšå¥šïŒ
Section titled âCompose ãã«ãïŒæšå¥šïŒâ.env ã«äž¡æ¹ã®å€æ°ãèšå®ããã€ã¡ãŒãžãšã©ã³ã¿ã€ã ã®èšå®ãäžèŽããããã«åãã«ãããŸãã
OMNIROUTE_BASE_PATH=/omnirouteNEXT_PUBLIC_BASE_URL=https://myhostname.example.com/omniroutedocker compose --profile base up -d --builddocker-compose.yml ã¯ãOMNIROUTE_BASE_PATH ã Docker ã®ãã«ãåŒæ°ããã³ã©ã³ã¿ã€ã ç°å¢å€æ°ãšããŠæž¡ããŸãã
ãã«ãæžã¿ã«ãŒãã€ã¡ãŒãž + ã©ã³ã¿ã€ã ãµããã¹
Section titled âãã«ãæžã¿ã«ãŒãã€ã¡ãŒãž + ã©ã³ã¿ã€ã ãµããã¹âå
¬éãããŠãã diegosouzapw/omniroute:* ã€ã¡ãŒãžã¯ããã¡ã€ã³ã«ãŒãçšã«ãã«ããããŠããŸããããã§ããã©ã³ã¿ã€ã ã« OMNIROUTE_BASE_PATH ãèšå®ã§ããŸããã³ã³ããã¯èµ·åæã«ãã³ãã«ãžäžåºŠã ãããããé©çšããŸãã察å¿ããå
¬éãªãªãžã³ãåãããŠèšå®ããŠãã ããã
services: omniroute: image: diegosouzapw/omniroute:latest environment: OMNIROUTE_BASE_PATH: /omniroute NEXT_PUBLIC_BASE_URL: https://myhostname.example.com/omnirouteãªããŒã¹ãããã·ã¯ãå€éšãã¹ãçç¥ããã«å®å
šãªåœ¢ã§è»¢éããããã«èšå®ããŠãã ããïŒãã¬ãã£ãã¯ã¹ãåé€ããªãã§ãã ããïŒãTraefik ã§ã¯ãStripPrefix ã䜿çšããã« PathPrefix(/omniroute) ãã³ã³ãããžã«ãŒãã£ã³ã°ããNext.js ã /omniroute/... ãåä¿¡ã㊠/omniroute/_next/... ããã¢ã»ãããé
ä¿¡ã§ããããã«ããŸãã
Docker ã®ãã«ã¹ãã§ãã¯ã¯ãã¢ã¯ãã£ã㪠OMNIROUTE_BASE_PATH ããã¬ãã£ãã¯ã¹ãšããŠä»å ãããã軜é㪠/healthz ã©ã€ããµã€ã¯ã«ãšã³ããã€ã³ãããããŒãããŸãã/api/monitoring/health ã¯ããŠãŒã¶ãŒãããã·ã¥ããŒãã«ãã蚺æã®ããã«åŒãç¶ãå©çšã§ããŸããã³ã³ããã® HEALTHCHECK ããã®ãšã³ããã€ã³ãã«æ»ãã«ã¯ïŒããšãã°ã詳现ãªãã«ã¹ãã§ãã¯ãé©çšããå ŽåïŒãOMNIROUTE_HEALTHCHECK_PATH=/api/monitoring/health ãèšå®ããŸãããã®ãã¹ã¯è©³çްãªãã§ãã¯ïŒDB + ã¢ãã¿ãªã³ã°ã®æŠèŠïŒã§ãããªããã€ã³ããå Žåãå®è¡é »åºŠã®äœã Docker ã® HEALTHCHECK ã«ã¯é©ããŠããŸãããKubernetes ã® livenessProbe ã®å®è¡ééã«ã¯é©ããŠããŸããã
ãªãŒã±ã¹ãã¬ãŒã¿ãŒïŒKubernetesãNomad ãªã©ïŒã®å ŽåïŒ
| ãããŒã | æšå¥š | éæšå¥š |
|---|---|---|
| Liveness | HTTP GET /livezããŸãã¯ã¡ã€ã³ããŒãïŒPORTãããã©ã«ã㯠20128ïŒãžã® TCP |
Liveness ãšããŠã® /api/monitoring/health |
| Readiness | HTTP GET /healthz |
ã€ãã³ãã«ãŒããããžãŒãªç¶æ ã忢ãšèŠãªãå³ããã¿ã€ã ã¢ãŠã |
| 詳现 / ãã©ãã¯ããã¯ã¹ | /api/monitoring/health |
â |
/healthz ã¯ããã»ã¹ã®ã©ã€ããµã€ã¯ã«ïŒok / starting / stoppingïŒãå ±åããŸãã/livez ã¯ããã»ã¹ãçåããŠãããã®ã¿ã瀺ããŸãïŒãã³ãã©ãŒãå®è¡ã§ããéã 200 ãè¿ããReadiness ãåŸ
æ©ããŸããïŒãã©ã¡ãããªã¯ãšã¹ãåŠçãšåã Node ã€ãã³ãã«ãŒãäžã§å®è¡ããããããCPU ããŠã³ããªã«ã¿ãã°åŠçãå§çž®åŠçã«ãã£ãŠé
å»¶ããå¯èœæ§ããããŸããããžãŒ â 忢ã§ããHTTP ãããŒããã¿ã€ã ã¢ãŠãããå Žåã¯ãTCP ã® Liveness ãæšå¥šããŸãããããŒãã«é¢ãã詳现ãªã¬ã€ãã³ã¹ïŒ
ã¢ãã¿ãªã³ã°ã¬ã€ã â Kubernetes ãããŒãã®æšå¥šäºé
ã
Caddy ã䜿çšãã Docker ComposeïŒHTTPS Auto-TLSïŒ
Section titled âCaddy ã䜿çšãã Docker ComposeïŒHTTPS Auto-TLSïŒâCaddy ã®èªå SSL ããããžã§ãã³ã°ã䜿çšããŠãOmniRoute ãå®å šã«å ¬éã§ããŸãããã¡ã€ã³ã® DNS A ã¬ã³ãŒãããµãŒããŒã® IP ãæããŠããããšã確èªããŠãã ããã
services: omniroute: image: diegosouzapw/omniroute:latest container_name: omniroute restart: unless-stopped volumes: - omniroute-data:/app/data environment: - PORT=20128 # OAuth ã³ãŒã«ããã¯ãããã·ã¥ããŒãã®ãªã³ã¯ãçæãããå
¬é URL ã®ããã®ãã©ãŠã¶ãŒåããªãªãžã³ã - NEXT_PUBLIC_BASE_URL=https://your-domain.com # ã¹ã±ãžã¥ãŒã«ããããžã§ãïŒèªå·±ãã§ããã®ããã®å
éšãµãŒããŒé URLã - BASE_URL=http://omniroute:20128 - AUTH_COOKIE_SECURE=true
caddy: image: caddy:latest container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
volumes: omniroute-data:Caddy ã¯ãã¢ããã¹ããªãŒã ã³ã³ããåãã«æšæºã®è»¢éããããŒãèšå®ããŸããOmniRoute ã¯
NEXT_PUBLIC_BASE_URL ããOAuth ã³ãŒã«ããã¯ããã³çæãããå
¬éãªã³ã¯ã®æ£èŠã®å
¬éãªãªãžã³ãšããŠäœ¿çšããŸãã
èªèšŒæžã¿ã®ããã·ã¥ããŒãæžã蟌ã¿ã§ã¯ãåäžãªãªãžã³ãªã¯ãšã¹ãã«å ããŠãã»ãã·ã§ã³ã«çŽä»ãããã CSRF
ä¿è·ã䜿çšãããŸããæç€ºçãªèšå®ã§ã¯ãªããä¿¡é Œæžã¿ã®è»¢éããããŒãã OmniRoute ã«å
¬éãªãªãžã³ã
æå³çã«å°åºããããé«åºŠãªãããã€ã®å Žåã«ã®ã¿ãOMNIROUTE_TRUST_PROXY ãæå¹ã«ããŠãã ããã
Cloudflare Quick Tunnel
Section titled âCloudflare Quick TunnelâDocker ãããã€åãã®ããã·ã¥ããŒãã§ã¯ãDashboard â Endpoints ããã¯ã³ã¯ãªãã¯ã§ Cloudflare Quick Tunnel ãå©çšã§ããŸããååã®æå¹åæã«ã¯ãå¿
èŠãªå Žåã«ã®ã¿ cloudflared ãããŠã³ããŒããããçŸåšã® /v1 ãšã³ããã€ã³ããžã®äžæçãªãã³ãã«ãéå§ãããçæããã https://*.trycloudflare.com/v1 URL ãéåžžã®å
¬é URL ã®ããäžã«è¡šç€ºãããŸãã
ãšã³ããã€ã³ãã®ãã³ãã«ããã«ïŒCloudflareãTailscaleãngrokïŒã¯ãã¢ã¯ãã£ããªãã³ãã«ã®ç¶æ
ã倿ŽããããšãªããSettings â Appearance ãã衚瀺ãŸãã¯é衚瀺ã«ã§ããŸãã
ãã³ãã«ã«é¢ããæ³šæäºé
Section titled âãã³ãã«ã«é¢ããæ³šæäºé â- Quick Tunnel ã® URL ã¯äžæçãªãã®ã§ãããåèµ·åãããã³ã«å€æŽãããŸãã
- OmniRoute ãŸãã¯ã³ã³ããã®åèµ·ååŸã«ãQuick Tunnel ãèªåçã«åŸ©å ãããããšã¯ãããŸãããå¿ èŠã«å¿ããŠãããã·ã¥ããŒãããå床æå¹ã«ããŠãã ããã
- ãããŒãžãã€ã³ã¹ããŒã«ã¯çŸåšã
x64/arm64äžã® LinuxãmacOSãWindows ããµããŒãããŠããŸãã - ãããŒãžã Quick Tunnel ã§ã¯ãå¶çŽã®ããã³ã³ããç°å¢ã§å€§éã«åºåããã QUIC UDP ãããã¡ãŒèŠåãåé¿ãããããããã©ã«ãã§ HTTP/2 ãã©ã³ã¹ããŒãã䜿çšãããŸããå¥ã®ãã©ã³ã¹ããŒãã䜿çšããå Žåã¯ã
CLOUDFLARED_PROTOCOL=quicãŸãã¯autoãèšå®ããŠãã ããã - Docker ã€ã¡ãŒãžã«ã¯ã·ã¹ãã CA ã«ãŒãã忢±ããããããŒãžã
cloudflaredã«æž¡ãããŸããããã«ãããã³ã³ããå ã§ãã³ãã«ãããŒãã¹ãã©ãããããéã® TLS ä¿¡é Œãšã©ãŒãåé¿ã§ããŸãã - OmniRoute ããã€ããªãããŠã³ããŒããã代ããã«æ¢åã®ãã€ããªã䜿çšããããã«ããã«ã¯ã
CLOUDFLARED_BIN=/absolute/path/to/cloudflaredãèšå®ããŠãã ããã
ã€ã¡ãŒãžã¿ã°
Section titled âã€ã¡ãŒãžã¿ã°â| ã€ã¡ãŒãž | ã¿ã° | ãµã€ãº | 説æ |
|---|---|---|---|
diegosouzapw/omniroute |
latest |
~250MB | å
¬éæžã¿ã®å®å®ç SemVer ã®ãã¡æé«ããŒãžã§ã³ïŒgit ã® main ã§ã¯ãããŸããïŒ |
diegosouzapw/omniroute |
3.8.0 |
~250MB | GitOps ã§ã¯ãã®çš®é¡ã®ã¿ã°ã«åºå®ããŠãã ãã |
ãã«ããã©ãããã©ãŒã ãããã§ã¹ãïŒlinux/amd64 + linux/arm64 ãã€ãã£ãïŒApple SiliconãAWS GravitonãRaspberry PiïŒãDocker ã¯é©åããã¢ãŒããã¯ãã£ãèªåçã«éžæããŸããARM ãã¹ãäžã§ AMD64 ãšãã¥ã¬ãŒã·ã§ã³ã匷å¶ããå¿
èŠãããå Žåã¯ã--platform linux/amd64 ãæå®ããŠãã ããã
ãªãªãŒã¹ãã£ã³ãã«
Section titled âãªãªãŒã¹ãã£ã³ãã«âOmniRoute ã¯ãå®å®çãªãªãŒã¹ãã¢ã¯ãã£ããªãªãªãŒã¹ãã©ã³ãã®ãã¹ããéçºãã«ãåãã«ãããããåå¥ã® Docker ãã£ã³ãã«ãå ¬éããŠããŸãã
| ãã£ã³ãã« | ãœãŒã¹ | å¯å€æ§ | æšå¥šçšé |
|---|---|---|---|
:<version> / :<version>-web |
çœ²åæžã¿ïŒããŒãžã§ã³ä»ããªãªãŒã¹ | äžå€ | æ£ç¢ºãªãªãªãŒã¹ã«åºå®ããæ¬çªããã〠|
:latest / :latest-web |
å ¬éæžã¿ã®å®å®ç SemVer ã®ãã¡æé«ããŒãžã§ã³ | å¯å€ã®å®å®çãã€ã³ã¿ãŒ | SemVer ã®å
¬éãžã§ãåŸã«å®å®çãªãªãŒã¹ãžè¿œåŸããŸããmain ãæªãªãªãŒã¹ã® release/v* ã³ãããã«ã¯è¿œåŸããŸãã |
:next / :next-web |
çŸåšã®ããã©ã«ã release/v* ãã©ã³ã |
å¯å€ã®ãã¬ãªãªãŒã¹ãã€ã³ã¿ãŒ | ã¢ã¯ãã£ããªãªãªãŒã¹ãã©ã³ãã«åã蟌ãŸãããã®ã®ããŸã å®å®çãªãªãŒã¹ã«ã¯å«ãŸããŠããªãä¿®æ£ã®ãã¹ã |
:main / :main-web |
main ãã©ã³ã |
å¯å€ã®éçºçãã€ã³ã¿ãŒ | éçºããã³çµ±åãã¹ãå°çš |
Web ã»ãã·ã§ã³ãããã€ããŒïŒ-web ã€ã¡ãŒãž
Section titled âWeb ã»ãã·ã§ã³ãããã€ããŒïŒ-web ã€ã¡ãŒãžâäžèšã®åãã£ã³ãã«ã«ã¯ãrunner-web ã¹ããŒãžãããã«ãããã -web ã¿ã°ïŒ:latest-webã:<version>-webã:next-webã:main-webïŒãçšæãããŠããŸããããã¯åãã€ã¡ãŒãžã« Playwright ãš Chromium ãã©ãŠã¶ãŒã远å ãããã®ã§ããéåžžã®ã€ã¡ãŒãžã«ã¯ Chromium ãå«ãŸããŠããŸãããgemini-webãclaude-webãclaude-turnstile ã§ã¯ Chromium ãå¿
èŠã§ãã
é害ã¯èµ·åæã§ã¯ãªããåŸã«ãªã£ãŠçºçããŸãããããã®ãããã€ããŒã¯ã¢ãã«ãäžèŠ§è¡šç€ºããããã·ã¥ããŒãäžã§ã¯æ¥ç¶æžã¿ãšè¡šç€ºãããŸãããæåã®ãªã¯ãšã¹ãã§ã®ã¿æ¬¡ã®ãšã©ãŒãçºçããŸãã
[500]: å€éšã¢ãžã¥ãŒã« playwright ã®èªã¿èŸŒã¿ã«å€±æããŸãã: Error: ã¢ãžã¥ãŒã«ãèŠã€ãããŸãã'/app/node_modules/playwright/node_modules/playwright-core/browsers.json'ãããã®ãããã€ããŒã䜿çšããå Žåã¯ãçŸåšå©çšããŠãããã£ã³ãã«ã® -web ã¿ã°ã pull ããŠãã ããããã以å€ã®å€æŽã¯äžèŠã§ããnpm/CLI ã€ã³ã¹ããŒã«ïŒDocker ã€ã¡ãŒãžã䜿çšããªãå ŽåïŒã§äžè¶³ããåçã®èŠçŽ ã¯ãã©ãŠã¶ãŒãã€ããªã§ãããã¹ãäžã§ npx playwright install chromium ãå®è¡ããŠãã ããã
ãã¬ãªãªãŒã¹ãã£ã³ãã«ã®äœ¿çš
Section titled âãã¬ãªãªãŒã¹ãã£ã³ãã«ã®äœ¿çšânext ãã£ã³ãã«ã¯ãçŸåšã®ããã©ã«ã release/v* ãã©ã³ããžã® push ããšã«åãã«ããããAMD64 ãš ARM64 ã®äž¡æ¹ã§å
¬éãããŸããå€ãã¡ã³ããã³ã¹ãã©ã³ãããããäžæžãããããšã¯ã§ããŸããããã®ãã£ã³ãã«ã§ã¯ã次ã®å®å®çã¿ã°ãäœæãããåã«ã¢ã¯ãã£ããªãªãªãŒã¹ãã©ã³ããžããŒãžãããä¿®æ£ãå«ããpull å¯èœãªã€ã¡ãŒãžãæäŸãããŸãã
docker pull diegosouzapw/omniroute:nextdocker pull diegosouzapw/omniroute:next-webDocker Compose ã§ã¯ãéžæãããããã¡ã€ã«ã§äœ¿çšããã€ã¡ãŒãžã¿ã°ãäžæžãããŠããããµãŒãã¹ã pull ããŠåäœæããŸãã
services: omniroute: image: diegosouzapw/omniroute:nextdocker compose pulldocker compose up -då®å šæ§ãšããŒã«ããã¯
Section titled âå®å šæ§ãšããŒã«ããã¯ânext ã¯å¯å€ã®ãã¬ãªãªãŒã¹ãã£ã³ãã«ã§ããã¢ã¯ãã£ããªãªãªãŒã¹ãã©ã³ããžã® push ã®ãã³ã«å€æŽãããå¯èœæ§ããããæ¬çªç°å¢ã§ã®äœ¿çšã¯ãµããŒããããŠããŸãããç¹å®ã®ãã«ããè©äŸ¡ããéã¯ãã€ã¡ãŒãžãã€ãžã§ã¹ãã«åºå®ããŠãã ããã
docker pull diegosouzapw/omniroute:nextdocker image inspect diegosouzapw/omniroute:next --format '{{index .RepoDigests 0}}'ãã¹ãåã«ãOmniRoute ã®ããŒã¿ããªã¥ãŒã ãŸãã¯ãã€ã³ãããŠã³ããããããŒã¿ãã£ã¬ã¯ããªãããã¯ã¢ããããŠãã ãããããŒã«ããã¯ããã«ã¯ã以å䜿çšããŠããå®å®çããŒãžã§ã³ãŸãã¯ãã€ãžã§ã¹ãã埩å ããã³ã³ãããŒãåäœæããŸãã
docker pull diegosouzapw/omniroute:<stable-version>docker compose up -dãªãªãŒã¹ãã©ã³ãã®ãã«ãã«ãã£ãŠ latest ãæŽæ°ãããããšã¯ãããŸãããå®å®çãã€ã³ã¿ãŒãæŽæ°ã§ããã®ã¯ã察象ãšãªãå®å®çã»ãã³ãã£ãã¯ããŒãžã§ã³ã®ã¿ã§ããnext ã€ã¡ãŒãžã«ãããªãªãŒã¹ã€ã¡ãŒãžã®æ€æ»ãš CRITICAL è匱æ§ããããã¯ããã²ãŒããé©çšãããŸãã
latest 㯠git ã®ææ°ç¶æ
ãä¿èšŒãããã®ã§ã¯ãããŸããã main ãŸãã¯ã¢ã¯ãã£ã㪠release/v* ãã©ã³ãã«ããŒãžãããä¿®æ£ã¯ãå®å®ç SemVer ã€ã¡ãŒãžãå
¬éãããå
¬éãžã§ãã«ãã£ãŠ :latest ãæŽæ°ããããŸã§ïŒãã® SemVer ãšåããã€ãžã§ã¹ãïŒã:latest ã«ã¯å«ãŸããŸãããGitHub ã«ã¯ãã§ã«ä¿®æ£ã衚瀺ãããŠããã®ã« latest ãæŽæ°ãããŠããªãããã«èŠããå Žåã¯ã:next ã pull ããŠãªãªãŒã¹ãã©ã³ãããã¹ãããããSemVer ã¿ã°ãäœæããããŸã§åŸ
ã£ãŠãã ããã
| ç®ç | 䜿çšãããã® |
|---|---|
| ããªããã蚱容ãããªã GitOpsïŒæ¬çªç°å¢ | :X.Y.ZïŒãŸãã¯ã€ã¡ãŒãžãã€ãžã§ã¹ãïŒã«åºå® |
| å ¬éæžã¿ã®å®å®çã«è¿œåŸãããªãªãŒã¹ããšã®åäœæã蚱容ãã | :latest |
æªãªãªãŒã¹ã® release/v* ã³ãããããã¹ããã |
:nextïŒæ¬çªç°å¢ã§ã¯äœ¿çšäžå¯ïŒ |
main ããã¹ããã |
:mainïŒæ¬çªç°å¢ã§ã¯äœ¿çšäžå¯ïŒ |
å¯çšæ§: ããã©ã«ãã® SQLite ã¯åäžã¬ããªã«
Section titled âå¯çšæ§: ããã©ã«ãã® SQLite ã¯åäžã¬ããªã«âæšæºã® Docker / Kubernetes OmniRoute ã¯ã1 ã€ã® Node ããã»ã¹ + 1 ã€ã® SQLite ã©ã€ã¿ãŒã§æ§æãããŸãããã®ããããžã§ã¯é«å¯çšæ§ã¯ãµããŒããããŠããŸããã
| å¶çŽ | åœ±é¿ |
|---|---|
| åäžã©ã€ã¿ãŒ | åã SQLite ãã¡ã€ã«ã«å¯ŸããŠè€æ°ã®ã¬ããªã«ãå®è¡ããªãã§ãã ãããDB ãç ŽæããŸãã |
| åäœæ / åèµ·å / HEALTHCHECK ã®åŒ·å¶çµäº | åŠçäžã® SSEãããã·ã¥ããŒãã»ãã·ã§ã³ãã€ã³ã¡ã¢ãªç¶æ
ããã¹ãŠåæ¢ããŸããæ¥ç¶äžã®ãã¹ãŠã®ã¯ã©ã€ã¢ã³ããåæãããŸãããšã³ããã€ã³ããååšããªãæéäžã®æ°èŠãªã¯ãšã¹ãã«ã¯ãOmniRoute JSON ã§ã¯ãªãããªããŒã¹ãããã·ãã 502 Bad Gateway: Unknown error ãè¿ãããŸãããã®ãããã¯ã©ã€ã¢ã³ãã¯ããããããã€ããŒé害ãšåºå¥ã§ããŸããïŒ#11015ïŒã |
/healthz ãšåãã€ãã³ãã«ãŒã |
ã«ã¿ãã°åŠçãå§çž®åŠçãéäžãããšãããŒããé å»¶ããå¯èœæ§ããããã¿ã€ã ã¢ãŠããçãå Žåã¯å¯äžã®ã¬ããªã«ãåèµ·åãããŸãã |
ãããŒããããªã¯ã¹ïŒKubernetes ã®ãããŒãæšå¥šäºé ãåç §ïŒ:
| ãããŒã | 察象 | 䜿çšããªããã® |
|---|---|---|
| Liveness | PORTïŒããã©ã«ã㯠20128ïŒãžã® TCPããŸãã¯ãœãã HTTP /healthz |
/api/monitoring/health |
| Readiness | HTTP GET /healthz |
ã€ãã³ãã«ãŒãã®é«è² è·ãåæ¢ç¶æ ãšããŠæ±ãçãã¿ã€ã ã¢ãŠã |
| è©³çŽ°ç¢ºèª / 人éçš | /api/monitoring/health |
èªååããã kubelet liveness |
ã¢ããã°ã¬ãŒã: ãã¹ãŠã®ã»ãã·ã§ã³ãåæãããããšãåæãšããŠãã ãããå¯èœã§ããã°ã¯ã©ã€ã¢ã³ãããã¬ã€ã³ããŠãã ãããããã©ã«ãã® SQLite ã§ã¯ããŒãªã³ã°ã¢ããããŒãã¯å©çšã§ããŸãããCompose ã® restart: unless-stopped ãš Docker ã® HEALTHCHECK ã䜵çšããå Žåããã³ã³ããã Unhealthy ã«ãªããšå¯äžã®ããã»ã¹ã眮ãæããããåãç¯å²ã«åœ±é¿ãåã³ãŸãã
åäžã¬ããªã«çšã® Kubernetes ã¹ããããïŒRecreate ãå¿
é ã§ãã1 ã€ã® SQLite ãã¡ã€ã«ã«å¯Ÿã㊠replicas ãå¢ãããªãã§ãã ããïŒ:
spec: replicas: 1 strategy: type: Recreate template: spec: terminationGracePeriodSeconds: 90 containers: - name: omniroute lifecycle: preStop: exec: command: ["/bin/sleep", "15"] readinessProbe: httpGet: path: /healthz port: 20128 periodSeconds: 5 livenessProbe: tcpSocket: port: 20128 periodSeconds: 20preStop ã® sleep ã«ãããSIGTERM ã®åã« kube ã Service ãšã³ããã€ã³ããåé€ã§ããããã忢äžã®ããã»ã¹ã«æ°ãããã©ãã£ãã¯ãå°éããªããªããŸããåŠçäžã® /v1/responses SSE ã¯ãééçŽã¢ãããã·ã§ã³ãªãŒã¹ãä»ããŠãæå€§ SHUTDOWN_TIMEOUT_MSïŒããã©ã«ã㯠30 ç§ïŒãŸã§ãã¬ã€ã³ãããŸãïŒ#11015ïŒãããã§ãããã»ã¹ã«å°éããæ°èŠãªã¯ãšã¹ãã«ã¯ã503 ãš Retry-After: 5 ãè¿ãããŸãã眮ãæãåŸã®ããã»ã¹ã Ready ã«ãªããŸã§ã® Recreate ã«ãããšã³ããã€ã³ãäžåšæéã¯ãåŒãç¶ãå®å
šãªåæ¢ãšãªããŸãããã㯠SQLite ããããžã«èµ·å ãããã®ã§ããããããŒãã®èšå®ãã¹ã§ã¯ãããŸããã
å€éš Postgres / ãã«ãã©ã€ã¿ãŒ HA ã¯ãææžåãããæšæºæ§æã§ã¯ãããŸãããHA ãå¿
èŠãªå Žåã¯ãåäžã¬ããªã«ãç¶æãããããããžã§ã¯ããå¥éãã¹ãããŠææžåããããããžã䜿çšããŠãã ãããPostgres/MySQL 察å¿ã®äœæ¥ã¯ #8075 ã§é²ããããŠããŸããããããªãªãŒã¹ããããŸã§ã¯ãå€§èŠæš¡ãª /v1/responses ã®åŠçèœåãå¢ããããã«ãµããŒããããŠããå¯äžã®æ¹æ³ã¯ãN åã®ç¬ç«ããããã»ã¹ïŒæ¬¡ã®ã»ã¯ã·ã§ã³ïŒã䜿çšããããšã§ããã1 ã€ã®ããªã¥ãŒã ã«å¯Ÿã㊠replicas > 1 ãèšå®ããããšã§ã¯ãããŸããã
ã¹ã±ãŒã«ã¢ãŠã: N åã®ç¬ç«ããã»ã¹
Section titled âã¹ã±ãŒã«ã¢ãŠã: N åã®ç¬ç«ããã»ã¹â1 ã€ã® Node ããã»ã¹ã¯ 1 ã€ã® V8 ããŒãã§ããçŽ 3â¯MiB / çŽ 75 äžããŒã¯ã³ã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ãã POST /v1/responsesïŒRTK + CavemanïŒã 2 ä»¶éãªããšãçŽ 12â¯Gi ã§ãã®ããŒããç°åžžçµäºãïŒFATAL ERROR: Reached heap limitïŒã16â¯Gi ã® cgroup ã§ OOM ãçºçããå¯èœæ§ããããŸãã#7849 ãåç
§ããŠãã ããããã®æž¬å®çµæã¯ ã¡ã¢ãªäºç®ã«é¢ããèŠåã§ãããåæå®è¡ãããé·æéã® /v1/responses ã 2 ä»¶ã«å¶éãã補åäžã®ããŒãäžéã§ã¯ãããŸãããééçŽãã£ããã®åãå
¥ãã¯ãåã V8/cgroup äžéããèªåç®åºãããåã蟌ã¿ãã€ãäºç®ïŒOMNIROUTE_CHAT_MAX_INFLIGHT_BYTESãsrc/shared/middleware/admissionBudget.tsïŒã«ãã£ãŠå¶åŸ¡ãããŸãããã§ã«é©åã«ãµã€ãžã³ã°ãããããã»ã¹ã§ãããäžæ¹ã«ãªãŒããŒã©ã€ãããïŒãŸãã¯åŸæ¥ã®ãªã¯ãšã¹ãæ°äžé OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT ãèšå®ããïŒãšãåã³ç°åžžçµäºãçºçããŸããå°èŠæš¡ãªãã£ããã/healthzã/v1/modelsãããã³ MCP ã¯ããã®äžéã®å¯Ÿè±¡å€ã§ãã
1 ããã»ã¹: 2 ä»¶ãè¶
ããé·æéã® /v1/responses
Section titled â1 ããã»ã¹: 2 ä»¶ãè¶
ããé·æéã® /v1/responsesâæ£åžžãªããã»ã¹ïŒããŒãã OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIOãããã©ã«ã 0.75 ãäžåãïŒã¯ãããã»ã¹å
šäœã®åŠçäžãã€ãäºç®ïŒOMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110ïŒã«ãŸã äœè£ãããã°ãé·æéã® POST /v1/responses ã 2 ä»¶ãè¶
ããŠåæå®è¡ã§ããŸããOMNIROUTE_CHAT_LARGE_BODY_BYTESïŒããã©ã«ã 256â¯KiBïŒä»¥äžã®ããã£ã¯ãæ§é çã«éããªã¯ãšã¹ããšåãééçŽãªãŒã¹ãååŸããåã #10437 ã® tryAcquireHealthyHeadroom ãšã¹ã±ãŒãïŒOMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOMïŒã䜿çšããŸããæ°åä»¶ã®é·æé SSE ã¯ã©ã€ã¢ã³ãã®åæå®è¡ïŒéçšè
ã¯å€ãã®å Žå 40ïœ50 ä»¶ãå¿
èŠãšããŸãïŒã¯ã補åäžã®ãæå€§ 2 ä»¶ããšããããŒãäžéã§ã¯ãªããã¡ã¢ãªäºç®ã®åé¡ã§ããããŒãããã©ã€ããª/ãããã«ãŒã ã¹ããããããã³ OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES ãé©åã«ãµã€ãžã³ã°ããŠãã ãããããŒãã«è² è·ãããã£ãŠããå Žåã¯ã#7849 ã®åçºãé²ããããåŒãç¶ãå詊è¡å¯èœãª 503 ã§è² è·ãæé€ããŸãã
ããŒããå¢ããïŒç¬ç«ãã V8 old-space ã䜿çšããïŒããã«ãçŸæç¹ã§ã¯æ¬¡ã®ããã«ããŸãã
| ãã¹ãããš | ãã¹ãã§ãªãããš |
|---|---|
ããããåºæã® DATA_DIR / ããªã¥ãŒã ãæã€ N åã®ã³ã³ãã/Pod ãå®è¡ãã |
1 ã€ã® SQLite ãã¡ã€ã«ã«å¯Ÿã㊠replicas > 1 ãèšå®ãã |
| ããŒã / åŠçäžãã€ãäºç®ã«åºã¥ããŠãééçŽã®åŠçäžãªã¯ãšã¹ãæ°ãšæ£åžžæãããã«ãŒã ããµã€ãžã³ã°ããã1ïœ2 ä»¶ã¯ä¿å®ç㪠#7849 ã®ããã©ã«ãã§ããã補åäžã®ããŒãäžéã§ã¯ãªã | 1 ã€ã®ããã»ã¹ã« 8 åã® RAM ãšç¡å¶éã®ä»¶æ°äžéãäžãã |
ãªãã·ã§ã³: å
±æã¯ã©ãŒã¿ã«ãŠã³ã¿ãŒã«ã¯ QUOTA_STORE_DRIVER=redis + QUOTA_STORE_REDIS_URL ã䜿çšãã |
Redis ãå ±æ SQLite ãšããŠæ±ã â Redis ã¯å ±æ SQLite ã§ã¯ãªã |
| ãããã€ããŒã®ã·ãŒã¯ã¬ãããåã€ã³ã¹ã¿ã³ã¹ã«è€è£œããïŒãŸãã¯ããã·ã¥ããŒãã®åå²ã蚱容ããïŒ | ã€ã³ã¹ã¿ã³ã¹éã§ 1 ã€ã®ããã·ã¥ããŒã / 1 ã€ã®ã³ãŒã«ãã°ãå ±æããããšæ³å®ãã |
| ä»»æã®ããŒããã©ã³ãµãŒãåæ®µã«é 眮ãããAPI ããŒãŸãã¯ã»ãã·ã§ã³åäœã®ã¹ãã£ãããŒèšå®ã§åå | ãã³ããŒåºæã®ãµã€ãºèªèããã«ãŠã§ã¢ãå¿ é ãšãã |
ããŒããŠã§ã¢: ã€ã³ã¹ã¿ã³ã¹ããšã®é·æé /v1/responses ã®åæå®è¡æ°ã¯ãã¡ã¢ãªäºç®ã®åé¡ã§ãïŒããŒã + åŠçäžãã€ã / #10110ïŒãç¬ç«ãã DATA_DIR ãæã€ N åã®ã€ã³ã¹ã¿ã³ã¹ã§ãããŒãã¯å¢å ããŸãããã¹ã RAM ã¯ãN=8 ã® 16â¯Gi Pod 1 åãã§ã¯ãªããN à cgroup ãå容ã§ããå¿
èŠããããŸãã1 ã€ã® SQLite ãã¡ã€ã«ã«å¯Ÿã㊠replicas > 1 ãèšå®ããŠã¯ãªããŸããã
Compose ã®æŠç¥äŸïŒ2 ã€ã®ããŒãã2 ã€ã®ããªã¥ãŒã â deploy.replicas: 2 ã§ã¯ãããŸããïŒ:
services: omniroute-a: image: diegosouzapw/omniroute:3.8.49 environment: DATA_DIR: /app/data OMNIROUTE_MEMORY_MB: "12288" QUOTA_STORE_DRIVER: redis QUOTA_STORE_REDIS_URL: redis://redis:6379 volumes: [omniroute-a-data:/app/data] ports: ["20128:20128"] omniroute-b: image: diegosouzapw/omniroute:3.8.49 environment: DATA_DIR: /app/data OMNIROUTE_MEMORY_MB: "12288" QUOTA_STORE_DRIVER: redis QUOTA_STORE_REDIS_URL: redis://redis:6379 volumes: [omniroute-b-data:/app/data] ports: ["20138:20128"]volumes: omniroute-a-data: omniroute-b-data:ããã»ã¹å å¯åºŠïŒHTTP isolate ããã®å§çž®åŠçã®åé¢ïŒã«ã€ããŠã¯ #11023 ãåç §ããŠãã ãããå ±æãããæ°žç¶ç¶æ äžã®åäžè«çã¯ã©ã¹ã¿ãŒã«ã€ããŠã¯ #8075 ãåç §ããŠãã ããã
éèŠäºé
Section titled âéèŠäºé â- SQLite WALã¢ãŒã: OmniRouteãææ°ã®å€æŽã
storage.sqliteãžãã§ãã¯ãã€ã³ãã§ããããã«ãdocker stopãå®äºãããŸã§åŸ æ©ããŠãã ããã忢±ã®Composeãã¡ã€ã«ã§ã¯ã忢ç¶äºæéããã§ã«40ç§ã«èšå®ãããŠããŸããã€ã¡ãŒãžãçŽæ¥å®è¡ããå Žåã¯ã--stop-timeout 40ãæå®ããŠãã ããã DISABLE_SQLITE_AUTO_BACKUP: 宿ããã¯ã¢ãããæžã蟌ã¿åããã¯ã¢ãããå€éšã§ç®¡çããŠããå Žåã¯ãtrueã«èšå®ããŠãã ãããæ¢åããŒã¿ããŒã¹ã®ãã€ã°ã¬ãŒã·ã§ã³ã§ã¯ãåŒãç¶ãç¬èªã®æ°žç¶çãªå®å šã¹ãããã·ã§ãããšäžæ¬ãã€ã°ã¬ãŒã·ã§ã³ä¿è·ãå¿ èŠã§ãã- ããŒã¿ã®æ°žç¶å: ã³ã³ããã®åèµ·ååŸãããŒã¿ããŒã¹ãããŒãèšå®ãä¿æããã«ã¯ãå¿
ã
/app/dataã«ããªã¥ãŒã ãããŠã³ãããŠãã ããã - ããŒãèšå®: ããã©ã«ãã®
20128ããŒãã倿Žããã«ã¯ãPORTç°å¢å€æ°ãäžæžãããŠãã ããã
é¢é£é ç®
Section titled âé¢é£é ç®â- VMãããã€ã¬ã€ã â VM + nginx + Cloudflareã®ã»ããã¢ãã
- Fly.ioãããã€ã¬ã€ã â Fly.ioãžã®ãããã€
- ç°å¢èšå® â å®å
šãª
.envãªãã¡ã¬ã³ã¹
HagiCode
HagiCode ã¯æ§é åã¯ãŒã¯ãããŒããã«ããšãŒãžã§ã³ãå®è¡ãHero Dungeon ãã¥ãŒãåãããšãŒãžã§ã³ãåã³ãŒãã£ã³ã°ã¯ãŒã¯ã¹ããŒã¹ã§ãã
ããã¹ããŒãã§éããæ¥œãããšãŒãžã§ã³ãåã¯ãŒã¯ãããŒã§ã䜿ãããããœãããŠã§ã¢ã圢ã«ããŸãã

- Smartæ§é åã¯ãŒã¯ãããŒã¯æå³ãã¢ã€ãã¢ãã倿Žã®ãªãªãŒã¹ãŸã§å®è¡å¯èœãªéçã«ããŸãã
- Efficientãã«ããšãŒãžã§ã³ãã®ã¯ãŒã¯ãããŒã§èª¿æ»ãå®è£ ãã¬ãã¥ãŒã䞊è¡ããŠé²ããŸãã
- FunHero Dungeon ã«ããé·æéã®ã³ãŒãã£ã³ã°ãèŠèŠçã§ååçãªäœéšã«ããŸãã