Blockchain indexer and monitoring explorer for Canton Validators.
- Overview
- Prerequisites
- Deployment Options
- Docker Setup
- Kubernetes Setup (coming soon)
- Configuration
- Environment Variables
- Authentication
- Auth0 Setup
- Keycloak Setup (coming soon)
- Other OIDC Providers (coming soon)
- Quick Start
- Commands Reference
- Upgrading
- Reading Ledger API from Internal Parties
Modo Private App. Tailored for You.
Unlock exclusive access to Canton data on your own infrastructure.
- Private Transactions - Track wallet operations and private transfers effortlessly through flexible, customizable filters
- Read Contract Interface - All contract details, always at hand
- Apps & Rewards - Gain full visibility into income from apps and blockchain validation
- Powerful Private Labeling - Unlock blockchain insights through smart labeling, making discovery as natural as reading
- Intelligence Analytics - Comprehensive analytics for transfers, rewards, fees and more
- Token Wallet Explorer - Full wallet exploration capabilities
- Multi-Party Support - Manage and monitor multiple parties from a single interface
- Docker Compose v2.0+
- Access to Canton Ledger API and Wallet API
- Auth0 tenant
Primary: Deploy on the same server as your Canton validator. This is the recommended setup as it allows direct access to Ledger API and Wallet API without exposing them externally.
Remote: You can deploy on a separate server, but this requires exposing LEDGER_API_URL and WALLET_API_URL externally.
See Quick Start section.
Coming soon.
Clone the repository and configure:
git clone https://github.com/Staketab/modo-private-app
cd modo-private-app/docker
cp env.example .env| Variable | Description | Example |
|---|---|---|
AUTH_TENANT |
Auth0 tenant domain | your-tenant.eu.auth0.com |
AUTH_M2M_CLIENT_ID |
Machine-to-Machine client ID (from validator) | aB1cD2eF3gH4iJ5k |
AUTH_M2M_CLIENT_SECRET |
M2M client secret (from validator) | your-secret-here |
AUTH_AUDIENCE |
API audience identifier | https://your-api.example.com |
AUTH_APP_CLIENT_ID |
Frontend SPA application client ID | xY9zW8vU7tS6rQ5p |
LEDGER_API_URL |
Canton Ledger API endpoint (include prefix if applicable) | http://participant:7575 |
WALLET_API_URL |
Wallet API endpoint (include prefix if applicable) | http://validator:5003/api/validator |
DOCKER_NETWORK |
External Docker network name | canton-network |
POSTGRES_DB |
Database name | app |
POSTGRES_USER |
Database user | app |
POSTGRES_PASSWORD |
Database password | your-secure-password |
POSTGRES_HOST |
Database host (db for local, hostname for remote) |
db |
POSTGRES_PORT |
Database port | 5432 |
IMAGE_TAG |
Docker image version | v1.2.0 |
LOG_LEVEL |
Logging level (DEBUG, INFO, WARN, ERROR) | INFO |
MAIN_PARTY_ID |
MAIN Validator party ID for indexing | main-validator-party |
Note: For
LEDGER_API_URLandWALLET_API_URL, include the full path prefix if your APIs use one (e.g.,http://host:port/api/validator).
The M2M (Machine-to-Machine) application is already configured in your validator. You only need to create a Single Page Application for the frontend.
- Go to Auth0 Dashboard
- Navigate to Applications → Applications
- Click Create Application
- Select Single Page Application
- Name it
Modo Frontend - Configure settings:
- Allowed Callback URLs:
http://localhost:3000, https://your-domain.com - Allowed Logout URLs:
http://localhost:3000, https://your-domain.com - Allowed Web Origins:
http://localhost:3000, https://your-domain.com
- Allowed Callback URLs:
- Note the Client ID and set it in your
.env:
AUTH_APP_CLIENT_ID=<Client ID from step 7>Get the M2M credentials from your validator configuration and set them in .env:
AUTH_TENANT=your-tenant.eu.auth0.com
AUTH_M2M_CLIENT_ID=<from validator>
AUTH_M2M_CLIENT_SECRET=<from validator>
AUTH_AUDIENCE=<from validator>Coming soon.
Coming soon.
cd docker
# 1. Configure environment
cp env.example .env
# Edit .env with your settings (see Configuration section)
# 2. Start all services
make setup-local
# 3. Access the application
# Frontend: http://localhost:3000cd docker
# 1. Configure environment
cp env.example .env
# Edit .env - set POSTGRES_HOST to your remote database hostname
# 2. Start all services
make setup-remote
# 3. Access the application
# Frontend: http://localhost:3000# Quick setup
make setup-local # Setup with local database
make setup-remote # Setup with remote database
# Service management
make up-local # Start services (local DB)
make up-remote # Start services (remote DB)
make down-local # Stop all services
make down-remote # Stop all services
make restart-local # Restart all services
make restart-backend # Restart backend only
# Logs
make logs-local # View all logs
make logs-backend # View backend logs only
make logs-frontend # View frontend logs only
# Database (local only)
make db-up # Start database
make db-down # Stop database
make db-logs # View database logs
# Utilities
make ps # Show running containers
make pull # Pull latest images
make clean # Remove stopped containers
make help # Show all commandsTo upgrade to a new version:
-
Update
IMAGE_TAGin your.envfile:IMAGE_TAG=v1.2.0
-
Pull and restart:
make pull make restart-local # or make restart-remote
To read Ledger API data from internal parties other than the validator party, you need to grant CanReadAs rights to the application.
This can be done directly in the application on the Parties page:
- Navigate to Parties in the application
- Find the internal party you want to read from
- Click CanReadAs in Grant Rights column
For issues and feature requests, please open an issue in the repository.
