Revolutionary Smart Home System - 100% Containerized
IoT2MQTT is a revolutionary smart home integration system that runs entirely in Docker containers. Zero host dependencies - just Docker. The system uses Docker-in-Docker architecture where the main web container orchestrates all connector containers.
- π³ 100% Containerized - No Python, Node.js or any dependencies on host
- π One Command Launch - Just run
./scripts/run.shand you're done - π¨ Beautiful Web Interface - Premium SaaS-level UI at
http://localhost:8765 - β‘ Minimal Latency - Direct MQTT connection without intermediate layers
- π Multi-language - English, Russian, and Chinese support
- π± PWA Support - Install as mobile app
IoT2MQTT uses a two-branch development model:
main- Stable releases. Recommended for production use. Tagged releases available.develop- Active development. Latest features but unstable. API may change at any time. Use only for testing!
Current release: v0.1.0 (Pre-release)
Traditional smart home systems require complex installations with multiple dependencies on your host system. IoT2MQTT changes this:
Before (Traditional Systems):
- Install Python, Node.js, and dozens of packages
- Manage virtual environments
- Deal with version conflicts
- Complex update procedures
- System-specific issues
Now (IoT2MQTT):
- Install Docker (once)
- Run
./scripts/run.sh - Everything works
- Updates are seamless
- Works identically on any system
Stable Version (Recommended):
Runs a beautiful CLI with a live progress bar and snake miniβgame while installing everything (Docker, Compose, app, and services). When done, it prints your LAN URL.
curl -fsSL https://raw.githubusercontent.com/eduard256/IoT2mqtt/main/install.sh | bashDevelopment Version (Latest Features, Unstable):
curl -fsSL https://raw.githubusercontent.com/eduard256/IoT2mqtt/develop/install-dev.sh | bashNotes:
- Run as root or with passwordless sudo for a fully nonβinteractive setup.
- The installer supports most Linux distros (Debian/Ubuntu, RHEL/CentOS/Fedora, openSUSE, Arch, Alpine). It uses Docker's convenience script or native packages.
- On completion, you'll see the URL like
http://<your_lan_ip>:8765.
Install IoT2MQTT in a Proxmox LXC container with a beautiful interactive installer:
bash <(curl -fsSL https://raw.githubusercontent.com/eduard256/IoT2mqtt/main/install_proxmox.sh)Features:
- π¨ Beautiful CLI with interactive navigation menu
- π Automatic mode: zero configuration needed
- βοΈ Advanced mode: full control over all parameters
- β Supports Proxmox VE 7.x, 8.x, and 9.x
- π³ Pre-configured for Docker (nested containers enabled)
The installer will:
- Show interactive menu to choose installation mode
- Auto-detect free container ID (or let you choose)
- Download Ubuntu 22.04 LXC template if needed
- Create unprivileged container with Docker support
- Run IoT2MQTT installation inside
- Display the access URL when complete
Default configuration (Automatic mode):
- Ubuntu 22.04 LXC (unprivileged)
- 10GB disk, 4GB RAM
- All available CPU cores (auto-detected)
- DHCP networking (auto-configured)
- Docker-ready (nesting enabled)
Advanced mode allows you to customize:
- Container ID
- Network configuration (DHCP or static IP)
- Storage selection
- Disk size, RAM, and CPU allocation
- Privileged/unprivileged mode
Only Docker and Docker Compose are required. Nothing else.
# Check if Docker is installed
docker --version
docker compose version- Clone the repository
git clone https://github.com/eduard256/IoT2mqtt.git
cd IoT2mqtt- Run the system
./scripts/run.shThat's it! The script will:
- Check Docker installation
- Build all containers
- Start the web interface
- Show you the URL to access
- Open Web Interface
Navigate to http://localhost:8765 in your browser.
Or, if you used the oneβliner installer above, open the LAN URL it prints (for example, http://192.168.1.50:8765).
- Create Access Key - Your password for the web interface
- Configure MQTT - Connect to your MQTT broker
- Add Integrations - Start adding IoT devices through the web UI
Your Host System
βββ Docker Engine
βββ iot2mqtt_web (Main Container)
βββ Web Interface (React + FastAPI)
βββ Docker Socket Mounted (/var/run/docker.sock)
βββ Container Manager
βββ Creates connector containers
βββ Manages lifecycle
βββ Collects logs
βββ Monitors health
βββ iot2mqtt_connector_1
βββ iot2mqtt_connector_2
βββ ... (one container per instance)
- Main Web Container runs the web interface and API
- Docker Socket is mounted to allow container management
- Connector Containers are created dynamically for each integration
- MQTT Communication happens directly from each container
Every integration describes its onboarding wizard in
connectors/<name>/setup.json. The backend validates this schema and the
frontend renders it dynamically (forms, tool execution, OAuth, summaries, etc.).
Documentation for the full schema lives in
docs/setup-flows.md.
Key benefits:
- No custom UI code per connector β add new steps by editing
setup.json. - Tool scripts run in isolation via the test-runner container
(
connectors/<name>/actions/). - OAuth, discovery, and manual flows share the same infrastructure.
- Instance files are stored under
instances/<connector>/<id>.json, while secrets are encrypted automatically.
IOT2MQTT_PATHβ overrides the project root auto-detected by backend services.IOT2MQTT_SECRETS_PATHβ custom directory for encrypted secrets and the master key (.master.key). Useful for running tests or deploying in environments with restricted filesystem access.
- Shared Network allows inter-container communication
- Dashboard - Overview of all devices and their status
- Integrations - Add and manage IoT connectors
- Devices - Control and monitor all devices
- MQTT Explorer - Browse and debug MQTT topics
- Container Management - Start/stop/restart containers
- Logs Viewer - Real-time colored logs from all containers
- Settings - Configure MQTT, access keys, and more
Current connectors:
- Yeelight - Smart bulbs and LED strips
- Xiaomi - Mi Home devices (coming soon)
- Tuya - Smart Life devices (coming soon)
- ESPHome - DIY ESP devices (coming soon)
Each connector:
- Runs in isolated container
- Has zero dependencies on host
- Can be updated independently
- Supports multiple instances
The system uses a .env file (created automatically):
# Web Interface
WEB_PORT=8765 # Change web interface port
# MQTT Settings (configured via web UI)
MQTT_HOST=localhost
MQTT_PORT=1883
MQTT_USERNAME=
MQTT_PASSWORD=
MQTT_BASE_TOPIC=IoT2mqtt
# System
LOG_LEVEL=INFO
TZ=UTCTo use a different port:
WEB_PORT=9000 ./scripts/run.sh# View logs
docker compose logs -f
# Stop system
docker compose down
# Restart system
docker compose restart
# Update system
git pull && ./scripts/run.sh
# Remove everything (including data)
docker compose down -vAll container management should be done through the web interface. The web container has full Docker access and can:
- Create new containers for connectors
- Start/stop containers
- View real-time logs
- Monitor resource usage
- Auto-restart failed containers
The web container has access to Docker socket (/var/run/docker.sock). This is required for container management but grants significant privileges.
Security measures:
- Web interface requires authentication
- Access keys are bcrypt hashed
- JWT tokens for sessions
- Containers are isolated in network
- Read-only mounts where possible
- Use strong access key for web interface
- Secure your MQTT broker with authentication
- Run on trusted network or use VPN
- Keep Docker updated for security patches
- Regular backups of configuration
- Web interface β Integrations β Add Custom
- Implement connector logic
- Container is built automatically
- No host system changes needed
IoT2mqtt/
βββ scripts/ # Utility scripts
β βββ run.sh # One-command launcher
β βββ install.sh # Installation script
β βββ ...
βββ tests/ # Test files
βββ docs/ # Documentation
β βββ features/ # Feature documentation
β βββ archived/ # Archived docs
βββ docker-compose.yml # Main orchestration
βββ web/ # Web interface container
β βββ frontend/ # React UI
β βββ backend/ # FastAPI backend
β βββ Dockerfile
βββ connectors/ # Connector definitions
β βββ {name}/
β βββ connector.py
β βββ requirements.txt
β βββ Dockerfile
βββ shared/ # Shared libraries
The web interface provides comprehensive monitoring:
- Container status and health
- Real-time logs with color coding
- MQTT message flow
- Device state changes
- Error tracking
- Performance metrics
# Check if container is running
docker ps | grep iot2mqtt_web
# Check logs
docker compose logs web
# Check port availability
lsof -i :8765- Check Docker daemon is running
- Ensure sufficient disk space
- Verify Docker socket permissions
- Check web container logs
- Verify broker is running
- Check firewall rules
- Confirm credentials in web UI
- Test with MQTT client
We welcome contributions! Since everything runs in containers:
- No need to set up development environment
- Changes are tested in isolated containers
- Easy to test without affecting host system
- Fork the repository
- Create feature branch
- Make changes
- Test with
./scripts/run.sh - Submit pull request
MIT License - see LICENSE file
- Docker team for amazing container technology
- MQTT protocol developers
- All IoT device manufacturers
- Open source community
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki
- Runtime paths & storage: docs/runtime-storage.md
- Backend services: docs/backend-services.md
- REST API reference: docs/api-reference.md
- Connector guide: docs/connectors.md
Made with β€οΈ for the Smart Home Community
No more dependency hell. Just Docker and go!