{"id":49586158,"url":"https://github.com/ariffinzulkifli/iot-middleware","last_synced_at":"2026-05-03T22:35:35.574Z","repository":{"id":200685620,"uuid":"706097337","full_name":"ariffinzulkifli/iot-middleware","owner":"ariffinzulkifli","description":"This repository host a middleware solution designed for Internet of Things (IoT) applications using Docker.","archived":false,"fork":false,"pushed_at":"2026-02-09T09:48:30.000Z","size":2243,"stargazers_count":1,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-09T11:36:45.223Z","etag":null,"topics":["adminer","docker","esp32","grafana","hibiscus-sense","influxdb","iot","iot-application","mosquitto","mqtt","mysql","node-red"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ariffinzulkifli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-17T09:49:21.000Z","updated_at":"2026-02-09T09:48:34.000Z","dependencies_parsed_at":"2025-07-13T01:00:40.163Z","dependency_job_id":null,"html_url":"https://github.com/ariffinzulkifli/iot-middleware","commit_stats":null,"previous_names":["ariffinzulkifli/iot-middleware"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ariffinzulkifli/iot-middleware","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ariffinzulkifli%2Fiot-middleware","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ariffinzulkifli%2Fiot-middleware/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ariffinzulkifli%2Fiot-middleware/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ariffinzulkifli%2Fiot-middleware/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ariffinzulkifli","download_url":"https://codeload.github.com/ariffinzulkifli/iot-middleware/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ariffinzulkifli%2Fiot-middleware/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32587821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adminer","docker","esp32","grafana","hibiscus-sense","influxdb","iot","iot-application","mosquitto","mqtt","mysql","node-red"],"created_at":"2026-05-03T22:35:30.722Z","updated_at":"2026-05-03T22:35:35.555Z","avatar_url":"https://github.com/ariffinzulkifli.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n   __  ___        __     _         \n  /  |/  /_ _____/ /_ __(_)__  ___ \n / /|_/ / // / _  / // / / _ \\/ _ \\\n/_/  /_/\\_, /\\_,_/\\_,_/_/_//_/\\___/\n       /___/                       \nai.iot.education.solutions.marketplace ==================================================\n\nTs. Mohamad Ariffin Zulkifli\nariffin@myduino.com\n```\n\n# Docker IoT Middleware\n\nThis repository contains a skeleton to setup a remote server to become a powerful IoT middleware using [Docker Compose](https://docs.docker.com/compose/). It is built around the **MING** stack, a popular combination of open-source applications for IoT inspired by the [LAMP](https://en.wikipedia.org/wiki/LAMP_(software_bundle)) stack. The MING stack was first introduced in 2019 by [Alex Lennon](https://blog.balena.io/ming-stack-mqtt-influxdb-nodered-grafana-balena/), a balena Ambassador, as a reusable template for IoT projects. It is now widely adopted in [Industrial IoT (IIoT)](https://www.iiot-world.com/industrial-iot/connected-industry/the-ming-stack-what-it-is-and-how-it-works/) applications as well, including integration with [Siemens S7 PLCs](https://flowfuse.com/blog/2025/01/integrating-siemens-s7-plcs-with-node-red-guide/):\n\n- **M** (MQTT) [Mosquitto](https://mosquitto.org/) for MQTT protocols\n- **I** (InfluxDB) [InfluxDB](https://www.influxdata.com/) for time series database\n- **N** (Node-RED) [Node-RED](https://nodered.org/) for Javascript low-code flow-based programming\n- **G** (Grafana) [Grafana](https://grafana.com/) for interactive dashboard\n\nAdditionally, the stack includes:\n- [MySQL](https://www.mysql.com/) for SQL database\n- [Adminer](https://www.adminer.org/) for SQL database management system\n\nIn Docker, each application above is containerized into a single image and is readily available in [Docker Hub](https://hub.docker.com/). For example, everything you need to host Node-RED in a server including NodeJS and other libraries or dependencies is containerized as [nodered/node-red](https://hub.docker.com/r/nodered/node-red) image.\n\nDocker Compose allows you to define your entire application stack in a single, easy-to-read configuration file called `docker-compose.yml`. In this file, you specify which containers should run, how they should be configured, and how they should connect to each other.\n\nThis repository contains the `docker-compose.yml` with definition of the stack of applications stated above so you can easily setup an IoT middleware.\n\n**Disclaimer:** Please use this `docker-compose.yml` file as a starting point for training and testing\nbut keep in mind that for production usage it might need modifications, especially on security.\n\n## Directory layout\n\n* `docker-compose.yml`: the docker-compose file containing the services\n* `configuration/mosquitto`: directory containing the Mosquitto (MQTT broker) configuration\n* `configuration/nodered`: directory containing the Node-RED configuration\n\n## Installation\n\n**Prerequisites:** [Git](https://git-scm.com/) must be installed on your system.\n\nChoose the installation guide that matches your platform:\n\n- [Option 1: PC or Mac (Docker Desktop)](#option-1-pc-or-mac-docker-desktop)\n- [Option 2: Raspberry Pi (Terminal)](#option-2-raspberry-pi-terminal)\n- [Option 3: VPS Cloud Server (GBCloud)](#option-3-vps-cloud-server-gbcloud)\n\n### Option 1: PC or Mac (Docker Desktop)\n\n1. Download and install [Docker Desktop](https://www.docker.com/products/docker-desktop/) for your operating system (Windows or Mac).\n\n2. Make sure Docker Desktop is running.\n\n3. Open Terminal (Mac) or PowerShell (Windows) and clone this repository.\n```bash\ngit clone https://github.com/ariffinzulkifli/iot-middleware.git\n```\n\n4. Change your working directory to the cloned repository directory.\n```bash\ncd iot-middleware\n```\n\n5. Launch the Docker Compose services in detached mode.\n```bash\ndocker compose up -d\n```\nWait until all containers is successfully `Created` like below.\n\n```\n[+] up 84/84\n ✔ Image eclipse-mosquitto:latest       Pulled                                                13.3s\n ✔ Image adminer:latest                 Pulled                                                25.5s\n ✔ Image nodered/node-red:latest        Pulled                                                45.0s\n ✔ Image influxdb:latest                Pulled                                                34.4s\n ✔ Image grafana/grafana:latest         Pulled                                                47.9s\n ✔ Image mysql:latest                   Pulled                                                50.3s\n ✔ Network iot-middleware_iotstack      Created                                                0.0s\n ✔ Container iot-middleware-grafana-1   Created                                                0.5s\n ✔ Container iot-middleware-adminer-1   Created                                                0.5s\n ✔ Container iot-middleware-influxdb-1  Created                                                0.5s\n ✔ Container iot-middleware-mosquitto-1 Created                                                0.5s\n ✔ Container iot-middleware-mysql-1     Created                                                0.5s\n ✔ Container iot-middleware-nodered-1   Created                                                0.5s\n```\n\n6. Verify the containers are running in Docker Desktop.\n\n![Docker Desktop](images/docker-desktop.png)\n\n7. Access the services by clicking on the port link in Docker Desktop or open your browser and navigate to the service URL.\n\n7.1 Node-RED http://localhost:1880 (username: `admin`, password: `password`)\n\n![Docker Desktop Node-RED](images/docker-desktop-nodered.png)\n\n7.2 InfluxDB http://localhost:8086 (username: `admin`, password: `password`)\n\n![Docker Desktop InfluxDB](images/docker-desktop-influxdb.png)\n\n7.3 Grafana http://localhost:3000 (username: `admin`, password: `password`)\n\n![Docker Desktop Grafana](images/docker-desktop-grafana.png)\n\n7.4 Adminer http://localhost:8060 (username: `root`, password: `password`)\n\n![Docker Desktop Adminer](images/docker-desktop-adminer.png)\n\nYou can also verify the containers using command like below:\n```bash\ndocker compose ps\n```\n\n```\nNAME                         IMAGE                      COMMAND                  SERVICE     CREATED          STATUS                    PORTS\niot-middleware-adminer-1     adminer:latest             \"entrypoint.sh docke…\"   adminer     16 seconds ago   Up 15 seconds             0.0.0.0:8060-\u003e8080/tcp\niot-middleware-grafana-1     grafana/grafana:latest     \"/run.sh\"                grafana     16 seconds ago   Up 15 seconds             0.0.0.0:3000-\u003e3000/tcp\niot-middleware-influxdb-1    influxdb:latest            \"/entrypoint.sh infl…\"   influxdb    16 seconds ago   Up 15 seconds (healthy)   0.0.0.0:8086-\u003e8086/tcp\niot-middleware-mosquitto-1   eclipse-mosquitto:latest   \"/docker-entrypoint.…\"   mosquitto   16 seconds ago   Up 15 seconds             0.0.0.0:1883-\u003e1883/tcp, 0.0.0.0:9001-\u003e9001/tcp\niot-middleware-mysql-1       mysql:latest               \"docker-entrypoint.s…\"   mysql       16 seconds ago   Up 15 seconds             0.0.0.0:3306-\u003e3306/tcp\niot-middleware-nodered-1     nodered/node-red:latest    \"./entrypoint.sh\"        nodered     16 seconds ago   Up 15 seconds (healthy)   0.0.0.0:1880-\u003e1880/tcp\n```\n\n```bash\ndocker compose logs\n```\n\n### Option 2: Raspberry Pi (Terminal)\n\nHere is the guide to install Docker on a 64-bit version of Debian Bullseye, Bookworm or Trixie running on your Raspberry Pi. If you are unsure, you can check the architecture using the `dpkg --print-architecture` command.\n\n1. Update the package list and install the required dependencies:\n```bash\nsudo apt update\nsudo apt install ca-certificates curl\n```\n\n2. Add Docker's official GPG key:\n```bash\nsudo install -m 0755 -d /etc/apt/keyrings\nsudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc\nsudo chmod a+r /etc/apt/keyrings/docker.asc\n```\n\n3. Add the Docker repository to your package sources:\n```bash\nsudo tee /etc/apt/sources.list.d/docker.sources \u003c\u003cEOF\nTypes: deb\nURIs: https://download.docker.com/linux/debian\nSuites: $(. /etc/os-release \u0026\u0026 echo \"$VERSION_CODENAME\")\nComponents: stable\nSigned-By: /etc/apt/keyrings/docker.asc\nEOF\n```\n\n4. Update the package list and install Docker:\n```bash\nsudo apt update\nsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y\n```\n\n5. Clone this repository.\n```bash\ngit clone https://github.com/ariffinzulkifli/iot-middleware.git\n```\n\n6. Change your working directory to the cloned repository directory.\n```bash\ncd ~/iot-middleware\n```\n\n7. Launch the Docker Compose services in detached mode.\n```bash\nsudo docker compose up -d\n```\nWait until all containers is successfully `Created` like below.\n\n```\n[+] up 85/85\n ✔ Image eclipse-mosquitto:latest       Pulled                                                37.7s\n ✔ Image nodered/node-red:latest        Pulled                                                114.9s\n ✔ Image mysql:latest                   Pulled                                                120.5s\n ✔ Image influxdb:latest                Pulled                                                67.8s\n ✔ Image grafana/grafana:latest         Pulled                                                104.1s\n ✔ Image adminer:latest                 Pulled                                                70.4s\n ✔ Network iot-middleware_iotstack      Created                                                0.3s\n ✔ Container iot-middleware-mysql-1     Created                                                4.1s\n ✔ Container iot-middleware-influxdb-1  Created                                                4.1s\n ✔ Container iot-middleware-adminer-1   Created                                                4.3s\n ✔ Container iot-middleware-grafana-1   Created                                                4.3s\n ✔ Container iot-middleware-nodered-1   Created                                                4.3s\n ✔ Container iot-middleware-mosquitto-1 Created                                                4.3s\n```\n\n8. Verify that the Docker Compose containers are running.\n```bash\nsudo docker compose ps\n```\n\n```\nNAME                         IMAGE                      COMMAND                  SERVICE     CREATED         STATUS                   PORTS\niot-middleware-adminer-1     adminer:latest             \"entrypoint.sh docke…\"   adminer     9 minutes ago   Up 9 minutes             0.0.0.0:8060-\u003e8080/tcp\niot-middleware-grafana-1     grafana/grafana:latest     \"/run.sh\"                grafana     9 minutes ago   Up 9 minutes             0.0.0.0:3000-\u003e3000/tcp\niot-middleware-influxdb-1    influxdb:latest            \"/entrypoint.sh infl…\"   influxdb    9 minutes ago   Up 9 minutes (healthy)   0.0.0.0:8086-\u003e8086/tcp\niot-middleware-mosquitto-1   eclipse-mosquitto:latest   \"/docker-entrypoint.…\"   mosquitto   9 minutes ago   Up 9 minutes             0.0.0.0:1883-\u003e1883/tcp, 0.0.0.0:9001-\u003e9001/tcp\niot-middleware-mysql-1       mysql:latest               \"docker-entrypoint.s…\"   mysql       9 minutes ago   Up 9 minutes             0.0.0.0:3306-\u003e3306/tcp\niot-middleware-nodered-1     nodered/node-red:latest    \"./entrypoint.sh\"        nodered     9 minutes ago   Up 9 minutes (healthy)   0.0.0.0:1880-\u003e1880/tcp\n```\n\n9. Access the services from your Raspberry Pi using `localhost`, hostname or IP address from other devices on the same network.\n\n9.1 Node-RED http://`ip-address`:1880 (username: `admin`, password: `password`)\n\n![Docker Pi Node-RED](images/docker-pi-nodered.png)\n\n9.2 InfluxDB http://`ip-address`:8086 (username: `admin`, password: `password`)\n\n![Docker Pi InfluxDB](images/docker-pi-influxdb.png)\n\n9.3 Grafana http://`ip-address`:3000 (username: `admin`, password: `password`)\n\n![Docker Pi Grafana](images/docker-pi-grafana.png)\n\n9.4 Adminer http://`ip-address`:8060 (username: `root`, password: `password`)\n\n![Docker Pi Adminer](images/docker-pi-adminer.png)\n\n### Option 3: VPS Cloud Server (GBCloud)\n\n#### Create Account on GBCloud\n\n1. Click the `Create account` link on [GBCloud](https://billing.gbcloud.net/aff.php?aff=87) login page.\n2. Fill in your `Personal Information`, `Billing Address`, `Additional Information` and `Account Security`.\n3. Check the `I have read and agree to the Terms of Service`. and click the `Register` button.\n\n#### Remote SSH Ubuntu Server\n\n1. Open Terminal on your PC.\n\n**Note:** You can use any suitable software such as [PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows), [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html), [Cmder](https://github.com/cmderdev/cmder), etc.\n\n2. Use the SSH command to connect to the remote server.\n\n**Note:** change the `ip-address` with your server ip-address.\n```bash\nssh root@ip-address\n```\n**Note:** When you attempt to connect for the first time, SSH will display the authenticity message you provided. It shows the server's fingerprint, which is a unique identifier for the server's SSH key. You need to verify this fingerprint to ensure you're connecting to the correct server. Type in `yes` to continue.\n\n```bash\nThe authenticity of host 'ip-address (ip-address)' can't be established.\nED25519 key fingerprint is SHA256:oUuTnMQM2qCp7Oqip8gBpclMRBJFbL/hbQR5kbQnNOk.\nThis key is not known by any other names.\nAre you sure you want to continue connecting (yes/no/[fingerprint])?\n```\n\n3. After confirming the authenticity of the server, SSH will prompt you to enter your password to log in.\n```bash\nroot@ip-address's password:\n```\n\nIf you provided the correct credentials, you should now be logged into the remote server, and you can start using it. You'll see the Ubuntu server terminal as below.\n\n```\nWelcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-52-generic x86_64)\n\n * Documentation:  https://help.ubuntu.com\n * Management:     https://landscape.canonical.com\n * Support:        https://ubuntu.com/advantage\n\n  System information as of Tue Oct 17 19:21:02 +08 2023\n\n  System load:           0.1962890625\n  Usage of /:            3.7% of 48.27GB\n  Memory usage:          10%\n  Swap usage:            0%\n  Processes:             95\n  Users logged in:       0\n  IPv4 address for eth0: ipv4-ipaddress\n  IPv6 address for eth0: ipv6-ipaddress\n\n\n0 updates can be applied immediately.\n\n\nThe list of available updates is more than a week old.\nTo check for new updates run: sudo apt update\n\nLast login: Tue Nov  1 15:31:57 2022 from 104.208.107.150\nroot@iot-middleware:~#\n```\n\n#### Docker Installation\n\n1. Update the package list to ensure you have the latest information about available packages.\n```bash\nsudo apt update\n```\n\n2. Install the necessary packages and dependencies for Docker.\n```bash\nsudo apt install apt-transport-https ca-certificates curl software-properties-common\n```\n\n3. Add Docker's GPG key to your system.\n```bash\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg\n```\n\n4. Add the Docker repository to your system's sources list.\n```bash\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n```\n\n5. Update the package list once more to include Docker repository information.\n```bash\nsudo apt update\n```\n\n6. Check the available Docker packages and their versions.\n```bash\napt-cache policy docker-ce\n```\n\nYou'll see the output like below, although the version number for Docker may be different:\n```\ndocker-ce:\n  Installed: (none)\n  Candidate: 5:20.10.14~3-0~ubuntu-jammy\n  Version table:\n     5:20.10.14~3-0~ubuntu-jammy 500\n        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages\n     5:20.10.13~3-0~ubuntu-jammy 500\n        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages\n```\n\n7. Install Docker using the following command.\n```bash\nsudo apt install docker-ce\n```\n\n8. Check the status of the Docker service to verify that it's running.\n```bash\nsudo systemctl status docker\n```\n\nYou'll see the output like below, showing that the service is active and running:\n```\nOutput\n● docker.service - Docker Application Container Engine\n     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)\n     Active: active (running) since Fri 2022-04-01 21:30:25 UTC; 22s ago\nTriggeredBy: ● docker.socket\n       Docs: https://docs.docker.com\n   Main PID: 7854 (dockerd)\n      Tasks: 7\n     Memory: 38.3M\n        CPU: 340ms\n     CGroup: /system.slice/docker.service\n             └─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\n```\nHold `Ctrl + C` on keyboard to exit the status back to terminal prompt.\n\n#### Docker Compose Installation\n\n1. Make sure the directory where Docker Compose should be installed exists. This command creates the necessary directory if it doesn't exist.\n```bash\nmkdir -p ~/.docker/cli-plugins/\n```\n\n2. Download the Docker Compose binary to the specified directory.\n```bash\ncurl -SL https://github.com/docker/compose/releases/download/v2.38.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose\n```\n\n3. Make the downloaded Docker Compose binary executable.\n```bash\nchmod +x ~/.docker/cli-plugins/docker-compose\n```\n\n4. Check the Docker Compose version to verify that it's installed correctly.\n```bash\ndocker compose version\n```\n\nYou'll see output like below, showing that Docker Compose is successfully installed with stated version:\n```\nOutput\nDocker Compose version v2.38.2\n```\n\n#### Clone and Run\n\n1. Clone this repository into your server.\n```bash\ngit clone https://github.com/ariffinzulkifli/iot-middleware.git\n```\n\n2. Change your working directory to the cloned repository directory.\n```bash\ncd ~/iot-middleware\n```\n\n3. Launch the Docker Compose services in detached mode.\n```bash\ndocker compose up -d\n```\nWait until all containers is successfully `Started` like below.\n\n```\n[+] Running 6/6\n ✔ Container iot-middleware-nodered-1    Running            0.0s\n ✔ Container iot-middleware-mosquitto-1  Running            0.0s\n ✔ Container iot-middleware-influxdb-1   Running            0.0s\n ✔ Container iot-middleware-grafana-1    Running            0.0s\n ✔ Container iot-middleware-mysql-1      Running            0.0s\n ✔ Container iot-middleware-adminer-1    Running            0.0s\n```\n\n4. Verify that the Docker Compose containers are running.\n```bash\ndocker compose ps\n```\n\n```\nNAME                         IMAGE                      COMMAND                  SERVICE     CREATED          STATUS                    PORTS\niot-middleware-adminer-1     adminer:latest             \"entrypoint.sh docke…\"   adminer     12 minutes ago   Up 12 minutes             0.0.0.0:8060-\u003e8080/tcp\niot-middleware-grafana-1     grafana/grafana:latest     \"/run.sh\"                grafana     12 minutes ago   Up 12 minutes             0.0.0.0:3000-\u003e3000/tcp\niot-middleware-influxdb-1    influxdb:latest            \"/entrypoint.sh infl…\"   influxdb    12 minutes ago   Up 12 minutes (healthy)   0.0.0.0:8086-\u003e8086/tcp\niot-middleware-mosquitto-1   eclipse-mosquitto:latest   \"/docker-entrypoint.…\"   mosquitto   12 minutes ago   Up 12 minutes             0.0.0.0:1883-\u003e1883/tcp, 0.0.0.0:9001-\u003e9001/tcp\niot-middleware-mysql-1       mysql:latest               \"docker-entrypoint.s…\"   mysql       12 minutes ago   Up 11 minutes             0.0.0.0:3306-\u003e3306/tcp\niot-middleware-nodered-1     nodered/node-red:latest    \"./entrypoint.sh\"        nodered     12 minutes ago   Up 12 minutes (healthy)   0.0.0.0:1880-\u003e1880/tcp\n```\n\n5. View the logs of the Docker Compose containers to monitor their output and any potential issues.\n```bash\ndocker compose logs\n```\n\n### Running Specific Containers\n\n**Note:** If you would like to run a specific service only, such as `nodered`:\n```bash\ndocker compose up -d nodered\n```\n\nor several services such as `nodered`, `mysql` and `adminer`:\n```bash\ndocker compose up -d nodered mysql adminer\n```\n\nor several services such as `nodered`, `mosquitto` and `influxdb`:\n```bash\ndocker compose up -d nodered mosquitto influxdb\n```\n\n## Quick Reference\n\n**Note:** Replace `ip-address` with `localhost`, hostname or IP address.\n\n| Service | URL / Port | Username | Password |\n|---------|------------|----------|----------|\n| Mosquitto (MQTT) | `ip-address`:1883 (TCP) / `ip-address`:9001 (Websockets) | admin | password |\n| InfluxDB | http://`ip-address`:8086 | admin | password |\n| Node-RED | http://`ip-address`:1880 | admin | password |\n| Grafana | http://`ip-address`:3000 | admin | password |\n| MySQL | `ip-address`:3306 | root | password |\n| Adminer | http://`ip-address`:8060 | root | password |\n\n**InfluxDB additional configuration:**\n- Bucket name: `iot-sensors`\n- Organisation name: `my-organisation`\n- Admin token: `A8C2B071-35F6-43F8-9F51-C5F584B2366B`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fariffinzulkifli%2Fiot-middleware","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fariffinzulkifli%2Fiot-middleware","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fariffinzulkifli%2Fiot-middleware/lists"}