mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
627b673a5c
* refactor: restructure memory into multi-provider adapters, remove manifest.json dependency - Rename internal/memory/provider to internal/memory/adapters with per-provider subdirectories (builtin, mem0, openviking) - Replace manifest.json-based delete/update with scan-based index from daily files - Add mem0 and openviking provider adapters with HTTP client, chat hooks, MCP tools, and CRUD - Wire provider lifecycle into registry (auto-instantiate on create, evict on update/delete) - Split docker-compose into base stack + optional overlays (qdrant, browser, mem0, openviking) - Update admin UI to support dynamic provider config schema rendering * chore(lint): fix all golangci-lint issues for clean CI * refactor(docker): replace compose overlay files with profiles * feat(memory): add built-in memory multi modes * fix(ci): golangci lint * feat(memory): edit built-in memory sparse design
123 lines
3.5 KiB
Markdown
123 lines
3.5 KiB
Markdown
# Memoh Deployment Guide
|
|
|
|
## One-Click Install
|
|
|
|
```bash
|
|
curl -fsSL https://memoh.sh | sudo sh
|
|
```
|
|
|
|
The script prompts for configuration, generates `config.toml`, and starts all services.
|
|
|
|
## Manual Install
|
|
|
|
```bash
|
|
git clone https://github.com/memohai/Memoh.git
|
|
cd Memoh
|
|
cp conf/app.docker.toml config.toml
|
|
nano config.toml # Change passwords and JWT secret
|
|
```
|
|
|
|
> On macOS or if your user is in the `docker` group, `sudo` is not required.
|
|
|
|
> **Important**: You must create `config.toml` before starting. `docker-compose.yml` mounts `./config.toml` into the containers — running without it will fail.
|
|
|
|
### Standard startup (with Qdrant + Browser)
|
|
|
|
```bash
|
|
sudo docker compose --profile qdrant --profile browser up -d
|
|
```
|
|
|
|
### Minimal startup (core only)
|
|
|
|
```bash
|
|
sudo docker compose up -d
|
|
```
|
|
|
|
Access:
|
|
- Web UI: http://localhost:8082
|
|
- API: http://localhost:8080
|
|
- Agent: http://localhost:8081
|
|
|
|
Default credentials: `admin` / `admin123` (change in `config.toml`)
|
|
|
|
## Docker Compose Profiles
|
|
|
|
The base `docker-compose.yml` contains all services. Core services (postgres, server, agent, web) always start. Optional services are gated by profiles and only start when explicitly enabled:
|
|
|
|
| Profile | Service | Description |
|
|
|---------|---------|-------------|
|
|
| `qdrant` | Qdrant | Vector database for memory semantic search |
|
|
| `browser` | Browser | Browser automation gateway (Playwright) |
|
|
| `openviking` | OpenViking | Self-hosted OpenViking memory provider |
|
|
|
|
### Supported combinations
|
|
|
|
```bash
|
|
# Core + Qdrant + Browser (recommended default)
|
|
docker compose --profile qdrant --profile browser up -d
|
|
|
|
# Core + Qdrant + OpenViking (self-hosted)
|
|
docker compose --profile qdrant --profile openviking up -d
|
|
```
|
|
|
|
### SaaS / external providers
|
|
|
|
For Mem0 or OpenViking SaaS, no profile is needed. Configure the provider directly in the Memoh admin UI with the external `base_url` and API key.
|
|
|
|
### China Mainland Mirror
|
|
|
|
Uncomment `registry = "memoh.cn"` in `config.toml` under `[mcp]`, then add the CN overlay:
|
|
|
|
```bash
|
|
sudo docker compose -f docker-compose.yml -f docker/docker-compose.cn.yml \
|
|
--profile qdrant --profile browser up -d
|
|
```
|
|
|
|
## Prerequisites
|
|
|
|
- Docker (with Docker Compose v2)
|
|
- Git
|
|
|
|
## Configuration
|
|
|
|
`config.toml` is generated from `conf/app.docker.toml` and should live in the project root. It is mounted into all containers at startup and is **not** tracked by git.
|
|
|
|
Recommended changes for production:
|
|
- `admin.password` — Admin password
|
|
- `auth.jwt_secret` — JWT secret (generate with `openssl rand -base64 32`)
|
|
- `postgres.password` — Database password (also set `POSTGRES_PASSWORD` env var)
|
|
|
|
## Common Commands
|
|
|
|
> Prefix with `sudo` on Linux if your user is not in the `docker` group.
|
|
|
|
```bash
|
|
docker compose up -d # Start
|
|
docker compose down # Stop
|
|
docker compose logs -f # View logs
|
|
docker compose ps # Status
|
|
docker compose pull && docker compose up -d # Update images
|
|
```
|
|
|
|
## Production
|
|
|
|
1. Change all default passwords and secrets
|
|
2. Configure HTTPS (reverse proxy or `docker-compose.override.yml` with SSL)
|
|
3. Configure firewall
|
|
4. Set resource limits
|
|
5. Regular backups
|
|
|
|
## Troubleshooting
|
|
|
|
```bash
|
|
docker compose logs server # View service logs
|
|
docker compose config # Check configuration
|
|
docker compose build --no-cache && docker compose up -d # Full rebuild
|
|
```
|
|
|
|
## Security Warnings
|
|
|
|
- Main service has privileged container access — only run in trusted environments
|
|
- Must change all default passwords and secrets
|
|
- Use HTTPS in production
|