Implementación del bot MagicTradeBot mediante Docker o Systemd

Esta guía explica cómo compilar y desplegar una instancia del bot de MagicTradeBot utilizando dos métodos compatibles: Docker para entornos contenerizados y Systemd para la gestión tradicional de servicios en Linux.


🛠️ 1. Compilar la instancia del bot (Golang)

El núcleo del bot de MagicTradeBot está escrito en Go y puede compilarse para diferentes entornos.

🔧 Compilar para uso local (Systemd)

go build -o magictradebot main.go

Esto generará un ejecutable llamado magictradebot en el directorio actual.

🐳 Compilar y construir para Docker

Crea un Dockerfile en la raíz del proyecto:

# Dockerfile
FROM golang:1.22-alpine AS builder

WORKDIR /app
COPY . .

RUN go build -o magictradebot main.go

# Imagen final
FROM alpine:latest

WORKDIR /app
COPY --from=builder /app/magictradebot .
COPY config.yaml .

CMD ["./magictradebot"]

Luego construye la imagen:

docker build -t magictradebot-bot-instance .

🐳 2. Desplegar la instancia del bot usando Docker

Paso 1: Preparar configuración

Asegúrate de que el archivo config.yaml esté en el mismo directorio o montado durante la ejecución.

Paso 2: Ejecutar el contenedor

docker run -d \
  --name=bot-bybit-01 \
  -v $(pwd)/config.yaml:/app/config.yaml \
  --restart=always \
  magictradebot-bot-instance

Usa docker logs -f bot-bybit-01 para ver los registros en tiempo real.

Opcional: Docker Compose

version: '3.9'

services:
  tradingbot:
    image: magictradebot-bot-instance
    container_name: bot-bybit-01
    restart: always
    volumes:
      - ./config.yaml:/app/config.yaml

🧩 3. Desplegar la instancia del bot usando Systemd

Paso 1: Mover el ejecutable

sudo mv magictradebot /usr/local/bin/
sudo chmod +x /usr/local/bin/magictradebot

Paso 2: Crear archivo de unidad Systemd

sudo nano /etc/systemd/system/magictradebot.service
[Unit]
Description=Instancia de MagicTradeBot
After=network.target

[Service]
ExecStart=/usr/local/bin/magictradebot
WorkingDirectory=/opt/magictradebot
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
User=ubuntu

[Install]
WantedBy=multi-user.target

Paso 3: Habilitar e iniciar el servicio

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable magictradebot
sudo systemctl start magictradebot

Ver registros

journalctl -u magictradebot -f

✅ Recomendaciones

  • 📁 Mantén un archivo config.yaml separado por cada instancia del bot para facilitar la escalabilidad
  • 🔐 Usa HTTPS para la API y gestiona los secretos de forma segura mediante variables de entorno
  • 📦 Da preferencia a Docker por su aislamiento y portabilidad
  • 🛡️ Supervisa la actividad del bot mediante herramientas de registro integradas (LogDNA, Grafana Loki, etc.)

📎 Related Topics