#
Getting Started
#
Requirements
- Docker + Docker Compose
- AWS SES credentials
#
Quick Start
cp .env.example .env
docker compose up -d
Then open the app and complete setup:
- Create initial admin at
/setup - Activate license at
/activate - Configure organization SES credentials in
/app/organization
#
Environment
Self-hosted .env should include:
NODE_ENV=development
COOKIE_SECRET=change-me-to-a-long-random-value
DB_SECRET_KEY=base64-encoded-32-byte-key
DATABASE_URL=postgres://postgres:postgres@localhost:5433/ses_ui
APP_BASE_URL=http://localhost:3000
SES_WEBHOOK_URL=
SES_WEBHOOK_SECRET=
SES_WEBHOOK_URLcan be left empty to use${APP_BASE_URL}/api/webhooks/sesSES_WEBHOOK_SECRETis required to authenticate webhook calls
#
AWS Permissions
For full functionality, use:
- SES template + send permissions (SESv2 + SES)
ses:GetSendQuotacloudwatch:GetMetricData(dashboard deliverability)- AWS managed policy
AmazonSNSFullAccess(for webhook setup automation)
Optional hardening:
- Replace
AmazonSNSFullAccesswith a custom SNS policy limited to:CreateTopic,Subscribe,SetTopicAttributes,ListSubscriptionsByTopic