Files
gbn_ln_bot/docker-compose.yml
goyban e857bf4ec6 Initial commit — federated self-custodial Spark/Lightning tip bot
- grammY bot: /start, /unlock, /tip, /contact, /claim, /settings, /wallet
- AES-256-GCM mnemonic encryption with scrypt key derivation
- In-memory unlock sessions with background sweep
- Atomic claim handling (TOCTOU-safe)
- PIN rate limiting (5 attempts → 15 min lockout)
- Fastify API server + Telegram Mini App (setup, unlock, send, receive, history)
- One-time seed reveal via Mini App or auto-deleted DM message
- Federated registry client
- Docker Compose deployment

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 13:21:43 +00:00

29 lines
930 B
YAML

services:
bot:
build: .
restart: unless-stopped
environment:
BOT_TOKEN: ${BOT_TOKEN}
BREEZ_API_KEY: ${BREEZ_API_KEY}
DATABASE_URL: sqlite:./data/bot.db
REGISTRY_URL: ${REGISTRY_URL:-}
REGISTRY_WRITE_KEY: ${REGISTRY_WRITE_KEY:-}
REGISTRY_READ_KEY: ${REGISTRY_READ_KEY:-}
SESSION_SWEEP_INTERVAL_MS: ${SESSION_SWEEP_INTERVAL_MS:-60000}
BOT_INSTANCE_NAME: ${BOT_INSTANCE_NAME:-mybot}
WEBAPP_PORT: ${WEBAPP_PORT:-3000}
WEBAPP_URL: ${WEBAPP_URL:-}
NODE_ENV: production
ports:
- "${WEBAPP_PORT:-3000}:${WEBAPP_PORT:-3000}"
volumes:
- bot_data:/app/data
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:${WEBAPP_PORT:-3000}/health', r => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"]
interval: 30s
timeout: 10s
retries: 3
volumes:
bot_data: