This guide explains how to set up and run the Argon local infrastructure for development using Docker Compose.
The local environment includes the following key components:
| Service | Description |
|---|---|
| NATS | Messaging bus with JetStream enabled. |
| ScyllaDB | High-performance Cassandra-compatible database. |
| YugabyteDB (3 nodes) | Distributed SQL database cluster. |
| PostgreSQL + Temporal | Workflow orchestration backend with Temporal UI. |
| SeaweedFS (S3) | Local S3-compatible object storage. |
| KineticaFS | Argon’s file lifecycle manager and S3 bridge. |
| Dragonfly | Redis-compatible in-memory cache. |
| LiveKit + Caddy | Real-time media server with HTTPS reverse proxy. |
All services are connected through the argon Docker bridge network.
Before running the environment, make sure you have:
- Docker Desktop (or Docker Engine + Compose)
- mkcert — for generating local TLS certificates
- PowerShell (for Windows) to execute the certificate generation script
Before starting the containers, generate local certificates used by Caddy and LiveKit.
Run:
./ensure-certs.ps1This script will:
- Check for existing certificates in the
certs/directory - Create new certificates via
mkcertif they don’t exist
The
docker-compose.local.ymlfile is located in the/deploydirectory.
To launch the local infrastructure, run:
docker compose -f docker-compose.local.yml up -dThis will start all services in detached mode (-d).
The first startup may take a few minutes as the databases initialize.
| Service | URL | Notes |
|---|---|---|
| Temporal UI | http://localhost:8080 | Workflow management interface |
| SeaweedFS S3 | http://localhost:8333 | S3 API endpoint |
| NATS Web UI | http://localhost:8222 | Server monitoring |
| ScyllaDB CQL | localhost:9042 |
CQL port |
| PostgreSQL (Temporal) | localhost:55432 |
Credentials: temporal / temporal |
| Yugabyte Master UI | http://localhost:7000 | Master node |
| Yugabyte TServer UI | http://localhost:9000 | Tablet server |
| LiveKit | https://localhost:9443 | Served via local Caddy proxy |
To stop all containers and remove related volumes (resetting all data):
docker compose -f docker-compose.local.yml -p argonlocal down --volumes --remove-orphansThis will:
- Stop and remove all running containers
- Remove persistent volumes
- Clean up orphaned resources
.
├─ certs/ # Local TLS certificates (generated by mkcert)
├─ docker/ # Docker-related scripts/configs
├─ dynamicconfig/ # Temporal dynamic configuration
├─ vault-test/ # Vault testing environment
├─ .env # Environment variables
├─ Caddyfile # Caddy reverse proxy configuration
├─ docker-compose.local.yml # Main Docker Compose file
├─ ensure-certs.ps1 # PowerShell script to generate certs
└─ livekit.yaml # LiveKit server configuration
- The YugabyteDB cluster automatically bootstraps with 3 nodes (
yb-node-1,yb-node-2,yb-node-3). - KineticaFS will wait for ScyllaDB to become healthy before starting.
- DragonflyDB provides a fast Redis-compatible cache and stores data in the
argon-cache-datavolume. - Caddy uses certificates from
./certsto serve LiveKit over HTTPS on port 9443.
| Issue | Possible Fix |
|---|---|
mkcert not found |
Install it from mkcert GitHub |
| Database healthcheck failures | Wait 1–2 minutes; some databases (Scylla/Yugabyte) have long startup times |
| Ports already in use | Check for conflicting local services and stop them |
| SSL errors in browser | Run mkcert -install to add the local CA to your OS trust store |
✅ Done!
You now have a fully functional local Argon infrastructure for development.