Install an OpenScan.AI explorer instance, verify it’s running, and complete the first-time setup.
This guide walks you through installing with Docker, Docker Compose, or from source.
All-in-one Docker container
The fastest way to try a self-hosted instance. Requires Docker 24+ and a reachable JSON-RPC endpoint.
docker run -d --name openscan \ -p 4000:4000 \ -e ETHEREUM_JSONRPC_HTTP_URL="http://host.docker.internal:8545" \ -e ETHEREUM_JSONRPC_TRACE_URL="http://host.docker.internal:8545" \ -e CHAIN_ID="50" \ -e COIN="XDC" \ ghcr.io/openscanai/openscan:latestThe container bundles PostgreSQL, the indexer, the API server, and the frontend. Open http://localhost:4000 — indexing begins immediately and the UI fills in as blocks are imported.
Check progress:
curl http://localhost:4000/api/v2/main-page/indexing-statusDocker Compose (recommended)
Compose separates the database from the application, which makes upgrades and backups cleaner.
git clone https://github.com/OpenScanAI/blockscout.gitcd blockscout/docker-composecp envs/common-blockscout.env.example envs/common-blockscout.envEdit envs/common-blockscout.env and set at minimum:
ETHEREUM_JSONRPC_HTTP_URL=http://your-rpc-endpoint:8545ETHEREUM_JSONRPC_TRACE_URL=http://your-rpc-endpoint:8545CHAIN_ID=50COIN=XDCStart the stack:
docker compose up -ddocker compose logs -f backendServices started: db (PostgreSQL), backend (indexer + API on :4000), frontend (UI on :3000), and a reverse proxy on :80.
Verify:
curl http://localhost/api/v2/statsFrom source
For development or customization. See the full toolchain requirements in Backend & Indexer Setup.
git clone https://github.com/OpenScanAI/blockscout.gitcd blockscout
# Backendmix deps.getmix ecto.create && mix ecto.migratemix phx.serverThe API listens on http://localhost:4000. To run the frontend alongside it:
git clone https://github.com/OpenScanAI/frontend.gitcd frontendcp .env.example .env.local# Point NEXT_PUBLIC_API_HOST at your local backendnpm install && npm run devThe UI is available at http://localhost:3000.
First-time checklist
After any install method:
- Indexing status —
GET /api/v2/main-page/indexing-statusshould show progress, not an error. - Stats endpoint —
GET /api/v2/statsreturns chain counters once the first blocks land. - UI loads — the home page shows recent blocks streaming in.
- RPC health — the backend logs show no repeating JSON-RPC errors; if they appear, check
ETHEREUM_JSONRPC_HTTP_URL.
Next steps
- Configuration — full environment variable reference
- Connecting to a Network — RPC endpoints for supported chains
- Production Deployment — TLS, proxying, and scaling