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
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
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
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
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