- README: NSG port list inline, phase 7 count 31, CORS/NODE_ENV troubleshooting, SSH port-forwarding example - prompt.md: mark tasks 5+6 done, add 8 new bug fixes to table, update definition of done with llmlab-dashboard - .env.ecosystem.example: add NODE_ENV=production and CORS_ORIGIN=*
89 lines
4.5 KiB
Plaintext
89 lines
4.5 KiB
Plaintext
# ── ByteLyst Ecosystem Environment Variables ─────────────────────
|
|
# Copy to .env.ecosystem and fill in real values.
|
|
# Used by: docker compose -f docker-compose.ecosystem.yml --env-file .env.ecosystem up
|
|
|
|
# ── Cosmos DB (local emulator) ───────────────────────────────────
|
|
COSMOS_ENDPOINT=http://cosmos-emulator:8081
|
|
# Cosmos emulator uses a well-known key. Copy it from:
|
|
# https://learn.microsoft.com/en-us/azure/cosmos-db/emulator#authentication
|
|
# It starts with: C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDu...
|
|
COSMOS_KEY=
|
|
COSMOS_DATABASE=bytelyst
|
|
|
|
# ── Auth ─────────────────────────────────────────────────────────
|
|
JWT_SECRET=change-me-ecosystem-jwt-secret-at-least-32-chars
|
|
RATE_LIMIT_STORE_MODE=datastore
|
|
|
|
# ── Azure Blob Storage (Azurite emulator) ────────────────────────
|
|
STORAGE_PROVIDER=azure
|
|
# Azurite uses a well-known connection string. Copy it from:
|
|
# https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite#well-known-storage-account-and-key
|
|
# Format: DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02x...;BlobEndpoint=http://azurite:10000/devstoreaccount1;
|
|
AZURE_BLOB_CONNECTION_STRING=
|
|
AZURE_BLOB_ACCOUNT_NAME=devstoreaccount1
|
|
# Same well-known Azurite key (starts with: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1...)
|
|
AZURE_BLOB_ACCOUNT_KEY=
|
|
AZURE_BLOB_PUBLIC_ENDPOINT=http://localhost:10000/devstoreaccount1
|
|
|
|
# ── Email (Mailpit sandbox) ──────────────────────────────────────
|
|
EMAIL_PROVIDER=smtp
|
|
EMAIL_FROM_ADDRESS=noreply@bytelyst.local
|
|
EMAIL_FROM_NAME=ByteLyst
|
|
SMTP_HOST=mailpit
|
|
SMTP_PORT=1025
|
|
SMTP_SECURE=false
|
|
SMTP_USER=
|
|
SMTP_PASSWORD=
|
|
|
|
# ── Stripe (test keys — replace with your own) ──────────────────
|
|
STRIPE_SECRET_KEY=sk_test_REPLACE_ME
|
|
STRIPE_WEBHOOK_SECRET=whsec_REPLACE_ME
|
|
STRIPE_PRICE_PRO=price_REPLACE_ME
|
|
STRIPE_PRICE_ENTERPRISE=price_REPLACE_ME
|
|
|
|
# ── Extraction Service ───────────────────────────────────────────
|
|
PYTHON_SIDECAR_URL=http://localhost:4006
|
|
DEFAULT_MODEL_ID=gemini-2.5-flash
|
|
GEMINI_API_KEY=REPLACE_ME
|
|
EXTRACTION_QUEUE_BACKEND=file
|
|
EXTRACTION_QUEUE_FILE=.data/extraction-jobs.json
|
|
|
|
# ── Cross-service URLs (resolved via Docker service names) ───────
|
|
PLATFORM_SERVICE_URL=http://platform-service:4003
|
|
EXTRACTION_SERVICE_URL=http://extraction-service:4005
|
|
MCP_SERVER_URL=http://mcp-server:4007
|
|
|
|
# ── Datastore provider ───────────────────────────────────────────
|
|
# Use 'cosmos' for emulator, 'memory' for in-memory (tests)
|
|
DB_PROVIDER=cosmos
|
|
|
|
# ── Telemetry ────────────────────────────────────────────────────
|
|
TELEMETRY_ENABLED=true
|
|
|
|
# ── Event Bus ────────────────────────────────────────────────────
|
|
EVENT_BUS_BACKEND=file
|
|
EVENT_BUS_FILE=.data/platform-events.json
|
|
|
|
# ── Field Encryption ─────────────────────────────────────────────
|
|
FIELD_ENCRYPT_KEY_PROVIDER=memory
|
|
|
|
# ── Product Identity ─────────────────────────────────────────────
|
|
DEFAULT_PRODUCT_ID=lysnrai
|
|
|
|
# ── Runtime environment ─────────────────────────────────────────
|
|
NODE_ENV=production
|
|
|
|
# ── CORS (allow all origins for dev/test — restrict in production) ──
|
|
CORS_ORIGIN=*
|
|
|
|
# ── Webhooks (optional) ─────────────────────────────────────────
|
|
WEBHOOK_INVITATION_REDEEMED_URL=
|
|
WEBHOOK_REFERRAL_STATUS_URL=
|
|
WEBHOOK_WAITLIST_JOINED_URL=
|
|
|
|
# ── Notification channels (optional) ────────────────────────────
|
|
TELEGRAM_BOT_TOKEN=
|
|
TELEGRAM_DEFAULT_CHAT_ID=
|
|
SLACK_WEBHOOK_URL=
|
|
SLACK_DEFAULT_CHANNEL=
|