Quick Start
Pull and run the latest image:Exposed Ports
iii exposes four ports:| Port | Service | Description |
|---|---|---|
| 49134 | WebSocket | Worker connections (SDK clients) |
| 3111 | HTTP API | REST API endpoints |
| 3112 | Stream API | Real-time WebSocket streams |
| 9464 | Metrics | Prometheus metrics endpoint |
Configuration
Mount your config file as read-only:Environment Variables
Pass environment variables for dynamic configuration:RUST_LOG- Logging level (info, debug, trace)REDIS_URL- Redis connection URLOTEL_ENABLED- Enable OpenTelemetrySTREAM_PORT- Stream API portSERVICE_VERSION- Service version for telemetry
Docker Compose
iii includes adocker-compose.yml for running the full stack with Redis and RabbitMQ.
Development Stack
docker-compose.yml
Build from Source
To build iii locally instead of using the published image:Dockerfile Structure
iii provides two Dockerfiles:Production (Distroless)
Dockerfile - Minimal attack surface, no shell, non-root user:
- Distroless base (no shell, minimal packages)
- Non-root user execution
- Multi-stage build for smaller images
- Cargo chef for layer caching
Debug (Debian + Shell)
Dockerfile.debug - Includes shell and debugging tools:
Building Locally
Production image:Volumes
Mount volumes for persistent data:/app/config.yaml- Configuration file (read-only)/data- State storage directory/tmp- Temporary files (use tmpfs for performance)
Security
The production image follows security best practices:Non-root user
Non-root user
Runs as
nonroot user (UID 65532) in distroless baseRead-only filesystem
Read-only filesystem
Run with
--read-only flag and tmpfs for /tmp:Dropped capabilities
Dropped capabilities
Drop all capabilities except NET_BIND_SERVICE:
No new privileges
No new privileges
Prevent privilege escalation:
Next Steps
Configuration
Configure modules and environment
Production
Production deployment guide