cosmolocal-website/backlog/tasks/task-1 - Set-up-CosmoLocal-...

2.7 KiB

id title status assignee created_date updated_date labels dependencies priority
task-1 Set up CosmoLocal email, docs, and newsletter infrastructure Done
@claude
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

  • #1 Configure Mailcow SMTP for cosmolocal.world domain
  • #2 Set up DNS records (SPF, DKIM, DMARC) for cosmolocal.world
  • #3 Create noreply@cosmolocal.world mailbox with newsletter@ alias
  • #4 Deploy Docmost at docs.cosmolocal.world (separate workspace, shared infra)
  • #5 Configure SMTP for Docmost CosmoLocal instance
  • #6 Create CosmoLocal World list in Listmonk
  • #7 Set up Bryan as editor with per-list RBAC (CosmoLocal list only)
  • #8 Set up Google Postmaster Tools for cosmolocal.world
  • #9 Configure Traefik websecure + Let's Encrypt for docs.cosmolocal.world
  • #10 Invite Bryan to CosmoLocal Docmost workspace

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)