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
One-Click Install
Run the official install script (requires Docker and Docker Compose):
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sudo shThe script will:
- Check for Docker and Docker Compose
- Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password)
- Clone the repository
- Generate
config.tomlfrom the Docker template - Start all services with
docker compose up -d --build
Silent install (use all defaults, no prompts):
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sudo sh -s -- -yDefaults 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:
git clone https://github.com/memohai/Memoh.git
cd Memoh
sudo docker compose up -dOn macOS or if your user is in the
dockergroup,sudois not required.
By default, Docker Compose uses conf/app.docker.toml. No config file in the project root is mounted — only this built-in config is used. See config.toml reference 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 1–2 minutes while images build and services initialize.
Custom Configuration
To use your own config file:
- Copy the Docker config template and edit it. See config.toml reference for field descriptions:
cp conf/app.docker.toml config.toml
nano config.toml- Point
MEMOH_CONFIGat your config when starting (path is on the host; rundocker composefrom the project root):
sudo MEMOH_CONFIG=./config.toml docker compose up -dRecommended changes for production (see config.toml reference for details):
admin.password— Change the admin passwordauth.jwt_secret— Generate withopenssl rand -base64 32postgres.password— Change the database password (and setPOSTGRES_PASSWORDwhen runningdocker compose)
Common Commands
Prefix with
sudoon Linux if your user is not in thedockergroup.
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 restartProduction Checklist
- HTTPS — Configure SSL (e.g. via
docker-compose.override.ymlwith certs) - Passwords — Change all default passwords and secrets
- Firewall — Restrict access to necessary ports
- Resource limits — Set memory/CPU limits for containers
- Backups — Regular backups of Postgres and Qdrant data
Troubleshooting
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 rebuildSecurity 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
