mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-10-05 12:28:22 +00:00
cashu_mints previously defaulted to an empty list, leaving a new node in a half-working state: it silently trusted the hardcoded minibits primary mint but advertised no mints in /v1/info or its NIP-91 listing, so clients discovering the node had no way to know where to pay. - default cashu_mints to minibits + cubabitcoin via shared DEFAULT_CASHU_MINTS - reuse the constant for the primary_mint fallback (removes duplicate literal) - CASHU_MINTS env or dashboard edits still replace the list entirely; an explicitly empty value keeps only the primary mint trusted - document the defaults in configuration.md, dashboard.md, .env.example Existing nodes are unaffected: the settings-blob merge skips persisted empty lists, so unconfigured nodes pick up the defaults on restart while nodes with explicit mints keep theirs.
81 lines
3.2 KiB
Bash
81 lines
3.2 KiB
Bash
# Core Configuration
|
|
UPSTREAM_BASE_URL=https://api.openai.com/v1
|
|
UPSTREAM_API_KEY=your-upstream-api-key
|
|
|
|
# Tinfoil (confidential inference enclaves, EHBP)
|
|
# TINFOIL_API_KEY=your-tinfoil-api-key
|
|
|
|
# Secret key used to encrypt node secrets at rest (optional). If unset, the node
|
|
# generates one on first start, writes it to routstr_secret.key (override the path
|
|
# with ROUTSTR_SECRET_KEY_FILE), and prints it once — back that file up, because
|
|
# losing the key makes previously encrypted secrets unreadable. Set it explicitly
|
|
# to manage the key yourself (recommended in production). Generate one with:
|
|
# uv run python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
|
ROUTSTR_SECRET_KEY=
|
|
|
|
# The admin password and the Nostr identity (nsec) are NOT set here. The admin
|
|
# password is generated and logged once on first start (read it from the logs to
|
|
# sign in); both are managed afterwards from the admin UI and stored encrypted in
|
|
# the database. ADMIN_PASSWORD / NSEC are still read once as a legacy seed for
|
|
# existing deployments, but new nodes should set them in the UI — a value left in
|
|
# .env is ignored once the node has been configured.
|
|
|
|
# Database
|
|
# DATABASE_URL=sqlite+aiosqlite:///keys.db
|
|
# Pool controls are validated at boot, sourced only from the environment, and
|
|
# logged at startup. Keep total capacity across all workers below the database
|
|
# connection limit. Pre-ping is automatic for networked backends; SQLite may
|
|
# explicitly opt in if desired.
|
|
# DATABASE_POOL_SIZE=10
|
|
# DATABASE_MAX_OVERFLOW=20
|
|
# DATABASE_POOL_TIMEOUT=30
|
|
# DATABASE_POOL_RECYCLE=1800
|
|
# DATABASE_POOL_PRE_PING=false
|
|
# Warn when a checkout is held this many seconds.
|
|
# DATABASE_POOL_HOLD_WARN_SECONDS=10
|
|
# SQLite write-lock timeout, in seconds.
|
|
# DATABASE_BUSY_TIMEOUT=30
|
|
# SQLite serialises writes; increasing its pool can trade pool timeouts for
|
|
# "database is locked" errors rather than increasing write throughput.
|
|
|
|
# Node Information
|
|
# NAME=My Routstr Node
|
|
# DESCRIPTION=Fast AI API access with Bitcoin payments
|
|
# HTTP_URL=https://api.mynode.com
|
|
# ONION_URL=http://mynode.onion (auto fetched from compose)
|
|
# RELAYS="wss://relay.damus.io,wss://relay.nostr.band,wss://eden.nostr.land,wss://relay.routstr.com"
|
|
# ENABLE_ANALYTICS_SHARING=true
|
|
# CASHU_MINTS="https://mint.minibits.cash/Bitcoin,https://mint.cubabitcoin.org" # this is the default
|
|
# CASHU_MINTS="https://mint.minibits.cash/Bitcoin,https://mint.cubabitcoin.org,https://ecashmint.otrta.me"
|
|
# MINT_OPERATION_CONCURRENCY=4
|
|
# MINT_OPERATION_TIMEOUT_SECONDS=30
|
|
# MINT_MAX_CONCURRENCY=4
|
|
# MINT_RETRY_MAX_ATTEMPTS=3
|
|
# RECEIVE_LN_ADDRESS=
|
|
# REFUND_SWEEP_CLAIM_TIMEOUT_SECONDS=900
|
|
|
|
# Custom Pricing Configuration
|
|
# MODEL_BASED_PRICING=true
|
|
# COST_PER_REQUEST=1
|
|
# COST_PER_1K_INPUT_TOKENS=0
|
|
# COST_PER_1K_OUTPUT_TOKENS=0
|
|
# EXCHANGE_FEE=1.005
|
|
# UPSTREAM_PROVIDER_FEE=1.05
|
|
|
|
# Network Configuration
|
|
# CORS_ORIGINS=*
|
|
# TOR_PROXY_URL=socks5://127.0.0.1:9050
|
|
|
|
# Logging
|
|
# LOG_LEVEL=INFO
|
|
# ENABLE_CONSOLE_LOGGING=true
|
|
|
|
# Custom Model Management
|
|
# BASE_URL=https://openrouter.ai/api/v1
|
|
# MODELS_PATH=models.json
|
|
# SOURCE=
|
|
|
|
# UI Configuration (for Next.js frontend)
|
|
# These variables are prefixed with NEXT_PUBLIC_ to be accessible in the browser
|
|
# NEXT_PUBLIC_API_URL=http://127.0.0.1:8000
|