binance-trading-bot Docker & Self-Hosted Deployment

GitHub

Automated Binance trading bot - Trade multiple cryptocurrencies. Buy low/sell high with Grid Trading. Integrated with TradingView technical analysis

RAW Compose
1. Pull Image (DOCKERHUB) docker pull chrisleekr/binance-trading-bot
2. Docker Run (1-Click Launch) docker run -d --name binance-trading-bot --restart always chrisleekr/binance-trading-bot:latest
3. Podman Run podman run -d --name binance-trading-bot --restart always chrisleekr/binance-trading-bot:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/chrisleekr/binance-trading-bot:latest
5. ORAS Pull (OCI Artifact) oras pull chrisleekr/binance-trading-bot:latest
6. Compose Deployment docker compose up -d
deploy/compose/docker-compose.demo.yml
Download .yml
# Public "Live demo" override. Layer on the base to run a single ROLE=all box in
# demo mode, with no login; explicit sensitive routes locked; notifier dispatch
# suppressed; and boot refused for a live-mode account. Interactive trading
# remains available on Binance testnet:
#
#   docker compose -f deploy/compose/docker-compose.yml \
#     -f deploy/compose/docker-compose.demo.yml up
#
# This is a SEPARATE deployment (its own container + DB), never the operator's
# real instance. It runs against Binance TESTNET only: the box holds a testnet
# key pair (seeded via a pg_restore of a golden snapshot at deploy โ€” a deploy
# secret, never committed), so visitors place real testnet orders with fake
# money. "No sensitive info exposed" holds by construction: only a testnet key is
# ever present and credential, notifier, backup/restore, account-creation,
# account-rename/delete, retention-change, diagnosis-start, fee-reconciliation, and
# archive-backfill routes are off.
#
# Operator deployment checklist:
#   - Seed the golden testnet snapshot (account + profiles + symbols + history).
#   - Add app/proxy rate limiting on the public endpoint (no login = no throttle).
#   - Nightly reset job that re-restores the snapshot (calls restore logic
#     directly โ€” the /restore route is locked in demo mode).

services:
  app:
    environment:
      # The single switch. Parsed strictly: only '1'/'true' enable it.
      LIVE_DEMO: '1'
      # Public origin the demo SPA is served from. Replace with the real host.
      WEB_ORIGIN: ${WEB_ORIGIN:-https://demo.example.com}
      NODE_ENV: ${NODE_ENV:-production}