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.
This commit is contained in:
73
docs/DEPLOY.md
Normal file
73
docs/DEPLOY.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 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 machine’s 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 bot’s `controlBrowser` tool posts commands to `BROWSER_CONTROL_URL`, so
|
||||
"네이버에서 X 검색", "구글로 돌아가" etc. drive the **browser host’s** 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.
|
||||
Reference in New Issue
Block a user