BryanNet

Configuration reference (env vars, ports, URLs)

Prerequisites and authority

Use this reference with your installed release. Internal implementation routes and settings are not public integration contracts.

Configuration contract

Distinguish bootstrap environment from database-backed operator settings. The inspected app/core/settings.py intentionally contains a small bootstrap surface; payments, backup schedules and many operational choices are not assumed to be environment variables simply because older code used them that way.

The accompanying source-inventory tables list every field declared by that inspected Settings class, Compose interpolation inputs and settings-key constants. They are source candidates, with support/classification stated, not certification that every internal key is a customer-editable setting.

Public deployment inputs are API_PUBLIC_URL, ADMIN_PUBLIC_URL and CUSTOMER_PUBLIC_URL. Supply complete origins matching actual ingress. Internal container URLs such as http://api:8000/api/v1 are not public callback addresses.

Database credentials, JWT secret and router encryption key are sensitive. Preserve encryption keys across updates/recovery: replacing a key can make stored encrypted integration values unreadable. Never copy the installation .env into a public ticket.

Licensing bootstrap declares mode, verification URL/public key, interval, grace and timeout. Their source defaults are not automatically the packaged production defaults. Release manifest/installer configuration can supply different values.

Environment changes generally require recreating/restarting the affected process using the supported deployment route. UI/database settings may be read dynamically, but restart requirements must be verified per setting. Capture old values and change one related group at a time.

Customers control their installations and may inspect, troubleshoot and customize configuration or Docker independently, including beyond this manual. Support approval is not required to administer your own server. This reference distinguishes tested procedures from internal implementation details; it does not restrict ownership or self-service troubleshooting.

For database inspection, use the supplied read-only SQL account and the access procedure in MySQL Workbench support access. Read-only access does not permit data repair or schema changes. Do not publish database access to the Internet.

Before an advanced change, take and verify a backup, preserve the original configuration and record the modification. Changing credentials, encryption keys, schema, image versions or service wiring can break authentication, make stored secrets unreadable or interfere with future updates. Recheck health and the affected workflows afterward; request support if desired, not as a prerequisite for independent troubleshooting.

BRYANNET_INTERNAL_SERVICE_TOKEN and BRYANNET_UPDATE_VERIFICATION_MODE are internal inputs, not ordinary tuning controls. Update verification temporarily uses the latter to restrict normal application work. Do not leave it enabled during normal service or disable it during an active update.

The following table is a source-variable inventory, not a promise that changing every field is safe or that every source default is used by the installer. You may administer your installation independently; preserve a recovery point and verify affected workflows after advanced changes. Installer inputs and dashboard settings remain the clearest paths for routine configuration.

Advanced startup configuration

The installer supplies the effective startup values for your release. The examples below explain the settings; they are not replacement credentials or instructions to overwrite generated configuration. Back up configuration before changing it and keep secrets private.

Variable Type Source default Classification
APP_NAME str BryanNet API advanced bootstrap setting; preserve configuration before changing
APP_VERSION str 1.0.0 advanced bootstrap setting; preserve configuration before changing
DEBUG bool False advanced bootstrap setting; preserve configuration before changing
ENVIRONMENT str development advanced bootstrap setting; preserve configuration before changing
API_PREFIX str /api/v1 advanced bootstrap setting; preserve configuration before changing
API_PUBLIC_URL str http://localhost:8000 advanced bootstrap setting; preserve configuration before changing
ADMIN_PUBLIC_URL str http://localhost:5173 advanced bootstrap setting; preserve configuration before changing
CUSTOMER_PUBLIC_URL str http://localhost:5174 advanced bootstrap setting; preserve configuration before changing
DB_HOST str localhost advanced bootstrap setting; preserve configuration before changing
DB_PORT int 3306 advanced bootstrap setting; preserve configuration before changing
DB_NAME str bryannet advanced bootstrap setting; preserve configuration before changing
DB_USER str root advanced bootstrap setting; preserve configuration before changing
DB_PASSWORD str empty sensitive bootstrap
JWT_SECRET str empty sensitive bootstrap
JWT_ALGORITHM str HS256 advanced bootstrap setting; preserve configuration before changing
ROUTER_ENCRYPTION_KEY str empty sensitive bootstrap
BRYANNET_INTERNAL_SERVICE_TOKEN str | None None managed/internal
PORTAL_BACKEND_HOST str localhost managed/internal
PORTAL_BACKEND_PORT int 8000 managed/internal
BRYANNET_UPDATE_VERIFICATION_MODE bool False managed/internal
BRYANNET_RELEASE_MANIFEST_URL str https://updates.bryannet.online/stable/release-manifest.json advanced bootstrap setting; preserve configuration before changing
LICENSE_VERIFICATION_MODE str offline advanced bootstrap setting; preserve configuration before changing
LICENSE_VERIFICATION_URL str empty advanced bootstrap setting; preserve configuration before changing
LICENSE_VERIFICATION_PUBLIC_KEY str empty advanced bootstrap setting; preserve configuration before changing
LICENSE_VERIFICATION_INTERVAL_HOURS int 24 advanced bootstrap setting; preserve configuration before changing
LICENSE_GRACE_PERIOD_DAYS int 7 advanced bootstrap setting; preserve configuration before changing
LICENSE_VERIFICATION_TIMEOUT_SECONDS int 15 advanced bootstrap setting; preserve configuration before changing

Saved application settings

These keys identify saved application settings, not additional environment variables. Change supported settings through the appropriate Admin settings page; do not create or edit database values to bypass validation or licensing.

Constant Stored key
BACKUP_ENABLED backup_enabled
BACKUP_LOCAL_ENABLED backup_local_enabled
BACKUP_LOCAL_PATH backup_local_path
BACKUP_LOCAL_RETENTION_COUNT backup_local_retention_count
BACKUP_OFFSITE_ENABLED backup_offsite_enabled
BACKUP_S3_ENDPOINT backup_s3_endpoint
BACKUP_S3_REGION backup_s3_region
BACKUP_S3_BUCKET backup_s3_bucket
BACKUP_S3_PREFIX backup_s3_prefix
BACKUP_S3_ACCESS_KEY backup_s3_access_key
BACKUP_S3_SECRET_KEY backup_s3_secret_key
BACKUP_S3_PATH_STYLE backup_s3_path_style
BACKUP_OFFSITE_RETENTION_COUNT backup_offsite_retention_count
BACKUP_SCHEDULE_ENABLED backup_schedule_enabled
BACKUP_SCHEDULE_TIME backup_schedule_time
BACKUP_RECOVERY_KEY backup_recovery_key
COMPANY_NAME company_name
COMPANY_EMAIL company_email
COMPANY_PHONE company_phone
COMPANY_ADDRESS company_address
DEFAULT_TIMEZONE default_timezone
DEFAULT_CURRENCY default_currency
COUNTRY country
THEME theme
DATE_FORMAT date_format
TIME_FORMAT time_format
ORGANIZATION_PROFILE organization_profile
ORGANIZATION_ENABLED_MODULES organization_enabled_modules
ORGANIZATION_CONFIGURATION_VERSION organization_configuration_version
REGISTRATION_ENABLED registration_enabled
SESSION_TIMEOUT_MINUTES session_timeout_minutes
JWT_EXPIRE_MINUTES jwt_expire_minutes
REMEMBER_ME_EXPIRE_DAYS remember_me_expire_days
TELEGRAM_SESSION_TIMEOUT_MINUTES telegram_session_timeout_minutes
MAX_LOGIN_ATTEMPTS max_login_attempts
PASSWORD_MIN_LENGTH password_min_length
REQUIRE_SPECIAL_CHARACTERS require_special_characters
REQUIRE_UPPERCASE require_uppercase
REQUIRE_NUMBERS require_numbers
TWO_FACTOR_AUTH_POLICY two_factor_auth_policy
TWO_FACTOR_PROTECTED_ACTIONS two_factor_protected_actions
LEGACY_TWO_FACTOR_AUTH_ENABLED two_factor_auth_enabled
EMAIL_NOTIFICATIONS email_notifications
SUBSCRIPTION_EXPIRY_REMINDERS subscription_expiry_reminders
OUTAGE_ALERTS outage_alerts
ROUTER_USERNAME_PREFIX router_username_prefix
ADDITIONAL_FRONTEND_ORIGINS additional_frontend_origins
PORTAL_DEFAULT_REDIRECT_URL portal_default_redirect_url
PAYMENT_REFERENCE_PREFIX payment_reference_prefix
PAYMENT_EXPIRY_MINUTES payment_expiry_minutes
TELEGRAM_ENABLED telegram_enabled
TELEGRAM_BOT_TOKEN telegram_bot_token
TELEGRAM_BOT_USERNAME telegram_bot_username
PAYSTACK_ENABLED paystack_enabled
PAYSTACK_PUBLIC_KEY paystack_public_key
PAYSTACK_SECRET_KEY paystack_secret_key
FLUTTERWAVE_ENABLED flutterwave_enabled
FLUTTERWAVE_SECRET_KEY flutterwave_secret_key
FLUTTERWAVE_WEBHOOK_SECRET flutterwave_webhook_secret
SMTP_ENABLED smtp_enabled
SMTP_HOST smtp_host
SMTP_PORT smtp_port
SMTP_USERNAME smtp_username
SMTP_PASSWORD smtp_password
SMTP_FROM_EMAIL smtp_from_email
SMTP_USE_TLS smtp_use_tls
SMS_PROVIDER sms_provider
SMS_API_KEY sms_api_key
BRAND_NAME brand_name
LOGO_URL logo_url
PRIMARY_COLOR primary_color
SECONDARY_COLOR secondary_color
LOGIN_PAGE_TITLE login_page_title
LOGIN_PAGE_SUBTITLE login_page_subtitle
COMPANY_TAGLINE company_tagline
FAVICON_URL favicon_url
SUPPORT_EMAIL support_email
SUPPORT_PHONE support_phone
SUPPORT_WHATSAPP support_whatsapp
SUPPORT_TELEGRAM support_telegram
WEBSITE_URL website_url
FACEBOOK_URL facebook_url
INSTAGRAM_URL instagram_url
X_URL x_url
LINKEDIN_URL linkedin_url
MOBILE_URL_SCHEME mobile_url_scheme
SETUP_COMPLETED setup_completed
MAINTENANCE_MODE maintenance_mode
MAINTENANCE_SCHEDULED_AT maintenance_scheduled_at
MAINTENANCE_SCHEDULE_MESSAGE maintenance_schedule_message
DEBUG_MODE debug_mode
AUDIT_LOG_RETENTION_DAYS audit_log_retention_days
BACKUP_RETENTION_DAYS backup_retention_days

Inspected Compose interpolation inputs

ADMIN_PORT, API_PORT, BRYANNET_ADMIN_IMAGE, BRYANNET_API_IMAGE, BRYANNET_BACKUP_PATH, BRYANNET_BOT_IMAGE, BRYANNET_CUSTOMER_IMAGE, BRYANNET_UPDATE_VERIFICATION_MODE, CUSTOMER_PORT, DB_NAME, DB_PASSWORD, DB_USER, ENVIRONMENT, MYSQL_ROOT_PASSWORD

Image versions and verification inputs are release-managed. Passwords and tokens are sensitive. Follow the relevant setting's restart requirements and retain the previous configuration for recovery.

Related guides

Related guides: Docker services, Compose files and persistent volumes, Database diagnostics and safe query reference, Subscription and provisioning state model.

Bachs saved integration settings

Configure Bachs through Settings > Integrations. These are database-backed setting keys, not a claim that identically named environment variables bootstrap credentials:

Saved setting Purpose
bachs_enabled Enable Bachs payment availability after successful configuration/acceptance
bachs_environment Select sandbox or live
bachs_sandbox_organization_id / bachs_live_organization_id Merchant identity for the selected environment
bachs_sandbox_secret_key / bachs_live_secret_key Server-only API credentials; must match the environment
bachs_sandbox_webhook_secret / bachs_live_webhook_secret Verify raw webhook signatures for the selected environment

The internal bachs_eligible setting is not a second operator approval toggle. Use the configured provider/account checks and actual acceptance results rather than setting eligibility by hand.

Bachs webhook route: stable public HTTPS API origin plus /api/v1/payments/webhooks/bachs. The payment worker uses the API image and runs python -m app.workers.payment_maintenance_runner; it processes the shared durable inbox and payment recovery. Apply the release's additive migrations before starting the updated API and workers. Credential snapshots preserve the original transaction configuration during later verification; changing current settings does not rewrite historical payment credentials.