Node-RED

Low-code programming for event-driven applications.

Accessing Node-RED

  • افتح متصفحك وقم بزيارة: https://<SERVER_IP>
  • من المتوقع ظهور تحذير SSL في المتصفح (شهادة موقعة ذاتيًا)
  • Authentication is required (Basic Auth popup)
  • Authentication method: HTTP Basic Auth
  • Credentials are stored securely in: /root/.cloudzy-creds

الملفات والمجلدات المهمة

  • Main installation directory is /root/node-red.
  • Docker orchestration file is /root/node-red/docker-compose.yml.
  • Persistent Node-RED data is stored in /var/lib/docker/volumes/node-red_node-red-data/_data.
  • Nginx configuration file is located at /etc/nginx/sites-available/node-red.
  • Basic authentication credentials are stored in /etc/nginx/auth/node-red.htpasswd.
  • TLS certificates are stored in /etc/nginx/ssl.

إدارة الخدمات

التحقق من حالة الحاوية:

docker ps

عرض السجلات:

docker compose -f /root/node-red/docker-compose.yml logs -f

Restart Node-RED:

docker compose -f /root/node-red/docker-compose.yml restart

أعد تشغيل Nginx:

systemctl restart nginx

Node-RED Admin User (Alternative to Basic Auth)

Node-RED has its own internal authentication system, which can replace HTTP Basic Auth.

1. Locate settings.js

The main configuration file is inside the Node-RED Docker volume: /var/lib/docker/volumes/node-red_node-red-data/_data/settings.js

2. Enable adminAuth

فتح settings.js and uncomment (or add) the adminAuth section. It should look something like this:

  adminAuth: {
      type: "credentials",
      users: [
          {
              username: "admin",
              password: "<HASHED_PASSWORD>",
              permissions: "*"
      }]
  },

3. Generate a password hash

You can generate the hash from inside the Node-RED container:

docker exec -it node-red-node-red-1 node-red admin hash-pw

You will be prompted to enter your plain password.

Copy the resulting hash and paste it as the password value in settings.js.

4. Restart Node-RED

After editing settings.js:

docker compose -f /root/node-red/docker-compose.yml restart

5. Disable HTTP Basic Auth in Nginx (Optional)

Edit the Nginx site file: /etc/nginx/sites-available/node-red

Remove or comment out these lines:

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/auth/node-red.htpasswd;

إعادة تحميل Nginx:

systemctl restart nginx

تمكين SSL باستخدام نطاق

1. قم بتوجيه نطاقك إلى عنوان IP للخادم.

2. قم بتحرير تكوين Nginx واستبدل كلاهما server_name <IP>; مع نطاقك (<your-domain>) لكل من كتل HTTP (المنفذ 80) و HTTPS (المنفذ 443):

vim /etc/nginx/sites-available/node-red

3. تثبيت Certbot:

apt install -y certbot python3-certbot-nginx

4. قم بتشغيل الأمر التالي لإنشاء شهادة Let's Encrypt صالحة:

certbot certonly --nginx --non-interactive --agree-tos --email [email protected] -d yourdomain.com

5. استبدل مسارات SSL في تكوين Nginx:

vim /etc/apache2/sites-available/node-red
# Before:
    # ssl_certificate /etc/nginx/ssl/fullchain.pem;
    # ssl_certificate_key /etc/nginx/ssl/privkey.pem;
# After:
    # ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    # ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

6. أعد تشغيل Nginx لتطبيق التغييرات:

systemctl restart nginx

7. افتح متصفحك وانتقل إلى: https://yourdomain.com

تفاصيل الطلب