docs: update

This commit is contained in:
Acbox
2026-02-15 21:20:22 +08:00
parent 54fd07f445
commit d2646bbfa1
14 changed files with 908 additions and 16 deletions
+152
View File
@@ -0,0 +1,152 @@
# config.toml Reference
Memoh uses a TOML configuration file. By default it looks for `config.toml` in the current directory. With Docker, you can mount a custom config via `MEMOH_CONFIG` (see [Docker installation](./docker#custom-configuration)).
## Full Example
```toml
[log]
level = "info"
format = "text"
[server]
addr = ":8080"
[admin]
username = "admin"
password = "change-your-password"
email = "admin@example.com"
[auth]
jwt_secret = "your-secret-from-openssl-rand-base64-32"
jwt_expires_in = "168h"
[containerd]
socket_path = "/run/containerd/containerd.sock"
namespace = "default"
[mcp]
image = "docker.io/library/memoh-mcp:latest"
snapshotter = "overlayfs"
data_root = "data"
data_mount = "/data"
[postgres]
host = "127.0.0.1"
port = 5432
user = "postgres"
password = "your-password"
database = "memoh"
sslmode = "disable"
[qdrant]
base_url = "http://127.0.0.1:6334"
api_key = ""
collection = "memory"
timeout_seconds = 10
[agent_gateway]
host = "127.0.0.1"
port = 8081
[web]
host = "127.0.0.1"
port = 8082
[brave]
api_key = ""
base_url = "https://api.search.brave.com/res/v1/"
```
## Section Reference
### `[log]`
| Field | Type | Default | Description |
|---------|--------|---------|--------------------------------------------------|
| `level` | string | `"info"` | Log level: `debug`, `info`, `warn`, `error` |
| `format`| string | `"text"` | Log format: `text` or `json` |
### `[server]`
| Field | Type | Default | Description |
|--------|--------|---------|--------------------------------------------------|
| `addr` | string | `":8080"` | HTTP listen address. Use `:8080` for all interfaces, or `host:port` (e.g. `server:8080` in Docker). |
### `[admin]`
| Field | Type | Default | Description |
|------------|--------|---------|--------------------------------------|
| `username` | string | `"admin"` | Admin login username |
| `password` | string | — | Admin login password. **Change in production.** |
| `email` | string | — | Admin email (for display) |
### `[auth]`
| Field | Type | Default | Description |
|----------------|--------|---------|--------------------------------------------------|
| `jwt_secret` | string | — | Secret for signing JWT tokens. **Required.** Generate with `openssl rand -base64 32`. |
| `jwt_expires_in` | string | `"24h"` | JWT expiration, e.g. `"24h"`, `"168h"` (7 days) |
### `[containerd]`
| Field | Type | Default | Description |
|---------------|--------|---------|--------------------------------------------------|
| `socket_path` | string | `"/run/containerd/containerd.sock"` | Path to containerd socket |
| `namespace` | string | `"default"` | Containerd namespace for bot containers |
### `[mcp]`
MCP (Model Context Protocol) container configuration. Each bot runs in a container built from this image.
| Field | Type | Default | Description |
|---------------|--------|---------|--------------------------------------------------|
| `image` | string | `"docker.io/library/memoh-mcp:latest"` | MCP container image |
| `snapshotter` | string | `"overlayfs"` | Containerd snapshotter |
| `data_root` | string | `"data"` | Host path for bot data (Docker: `/opt/memoh/data`) |
| `data_mount` | string | `"/data"` | Path inside container where data is mounted |
### `[postgres]`
| Field | Type | Default | Description |
|-----------|--------|---------|--------------------------------------------------|
| `host` | string | `"127.0.0.1"` | PostgreSQL host |
| `port` | int | `5432` | PostgreSQL port |
| `user` | string | `"postgres"` | Database user |
| `password`| string | — | Database password |
| `database`| string | `"memoh"` | Database name |
| `sslmode` | string | `"disable"` | SSL mode: `disable`, `require`, `verify-ca`, `verify-full` |
### `[qdrant]`
| Field | Type | Default | Description |
|------------------|--------|---------|--------------------------------------------------|
| `base_url` | string | `"http://127.0.0.1:6334"` | Qdrant HTTP API URL |
| `api_key` | string | `""` | Optional API key for Qdrant Cloud |
| `collection` | string | `"memory"` | Vector collection name for memories |
| `timeout_seconds`| int | `10` | Request timeout in seconds |
### `[agent_gateway]`
| Field | Type | Default | Description |
|--------|--------|---------|--------------------------------------------------|
| `host` | string | `"127.0.0.1"` | Agent gateway bind host |
| `port` | int | `8081` | Agent gateway port |
In Docker Compose, `host` is typically `"agent"` (service name). The agent reads `[server].addr` to call the main API.
### `[web]`
| Field | Type | Default | Description |
|--------|--------|---------|--------------------------------------------------|
| `host` | string | `"127.0.0.1"` | Web UI bind host |
| `port` | int | `8082` | Web UI port |
### `[brave]`
Brave Search API for the web search tool. Leave `api_key` empty to disable web search.
| Field | Type | Default | Description |
|-----------|--------|---------|--------------------------------------------------|
| `api_key` | string | `""` | Brave Search API key. Get one at [brave.com/search/api](https://brave.com/search/api). |
| `base_url`| string | `"https://api.search.brave.com/res/v1/"` | Brave Search API base URL |
+121
View File
@@ -0,0 +1,121 @@
# Docker Installation
Docker is the recommended way to run Memoh. The stack includes PostgreSQL, Qdrant, Containerd, the main server, agent gateway, and web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.
## Prerequisites
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose v2](https://docs.docker.com/compose/install/)
- Git
## One-Click Install
Run the official install script (requires Docker and Docker Compose):
```bash
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sh
```
The script will:
1. Check for Docker and Docker Compose
2. Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password)
3. Clone the repository
4. Generate `config.toml` from the Docker template
5. Start all services with `docker compose up -d --build`
**Silent install** (use all defaults, no prompts):
```bash
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sh -s -- -y
```
Defaults when running silently:
- Workspace: `~/memoh`
- Data directory: `~/memoh/data`
- Admin: `admin` / `admin123`
- JWT secret: auto-generated
- Postgres password: `memoh123`
## Manual Install
Clone the repository and start with Docker Compose:
```bash
git clone https://github.com/memohai/Memoh.git
cd Memoh
docker compose up -d
```
By default, Docker Compose uses `docker/config/config.docker.toml`. No config file in the project root is mounted — only this built-in config is used. See [config.toml reference](./config-toml) for all configuration fields.
## Access Points
After startup:
| Service | URL |
|---------------|------------------------|
| Web UI | http://localhost:8082 |
| API | http://localhost:8080 |
| Agent Gateway | http://localhost:8081 |
Default login: `admin` / `admin123`
First startup may take 12 minutes while images build and services initialize.
## Custom Configuration
To use your own config file:
1. Copy the Docker config template and edit it. See [config.toml reference](./config-toml) for field descriptions:
```bash
cp docker/config/config.docker.toml config.toml
nano config.toml
```
2. Point `MEMOH_CONFIG` at your config when starting (path is on the host; run `docker compose` from the project root):
```bash
MEMOH_CONFIG=./config.toml docker compose up -d
```
**Recommended changes for production** (see [config.toml reference](./config-toml) for details):
- `admin.password` — Change the admin password
- `auth.jwt_secret` — Generate with `openssl rand -base64 32`
- `postgres.password` — Change the database password (and set `POSTGRES_PASSWORD` when running `docker compose`)
## Common Commands
```bash
docker compose up -d # Start
docker compose down # Stop
docker compose logs -f # View logs
docker compose ps # Status
docker compose up -d --build # Rebuild and restart
```
## Production Checklist
1. **HTTPS** — Configure SSL (e.g. via `docker-compose.override.yml` with certs)
2. **Passwords** — Change all default passwords and secrets
3. **Firewall** — Restrict access to necessary ports
4. **Resource limits** — Set memory/CPU limits for containers
5. **Backups** — Regular backups of Postgres and Qdrant data
## Troubleshooting
```bash
docker compose logs server # View main service logs
docker compose logs containerd # View containerd logs
docker compose config # Validate configuration
docker compose build --no-cache && docker compose up -d # Full rebuild
```
## Security Warnings
- The main service runs with privileged container access — only run in trusted environments
- You must change all default passwords and secrets before production use
- Use HTTPS in production