A set of ready-to-run configuration examples for stand-alone Overlay nodes built with @bsv/overlay-express. Use these examples to spin-up your own overlay infrastructure for distributed applications on Bitcoin SV.
- Prerequisites
- Quick Start
- Configuration
- Available NPM Scripts
- Docker Compose
- Project Structure
- Contributing
- License
- Node.js >= 20 (the container uses Node 22)
- npm >= 10 (comes with Node).
- Docker & Docker Compose – only required if you want to run the full stack with MySQL and MongoDB from containers.
# 1. Install dependencies
npm install
# 2. Create your .env file and set the variables listed below
cp .env.example .env || true # if you keep a sample file in the repo
# 3. Start an overlay node in dev-watch mode
npm run devThe service will start on http://localhost:8080 by default. For production builds run npm run build && npm start or use Docker as described below.
All critical configuration is supplied through environment variables. Create a .env file in the project root (or use secrets in your orchestration platform) and define:
| Variable | Example | Description |
|---|---|---|
NODE_NAME |
my-overlay |
One-word, lowercase overlay service node identifier. |
SERVER_PRIVATE_KEY |
6f5523… |
32-byte hex root private key for the server's wallet for creating advertisements. |
HOSTING_URL |
https://my.overlay.network |
Public URL where your node is reachable. |
ADMIN_TOKEN |
supersecret |
Token required to access the admin API. |
WALLET_STORAGE_URL |
https://store-us-1.bsvb.tech |
Wallet storage endpoint where advertisement tokens will be kept, and from where funds will be drawn. |
NETWORK |
main or test |
BSV Blockchain network your node operates on. |
ARC_API_KEY |
— | Your ARC key for transaction broadcasting. |
MONGO_URL |
mongodb://root:example@localhost:27017 |
MongoDB connection string. |
KNEX_URL |
mysql://user:pass@localhost:3306/appdb |
MySQL connection string used by Knex. |
GASP_ENABLED |
true / false |
Enable Graph Aware Sync Protocol to sync with other overlays on the same topics. |
A complete example can be found in docker-compose.yml.
| Script | Purpose |
|---|---|
npm run dev |
Starts the TypeScript source directly using tsx with hot-reload – perfect for development. |
npm run build |
Compiles TypeScript into the dist/ folder. |
npm start |
Runs the compiled JavaScript (dist/index.js). |
Spin-up the entire stack (Overlay node + MongoDB + MySQL) using:
docker compose up --buildThis invokes the multi-stage Dockerfile, builds the TypeScript sources, and starts the server on port 8080.
When the container is up you will see logs similar to:
OverlayExpress ▸ Server listening on port 8080
Press Ctrl + C to stop or add the -d flag to run in detached mode.
.
├── src/ # TypeScript sources (topic managers, lookup services, bootstrapping)
├── deploy/ # Deployment helpers & scripts
├── docker-compose.yml # Container-based local environment
└── Dockerfile # Production container image
Pull requests and issues are welcome! Please open an issue to discuss any major changes.
Open BSV. See the LICENSE file for details.