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