Files
javis_bot/docs/DEPLOY.md
javis-bot 3bdc7d078a feat: cross-platform compose (Ubuntu CDI + Windows Docker Desktop GPU)
Base compose is GPU-agnostic; GPU is added by a per-OS override selected via
COMPOSE_FILE in .env (docker-compose.gpu-linux.yml for Ubuntu/CDI,
docker-compose.gpu-windows.yml for Windows 11 Docker Desktop). Adds .env.example
split-deployment section + docs/DEPLOY.md covering all-in-one and browser+bot
layouts on both OSes.
2026-06-15 13:00:04 +09:00

2.5 KiB
Raw Blame History

Deployment layouts

One image, three roles (JARVIS_ROLE), selected in .env. GPU is added per OS via a compose override picked with COMPOSE_FILE.

A. All-in-one (single machine)

Everything (desktop + Chrome + bridge + bot + TTS) in one container.

# .env
JARVIS_ROLE=full
COMPOSE_FILE=docker-compose.yml:docker-compose.gpu-linux.yml      # Ubuntu
# COMPOSE_FILE=docker-compose.yml:docker-compose.gpu-windows.yml  # Windows 11
DISCORD_SELFBOT_TOKEN=...
DISCORD_GUILD_ID=...

docker compose up -d            # Ollama + javis (COMPOSE_FILE adds GPU)

B. Split: browser host (LAN) + bot on your PC

The on-screen Chrome, real mouse/keyboard (xdotool) and screen live on the browser host. Your PC runs the bot and drives that browser over the internal network — no auth (internal only).

Browser host (the LAN machine that shows Chrome, e.g. 192.168.10.9)

# .env
JARVIS_ROLE=browser
CDP_BIND=0.0.0.0
BROWSER_CONTROL_BIND=0.0.0.0
CDP_PUBLISH_BIND=0.0.0.0
# no GPU needed → leave COMPOSE_FILE unset (base compose only)

docker compose up -d javis      # desktop + Chrome + control-server (port 8777)

Watch it on this machines VNC (localhost:5901) / noVNC (localhost:6080).

Bot host (your PC — Ubuntu or Windows 11)

# .env
JARVIS_ROLE=bot
BROWSER_CONTROL_URL=http://192.168.10.9:8777      # the browser host's LAN IP
COMPOSE_FILE=docker-compose.yml:docker-compose.gpu-linux.yml      # Ubuntu
# COMPOSE_FILE=docker-compose.yml:docker-compose.gpu-windows.yml  # Windows 11
DISCORD_SELFBOT_TOKEN=...
DISCORD_GUILD_ID=...

docker compose up -d            # bot + bridge + TTS + Ollama (GPU per OS)

The bots controlBrowser tool posts commands to BROWSER_CONTROL_URL, so "네이버에서 X 검색", "구글로 돌아가" etc. drive the browser hosts Chrome with real human-style input (visible on its VNC).

Windows 11 notes

  • Install the NVIDIA driver on Windows and enable GPU in Docker Desktop (Settings → Resources → WSL Integration). Use the gpu-windows.yml override.
  • Paths: named volumes are cross-platform. The Gemini OAuth bind mount defaults to ${HOME}/.config/javis/gemini (works under WSL); override GEMINI_OAUTH_DIR if needed.

Known limitation

Discord Go-Live broadcast of the browser host's screen from a remote bot is not supported (the bot's WebRTC screen capture is local to the bot machine). Use the browser host's VNC to view it. A full remote-broadcast path is separate, larger work.