De "funciona en mi máquina" a producción real en minutos
# En el VPS ” instalar Docker y docker-compose curl -fsSL https://get.docker.com | sh apt install docker-compose-plugin -y # Subir tu código git clone https://github.com/tuuser/trading-bot.git cd trading-bot # Crear archivo de entorno (NUNCA al repositorio) cp .env.example .env nano .env # Editar con tus API keys # Construir y correr en background docker compose up --build -d # Ver logs en tiempo real docker compose logs -f bot # Reiniciar solo el bot (hot-reload) docker compose restart bot # Actualizar a nueva versión git pull && docker compose up --build -d
# .env.example ” ESTE sí va al repo # .env ” NUNCA al repo (.gitignore) # Exchange API Keys EXCHANGE_API_KEY=your_key_here EXCHANGE_SECRET=your_secret_here EXCHANGE_SANDBOX=true # false en prod # Base de datos DB_HOST=postgres # nombre del servicio DB_PORT=5432 DB_USER=botuser DB_PASS=CHANGE_ME_STRONG! DB_NAME=trading_bot # Telegram / Discord alertas TELEGRAM_TOKEN=bot_token_here TELEGRAM_CHAT_ID=-1001234567890 DISCORD_WEBHOOK=https://discord.com/api/... # Configuración del bot TRADE_SYMBOL=BTC/USDT RISK_PER_TRADE=0.02 # 2% del capital DRY_RUN=true # Sin trades reales
# Leer .env en Python from dotenv import load_dotenv import os load_dotenv() # Carga .env automáticamente API_KEY = os.getenv("EXCHANGE_API_KEY") SECRET = os.getenv("EXCHANGE_SECRET") if not API_KEY: raise ValueError("EXCHANGE_API_KEY no configurada") # Validación de entorno al arrancar REQUIRED_VARS = [ "EXCHANGE_API_KEY", "EXCHANGE_SECRET", "DB_HOST", "DB_PASS", "TELEGRAM_TOKEN" ] missing = [v for v in REQUIRED_VARS if not os.getenv(v)] if missing: raise EnvironmentError(f"Falta: {missing}") # .gitignore ” CRÍTICO # .env # *.key # secrets/ # __pycache__/