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>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
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:
|
||||
Reference in New Issue
Block a user