# Base Configuration - Example Environment # Complete example showing all available base configuration options # Root Path Configuration # This sets the base directory for all relative paths in the configuration root_path = "." # Server Configuration - Example with all options [server] protocol = "https" # "http" or "https" host = "0.0.0.0" # "0.0.0.0" for all interfaces, "127.0.0.1" for localhost only port = 443 # 443 for HTTPS, 80 for HTTP, 3030 for development environment = "production" # "development", "production", "staging" log_level = "info" # "trace", "debug", "info", "warn", "error" workers = 4 # Number of worker threads (0 = auto-detect) max_connections = 1000 # Maximum concurrent connections graceful_shutdown_timeout = 30 # Seconds to wait for graceful shutdown keepalive_timeout = 65 # HTTP keep-alive timeout in seconds request_timeout = 30 # Request timeout in seconds read_timeout = 30 # Read timeout in seconds write_timeout = 30 # Write timeout in seconds # Database Configuration - Example with multiple options [database] # PostgreSQL example url = "postgresql://username:password@localhost:5432/database_name" # SQLite example # url = "sqlite:database.db" # MySQL example # url = "mysql://username:password@localhost:3306/database_name" max_connections = 20 # Maximum connections in pool min_connections = 5 # Minimum connections in pool connect_timeout = 10 # Connection timeout in seconds idle_timeout = 300 # Idle connection timeout in seconds max_lifetime = 1800 # Maximum connection lifetime in seconds enable_logging = false # Log database queries log_slow_queries = true # Log slow queries only slow_query_threshold = 1000 # Slow query threshold in milliseconds ssl_mode = "require" # "disable", "allow", "prefer", "require" statement_timeout = 30000 # Statement timeout in milliseconds migration_timeout = 300 # Migration timeout in seconds # Session Configuration - Example with all options [session] secret = "your-super-secure-session-secret-key-at-least-32-characters-long" cookie_name = "rustelo_session" cookie_secure = true # Set to true for HTTPS cookie_http_only = true # Prevent JavaScript access cookie_same_site = "strict" # "strict", "lax", "none" max_age = 3600 # Session duration in seconds domain = "example.com" # Cookie domain path = "/" # Cookie path rolling_timeout = true # Extend session on activity cleanup_interval = 3600 # Session cleanup interval in seconds # CORS Configuration - Example with comprehensive settings [cors] allowed_origins = [ "https://example.com", "https://www.example.com", "https://app.example.com" ] allowed_methods = ["GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"] allowed_headers = [ "Content-Type", "Authorization", "X-Requested-With", "X-CSRF-Token", "Accept", "Origin" ] allow_credentials = true max_age = 86400 # Preflight cache duration in seconds expose_headers = ["X-Total-Count", "X-Page-Count", "X-Rate-Limit"] vary_header = true # Add Vary header for caching # Static Files Configuration - Example with all options [static] assets_dir = "public" # Static assets directory site_root = "target/site" # Site root directory site_pkg_dir = "pkg" # Package directory enable_compression = true # Enable gzip compression enable_caching = true # Enable browser caching cache_max_age = 2592000 # Cache max age in seconds (30 days) compression_level = 6 # Compression level (1-9) compression_types = [ # File types to compress "text/html", "text/css", "text/javascript", "application/javascript", "application/json", "text/xml", "application/xml" ] # Server Directories Configuration - Example with all paths [server_dirs] public_dir = "/var/www/public" # Public files directory uploads_dir = "/var/uploads" # File uploads directory logs_dir = "/var/log/rustelo" # Log files directory temp_dir = "/tmp/rustelo" # Temporary files directory cache_dir = "/var/cache/rustelo" # Cache directory config_dir = "/etc/rustelo" # Configuration directory data_dir = "/var/lib/rustelo" # Application data directory backup_dir = "/var/backups/rustelo" # Backup directory templates_dir = "templates" # Template files directory locale_dir = "locale" # Localization files directory # Security Configuration - Example with comprehensive security settings [security] enable_csrf = true # Enable CSRF protection csrf_token_name = "csrf_token" # CSRF token form field name csrf_cookie_name = "__csrf_token" # CSRF token cookie name rate_limit_requests = 100 # Requests per window rate_limit_window = 60 # Rate limit window in seconds bcrypt_cost = 12 # bcrypt hashing cost enable_request_id = true # Add request ID to responses request_id_header = "X-Request-ID" # Request ID header name enable_security_headers = true # Enable security headers content_security_policy = "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'" x_frame_options = "DENY" # X-Frame-Options header x_content_type_options = "nosniff" # X-Content-Type-Options header referrer_policy = "strict-origin-when-cross-origin" # Referrer-Policy header # Application Settings - Example with all options [app] name = "Rustelo Application" # Application name version = "1.0.0" # Application version description = "A modern web application built with Rustelo" author = "Your Name" # Application author website = "https://example.com" # Application website support_email = "support@example.com" # Support email debug = false # Debug mode enable_metrics = true # Enable metrics collection enable_health_check = true # Enable health check endpoint enable_compression = true # Enable response compression max_request_size = 10485760 # Maximum request size in bytes (10MB) enable_hot_reload = false # Enable hot reloading auto_migrate = false # Auto-run database migrations timezone = "UTC" # Application timezone locale = "en" # Default locale date_format = "%Y-%m-%d" # Date format time_format = "%H:%M:%S" # Time format datetime_format = "%Y-%m-%d %H:%M:%S" # DateTime format # Logging Configuration - Example with comprehensive logging settings [logging] format = "json" # "json", "text", "pretty" level = "info" # "trace", "debug", "info", "warn", "error" file_path = "/var/log/rustelo/app.log" # Log file path max_file_size = 104857600 # Maximum log file size in bytes (100MB) max_files = 10 # Maximum number of log files to keep enable_console = false # Enable console logging enable_file = true # Enable file logging enable_structured_logging = true # Enable structured logging log_request_body = false # Log request bodies log_response_body = false # Log response bodies enable_audit_log = true # Enable audit logging audit_log_path = "/var/log/rustelo/audit.log" # Audit log file path enable_access_log = true # Enable access logging access_log_path = "/var/log/rustelo/access.log" # Access log file path log_rotation = "daily" # "daily", "weekly", "monthly", "size" log_compression = true # Compress rotated logs # Redis Configuration - Example with all options [redis] enabled = true # Enable Redis url = "redis://localhost:6379" # Redis connection URL pool_size = 20 # Connection pool size connection_timeout = 5 # Connection timeout in seconds command_timeout = 5 # Command timeout in seconds database = 0 # Redis database number enable_cluster = false # Enable Redis cluster mode cluster_nodes = [] # Redis cluster nodes ssl_enabled = false # Enable SSL/TLS ssl_cert_path = "" # SSL certificate path ssl_key_path = "" # SSL key path ssl_ca_path = "" # SSL CA path retry_attempts = 3 # Number of retry attempts retry_delay = 1000 # Retry delay in milliseconds # Metrics Configuration - Example with comprehensive metrics settings [metrics] enabled = true # Enable metrics collection endpoint = "/metrics" # Metrics endpoint path port = 9090 # Metrics server port (0 = use main port) host = "127.0.0.1" # Metrics server host collect_system_metrics = true # Collect system metrics collect_process_metrics = true # Collect process metrics collect_http_metrics = true # Collect HTTP metrics collect_database_metrics = true # Collect database metrics prometheus_enabled = true # Enable Prometheus format statsd_enabled = false # Enable StatsD format statsd_host = "localhost" # StatsD host statsd_port = 8125 # StatsD port scrape_interval = 15 # Metrics scrape interval in seconds histogram_buckets = [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0] # Health Check Configuration - Example with all options [health] enabled = true # Enable health checks endpoint = "/health" # Health check endpoint detailed = false # Include detailed health information check_database = true # Check database connectivity check_redis = true # Check Redis connectivity check_external_services = true # Check external service dependencies timeout = 5000 # Health check timeout in milliseconds interval = 30 # Health check interval in seconds failure_threshold = 3 # Number of failures before marking unhealthy success_threshold = 1 # Number of successes before marking healthy # Monitoring Configuration - Example with external monitoring [monitoring] enabled = true # Enable monitoring alert_manager_url = "http://localhost:9093" # AlertManager URL prometheus_url = "http://localhost:9090" # Prometheus URL grafana_url = "http://localhost:3000" # Grafana URL enable_traces = true # Enable distributed tracing trace_sampling_rate = 0.1 # Trace sampling rate (0.0-1.0) jaeger_endpoint = "http://localhost:14268/api/traces" # Jaeger endpoint zipkin_endpoint = "http://localhost:9411/api/v2/spans" # Zipkin endpoint # Backup Configuration - Example with automated backups [backup] enabled = true # Enable automatic backups schedule = "0 2 * * *" # Backup schedule (cron format) retention_days = 30 # Backup retention in days storage_path = "/var/backups/rustelo" # Backup storage path compress_backups = true # Compress backup files encryption_enabled = true # Enable backup encryption encryption_key = "backup-encryption-key" # Backup encryption key s3_enabled = false # Enable S3 backup storage s3_bucket = "rustelo-backups" # S3 bucket name s3_region = "us-east-1" # S3 region s3_access_key = "" # S3 access key s3_secret_key = "" # S3 secret key # SSL/TLS Configuration - Example with security settings [ssl] force_https = true # Force HTTPS redirects hsts_max_age = 31536000 # HSTS max age in seconds (1 year) hsts_include_subdomains = true # Include subdomains in HSTS hsts_preload = true # Enable HSTS preload upgrade_insecure_requests = true # Upgrade insecure requests # Cache Configuration - Example with caching settings [cache] enabled = true # Enable caching type = "redis" # "memory", "redis", "file" default_ttl = 3600 # Default TTL in seconds max_memory = 134217728 # Maximum memory usage in bytes (128MB) eviction_policy = "lru" # "lru", "lfu", "fifo", "random" compression = true # Enable cache compression encryption = false # Enable cache encryption key_prefix = "rustelo:" # Cache key prefix # Rate Limiting Configuration - Example with comprehensive rate limiting [rate_limiting] enabled = true # Enable rate limiting global_limit = 1000 # Global requests per window global_window = 60 # Global window in seconds per_ip_limit = 100 # Per-IP requests per window per_ip_window = 60 # Per-IP window in seconds per_user_limit = 500 # Per-user requests per window per_user_window = 60 # Per-user window in seconds burst_limit = 10 # Burst limit storage = "redis" # "memory", "redis" key_prefix = "ratelimit:" # Rate limit key prefix # WebSocket Configuration - Example with WebSocket settings [websocket] enabled = true # Enable WebSocket support path = "/ws" # WebSocket endpoint path max_connections = 1000 # Maximum concurrent connections ping_interval = 30 # Ping interval in seconds pong_timeout = 10 # Pong timeout in seconds max_message_size = 1048576 # Maximum message size in bytes (1MB) compression = true # Enable WebSocket compression origin_check = true # Check WebSocket origin allowed_origins = ["https://example.com"] # Allowed origins # Background Jobs Configuration - Example with job processing [jobs] enabled = true # Enable background jobs queue_name = "rustelo_jobs" # Job queue name max_workers = 4 # Maximum worker threads poll_interval = 5 # Queue polling interval in seconds retry_attempts = 3 # Number of retry attempts retry_delay = 60 # Retry delay in seconds max_job_size = 1048576 # Maximum job size in bytes (1MB) job_timeout = 300 # Job timeout in seconds dead_letter_queue = true # Enable dead letter queue storage = "redis" # "memory", "redis", "database" # API Configuration - Example with API settings [api] enabled = true # Enable API base_path = "/api/v1" # API base path rate_limit = 1000 # API rate limit per hour enable_cors = true # Enable CORS for API enable_authentication = true # Require authentication enable_pagination = true # Enable pagination default_page_size = 20 # Default page size max_page_size = 100 # Maximum page size enable_filtering = true # Enable filtering enable_sorting = true # Enable sorting enable_search = true # Enable search api_key_header = "X-API-Key" # API key header name