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.

MethodChoose it whenNext guide
DockerYou want a repeatable image and a named data volumeDocker
Docker ComposeYou want configuration stored alongside a local deploymentCompose
Native binaryYou manage the process, permissions and data path yourselfRun a binary
KubernetesYou already operate a cluster and persistent volumesKubernetes

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/healthz

Verify 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.

Guides in this section