Assist_Design/env/portal-backend.env.sample

135 lines
3.6 KiB
Plaintext
Raw Normal View History

NODE_ENV=production
# App
APP_BASE_URL=https://asolutions.jp
BFF_PORT=4000
APP_NAME=customer-portal-bff
# Database (PostgreSQL)
POSTGRES_DB=portal_prod
POSTGRES_USER=portal
POSTGRES_PASSWORD=CHANGE_ME
DATABASE_URL=postgresql://portal:CHANGE_ME@database:5432/portal_prod?schema=public
# Cache (Redis)
REDIS_URL=redis://cache:6379/0
AUTH_ALLOW_REDIS_TOKEN_FAILOPEN=false
# Redis-required token flow (when enabled, tokens require Redis to be available)
AUTH_REQUIRE_REDIS_FOR_TOKENS=false
# Maintenance mode for authentication service
AUTH_MAINTENANCE_MODE=false
AUTH_MAINTENANCE_MESSAGE=Authentication service is temporarily unavailable for maintenance. Please try again later.
# Security
JWT_SECRET=CHANGE_ME
JWT_EXPIRES_IN=7d
BCRYPT_ROUNDS=12
# CSRF Protection
CSRF_TOKEN_EXPIRY=3600000
CSRF_SECRET_KEY=CHANGE_ME_AT_LEAST_32_CHARACTERS_LONG
CSRF_COOKIE_NAME=csrf-secret
CSRF_HEADER_NAME=X-CSRF-Token
# CORS / Proxy
CORS_ORIGIN=https://asolutions.jp
TRUST_PROXY=true
# Rate Limiting (optional; defaults shown - ttl values in seconds)
RATE_LIMIT_TTL=60
RATE_LIMIT_LIMIT=100
AUTH_RATE_LIMIT_TTL=900
AUTH_RATE_LIMIT_LIMIT=3
AUTH_REFRESH_RATE_LIMIT_TTL=300
AUTH_REFRESH_RATE_LIMIT_LIMIT=10
LOGIN_RATE_LIMIT_TTL=900
LOGIN_RATE_LIMIT_LIMIT=5
LOGIN_CAPTCHA_AFTER_ATTEMPTS=3
SIGNUP_RATE_LIMIT_TTL=900
SIGNUP_RATE_LIMIT_LIMIT=5
PASSWORD_RESET_RATE_LIMIT_TTL=900
PASSWORD_RESET_RATE_LIMIT_LIMIT=5
# CAPTCHA Configuration
AUTH_CAPTCHA_PROVIDER=none
AUTH_CAPTCHA_SECRET=
AUTH_CAPTCHA_THRESHOLD=0
AUTH_CAPTCHA_ALWAYS_ON=false
# Validation error visibility (set true to show field-level errors to clients)
EXPOSE_VALIDATION_ERRORS=false
# WHMCS Credentials
WHMCS_BASE_URL=https://accounts.asolutions.co.jp
WHMCS_API_IDENTIFIER=
WHMCS_API_SECRET=
# Optional API access key if your deployment uses it
WHMCS_API_ACCESS_KEY=
# Optional webhook security for WHMCS webhooks
WHMCS_WEBHOOK_SECRET=
# Optional elevated admin credentials for privileged actions (eg. AcceptOrder)
# Provide the admin username and MD5 hash of the admin password.
# When set, the backend will use these ONLY for the AcceptOrder action.
WHMCS_ADMIN_USERNAME=
WHMCS_ADMIN_PASSWORD_MD5=
# Salesforce Credentials
SF_LOGIN_URL=https://asolutions.my.salesforce.com
SF_CLIENT_ID=
SF_PRIVATE_KEY_PATH=/app/secrets/sf-private.key
SF_USERNAME=
SF_WEBHOOK_SECRET=
# Salesforce Authentication Timeouts (in milliseconds)
SF_AUTH_TIMEOUT_MS=30000
SF_TOKEN_TTL_MS=720000
SF_TOKEN_REFRESH_BUFFER_MS=60000
# Queue Throttling Configuration
WHMCS_QUEUE_CONCURRENCY=15
WHMCS_QUEUE_INTERVAL_CAP=300
WHMCS_QUEUE_TIMEOUT_MS=30000
SF_QUEUE_CONCURRENCY=15
SF_QUEUE_LONG_RUNNING_CONCURRENCY=22
SF_QUEUE_INTERVAL_CAP=600
SF_QUEUE_TIMEOUT_MS=30000
SF_QUEUE_LONG_RUNNING_TIMEOUT_MS=600000
# Salesforce Platform Events (Provisioning)
SF_EVENTS_ENABLED=true
SF_PROVISION_EVENT_CHANNEL=/event/Order_Fulfilment_Requested__e
SF_EVENTS_REPLAY=LATEST
SF_PUBSUB_ENDPOINT=api.pubsub.salesforce.com:7443
SF_PUBSUB_NUM_REQUESTED=50
SF_PUBSUB_QUEUE_MAX=100
# Salesforce Pricing
PORTAL_PRICEBOOK_ID=
# Logging
LOG_LEVEL=info
LOG_FORMAT=json
# Email (SendGrid)
SENDGRID_API_KEY=
EMAIL_FROM=no-reply@asolutions.jp
EMAIL_FROM_NAME=Assist Solutions
EMAIL_ENABLED=true
EMAIL_USE_QUEUE=true
SENDGRID_SANDBOX=false
EMAIL_TEMPLATE_RESET=
EMAIL_TEMPLATE_WELCOME=
# Freebit (SIM management; optional)
FREEBIT_BASE_URL=https://i1.mvno.net/emptool/api
FREEBIT_OEM_ID=PASI
FREEBIT_OEM_KEY=
FREEBIT_TIMEOUT=30000
FREEBIT_RETRY_ATTEMPTS=3
FREEBIT_DETAILS_ENDPOINT=/master/getAcnt/
# Node Options
NODE_OPTIONS=--max-old-space-size=512
# NOTE: Frontend (Next.js) uses a separate env file (portal-frontend.env)
# Do not include NEXT_PUBLIC_* variables here.