-
Notifications
You must be signed in to change notification settings - Fork 1
Installation
Zetta CRM Bot edited this page Jun 4, 2026
·
1 revision
Zetta CRM runs as one container plus one MySQL 8 database.
Published images are pushed on release tags to GitHub Container Registry:
ghcr.io/incredible-zetta/crm:v0.0.1-betaUse tag-pinned images in production. Use latest only if you create that tag yourself.
| Variable | Required | Notes |
|---|---|---|
MCP_API_KEY |
yes | Bearer / X-API-Key for /mcp
|
DB_DSN |
yes | MySQL DSN: user:pass@tcp(host:3306)/crmagents?parseTime=true&multiStatements=true
|
BASE_URL |
yes | Public URL used for tracking, export, unsubscribe links |
PORT |
no | Default 8080
|
EXPORT_DIR |
no | Default /data/exports in image |
SCHEDULER_INTERVAL_SEC |
no | Default 15
|
SMTP_* or MAILGUN_*
|
no | Needed for real email sending |
SMTP example:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=no-reply@example.com
SMTP_PASS=...
SMTP_FROM=no-reply@example.comMailgun example:
MAILGUN_DOMAIN=mg.example.com
MAILGUN_API_KEY=...
SMTP_FROM=no-reply@example.comdocker network create zetta || true
docker run -d --name zetta-mysql --network zetta \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=crmagents \
-e MYSQL_USER=crmagents \
-e MYSQL_PASSWORD=crmagentspass \
-v zetta-mysql:/var/lib/mysql \
mysql:8
docker run -d --name zetta-crm --network zetta \
-p 8080:8080 \
-e MCP_API_KEY='change-me-long-random' \
-e BASE_URL='http://localhost:8080' \
-e DB_DSN='crmagents:crmagentspass@tcp(zetta-mysql:3306)/crmagents?parseTime=true&multiStatements=true' \
-v zetta-exports:/data/exports \
ghcr.io/incredible-zetta/crm:v0.0.1-betaSmoke test:
curl -fsS http://localhost:8080/healthz
MCP_URL=http://localhost:8080/mcp MCP_API_KEY=change-me-long-random ./scripts/test-mcp.shservices:
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: crmagents
MYSQL_USER: crmagents
MYSQL_PASSWORD: crmagentspass
volumes:
- mysql:/var/lib/mysql
zetta-crm:
image: ghcr.io/incredible-zetta/crm:v0.0.1-beta
depends_on:
- mysql
ports:
- "8080:8080"
environment:
MCP_API_KEY: change-me-long-random
BASE_URL: http://localhost:8080
DB_DSN: crmagents:crmagentspass@tcp(mysql:3306)/crmagents?parseTime=true&multiStatements=true
EXPORT_DIR: /data/exports
volumes:
- exports:/data/exports
volumes:
mysql:
exports:Public routes:
-
/mcp— private; requireAuthorization: Bearer $MCP_API_KEYorX-API-Key. -
/healthz— public health check. -
/t/{code}— public click redirect. -
/o/{code}.png— public open pixel. -
/export/{id}.csv— public export download URL. -
/u/{code}— public unsubscribe page.
Terminate TLS at your platform/proxy and set BASE_URL=https://your-domain.example.