| Approach | How it works |
|---|---|
| Environment variables | Set FLOCI_* vars in your shell, CI, or docker-compose |
application.yml mount | Mount a YAML file into the container at /app/config/application.yml |
docker-compose environment: block | Set FLOCI_* keys inline in your Compose service definition |
Core settings
Base URL used to build callback and response URLs — for example, SNS subscription endpoints and SQS
QueueUrl values. When your application runs in a separate container, set FLOCI_HOSTNAME instead of changing this directly.AWS region reported in ARNs and API responses. Any valid AWS region string is accepted.
AWS account ID used in ARNs. Any 12-digit string works for local development.
Global storage backend. Accepted values:
memory, persistent, hybrid, wal. See Storage for a full comparison.Maximum HTTP request body size in megabytes. Increase this when uploading large S3 objects or Lambda deployment packages.
Environment variable reference
| Variable | Default | Description |
|---|---|---|
FLOCI_BASE_URL | http://localhost:4566 | Base URL for callback and response URLs |
FLOCI_HOSTNAME | (unset) | Override hostname in response URLs (for multi-container Compose) |
FLOCI_DEFAULT_REGION | us-east-1 | AWS region in ARNs |
FLOCI_DEFAULT_ACCOUNT_ID | 000000000000 | AWS account ID in ARNs |
FLOCI_MAX_REQUEST_SIZE | 512 | Max HTTP request body (MB) |
FLOCI_AUTH_VALIDATE_SIGNATURES | false | Verify AWS SigV4 request signatures |
FLOCI_AUTH_PRESIGN_SECRET | local-emulator-secret | HMAC secret for S3 pre-signed URL verification |
FLOCI_STORAGE_MODE | memory | Global storage mode |
FLOCI_STORAGE_PERSISTENT_PATH | ./data | Directory for persistent and hybrid storage |
FLOCI_STORAGE_WAL_COMPACTION_INTERVAL_MS | 30000 | WAL compaction interval (ms) |
FLOCI_INIT_HOOKS_SHELL_EXECUTABLE | /bin/bash | Shell for hook scripts |
FLOCI_INIT_HOOKS_TIMEOUT_SECONDS | 30 | Max execution time per hook script |
FLOCI_INIT_HOOKS_SHUTDOWN_GRACE_PERIOD_SECONDS | 2 | Grace period for shutdown hooks |
FLOCI_SERVICES_SSM_MAX_PARAMETER_HISTORY | 5 | Max SSM parameter versions kept |
FLOCI_SERVICES_SQS_DEFAULT_VISIBILITY_TIMEOUT | 30 | SQS visibility timeout (seconds) |
FLOCI_SERVICES_SQS_MAX_MESSAGE_SIZE | 262144 | SQS max message size (bytes) |
FLOCI_SERVICES_S3_DEFAULT_PRESIGN_EXPIRY_SECONDS | 3600 | S3 pre-signed URL default expiry |
FLOCI_SERVICES_DYNAMODB_MAX_ITEM_SIZE | 400000 | DynamoDB max item size (bytes) |
FLOCI_SERVICES_LAMBDA_DOCKER_HOST | unix:///var/run/docker.sock | Docker host for Lambda containers |
FLOCI_SERVICES_LAMBDA_EPHEMERAL | false | Remove Lambda containers after each invocation |
FLOCI_SERVICES_LAMBDA_DEFAULT_MEMORY_MB | 128 | Default Lambda memory (MB) |
FLOCI_SERVICES_LAMBDA_DEFAULT_TIMEOUT_SECONDS | 3 | Default Lambda timeout (seconds) |
FLOCI_SERVICES_LAMBDA_CODE_PATH | ./data/lambda-code | Directory for Lambda ZIP archives |
FLOCI_SERVICES_LAMBDA_RUNTIME_API_BASE_PORT | 9200 | Start of Lambda Runtime API port range |
FLOCI_SERVICES_LAMBDA_RUNTIME_API_MAX_PORT | 9299 | End of Lambda Runtime API port range |
FLOCI_SERVICES_LAMBDA_CONTAINER_IDLE_TIMEOUT_SECONDS | 300 | Idle Lambda container eviction time |
FLOCI_SERVICES_ELASTICACHE_PROXY_BASE_PORT | 6379 | First ElastiCache proxy port |
FLOCI_SERVICES_ELASTICACHE_PROXY_MAX_PORT | 6399 | Last ElastiCache proxy port |
FLOCI_SERVICES_ELASTICACHE_DEFAULT_IMAGE | valkey/valkey:8 | Default Valkey/Redis Docker image |
FLOCI_SERVICES_RDS_PROXY_BASE_PORT | 7001 | First RDS proxy port |
FLOCI_SERVICES_RDS_PROXY_MAX_PORT | 7099 | Last RDS proxy port |
FLOCI_SERVICES_RDS_DEFAULT_POSTGRES_IMAGE | postgres:16-alpine | Default PostgreSQL Docker image |
FLOCI_SERVICES_RDS_DEFAULT_MYSQL_IMAGE | mysql:8.0 | Default MySQL Docker image |
FLOCI_SERVICES_RDS_DEFAULT_MARIADB_IMAGE | mariadb:11 | Default MariaDB Docker image |
FLOCI_SERVICES_DOCKER_NETWORK | (none) | Docker network for Lambda, RDS, ElastiCache containers |
FLOCI_SERVICES_ACM_VALIDATION_WAIT_SECONDS | 0 | Delay before ACM cert transitions to ISSUED |
FLOCI_SERVICES_CLOUDWATCHLOGS_MAX_EVENTS_PER_QUERY | 10000 | Max events per CloudWatch Logs query |
FLOCI_SERVICES_SECRETSMANAGER_DEFAULT_RECOVERY_WINDOW_DAYS | 30 | Default secret recovery window |
Auth settings
Disabling services
Setenabled: false for any service you don’t need. Disabled services return ServiceUnavailableException rather than silently ignoring calls, so you’ll catch misconfigurations early.
Full application.yml reference
Complete application.yml with all defaults
Complete application.yml with all defaults