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
| Puerto | Protocolo | Propósito |
|---|---|---|
7800 | TCP | HTTP REST API, WebSocket, SSE, Dashboard |
1883 | TCP | Gateway MQTT v3.1.1 |
7901 | TCP | Comunicación interna P2P del cluster |
4222 | TCP | Gateway 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