Files
esh-pfi-infrastructure/stacks/memos/README.md
T
vh 6df5549161 memos: deploy to ana-docker
Stock neosmemo/memos:stable, port 5230, SQLite at
/opt/docker/conf/memos/data/. Joins traefik-net and ships homepage
labels (group=Notes) so it auto-appears on the dashboard via docker
discovery — no edit to configs/homepage/services.yaml needed.

First-run bootstrap is via the UI: visit http://10.250.50.70:5230
and create the Host account through the sign-up form.

Playbook idiom note: docker compose pull lines need the literal
block scalar (|) when the grep pattern contains colons — bare-string
shell value made YAML parse the colon as a mapping separator and
elway choked on first try.
2026-04-29 13:27:12 -07:00

1.3 KiB

memos

memos — lightweight self-hosted note / memo server. Single Go binary, SQLite by default, MIT license.

host ana-docker
port 5230
image neosmemo/memos:stable
data /opt/docker/conf/memos/data/ (SQLite + uploaded resources)
homepage group Notes

Deploy

scripts/elway ana-docker --playbook playbooks/deploy-memos.yaml

First run: visit http://10.250.50.70:5230, create the Host account through the sign-up form. Subsequent users register through the same form (or you disable open sign-up via Settings → Workspace).

Tunables

See .env.example — copy to .env on the host (lives at /opt/docker/compose/memos/.env, gitignored). Knobs are intentionally minimal: image tag, host port, TZ, data dir. Memos itself reads its config from the SQLite DB (workspace settings via the UI).

Backups

Data dir is /opt/docker/conf/memos/data/. The host's restic profile covers /opt/docker/conf/ so the SQLite DB + uploaded resources go along for free. SQLite snapshot is consistent under restic's COW reads since memos uses WAL mode + fsync; for a guaranteed-quiescent backup take a docker exec memos sqlite3 /var/opt/memos/memos_prod.db ".backup /var/opt/memos/snapshot.db" in the restic pre-backup hook.