DocumentationDeployment
Rust · 0.1.0
Deployment
Choose a deployment method, preserve your data, and verify a working instance before exposing it to the network.
Choose an installation path
This distribution packages a Rust backend together with the web interface. You need authorized source access; the examples build your own artifact and do not assume that an upstream image contains this fork. Start with one instance and one data volume before adding proxy or orchestration complexity.
| Method | Choose it when | Next guide |
|---|---|---|
| Docker | You want a repeatable image and a named data volume | Docker |
| Docker Compose | You want configuration stored alongside a local deployment | Compose |
| Native binary | You manage the process, permissions and data path yourself | Run a binary |
| Kubernetes | You already operate a cluster and persistent volumes | Kubernetes |
Bring up a local instance
From the application repository root, build the image and bind its published port to loopback. The named volume persists across container replacement. If a container with this name already exists, inspect it instead of deleting it blindly. Finish first-account setup through the browser before allowing remote access.
docker build -f scripts/Dockerfile -t memos:local .
docker volume create memos-data
docker run -d --name memos \
-p 127.0.0.1:5230:5230 \
-v memos-data:/var/opt/memos memos:local
curl --fail http://127.0.0.1:5230/healthzVerify more than process health
An HTTP 200 health response confirms that the process is answering; it does not prove that accounts, file storage or backups are correct. Open http://127.0.0.1:5230 and perform the following acceptance checks using test data.
- Create a test memo, refresh and read it again
- Upload a small attachment and download it as its owner
- Check the intended anonymous and signed-in access separately
- Restart the same container and confirm the test data remains
- Prepare a backup and restore procedure before adding valuable records
Add a public origin deliberately
For remote access, configure HTTPS and a reverse proxy, then set the instance's external URL consistently. Keep the backend listener away from direct public access. If startup fails, inspect container logs and data-directory permissions; if only login or uploads fail, check the proxy and provider/storage configuration rather than rebuilding the image repeatedly.