Skip to main content

Deployment

View as Markdown

i
This feature requires an EventCatalog Scale license.

Deploy the EventCatalog Slack Bot to your infrastructure. The bot uses Socket Mode, so it maintains an outbound connection to Slack without requiring a public URL, load balancer, or SSL certificates.

Docker​

The simplest way to deploy is using Docker. The bot includes a Dockerfile and docker-compose configuration.

Build the image​

docker build -t eventcatalog-slack-bot .

Run with docker-compose​

docker compose up -d

View logs​

docker compose logs -f

The docker-compose.yml file mounts your config and reads environment variables from .env:

services:
eventcatalog-slack-bot:
build: .
container_name: eventcatalog-slack-bot
restart: unless-stopped
env_file:
- .env
volumes:
- ./eventcatalog-bot.config.ts:/app/eventcatalog-bot.config.ts:ro
environment:
- NODE_ENV=production

Docker networking​

When running the bot in Docker, the container needs network access to your EventCatalog server. Configuration depends on where EventCatalog runs.

EventCatalog on localhost​

Docker containers cannot use localhost to reach the host machine. Use one of these approaches:

Option 1: Use host.docker.internal (recommended)

Update your config to use the special Docker hostname:

eventCatalog: {
url: 'http://host.docker.internal:3000',
}
info

Your EventCatalog server must bind to all interfaces (0.0.0.0), not just localhost. Check your EventCatalog startup logs. If it shows localhost:3000, you may need to start it with a --host 0.0.0.0 flag.

Option 2: Run the bot outside Docker

For local development, skip Docker and run the bot directly:

npm install
npm run dev

This avoids networking complexity during development.

EventCatalog in Docker​

Put both containers on the same Docker network and use the container name as hostname:

services:
eventcatalog:
# your EventCatalog config
networks:
- app-network

eventcatalog-slack-bot:
build: .
env_file:
- .env
volumes:
- ./eventcatalog-bot.config.ts:/app/eventcatalog-bot.config.ts:ro
networks:
- app-network

networks:
app-network:

Configure the bot to use the container name:

eventCatalog: {
url: 'http://eventcatalog:3000',
}

EventCatalog at public URL​

Use the public URL directly - no special configuration needed:

eventCatalog: {
url: 'https://your-catalog.example.com',
}

Other deployment options​

Railway

Railway automatically detects the Dockerfile and deploys the bot.

  1. Create a new project and connect your repository
  2. Add environment variables in the Railway dashboard:
    • EVENTCATALOG_SCALE_LICENSE_KEY
    • SLACK_BOT_TOKEN
    • SLACK_APP_TOKEN
    • SLACK_SIGNING_SECRET
    • ANTHROPIC_API_KEY (or your chosen provider)
  3. Add your eventcatalog-bot.config.ts to the repository
  4. Deploy - Railway detects the Dockerfile automatically
Fly.io

Deploy to Fly.io using their CLI.

Initialize:

fly launch --no-deploy

Set secrets:

fly secrets set EVENTCATALOG_SCALE_LICENSE_KEY=your-key
fly secrets set SLACK_BOT_TOKEN=xoxb-...
fly secrets set SLACK_APP_TOKEN=xapp-...
fly secrets set SLACK_SIGNING_SECRET=...
fly secrets set ANTHROPIC_API_KEY=sk-ant-...

Deploy:

fly deploy
Render

Deploy as a Background Worker on Render.

  1. Create a new Background Worker (not a Web Service)
  2. Connect your repository
  3. Set the build and start commands:
  • Build command: npm install && npm run build
  • Start command: npm start
  1. Add environment variables in the Render dashboard
  2. Deploy
AWS, GCP, or Azure

Deploy as a container or long-running process. The bot requires:

  • Outbound HTTPS/WSS connections to Slack
  • No inbound connections (Socket Mode handles communication)
  • No load balancers or public endpoints needed

Suitable services include:

  • AWS: ECS, EKS, EC2
  • GCP: Cloud Run (always running), GKE, Compute Engine
  • Azure: Container Instances, AKS, Virtual Machines

Ensure the process stays running and can make outbound connections to:

  • slack.com (Socket Mode connection)
  • Your EventCatalog instance
  • Your AI provider API