Deploy the OpenScan.AI explorer stack from pre-built container images using Docker Compose. This is the fastest path to a production-capable explorer on a single server.
Prerequisites
- A Linux server with Docker and the Compose plugin installed
- A synced EVM node with JSON-RPC and tracing (see Chain Node Layer)
- DNS pointing at your server if you want a public hostname
Step 1 — Create the Compose File
Create a working directory and a docker-compose.yml:
services: postgres: image: postgres:16 restart: unless-stopped environment: POSTGRES_USER: explorer POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: explorer_db volumes: - pgdata:/var/lib/postgresql/data
indexer: image: ghcr.io/openscanai/indexer:latest restart: unless-stopped depends_on: - postgres env_file: .env
api: image: ghcr.io/openscanai/api:latest restart: unless-stopped depends_on: - postgres ports: - "4000:4000" env_file: .env
frontend: image: ghcr.io/openscanai/frontend:latest restart: unless-stopped depends_on: - api ports: - "3000:3000" env_file: .env
volumes: pgdata:Step 2 — Configure the Environment
Create .env next to the compose file:
DB_PASSWORD=choose-a-strong-passwordETHEREUM_JSONRPC_HTTP_URL=http://your-chain-node:8545ETHEREUM_JSONRPC_TRACE_URL=http://your-chain-node:8545CHAIN_ID=50NEXT_PUBLIC_NETWORK_NAME="Your Chain"Step 3 — Start
docker compose pulldocker compose up -dStep 4 — Verify
- API:
curl http://localhost:4000/api/v2/blocks - UI: open
http://localhost:3000 - Indexer progress:
docker compose logs -f indexer
Then complete the verification checklist.
Notes
- Put a reverse proxy with TLS in front of the frontend and API before going public — see TLS / HTTPS Setup.
- For branding (logo, colors, chain name), see Branding & Configuration.