Files
aitbc/scripts/deployment/production-setup.sh
aitbc 3897bcbf24
Some checks failed
CLI Tests / test-cli (push) Failing after 4s
Deploy to Testnet / deploy-testnet (push) Successful in 1m40s
Documentation Validation / validate-docs (push) Failing after 12s
Documentation Validation / validate-policies-strict (push) Successful in 4s
Integration Tests / test-service-integration (push) Successful in 2m42s
Package Tests / Python package - aitbc-agent-sdk (push) Failing after 34s
Package Tests / Python package - aitbc-core (push) Successful in 27s
Package Tests / Python package - aitbc-crypto (push) Successful in 13s
Package Tests / Python package - aitbc-sdk (push) Successful in 16s
Package Tests / JavaScript package - aitbc-sdk-js (push) Successful in 8s
Package Tests / JavaScript package - aitbc-token (push) Successful in 18s
Python Tests / test-python (push) Failing after 50s
Security Scanning / security-scan (push) Failing after 43s
Multi-Node Stress Testing / stress-test (push) Successful in 12s
Cross-Node Transaction Testing / transaction-test (push) Successful in 9s
refactor: move version to separate module and improve logging
- Created aitbc/_version.py with centralized version definition
- Updated aitbc/__init__.py to import __version__ from _version module
- Updated constants.py to use __version__ for PACKAGE_VERSION
- Replaced print() calls with logger in decorators.py, events.py, queue_manager.py, and state.py
- Added logger initialization using get_logger(__name__) in config.py, decorators.py, events.py, queue_manager.py, and state.py
- Added cli/commands
2026-05-11 20:12:01 +02:00

261 lines
7.2 KiB
Bash
Executable File

#!/bin/bash
# ============================================================================
# AITBC Production-Grade Setup
# ============================================================================
set -e
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
AITBC_ROOT="${AITBC_ROOT:-/opt/aitbc}"
VENV_DIR="$AITBC_ROOT/venv"
PYTHON_CMD="$VENV_DIR/bin/python"
echo -e "${BLUE}🚀 AITBC PRODUCTION-GRADE SETUP${NC}"
echo "=========================="
echo "Upgrading from demonstration to production system"
echo "Nodes: aitbc (localhost) and aitbc1 (remote)"
echo ""
# Step 1: Production Environment Setup
echo -e "${CYAN}🔧 Step 1: Production Environment${NC}"
echo "================================="
cd "$AITBC_ROOT"
# Create production directories
mkdir -p /opt/aitbc/production/{logs,data,config,backups,monitoring}
mkdir -p /opt/aitbc/production/logs/{services,blockchain,marketplace,errors}
mkdir -p /opt/aitbc/production/data/{blockchain,marketplace,agents,gpu}
# Set proper permissions
chmod 755 /opt/aitbc/production
chmod 700 /opt/aitbc/production/data
echo "✅ Production directories created"
# Step 2: Production Database Setup
echo -e "${CYAN}💾 Step 2: Production Database${NC}"
echo "============================"
# Install production dependencies
"$PYTHON_CMD" -m pip install --upgrade pip
"$PYTHON_CMD" -m pip install sqlalchemy psycopg2-binary redis celery
# Create production database configuration
cat > /opt/aitbc/production/config/database.py << 'EOF'
import os
import ssl
# Production Database Configuration
DATABASE_CONFIG = {
'production': {
'url': os.getenv('DATABASE_URL', 'postgresql://aitbc:password@localhost:5432/aitbc_prod'),
'pool_size': 20,
'max_overflow': 30,
'pool_timeout': 30,
'pool_recycle': 3600,
'ssl_context': ssl.create_default_context()
},
'redis': {
'host': os.getenv('REDIS_HOST', 'localhost'),
'port': int(os.getenv('REDIS_PORT', 6379)),
'db': int(os.getenv('REDIS_DB', 0)),
'password': os.getenv('REDIS_PASSWORD', None),
'ssl': os.getenv('REDIS_SSL', 'false').lower() == 'true'
}
}
EOF
echo "✅ Production database configuration created"
# Step 3: Production Blockchain Setup
echo -e "${CYAN}⛓️ Step 3: Production Blockchain${NC}"
echo "=============================="
# Create production blockchain configuration
cat > /opt/aitbc/production/config/blockchain.py << 'EOF'
import os
from pathlib import Path
# Production Blockchain Configuration
BLOCKCHAIN_CONFIG = {
'network': {
'name': 'aitbc-mainnet',
'chain_id': 1337,
'consensus': 'proof_of_authority',
'block_time': 5, # seconds
'gas_limit': 8000000,
'difficulty': 'auto'
},
'nodes': {
'aitbc': {
'host': 'localhost',
'port': 8545,
'rpc_port': 8545,
'p2p_port': 30303,
'data_dir': '/opt/aitbc/production/data/blockchain/aitbc'
},
'aitbc1': {
'host': 'aitbc1',
'port': 8545,
'rpc_port': 8545,
'p2p_port': 30303,
'data_dir': '/opt/aitbc/production/data/blockchain/aitbc1'
}
},
'security': {
'enable_tls': True,
'cert_path': '/opt/aitbc/production/config/certs',
'require_auth': True,
'api_key': os.getenv('BLOCKCHAIN_API_KEY', 'production-key-change-me')
}
}
EOF
echo "✅ Production blockchain configuration created"
# Step 4: Production Services Configuration
echo -e "${CYAN}🔧 Step 4: Production Services${NC}"
echo "=============================="
# Create production service configurations
cat > /opt/aitbc/production/config/services.py << 'EOF'
import os
# Production Services Configuration
SERVICES_CONFIG = {
'blockchain': {
'host': '0.0.0.0',
'port': 8545,
'workers': 4,
'log_level': 'INFO',
'max_connections': 1000
},
'marketplace': {
'host': '0.0.0.0',
'port': 8002,
'workers': 8,
'log_level': 'INFO',
'max_connections': 5000
},
'gpu_marketplace': {
'host': '0.0.0.0',
'port': 8003,
'workers': 4,
'log_level': 'INFO',
'max_connections': 1000
},
'monitoring': {
'host': '0.0.0.0',
'port': 9000,
'workers': 2,
'log_level': 'INFO'
}
}
# Production Logging
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'production': {
'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S'
}
},
'handlers': {
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/opt/aitbc/production/logs/services/aitbc.log',
'maxBytes': 10485760, # 10MB
'backupCount': 5,
'formatter': 'production'
},
'console': {
'class': 'logging.StreamHandler',
'formatter': 'production'
}
},
'root': {
'level': 'INFO',
'handlers': ['file', 'console']
}
}
EOF
echo "✅ Production services configuration created"
# Step 5: Production Security Setup
echo -e "${CYAN}🔒 Step 5: Production Security${NC}"
echo "=========================="
# Create SSL certificates directory
mkdir -p /opt/aitbc/production/config/certs
# Generate self-signed certificates for production
cd /opt/aitbc/production/config/certs
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes \
-subj "/C=US/ST=State/L=City/O=AITBC/OU=Production/CN=aitbc.local" 2>/dev/null || echo "OpenSSL not available, using existing certs"
# Create production environment file
cat > /opt/aitbc/production/.env << 'EOF'
# Production Environment Variables
NODE_ENV=production
DEBUG=false
LOG_LEVEL=INFO
# Database
DATABASE_URL=postgresql://aitbc:secure_password@localhost:5432/aitbc_prod
REDIS_URL=redis://localhost:6379/0
# Security
SECRET_KEY=production-secret-key-change-me-in-production
BLOCKCHAIN_API_KEY=production-api-key-change-me
JWT_SECRET=production-jwt-secret-change-me
# Blockchain
NETWORK_ID=1337
CHAIN_ID=1337
CONSENSUS=proof_of_authority
# Services
BLOCKCHAIN_RPC_PORT=8545
MARKETPLACE_PORT=8002
GPU_MARKETPLACE_PORT=8003
MONITORING_PORT=9000
# Monitoring
PROMETHEUS_PORT=9090
GRAFANA_PORT=3000
EOF
chmod 600 /opt/aitbc/production/.env
echo "✅ Production security setup completed"
echo ""
echo -e "${GREEN}🎉 PRODUCTION SETUP COMPLETED!${NC}"
echo "=================================="
echo ""
echo "✅ Production directories: /opt/aitbc/production/"
echo "✅ Database configuration: PostgreSQL + Redis"
echo "✅ Blockchain configuration: Multi-node PoA"
echo "✅ Services configuration: Production-grade"
echo "✅ Security setup: SSL + Environment variables"
echo ""
echo -e "${YELLOW}⚠️ IMPORTANT NOTES:${NC}"
echo "1. Change all default passwords and keys"
echo "2. Set up real PostgreSQL and Redis instances"
echo "3. Configure proper SSL certificates"
echo "4. Set up monitoring and alerting"
echo "5. Configure backup and disaster recovery"
echo ""
echo -e "${BLUE}🚀 Ready for production deployment!${NC}"