דלג לתוכן הראשי

מדריך פריסה

מערכת BT Management מתוכננת לפריסה מלאה באמצעות Docker Containers. כל השירותים מתוזמרים דרך docker-compose.yml.

סטאק תשתית

שירותים עיקריים

המערכת כוללת את השירותים הבאים:

  • server-nest: שרת Backend ראשי (Node.js 20, NestJS).
  • client: לוח בקרת React (מבנה סטטי מוגש דרך Nginx).
  • mongodb: מסד נתונים ראשי (MongoDB v6.0).
  • redis: מטמון ו-Pub/Sub (Redis v7.0).
  • mosquitto: Broker MQTT לתקשורת מכשירים (Eclipse Mosquitto v2.0).
  • nginx-proxy: Reverse Proxy לניהול SSL וניתוב (פורטים 80/443).
  • monitoring: סטאק Grafana + Prometheus לניטור מערכת.

דרישות מערכת

חומרה מינימלית (למערכת בינונית)

  • CPU: 4 ליבות (מומלץ 8).
  • RAM: 8GB (מומלץ 16GB).
  • Storage: 50GB (SSD מומלץ).
  • Network: חיבור אינטרנט יציב עם פס רוחב סביר.

תוכנה

  • Docker Engine: גרסה 20+ (הוראות התקנה).
  • Docker Compose: גרסה 2.0+ (בדרך כלל נכלל עם Docker Desktop).
  • Git: לשכפול הקוד.

שלבי הפריסה

1. שכפול הקוד

git clone https://github.com/bt-management/Project-BTmanegment.git
cd Project-BTmanegment

2. הגדרת משתני סביבה

העתק את קובץ הדוגמה ליצירת .env:

cp .env.example .env

ערוך את הקובץ והגדר את המשתנים הבאים:

# MongoDB
MONGO_ROOT_PASSWORD=your_strong_password

# Redis
REDIS_PASSWORD=your_redis_password

# JWT
JWT_SECRET=your_jwt_secret_key_minimum_32_chars

# MQTT
MQTT_USERNAME=mqtt_user
MQTT_PASSWORD=mqtt_password

# Grafana
GRAFANA_ADMIN_PASSWORD=grafana_admin_pass

# Cloudinary (להעלאת תמונות)
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

3. בנייה והרצה

docker-compose up -d --build

פקודה זו תבנה את כל התמונות (Images) ותעלה את כל הקונטיינרים ברקע.

4. בדיקת סטטוס השירותים

docker-compose ps

וודא שכל השירותים במצב Up (פעילים).

5. גישה למערכת

  • Admin Dashboard (Client): http://localhost או https://your-domain.com
  • API Swagger: http://localhost:5000/api/docs
  • Grafana Monitoring: http://localhost:3000 (שם משתמש: admin, סיסמה: GRAFANA_ADMIN_PASSWORD)
  • Prometheus: http://localhost:9090

פריסה ב-Railway

לצורך אתרי התיעוד במיוחד, אנו משתמשים ב-Railway.

אתר התיעוד הציבורי (Public Docs)

מופץ כאתר סטטי (build output):

  1. הרץ npm run build בתיקיית docs/public.
  2. העלה את תיקיית ה-build/ ל-Railway כשירות סטטי.

אתר התיעוד הפנימי (Internal Docs)

מופץ כקונטיינר Docker עם אימות Basic Auth:

  1. השתמש ב-docs/internal/deploy/Dockerfile.
  2. הדוקרפייל כולל Nginx עם הגנת סיסמה.
  3. הגדר משתני סביבה ב-Railway:
    • BASIC_AUTH_USER: שם משתמש.
    • BASIC_AUTH_PASS: סיסמה (מוצפנת ב-htpasswd).

משתני סביבה חיוניים לייצור

משתנהתיאורדוגמה
DATABASE_URLמחרוזת חיבור MongoDBmongodb://user:pass@host:27017/bt?authSource=admin
REDIS_URLמחרוזת חיבור Redisredis://:password@host:6380
JWT_SECRETמפתח חתימה לטוקניםsupersecretkey123456789
MQTT_BROKER_URLכתובת פנימית של ה-Brokermqtt://mosquitto:1883
CLOUDINARY_*פרטי API של Cloudinary להעלאות(מתקבל מ-Cloudinary Dashboard)
NODE_ENVסביבת הרצהproduction

גיבוי ושחזור

גיבוי אוטומטי

הגיבויים רצים יומית באופן אוטומטי:

  • מסד נתונים: mongodump רץ בקונטיינר של cron job (או על ידי תסריט בשרת).
  • קונפיגורציה: הגדרות המערכת מיוצאות ל-JSON בתיקייה server-nest/backups/.

גיבויים נשמרים בתיקייה: server-nest/backups/automated/.

שחזור ידני

# עבור MongoDB
docker exec -i mongodb mongorestore --uri="mongodb://root:PASS@localhost:27017" /path/to/backup

# עבור הגדרות
# העתק את קובץ ה-JSON חזרה לתיקייה והשתמש בממשק הניהול לייבוא.

עדכוני מערכת

עדכון שרת

  1. משוך את הקוד העדכני:

    git pull origin main
  2. בנה מחדש את הקונטיינרים:

    docker-compose up -d --build server-nest

עדכון Client

docker-compose up -d --build client

עדכון מלא

docker-compose down
git pull origin main
docker-compose up -d --build

ניטור וביצועים

Grafana Dashboards

הגישה ל-Grafana ב-http://localhost:3000 ויש לך לוחות מחוונים מוכנים:

  • System Overview: מצב כללי של השרת (CPU, RAM, Network).
  • Device Metrics: סטטיסטיקות על מכשירים מחוברים.
  • MQTT Traffic: נפח הודעות MQTT וזמני תגובה.

Prometheus Metrics

Prometheus אוסף מדדים מהשרת. ניתן לגשת אליו ב-http://localhost:9090.

דוגמאות לשאילתות:

  • process_cpu_seconds_total: זמן CPU שנצרך על ידי התהליך.
  • http_requests_total: מספר בקשות HTTP.
  • mqtt_messages_received_total: הודעות MQTT שנתקבלו.

פתרון תקלות

קונטיינר לא עולה

בדוק לוגים:

docker-compose logs -f server-nest

MongoDB לא נגיש

וודא שהקונטיינר פעיל:

docker ps | grep mongodb

אם הוא לא פעיל, הרץ:

docker-compose up -d mongodb

MQTT Broker לא פעיל

בדוק את הקונטיינר:

docker-compose logs mosquitto

וודא שפורט 1883 פתוח ב-Firewall.

אבטחה

SSL/TLS

ה-Nginx Proxy מטפל ב-SSL. השתמש ב-Let's Encrypt ליצירת תעודות בחינם:

  1. התקן certbot:

    sudo apt-get install certbot
  2. יצר תעודה:

    sudo certbot certonly --standalone -d your-domain.com
  3. עדכן את תצורת Nginx להצביע על התעודות (nginx/nginx.conf).

Firewall

וודא שרק הפורטים הדרושים פתוחים:

  • 80: HTTP (redirect ל-HTTPS).
  • 443: HTTPS.
  • 1883: MQTT (רק לרשת פנימית, אם אפשר).
  • 9001: MQTT WebSockets (אם נדרש).

עדכונים

עדכן באופן קבוע את Docker Images לגרסאות האחרונות:

docker-compose pull
docker-compose up -d --build

תמיכה

במקרה של בעיות:

  • בדוק את תיעוד הפרויקט ב-GitHub.
  • צור Issue בעמוד הפרויקט.
  • צור קשר עם צוות הפיתוח.