الوصول إلى الملف غير مسموح

مرحباً بفريق n8n،

أنا أستخدم n8n v2.34.6 (Self Hosted) في Docker على Ubuntu 24.04. أحاول حفظ ملف (تم تنزيله من Telegram API) باستخدام عقدة “Read/Write Files from Disk” مع العملية “Write File to Disk”. ومع ذلك، أتلقى دائماً الخطأ:

“Access to the file is not allowed.”

إليك أمر Docker الخاص بي:

bash

docker run -d \
  --name n8n \
  --restart always \
  -p 5678:5678 \
  -e N8N_BASIC_AUTH_ACTIVE=true \
  -e N8N_BASIC_AUTH_USER=admin \
  -e N8N_BASIC_AUTH_PASSWORD=MySecurePass123a \
  -e WEBHOOK_URL=https://wvolcha-n8n.duckdns.org/ \
  -e N8N_EDITOR_BASE_URL=https://wvolcha-n8n.duckdns.org/ \
  -e N8N_ALLOW_WRITE_TO_DISK=true \
  -e N8N_ALLOW_LIST_PATH=/home/node/.n8n \
  -v n8n_data:/home/node/.n8n \
  -v /root/n8n_storage:/data \
  n8nio/n8n:2.34.6

قمت أيضاً بتشغيل:

bash

docker exec n8n mkdir -p /home/node/.n8n/references
docker exec n8n chown -R 1000:1000 /home/node/.n8n/references

في سير العمل، تم تكوين العقدة على النحو التالي:

  • العملية: Write File to Disk

  • مسار الملف والاسم: /home/node/.n8n/references/test.ico

  • حقل الإدخال الثنائي: data

لكن أتلقى الخطأ بالفعل. حاولت مسارات مختلفة: /data، /tmp/references، /home/node/.n8n. لم ينجح أي منها. أضفت N8N_ALLOW_WRITE_TO_DISK=true و N8N_ALLOW_LIST_PATH. بلا جدوى.

ما الذي قد يكون السبب؟ كيف يمكنني السماح للعقدة بالكتابة إلى القرص؟ هل هناك أي إعدادات إضافية أو قيود أمان في v2.34.6؟

شكراً لك.

مرحباً @Wvolcha، بينما تنتظر الرد، إليك بعض الأشياء التي قد تساعدك:

الموارد المقترحة

تم المطابقة تلقائياً مع سؤالك.

المستندات:

المنتدى:

@uidb4056، @markup، @peraphat.boonndet - لقد ساعدتم في مشاكل مشابهة من قبل، هل يمكنكم إلقاء نظرة؟

مقترح تلقائياً من قبل روبوت المجتمع في n8n. إنه برنامج تجريبي - يرجى مشاركة تعليقاتك هنا.

مرحباً @Wvolcha

تحتاج إلى تغيير N8N_ALLOW_LIST_PATH إلى المجلد الفعلي الذي تقصده لتخزين الملفات. بما أنك قمت بالفعل بتثبيت مجلد على /data، فهذا هو المكان المثالي.

حدّث متغير البيئة في أمر Docker run الخاص بك بهذه الطريقة:

غيّر هذا:
-e N8N_ALLOW_LIST_PATH=/home/node/.n8n

إلى هذا:
-e N8N_ALLOW_LIST_PATH=/data

بعد إعادة تشغيل الحاوية الخاصة بك بهذا التغيير، ستتمكن من كتابة الملفات إلى أي مسار داخل مجلد /data (على سبيل المثال، /data/references/test.ico)، وسيتم حفظها بشكل صحيح في مجلد /root/n8n_storage على جهازك.

مرحباً @Wvolcha أهلاً وسهلاً!
N8N_ALLOW_WRITE_TO_DISK و N8N_ALLOW_LIST_PATH ليستا متغيرات n8n، لذا لا تؤثر أي قيم معينة عليهما. المتغير الذي تقرأه عُقد الملفات فعلياً هو N8N_RESTRICT_FILE_ACCESS_TO، والذي يستخدم القيمة الافتراضية ~/.n8n-files منذ الإصدار 2.0:

-e N8N_RESTRICT_FILE_ACCESS_TO=/data

افصل بين عدة مجلدات بـ ; وليس بفاصلة. /home/node/.n8n يبقى محجوباً بغض النظر عن قائمة السماح التي تحددها، فهو مجلد الحالة الخاص بـ n8n. يجب أن يكون مجلد المضيف مملوكاً لمستخدم node أيضاً، لذا قم بتشغيل chown -R 1000:1000 /root/n8n_storage قبل إعادة إنشاء الحاوية.

شكراً لك!

مرحباً @Anshul_Namdev، شكراً جزيلاً لك! لقد غيرت أمر Docker الخاص بي واستخدمت:

bash

-e N8N_RESTRICT_FILE_ACCESS_TO=/data

بدلاً من المتغيرات غير الموجودة. كما قمت بتشغيل chown -R 1000:1000 /root/n8n_storage وقمت بتثبيت الحجم. عقدة Read/Write Files from Disk تعمل الآن بشكل مثالي وتحفظ الملفات على /data.

أقدر حقاً الشرح الواضح — بالضبط ما كنت أحتاجهشكراً لك!