Configuration Guide

This comprehensive guide covers all configuration options for the HostingCo system.

Configuration Overview

The HostingCo system uses environment variables and configuration files for flexible setup across different environments.

Configuration Hierarchy

1. Environment Variables: Runtime configuration
2. Configuration Files: Static configuration
3. Database Settings: Dynamic configuration stored in database
4. Default Values: Fallback configuration in code

🌍 Environment Variables

Root Environment (.env)

# Application Environment
NODE_ENV=development                    # development, staging, production
LOG_LEVEL=info                         # error, warn, info, debug

# Database Configuration
DATABASE_URL=postgresql://hostingco:password@localhost:5432/hostingco
DB_HOST=localhost
DB_PORT=5432
DB_NAME=hostingco
DB_USER=hostingco
DB_PASSWORD=password
DB_SSL=false                           # true for production

Server Configuration

# Server Settings
PORT=3003
HOST=localhost
CORS_ORIGIN=http://localhost:3000

# Security Configuration
JWT_SECRET=your-super-secret-jwt-key
JWT_EXPIRES_IN=24h
BCRYPT_ROUNDS=12

Redis Configuration

# Redis Settings
REDIS_URL=redis://localhost:6379
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

📁 Configuration Files

Application Config

// config/app.json
{
  "name": "HostingCo",
  "version": "1.0.0",
  "description": "Hosting Management System",
  "author": "HostingCo Team",
  "license": "MIT",
  "features": {
    "userManagement": true,
    "billing": true,
    "support": true,
    "monitoring": true
  }
}

Database Config

// config/database.json
{
  "client": "postgresql",
  "connection": {
    "host": "${DB_HOST}",
    "port": "${DB_PORT}",
    "database": "${DB_NAME}",
    "user": "${DB_USER}",
    "password": "${DB_PASSWORD}",
    "ssl": "${DB_SSL}"
  },
  "pool": {
    "min": 2,
    "max": 10,
    "acquireTimeoutMillis": 30000,
    "idleTimeoutMillis": 30000
  },
  "migrations": {
    "directory": "./migrations",
    "tableName": "knex_migrations"
  }
}

Environment-Specific Configuration

Development Environment

Features: Debug mode, hot reload, detailed logging
Database: Local development database
Security: Relaxed CORS, self-signed certificates

Production Environment

Features: Optimized performance, minimal logging
Database: Production database with SSL
Security: Strict CORS, valid certificates, rate limiting

Staging Environment

Features: Production-like setup with testing features
Database: Separate staging database
Security: Production security settings

Configuration Management

Loading Configuration

// Load configuration based on environment
const config = require('./config');

// Access configuration values
const dbConfig = config.database;
const serverConfig = config.server;

// Environment-specific overrides
if (process.env.NODE_ENV === 'production') {
  config.server.timeout = 30000;
}

Validation

# Validate configuration
npm run config:validate

# Check required environment variables
npm run config:check-env

# Test database connection
npm run config:test-db
Important: Always validate configuration before starting the application in production.

Best Practices

Security

  • Never commit secrets to version control
  • Use environment-specific configuration files
  • Encrypt sensitive configuration values
  • Regularly rotate secrets and passwords

Performance

  • Use connection pooling for database
  • Configure appropriate timeouts
  • Enable caching where appropriate
  • Monitor configuration changes

Maintenance

# Backup configuration
npm run config:backup

# Update configuration templates
npm run config:update-templates

# Generate configuration documentation
npm run config:docs