0xTzKT is a multi-chain indexer and API for the Tezos blockchain, created by the Baking Bad team with huge support from the Tezos Foundation.
It's like TzKT, but new and better - it indexes both Tezos L1 and Tezos X, including EVM runtime, and aggregates all the data in a single place.
The indexer and API is still under development, so data correctness is not guaranteed and breaking changes are possible. Use it on your own risk.
Every service has a Dockerfile, and the build context is always the repository root:
docker build -f Xtzkt.Api/Dockerfile -t xtzkt-api .
The whole stack, including PostgreSQL, comes up via Compose. It works with no .env at all — every variable has a default — so copying the example is only needed to change something:
cp .env.example .env # optional, every line there repeats a default
docker compose build
docker compose up -d
Not every service starts by default. Compose profiles select the set:
| Command | Services |
|---|---|
docker compose up | db, api, indexer-tezosx |
docker compose --profile domains up | + domains |
docker compose --profile metadata up | + metadata |
docker compose --profile full up | + domains, metadata, indexer-l1 |
COMPOSE_PROFILES in .env fixes the choice so --profile need not be repeated. A single profiled service can also be started by name: docker compose up indexer-l1.
Inside the containers everything listens on port 8080 (ASPNETCORE_HTTP_PORTS, set in the Dockerfiles). On the host, Compose publishes api on 5000, indexer-l1 on 5001, indexer-tezosx on 5002, domains on 5003 and metadata on 5004 — all overridable through .env.
Configuration comes from appsettings.json. Everything in appsettings.json can be overridden by environment variable.
For example, DipDupResolver.Sources[0].Network in appsettings.json can be overriden by DipDupResolver__Sources__0__Network env var (note double underscore __ for nesting).
This guide is for Ubuntu 24.04, but even if you use a different OS, the installation process will likely be the same, except for the "Install packages" part.
sudo apt update
sudo apt install git
sudo apt update
sudo apt install dotnet-sdk-10.0
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install -y postgresql-18
git clone https://github.com/baking-bad/xtzkt ~/xtzkt
cd ~/xtzkt/Xtzkt.Indexers.TezosX/
dotnet publish -o ~/xtzkt-indexer-tezosx
Edit the configuration file ~/xtzkt-indexer-tezosx/appsettings.json. What you basically need is to adjust the EvmNode.Endpoint, TezosNode.Endpoint and Db.ConnectionString, if needed.
cd ~/xtzkt-indexer-tezosx
dotnet Xtzkt.Indexers.TezosX.dll
That's it. If you want to run the indexer as a daemon, take a look at this guide: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-10.0&tabs=linux-ubuntu#create-the-service-file.
Suppose, you have already cloned the repo to ~/xtzkt during the steps above.
cd ~/xtzkt/Xtzkt.Indexers.L1/
dotnet publish -o ~/xtzkt-indexer-l1
Edit the configuration file ~/xtzkt-indexer-l1/appsettings.json. What you basically need is to adjust the TezosNode.Endpoint and Db.ConnectionString, if needed.
cd ~/xtzkt-indexer-l1
dotnet Xtzkt.Indexers.L1.dll
That's it. If you want to run the indexer as a daemon, take a look at this guide: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-10.0&tabs=linux-ubuntu#create-the-service-file.
Suppose, you have already cloned the repo to ~/xtzkt during the steps above.
cd ~/xtzkt/Xtzkt.API/
dotnet publish -o ~/xtzkt-api
Edit the configuration file ~/xtzkt-api/appsettings.json. What you basically need is to adjust the Db.ConnectionString, if needed.
By default the API creates only the few indexes it needs to function (see init.pgsql), so most filters and sorts run without an index. init.example.pgsql next to it shows what a workable set might look like: the access paths behind the main scenarios of every endpoint. Copy it, adjust it to what your instance actually serves, and point Db.InitScript at your copy. The indexes are built CONCURRENTLY in the background on startup; on a synced database this takes a while.
cd ~/xtzkt-api
dotnet Xtzkt.API.dll
That's it. If you want to run the API as a daemon, take a look at this guide: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-10.0&tabs=linux-ubuntu#create-the-service-file.
Feel free to contact us via:
Cheers! 🍺
Content type
Image
Digest
sha256:6415fe522…
Size
99.3 MB
Last updated
about 14 hours ago
docker pull bakingbad/xtzkt-domains