Install Mosquitto MQTT borker using docker & docker-compose

Mqtt Protocol - Install Mqtt Container - dockeril.net

Eclipse Mosquitto הוא Mqtt Broker בקוד פתוח המיישם את פרוטוקולי MQTT גרסאות 5.0, 3.1.1 ו- 3.1. . Mosquitto היא מערכת קלת משקל ועל כן ניתן להתקנה על מגוון מכשירים, החל ממחשבי לוח יחיד כמו Raspberry pi ועד לשרתים.

פרוטוקול MQTT מספק שיטה קלה לביצוע העברת הודעות באמצעות מודל פרסום/רישום נושאים. מתאים במיוחד לרכיבי IOT אשר צריכים להעביר מידע בצורה יעילה ומהירה בינם לבין עצמם או כל מערכת אחרת שאמורה לקבל את המידע (כמו למשל תקשורת בין חישנים לבית חכם).

במדריך זה אתמקד בהתקנה של MQTT באמצעות docker-compose, אך לפני שנתחיל יש לוודא כי התקנתם docker + docker-compose על פי המדריך הבא. (ניתן להתקין גם ישירות על לינוקס על פי המדריך הבא).

שלב א – התקנת הקונטיינר

על מנת להתקין את הקונטיינר, ערכו את קובץ ה docker-compose.yaml שלכם עלי ידי הפקודה הבאה:

nano docker-compose.yaml

והדביקו פנימה את הטקסט הבא:

version: "3.7"

services:


  mosquitto:
    image: eclipse-mosquitto
    hostname: mosquitto
    container_name: mosquitto
    restart: unless-stopped
    ports:
      - "1883:1883"
      - "9001:9001"
    volumes:
      - ./mosquitto:/etc/mosquitto
      - ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf

שלב ב – הגדרות אבטחה

כברירת מחדל, שרת ה Mosquitto מגיע ללא אבטחה, מה שאומר שכל אחד יכול להתחבר לשרת, להרשם ולפרסם נושאים. על מנת לאבטח אותו לשימוש באמצעות שם משתמש וסיסמה עקבו אחר ההוראות הבאות:

אם תשימו לב, בקובץ ה yaml יש שתי שורות תחת volumes:

      - ./mosquitto:/etc/mosquitto
      - ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf

הראשונה, תפקידה למפות את התיקיה בה יושבים קבצי ההגדרות של ה Mosquitto למקום בו נוכל לערוך את הקבצים.

השניה, מיפוי של קובץ ההגדרות מתוך הקונטיינר ל HOST למקום בו נוכל לערוך ולשנות את ההגדרות.

כעת, צרו את התיקיה אליה תמפו את ה Volume על פי הפקודה הבאה:

mkdir ./mosquitto

וודאו לשנות את השורות בהתאם למקום בו יצרתם את התיקיה.

כעת, צרו את קובץ ה mosquitto.conf על ידי הפקודה הבאה:

nano ./mosquitto/mosquitto.conf

והדביקו פנימה את הטקסט הבא:

allow_anonymous false
password_file /etc/mosquitto/passwd

כאשר:

  • allow_anonymous fals – מציין כי לא תתאפשר התחברות אנונימית ללא משתמש וסיסמה.
  • password_file /etc/mosquitto/passwd – מציין את מיקום קובץ הסיסמאות שישמשו להתחברות.

כעת, ערכו את קובץ הסיסמאות על ידי הפקודה הבאה:

nano ./mosquitto/passwd

וכתבו פנימה את שם המשתמש והסיסמה בהם תרצו להשתמש במבנה הבא:

username:pass

ושמרו אותו.

כעת נבצע התקנה של הקונטיינר באמצעות הפקודה הבאה:

sudo docker-compose up -d

ואם ביצעתם הכל כראוי תוכלו לראות שהקונטיינר רץ:

Mosquitto Container - Portainer View - dockeril.net

רגע, עדיין לא סיימנו.
נכון שהגדרנו סיסמה אך היא עדיין איננה תקפה ויש צורך להצע הצפנה של הסיסמה בפורמט ש Mosquitto יוכל להשתמש בה.
לצורך כך, הריצו את הפקודה הבאה:

docker exec mosquitto mosquitto_passwd -U /etc/mosquitto/passwd

ותוכלו לראות כי הסיסמה הוצפנה:

yossi:$6$gFAhK1B8Aq8R9AJ5$8XkKSrzxYN8fRAC4gw1uMcSZNateml5UvwBtD/8yDGsY4V3oonEl6Dxbywz33r2R0ZXx4S0/LMlvDCBFnBSw2Q==

במידה ותרצו להוסיף משתמשים למערכת יש לכתוב את הפקודה הבאה:

docker exec mosquitto mosquitto_passwd -b /etc/mosquitto/passwd user password

זכרו! לאחר כל החלפת / הוספת משתמש יש לאתחל את הקונטיינר על מנת שההגדרות יכנסו לתוקף.

בהצלחה!

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*