dayron95/routeros-kvm

By dayron95

Updated 7 months ago

MikroTik CHR con KVM, disco auto-extensible y recursos dinámicos.

Image
Networking
Security
API management
1

10K+

dayron95/routeros-kvm repository overview

🚀 MikroTik RouterOS CHR (KVM Accelerated)


services:
  routeros:
    image: dayron95/routeros-kvm:latest
    container_name: mikrotik
    restart: always
    # Privilegios necesarios para networking avanzado y KVM
    cap_add:
      - NET_ADMIN
    
    # Descomenta las siguientes líneas si estás en Linux con soporte KVM 
    # para obtener el máximo rendimiento (Casi nativo)
    # devices:
    #   - /dev/kvm:/dev/kvm
    
    environment:
      # --- Configuración del Sistema ---
      - ROUTEROS_VERSION=7.20.6
      - DISK_SIZE=1G
      - ROUTEROS_RAM=512
      - ROUTEROS_CPU=2
      
      # --- Credenciales ---
      # Estas se usan para que el comando 'docker exec -it mikrotik-pro terminal' 
      # pueda entrar automáticamente por SSH interno.
      - ROUTEROS_USER=admin
      - ROUTEROS_PASSWORD=
      
      # --- Puertos Específicos ---
      - PORT_WIREGUARD=13231
      - PORT_API_SSL=8729
      
      # --- Puertos Extra Personalizados ---
      # Formato: PuertoHost:PuertoGuest:Protocolo, ...
      # Ejemplo: "1194:1194:udp, 500:500:udp, 1701:1701:tcp"
      - EXTRA_PORTS=
      
    ports:
      # Formato: "Puerto_Host : Puerto_Contenedor"
      - "22:2222"          # SSH (Mapeamos el 22 real al 2222 del contenedor)
      - "8291:8291"        # Winbox
      - "80:8080"          # Web (HTTP)
      - "443:4433"         # Web (HTTPS/SSL)
      - "8728:8728"        # API (Plain)
      - "8729:8729"        # API (SSL)
      - "13231:13231/udp"  # WireGuard
      
    volumes:
      # Persistencia de la imagen del router y discos
      - ./data:/routeros
      # Scripts de auto-configuración (.rsc)
      - ./config:/routeros/config

    # Configuración de log para no llenar el disco si hay muchos reintentos
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

🚀 Dockerized MikroTik RouterOS (CHR) with KVM Un contenedor Docker de alto rendimiento para ejecutar MikroTik RouterOS (CHR). Diseñado para ser ligero, seguro y extremadamente fácil de configurar mediante variables de entorno. ✨ Características Principales Aceleración KVM Nativa: Detecta automáticamente si /dev/kvm está disponible para ofrecer rendimiento casi nativo. Gestión Inteligente de Puertos: Mapeo dinámico de puertos mediante variables de entorno (TCP/UDP). Auto-Resize: El disco virtual se expande automáticamente al tamaño definido en DISK_SIZE. Auto-Configuración: Inyecta scripts .rsc (MikroTik Scripting) al primer arranque. Terminal Helper: Acceso directo a la consola mediante docker exec. Persistencia Completa: Almacena la imagen y configuraciones en volúmenes externos. 📋 Requisitos SO: Linux (recomendado con soporte KVM) o WSL2 en Windows. Docker & Docker Compose instalados. BIOS: Virtualización (VT-x o AMD-V) habilitada. ⚡ Inicio Rápido Clonar y Construir: code Bash git clone https://github.com/dayron95/mikrotik-docker.git cd mikrotik-docker docker-compose up -d --build Acceso Inicial: Winbox: Puerto 8291 (Host) WebFig (HTTP): Puerto 80 (Host) -> Redirigido al 8080 del contenedor. SSH: Puerto 22 (Host) -> Redirigido al 2222 del contenedor. Usuario: admin | Password: (vacío por defecto). 🛠️ Configuración (Variables de Entorno) Configura tu router desde el archivo docker-compose.yml: Variable Por Defecto Descripción ROUTEROS_VERSION 7.20.6 Versión oficial de MikroTik a descargar. ROUTEROS_RAM 512 RAM asignada (en MB). ROUTEROS_CPU 2 Cantidad de núcleos asignados. DISK_SIZE 1G Tamaño del disco (ej. 512M, 2G, 10G). ROUTEROS_USER admin Usuario para el comando terminal. ROUTEROS_PASSWORD (vacío) Contraseña para el comando terminal. 🔌 Puertos y Redirección El contenedor usa una redirección interna de QEMU. Aquí los mapeos estándar: Servicio Puerto Host Puerto Contenedor Variable de Entorno SSH 22 2222 - Winbox 8291 8291 - Web (HTTP) 80 8080 - Web (HTTPS) 443 4433 - WireGuard 13231 13231 PORT_WIREGUARD API SSL 8729 8729 PORT_API_SSL ➕ Añadir Puertos Personalizados (EXTRA_PORTS) Puedes abrir cualquier puerto adicional usando el formato Host:Guest:Protocolo: code Yaml environment:

  • EXTRA_PORTS=1194:1194:udp,500:500:udp,1701:1701:tcp No olvides añadir estos puertos también en la sección ports: de tu docker-compose. 🎮 Operaciones Comunes Acceder a la Consola (CLI) Hemos incluido un alias para entrar al router al instante sin configurar SSH externo: code Bash docker exec -it mikrotik-pro terminal Script de Auto-Arranque Si necesitas que el router se configure solo al crearse: Crea un archivo llamado autorun.rsc en la carpeta ./config. El contenedor lo detectará y lo ejecutará mediante SSH interno una vez que el sistema esté listo. Tras ejecutarse, se creará un archivo oculto .applied para no repetirlo en cada reinicio. 🚨 Solución de Problemas
  1. El contenedor va muy lento / Alto uso de CPU: Verifica que /dev/kvm existe en tu host. Asegúrate de haber descomentado la sección devices: en docker-compose.yml. Sin KVM, QEMU emula la CPU por software, lo cual es lento.
  2. No puedo acceder por Winbox: Revisa que el puerto 8291 esté expuesto en el docker-compose.yml. Si cambiaste la IP interna del router, la redirección user-mode de QEMU podría fallar (se recomienda mantener DHCP en la interfaz ether1).
  3. Error de permisos en /dev/kvm: Ejecuta sudo chmod 666 /dev/kvm en tu máquina host para dar permisos al grupo de Docker. 📄 Licencia Este proyecto es una herramienta de automatización. MikroTik RouterOS y CHR son marcas registradas de MikroTikls SIA. El uso de RouterOS está sujeto a sus propios términos de licencia. La versión CHR es gratuita pero limitada a 1Mbps de subida por interfaz a menos que se aplique una licencia (P1, P10, P-Unlimited).

Desarrollado por dayron95.

Tag summary

Content type

Image

Digest

sha256:b96b789ad

Size

165.9 MB

Last updated

7 months ago

docker pull dayron95/routeros-kvm