docs(containers): add brother mode configuration and lxd-sock proxy details
All checks were successful
GBCI / build (push) Successful in 3m8s
All checks were successful
GBCI / build (push) Successful in 3m8s
This commit is contained in:
parent
fc31150198
commit
96624a15d3
3 changed files with 56 additions and 0 deletions
|
|
@ -177,6 +177,29 @@ Requires CUDA installed and 12GB+ VRAM.
|
||||||
| **Local** | Development, single instance | This page |
|
| **Local** | Development, single instance | This page |
|
||||||
| **Docker** | Production, microservices | [Docker Deployment](../chapter-07-gbapp/docker-deployment.md) |
|
| **Docker** | Production, microservices | [Docker Deployment](../chapter-07-gbapp/docker-deployment.md) |
|
||||||
| **LXC** | Isolated components, Linux | [Container Deployment](../chapter-07-gbapp/containers.md) |
|
| **LXC** | Isolated components, Linux | [Container Deployment](../chapter-07-gbapp/containers.md) |
|
||||||
|
| **Brother Mode** | Container managing host containers | See below |
|
||||||
|
|
||||||
|
### Container-on-Host (Brother Mode)
|
||||||
|
|
||||||
|
You can run `botserver` inside a container (Docker/LXC) while letting it manage other containers directly on the host system. This is useful for CI/CD pipelines or managing "host" deployment from a restricted environment.
|
||||||
|
|
||||||
|
**Requirements:**
|
||||||
|
- Mount host's LXD socket to container
|
||||||
|
- Run container as privileged (if accessing host devices)
|
||||||
|
|
||||||
|
**Docker Run Example:**
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name botserver \
|
||||||
|
--network host \
|
||||||
|
--privileged \
|
||||||
|
-v /var/lib/lxd/unix.socket:/var/lib/lxd/unix.socket \
|
||||||
|
-e VAULT_ADDR="https://127.0.0.1:8200" \
|
||||||
|
-e VAULT_TOKEN="<your-token>" \
|
||||||
|
botserver:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
The installer detects if it is running in a container but needs to manage the host (brother mode) and will configure the host's LXD/LXC environment safely.
|
||||||
|
|
||||||
> ⚠️ **IMPORTANT**: Container create commands (`botserver install ... --container`) must be run from the **host system**, not inside a container.
|
> ⚠️ **IMPORTANT**: Container create commands (`botserver install ... --container`) must be run from the **host system**, not inside a container.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,21 @@ For Tauri desktop builds, `tauri.conf.json` specifies the frontend distribution:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Asset Serving Strategy
|
||||||
|
|
||||||
|
BotUI supports two methods for serving static assets:
|
||||||
|
|
||||||
|
1. **FileSystem (Default)**: Reads files from `./ui/` directory at runtime. Best for development as changes are reflected immediately.
|
||||||
|
2. **Embedded (`embed-ui`)**: Compiles all assets into the binary using `rust-embed`. Best for CI/CD and single-file distribution.
|
||||||
|
|
||||||
|
To enable embedded assets:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo build -p botui --features embed-ui
|
||||||
|
```
|
||||||
|
|
||||||
|
The CI pipeline automatically enables this feature, producing a standalone `botui` binary that requires no external `ui/` folder.
|
||||||
|
|
||||||
### Routing
|
### Routing
|
||||||
|
|
||||||
Both interfaces can be served simultaneously with different routes:
|
Both interfaces can be served simultaneously with different routes:
|
||||||
|
|
|
||||||
|
|
@ -166,6 +166,24 @@ lxc exec default-tables -- pg_dump -U gbuser botserver > backup.sql
|
||||||
psql -U gbuser botserver < backup.sql
|
psql -U gbuser botserver < backup.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Brother Mode Configuration
|
||||||
|
|
||||||
|
If you are running `botserver` itself inside a container (e.g., LXC or Docker) but want it to manage other LXC containers on the host ("Brother Mode"), you must expose the host's LXD socket.
|
||||||
|
|
||||||
|
### Required LXD Profile
|
||||||
|
|
||||||
|
To allow child containers to communicate with the host LXD daemon, add the `lxd-sock` proxy device to the default profile. This maps the host's socket to `/tmp/lxd.sock` inside the container, avoiding conflicts with missing `/var/lib/lxd` directories in standard images.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lxc profile device add default lxd-sock proxy \
|
||||||
|
connect=unix:/var/lib/lxd/unix.socket \
|
||||||
|
listen=unix:/tmp/lxd.sock \
|
||||||
|
bind=container \
|
||||||
|
uid=0 gid=0 mode=0660
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note**: The `botserver` installer attempts to configure this automatically. If you encounter "socket not found" errors, verify this proxy device exists.
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
- [Installation](../chapter-01/installation.md) - Local setup
|
- [Installation](../chapter-01/installation.md) - Local setup
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue