This guide covers essential configuration for self-hosted Keila installations.
Keila uses PostgreSQL exclusively. Configure via environment variables or runtime.exs:
# In runtime.exs or via environment
config :keila, Keila.Repo,
url: "postgresql://keila:your-secure-password@localhost:5432/keila",
pool_size: 10
Configure via environment variables:
# Required settings
SECRET_KEY_BASE=generate-a-long-random-base64-string
DATABASE_URL=postgresql://keila:password@db:5432/keila
KEILA_URL=https://keila.example.com
# Optional settings
MAILER_SENDER_EMAIL=noreply@example.com
MAILER_SENDER_NAME="Your Organization"
Generate SECRET_KEY_BASE:
openssl rand -base64 64
Configure SMTP via environment variables:
# SMTP Configuration
SMTP_HOST=smtp.yourprovider.com
SMTP_PORT=587
SMTP_USER=your-smtp-user
SMTP_PASSWORD=your-smtp-password
SMTP_SSL=false # Set true for port 465
Recommended SMTP Providers:
Keila uses Liquid templating engine:
{{ subscriber.email }} for personalizationExample Template:
<html>
<body>
<h1>Hello {{ subscriber.first_name }}!</h1>
<p>Thanks for subscribing to our newsletter.</p>
<p><a href="{{ unsubscribe_url }}">Unsubscribe</a></p>
</body>
</html>
Configure campaign defaults in Settings:
Configure public subscription forms:
Enable double opt-in for compliance:
Keila provides a REST API for integrations:
# Generate API token in admin panel
# Use in API requests:
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://keila.example.com/api/subscribers
SECRET_KEY_BASE is unique and securedocker logs keilaDATABASE_URL format