Documents AE_DB_POOL_SIZE and AE_DB_POOL_MAX_OVERFLOW in .env.default with per-replica connection math comment for capacity planning. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
167 lines
6.6 KiB
Plaintext
167 lines
6.6 KiB
Plaintext
# ------------------------------------------------------------------------------
|
||
# AETHER FRAMEWORK - DOCKER ENVIRONMENT CONFIGURATION TEMPLATE
|
||
# ------------------------------------------------------------------------------
|
||
# Copy this file to .env and fill in real values.
|
||
# .env is gitignored — never commit the live file.
|
||
# ------------------------------------------------------------------------------
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# SYSTEM SETTINGS
|
||
# ------------------------------------------------------------------------------
|
||
# System timezone for all containers
|
||
TZ=US/Eastern
|
||
|
||
# Logging level for the API and background workers (debug, info, warning, error)
|
||
AE_LOG_LVL=debug
|
||
|
||
# Docker Compose Profiles
|
||
# 'database' includes: mariadb, phpmyadmin, ae_ops
|
||
# Comment out or leave empty for "app-only" nodes that connect to a remote DB
|
||
# COMPOSE_PROFILES=database
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# STACK ISOLATION
|
||
# ------------------------------------------------------------------------------
|
||
# Unique Docker network name per stack (prevents collisions when running test/prod on same host)
|
||
AE_NETWORK_NAME=ae_dev_net
|
||
|
||
# Internal Docker container names (must be unique per stack)
|
||
# Note: ae_api and ae_app are scaled services — Docker does not allow container_name on those.
|
||
CONTAINER_WEB=ae_web_dev
|
||
CONTAINER_REDIS=ae_redis_dev
|
||
CONTAINER_DOZZLE=ae_dozzle_dev
|
||
CONTAINER_MARIADB=ae_mariadb_dev
|
||
CONTAINER_PMA=ae_pma_dev
|
||
CONTAINER_AE_OPS=ae_ops_dev
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# NETWORK & PROXY SETTINGS
|
||
# ------------------------------------------------------------------------------
|
||
# Local Nginx listener ports on the host system
|
||
OSIT_WEB_HTTP_PORT=8888
|
||
|
||
# Maximum allowed file upload size (Global for Nginx)
|
||
OSIT_WEB_MAX_BODY_SIZE=5120M
|
||
|
||
# Gateway ports for external reverse proxy (Home Server → this node → Docker Nginx)
|
||
AE_APP_GATEWAY_PORT=3001
|
||
AE_API_GATEWAY_PORT=5060
|
||
|
||
# Dozzle log viewer port
|
||
AE_DOZZLE_PORT=8881
|
||
|
||
# Nginx Server Names (used in vhost config templates)
|
||
DOCKER_AE_API_SERVER_NAME=dev-api.oneskyit.com
|
||
DOCKER_AE_APP_SERVER_NAME=dev-example.oneskyit.com
|
||
DOCKER_PHPMYADMIN_SERVER_NAME=dev-phpmyadmin.oneskyit.com
|
||
DOCKER_OSIT_SERVER_NAME=dev.oneskyit.com
|
||
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# DATABASE SETTINGS (MariaDB)
|
||
# ------------------------------------------------------------------------------
|
||
# To use an EXTERNAL database:
|
||
# 1. Set COMPOSE_PROFILES= (empty) above to disable local DB containers.
|
||
# 2. Set AE_DB_SERVER to the external IP or hostname.
|
||
# 3. Ensure the external DB allows connections from this host's IP.
|
||
|
||
# DB Hostname (use 'mariadb' for the local container, or a remote IP/FQDN)
|
||
AE_DB_SERVER=vpn-db.oneskyit.com
|
||
# AE_DB_SERVER=mariadb
|
||
AE_DB_PORT=3306
|
||
|
||
# Port to expose on the host system if running a local MariaDB container
|
||
AE_DB_EXTERNAL_PORT=32768
|
||
|
||
# Database credentials
|
||
AE_DB_NAME=aether_dev
|
||
AE_DB_USERNAME=aether_dev
|
||
AE_DB_PASSWORD=XXXX
|
||
|
||
# Connection Tuning
|
||
AE_DB_CONNECTION_TIMEOUT=7
|
||
AE_DB_POOL_RECYCLE=900
|
||
# Pool size per API replica. Total max DB connections = AE_API_REPLICAS × (AE_DB_POOL_SIZE + AE_DB_POOL_MAX_OVERFLOW)
|
||
# With defaults (10+20) and 3 replicas = 90 max connections. MARIADB_MAX_CONNECTIONS must be higher.
|
||
AE_DB_POOL_SIZE=10
|
||
AE_DB_POOL_MAX_OVERFLOW=20
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# REDIS SETTINGS
|
||
# ------------------------------------------------------------------------------
|
||
# Redis is used for caching, ID resolution, and messaging
|
||
AE_REDIS_SERVER=redis
|
||
AE_REDIS_PORT=6379
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# API SETTINGS (FastAPI)
|
||
# ------------------------------------------------------------------------------
|
||
# Number of API container instances to run (Docker Compose scaling)
|
||
AE_API_REPLICAS=3
|
||
|
||
# Gunicorn / Uvicorn Tuning
|
||
# AE_API_GUNICORN_TIMEOUT: worker timeout in seconds. Default in gunicorn_conf.py
|
||
# is 120s. Raise for endpoints that run long ffmpeg operations (clip_video, etc.)
|
||
# The dev .env typically sets this to 900 to accommodate 5-15 min video jobs.
|
||
AE_API_GUNICORN_PORT=5065
|
||
AE_API_GUNICORN_TIMEOUT=900
|
||
AE_API_GUNICORN_WORKERS=2
|
||
AE_API_GUNICORN_THREADS=1
|
||
|
||
# Security & CORS
|
||
# JWT_KEY should be a 22+ character secret string
|
||
AE_API_JWT_KEY=XXXX
|
||
|
||
# Regex for allowed CORS origins
|
||
AE_API_ORIGINS_REGEX="(https://.*\.oneskyit\.com)|(http://.*\.oneskyit\.com)|(http://.*.localhost)|(http://.*.localhost:5173)"
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# SMTP SETTINGS (Email)
|
||
# ------------------------------------------------------------------------------
|
||
# Core SMTP configuration for system notifications and user emails
|
||
AE_SMTP_SERVER=linode.oneskyit.com
|
||
AE_SMTP_PORT=465
|
||
AE_SMTP_USERNAME=send_mail
|
||
AE_SMTP_PASSWORD=XXXX
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# APP SETTINGS (SvelteKit)
|
||
# ------------------------------------------------------------------------------
|
||
# Build mode baked into the Docker image at build time (dev, test, prod)
|
||
AE_APP_BUILD_MODE=dev
|
||
AE_APP_REPLICAS=2
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# SOURCE PATHS (Absolute paths on Host Machine)
|
||
# ------------------------------------------------------------------------------
|
||
# IMPORTANT: These paths must exist on the machine running Docker.
|
||
# They are mounted into containers as volumes for real-time development.
|
||
AE_API_SRC=/home/scott/OSIT_dev/aether_api_fastapi
|
||
AE_APP_SRC=/home/scott/OSIT_dev/aether_app_sveltekit
|
||
|
||
# Physical File Storage (Images, Documents, etc.)
|
||
# NOTE: Shared between environments to ensure binary availability
|
||
HOSTED_FILES_SRC=/home/scott/OSIT/hosted_files
|
||
HOSTED_TMP_SRC=/home/scott/OSIT/hosted_tmp
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# SERVICE TUNING & PERFORMANCE
|
||
# ------------------------------------------------------------------------------
|
||
# phpMyAdmin Host Port
|
||
AE_PMA_PORT=8081
|
||
|
||
# MariaDB Performance (Injected via Docker Compose command flags)
|
||
MARIADB_MAX_CONNECTIONS=500
|
||
MARIADB_INNODB_BUFFER_POOL_SIZE=512M
|
||
MARIADB_QUERY_CACHE_SIZE=32M
|
||
MARIADB_TMP_TABLE_SIZE=384M
|
||
MARIADB_TABLE_OPEN_CACHE=4000
|
||
|
||
# ------------------------------------------------------------------------------
|
||
# AETHER SHARED CONFIG (DB Driven)
|
||
# ------------------------------------------------------------------------------
|
||
# Specifies which record from the 'cfg' table to use for shared settings
|
||
# (SMTP, API routes, and external service keys)
|
||
# common options: 1=Default, 5=Home Dev, 7=Live Test
|
||
AE_CFG_ID=5
|