Saltar al contenido principal

Despliegue con Docker

TinyMQ se compila en una imagen Docker scratch ultraligera. El tamaño final de la imagen es de aproximadamente ~13 MB y contiene 0 CVEs, lo que la hace increíblemente segura y rápida de descargar.

Registros de imágenes

TinyMQ se publica automáticamente en Docker Hub y en el GitHub Container Registry (GHCR) para linux/amd64 y linux/arm64.

  • Docker Hub: flez71/tinymq:latest
  • GHCR: ghcr.io/x-name15/tinymq:latest

Inicio rápido (Docker Run)

docker run -d \
--name tinymq \
-p 7800:7800 \
-v tinymq_data:/home/tinymq/data \
ghcr.io/x-name15/tinymq:latest

Puertos expuestos

PuertoProtocoloPropósito
7800TCPHTTP REST API, WebSocket, SSE, Dashboard
1883TCPGateway MQTT v3.1.1
7901TCPComunicación interna P2P del cluster
4222TCPGateway NATS (debe habilitarse explícitamente)

Docker Compose

Para la mayoría de los despliegues en homelab y producción, se recomienda usar docker-compose.

services:
tinymq:
image: ghcr.io/x-name15/tinymq:latest
container_name: tinymq
restart: unless-stopped
ports:
- "7800:7800"
- "1883:1883"
# - "4222:4222" # NATS Gateway
# - "7901:7901" # Cluster Port
volumes:
- tinymq_data:/home/tinymq/data
environment:
- PORT=7800
- TINYMQ_MAX_MESSAGES=100000
# - TINYMQ_API_KEY=your_secret_key
# - TINYMQ_NATS_PORT=4222
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:

Permisos del volumen (UID 10001)

Por razones de seguridad, TinyMQ no se ejecuta como root. El contenedor crea y usa un usuario sin privilegios con UID 10001 y GID 10001.

Si montas un directorio del host en lugar de usar un volumen con nombre de Docker, debes asegurarte de que el directorio pertenezca al UID 10001:

mkdir -p /path/to/host/data
sudo chown -R 10001:10001 /path/to/host/data

docker run -v /path/to/host/data:/home/tinymq/data ...

Soporte TLS (HTTPS)

Puedes habilitar TLS nativo para el servidor HTTP montando tus certificados y apuntando las variables de entorno hacia ellos:

volumes:
- ./certs:/certs:ro
environment:
- TINYMQ_TLS_CERT=/certs/fullchain.pem
- TINYMQ_TLS_KEY=/certs/privkey.pem