Docker Quickstart

Get started quickly with Elsa Workflows using Docker Compose. This guide provides a fast path to evaluation with a complete setup including Elsa Server, Studio, and database persistence.

This quickstart guide helps you get Elsa Workflows up and running in minutes using Docker Compose. It's designed for evaluation, development, and learning purposes.

Prerequisites

Before you begin, ensure you have:

  • Docker Desktop (Windows/Mac) or Docker Engine (Linux) installed

  • Docker Compose V2 or later

  • At least 4GB of available RAM

  • Ports 14000 and 5432 (if using PostgreSQL) available on your host machine

New to Docker?

Visit the Docker Prerequisites page for installation instructions.

Quick Start

Option 1: SQLite (Simplest)

For the fastest start with minimal dependencies, use SQLite. This is perfect for evaluation and development.

Create a file named docker-compose.yml with the following content:

services:
  elsa-server-and-studio:
    image: elsaworkflows/elsa-server-and-studio-v3-5:latest
    pull_policy: always
    environment:
      ASPNETCORE_ENVIRONMENT: Development
      HTTP_PORTS: 8080
      HTTP__BASEURL: http://localhost:14000
      DATABASEPROVIDER: Sqlite
      CONNECTIONSTRINGS__SQLITE: Data Source=/data/elsa.db;Cache=Shared
    ports:
      - "14000:8080"
    volumes:
      - elsa-data:/data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

volumes:
  elsa-data:
    driver: local

Start the services:

Wait a few seconds for the services to start, then access Elsa Studio at http://localhost:14000.

Option 2: PostgreSQL (Production-Ready)

For production-like evaluation with a robust database, use PostgreSQL:

Start the services:

Monitor the startup progress:

Once both services report healthy status, access Elsa Studio at http://localhost:14000.

Environment Variables Reference

Core Configuration

Variable
Description
Default
Required

ASPNETCORE_ENVIRONMENT

ASP.NET Core environment (Development, Staging, Production)

-

Yes

HTTP_PORTS

Internal HTTP port for the container

8080

Yes

HTTP__BASEURL

External base URL for the application

-

Yes

Database Configuration

Variable
Description
Options
Required

DATABASEPROVIDER

Database provider to use

Sqlite, PostgreSql, SqlServer, MySql

Yes

CONNECTIONSTRINGS__SQLITE

SQLite connection string

Data Source=/app/elsa.db;Cache=Shared

If using SQLite

CONNECTIONSTRINGS__POSTGRESQL

PostgreSQL connection string

See example above

If using PostgreSQL

CONNECTIONSTRINGS__SQLSERVER

SQL Server connection string

Server=...

If using SQL Server

CONNECTIONSTRINGS__MYSQL

MySQL connection string

Server=...

If using MySQL

Optional Configuration

Variable
Description
Default

ASPNETCORE_URLS

URLs the application listens on

http://+:8080

Logging__LogLevel__Default

Default log level

Information

Logging__LogLevel__Microsoft

Microsoft framework log level

Warning

CORS__AllowedOrigins__0

CORS allowed origins

* (Development)

Health Checks

Both configurations include health checks to ensure services are ready:

Elsa Server Health Check:

PostgreSQL Health Check:

Check health status:

Common Operations

View Logs

Stop Services

Restart Services

Update to Latest Version

Troubleshooting

Service Won't Start

Symptom: Container exits immediately after starting

Solutions:

  1. Check logs for specific errors:

  2. Verify port availability:

  3. Ensure sufficient resources (RAM, disk space)

Database Connection Failed

Symptom: Elsa can't connect to PostgreSQL

Solutions:

  1. Verify PostgreSQL is healthy:

  2. Check database logs:

  3. Verify connection string matches PostgreSQL credentials

  4. Wait for PostgreSQL to be fully initialized (can take 10-30 seconds on first start)

Cannot Access Studio

Symptom: Browser can't reach http://localhost:14000

Solutions:

  1. Verify service is running:

  2. Check if port is correctly mapped:

  3. Try accessing using container IP:

  4. Check firewall settings blocking port 14000

Performance Issues

Symptom: Slow response times or high memory usage

Solutions:

  1. Allocate more resources in Docker Desktop settings (recommended: 4GB+ RAM)

  2. Reduce PostgreSQL max_connections if memory constrained:

  3. Check container resource usage:

Data Persistence Issues

Symptom: Workflows or data lost after restart

Solutions:

  1. Verify volumes are correctly configured:

  2. Check volume mounts:

  3. Don't use docker-compose down -v unless you want to delete data

Authentication Problems

Symptom: Can't log in with default credentials

Solutions:

  1. Ensure you're using:

    • Username: admin

    • Password: password

  2. Clear browser cache and cookies

  3. Try incognito/private browsing mode

  4. Check Elsa logs for authentication errors

Production Considerations

Security

  1. Change Default Credentials: Never use default admin credentials in production

  2. Use Strong Passwords: For both Elsa and database users

  3. Enable HTTPS: Configure TLS/SSL certificates

  4. Restrict Database Access: Don't expose database ports publicly

  5. Use Secrets Management: Store sensitive data in Docker secrets or environment-specific vaults

  6. Configure CORS Properly: Restrict allowed origins to known domains

Example with secrets:

Scalability

  1. Use External Database: Host database outside Docker for better performance and reliability

  2. Load Balancing: Deploy multiple Elsa instances behind a load balancer

  3. Connection Pooling: Adjust MaxPoolSize based on load

  4. Resource Limits: Configure CPU and memory limits:

Reliability

  1. Regular Backups: Implement automated database backups

    Note: The following command uses Unix/Linux shell syntax. For Windows users, see the PowerShell alternative below.

  2. Monitoring: Integrate with monitoring solutions (Prometheus, Grafana, etc.)

  3. Logging: Configure centralized logging (ELK stack, Loki, etc.)

  4. Health Checks: Keep health checks enabled and configure orchestrator accordingly

  5. Update Strategy: Plan for zero-downtime updates

Database Performance

  1. Optimize PostgreSQL Configuration:

  2. Regular Maintenance: Schedule VACUUM and ANALYZE operations

  3. Monitor Query Performance: Use pg_stat_statements extension

Data Management

  1. Volume Backups: Regularly backup Docker volumes

  2. Retention Policies: Configure workflow and log retention

  3. Archival Strategy: Move old workflows to cold storage

Next Steps

Now that you have Elsa running:

  1. Explore the Studio: Navigate to http://localhost:14000 and explore the interface

  2. Create Your First Workflow: Follow the Hello World tutorial

  3. Learn Key Concepts: Read about Workflows, Activities, and Triggers

  4. Try HTTP Workflows: Build REST APIs using HTTP Workflows

  5. Extend Elsa: Create Custom Activities

Alternative Configurations

For other deployment scenarios, see:

Support

If you encounter issues not covered in this guide:

Version Information

This guide is written for:

  • Elsa Workflows v3.5

  • Docker Compose V2

  • PostgreSQL 16

  • SQLite 3

Always check the official releases for the latest version information.

Last updated