| id |
title |
status |
assignee |
created_date |
updated_date |
labels |
dependencies |
priority |
| task-1 |
Set up CosmoLocal email, docs, and newsletter infrastructure |
Done |
|
2026-02-09 12:00 |
2026-02-09 21:30 |
| infrastructure |
| email |
| docs |
| newsletter |
|
|
high |
Description
Set up CosmoLocal World infrastructure: Mailcow SMTP for cosmolocal.world, Docmost workspace at docs.cosmolocal.world, Listmonk newsletter list with per-list RBAC for Bryan, and email authentication (DKIM, SPF, DMARC).
Acceptance Criteria
Implementation Notes
Mailcow (cosmolocal.world)
Docmost (docs.cosmolocal.world)
- Separate Docmost app container (docmost-cl) sharing Postgres + Redis with docs.jeffemmett.com
- Database: docmost_cosmolocal (in shared docmost-db Postgres)
- Redis: db 1 (shared docmost-redis)
- DNS: proxied A record → 159.195.32.209
- SSL: Traefik websecure entrypoint + Let's Encrypt cert
- SMTP: noreply@cosmolocal.world via Mailcow
- Location: /opt/apps/docmost/docker-compose.yml (single compose file)
Listmonk (newsletter.cosmolocal.world)
- CosmoLocal World list created (id=21, public, single opt-in)
- SMTP server "cosmolocal.world" configured in Listmonk settings
- Bryan's account: bryan / CosmoLocal-e2dc5eec
- User role: Editor (campaigns, subscribers, templates, media - no admin)
- List role: CosmoLocal Editor (scoped to CosmoLocal World list only)
- Cannot see other lists, settings, users, or roles
Bryan's Access Summary
| Service |
URL |
Username |
Role |
| Listmonk |
newsletter.jeffemmett.com/admin |
bryan |
Editor (CosmoLocal list only) |
| Docmost |
docs.cosmolocal.world |
bryan@cosmolocal.world |
Member (invited) |