Docker Deployment
Build from Source
git clone https://github.com/ODATANO/ODATANO
cd ODATANO
# set BLOCKFROST_API_KEY / TX_BUILDERS etc.
cp .env.example .env
docker-compose up -d
curl http://localhost:4004/odata/v4/cardano-odata/NetworkInformation
Pre-built Image
curl -O https://raw.githubusercontent.com/ODATANO/ODATANO/main/docker-compose.yml
cat > .env <<'EOF'
BLOCKFROST_API_KEY=preview_your_api_key
NETWORK=preview
BACKENDS=blockfrost,koios
EOF
docker-compose up -d
Essentials
BLOCKFROST_API_KEY=preview_your_api_key # required if BACKENDS contains blockfrost
NETWORK=preview # mainnet | preview | preprod
BACKENDS=blockfrost,koios # priority order
TX_BUILDERS=buildooor # csl | buildooor
INDEX_TTL_MS=600000 # 10 min cache (default 1 h)
PRIMARY_TIMEOUT_MS=30000
FALLBACK_TIMEOUT_MS=60000
Full key reference: Configuration.
Commands
docker-compose up -d # start
docker-compose logs -f # follow logs
docker-compose restart # apply .env changes
docker-compose down # stop
docker-compose down -v # stop + wipe SQLite cache
The compose file mounts a volume for the SQLite index cache. docker-compose down -v wipes it (forces re-indexing on next start).
For HANA-backed prod, drop the SQLite volume and configure cds.requires.db for HANA: see Production Deployment.
Authentication
The container image runs with CAP’s default dummy auth in dev profile, so all 3 services (which declare @requires: 'authenticated-user') accept requests without a JWT.
For any deployment that’s reachable beyond localhost switch to auth: { kind: "xsuaa" } and bind the container behind an AppRouter, or front it with your own reverse-proxy auth layer. See Security › Authentication.