Saltar al contenido principal

Instalación

TinyMQ se distribuye como un único binario estático y una imagen Docker ultraminimal (~13 MB). No hay archivos de configuración, ni runtimes que instalar, ni arranque de entorno requerido.


Opción 1: Docker (Recomendado)

Desde GitHub Container Registry (GHCR)

docker pull ghcr.io/x-name15/tinymq:latest

docker run -d \
--name tinymq \
-p 7800:7800 \
-p 1883:1883 \
-v $(pwd)/data:/home/tinymq/data \
ghcr.io/x-name15/tinymq:latest
Permisos de Montaje de Volumen

TinyMQ corre como un usuario sin privilegios (UID 10001). Si estás montando un directorio local en lugar de un volumen Docker, asegúrate de que el directorio tenga la propiedad correcta: sudo chown -R 10001:10001 $(pwd)/data

Para configuraciones Docker más avanzadas (TLS, redes), consulta la Guía de Despliegue con Docker.


Opción 2: Docker Compose

Para entornos homelab o similares a producción, docker-compose es la configuración recomendada. Esta configuración incluye un healthcheck.

Crea un archivo docker-compose.yml:

services:
tinymq:
image: ghcr.io/x-name15/tinymq:latest
container_name: tinymq
restart: unless-stopped
ports:
- "7800:7800" # HTTP/WS
- "1883:1883" # MQTT
volumes:
- tinymq_data:/home/tinymq/data
environment:
- PORT=7800
- TINYMQ_MAX_MESSAGES=100000
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://127.0.0.1:7800/healthz || exit 1"]
interval: 10s
timeout: 5s
retries: 3

volumes:
tinymq_data:

Inicia el stack:

docker compose up -d

📦 Descargas (Servidor Broker + Bundle CLI)

Sistema OperativoArchivo de Descarga
Windows (x64)tinymq-Checking version...-windows-amd64.zip
Linux (x64)tinymq-Checking version...-linux-amd64.tar.gz
Linux (ARM64)tinymq-Checking version...-linux-arm64.tar.gz
macOS (Intel)tinymq-Checking version...-darwin-amd64.tar.gz
macOS (Apple Silicon)tinymq-Checking version...-darwin-arm64.tar.gz

Imágenes Docker (multi-arch: amd64 + arm64):

  • GHCR: docker pull ghcr.io/x-name15/tinymq:Checking version...
  • Docker Hub: docker pull flez71/tinymq:Checking version...

Opción 4: Compilar desde el Código Fuente

Requiere Go 1.25+.

git clone https://github.com/x-name15/tinymq.git
cd tinymq

# Compilar el broker
make build

# Ejecutar
./bin/tinymq

Configuración mediante Variables de Entorno

TinyMQ se configura íntegramente mediante variables de entorno.

Core del Broker

VariableValor por defectoDescripción
PORT7800Puerto de escucha HTTP
TINYMQ_FSYNCfalseFuerza la sincronización en disco tras cada escritura (ralentiza las escrituras pero garantiza la durabilidad)
TINYMQ_COMPACT_INTERVAL10mIntervalo de compactación WAL en segundo plano
TINYMQ_DEFAULT_POLICYrejectPolítica de desbordamiento de queue (reject o drop-oldest)
TINYMQ_MAX_MESSAGES100000Máximo de mensajes por topic mantenidos en RAM
TINYMQ_MAX_TOPICS10000Máximo de topics únicos (protección DoS)
TINYMQ_API_KEY(vacío)Token Bearer global para autenticación API
TINYMQ_RATE_LIMIT0Límite de peticiones por segundo por IP (0 = desactivado)
TINYMQ_TRUST_PROXY_HEADERSfalseConfiar en X-Real-IP o X-Forwarded-For de reverse proxies para el rate limiting
TINYMQ_TLS_CERT(vacío)Ruta al certificado TLS para HTTPS nativo
TINYMQ_TLS_KEY(vacío)Ruta a la clave privada TLS

Transportes

VariableValor por defectoDescripción
TINYMQ_MQTT_PORT1883Puerto TCP para el gateway MQTT v3.1.1
TINYMQ_MQTT_DISABLEfalseEstablece a true para deshabilitar MQTT completamente
TINYMQ_NATS_PORT(vacío)Puerto TCP para el NATS Gateway (p. ej., 4222)

Clustering

VariableValor por defectoDescripción
TINYMQ_CLUSTER_ADDR(vacío)Dirección TCP de bind para clustering (p. ej., 0.0.0.0:7901)
TINYMQ_CLUSTER_SELF(vacío)Identidad anunciada a los peers (obligatorio en Kubernetes)
TINYMQ_CLUSTER_NODES(vacío)Lista de direcciones de peers separadas por comas
TINYMQ_CLUSTER_SECRET(vacío)Secreto HMAC-SHA256 para asegurar el tráfico del cluster
TINYMQ_CLUSTER_HTTP_ADVERTISE(vacío)La dirección HTTP que usan los followers para hacer proxy al leader
TINYMQ_CLUSTER_REPLICATE_TIMEOUT500msUsa 2s o 3s en Kubernetes por la latencia DNS
TINYMQ_CLUSTER_LEADERfalseFuerza el liderazgo estático (desactiva las elecciones automáticas)
TINYMQ_CLUSTER_ALLOW_INSECUREfalsePara pruebas, omite el requisito de secreto HMAC si está vacío

Configuración CLI

VariableValor por defectoDescripción
TINYMQ_URLhttp://127.0.0.1:7800URL del broker de destino usada automáticamente por la CLI tmq

Verificar la Instalación

Comprueba las estadísticas del broker:

curl http://localhost:7800/api/stats

Accede al dashboard: http://localhost:7800/dashboard


¿Qué Sigue?