For the complete documentation index, see llms.txt. This page is also available as Markdown.

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:

Start the services:

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

Identity behavior follows the image

Because the image tag is unversioned, do not infer its login defaults from the Elsa 3.8.0 package documentation. Follow the image's published configuration for this evaluation image. For an Elsa 3.8.0 source or package host, configure the signing key and bootstrap administrator described in Elsa Identity.

Option 2: PostgreSQL-backed evaluation

For evaluation with an external database, use PostgreSQL. The compose file is still an evaluation example; apply your own backup, TLS, secret, and upgrade policy before operating any deployment as a production service:

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 after configuring the container

Solutions:

  1. Confirm that the server's Identity section contains the intended user and role and that Identity:Tokens:SigningKey is configured.

  2. Clear browser cache and cookies

  3. Try incognito/private browsing mode

  4. Check Elsa logs for authentication errors

Production Considerations

Security

  1. Configure deployment-owned identity: For a 3.8.0 package host, follow the identity bootstrap instructions in the upgrade guide; for this unversioned image, follow its published identity contract

  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 intentionally does not pin a Docker image release. Its examples use the :latest image tags shown above; verify the image publication and digest in your registry before production deployment. The application upgrade rules for the stable 3.8.0 package release are in Upgrade to Elsa 3.8.0.

Last updated