SSD Nodes Learn 🎉 VPS من $5.50/شهر
الأدلة Matt Connorبقلم Matt Connor

مقارنة مديري الملفات المستضافين ذاتياً

قارن FileBrowser وFilestash وSFTPGo وCloud Commander من حيث نطاق الوصول وروابط المشاركة والتخزين والمصادقة، وتعلّم تشغيلها بأمان دون تعريض ملفاتك للخطر.

ما هو مدير الملفات المستضاف ذاتياً، وما ليس كذلك

مدير الملفات المستضاف ذاتياً هو صفحة ويب تعرض شجرة المجلدات الموجودة مسبقاً على VPS (الخادم الافتراضي الخاص). تسجّل الدخول، وترى /srv/files كما هو تماماً على القرص، ثم ترفع الملفات أو تعيد تسميتها أو تنزّلها أو ترسل رابطاً إليها. لا تُنسخ الملفات إلى نظام ثانٍ، لذلك يكون الملف الذي تضعه في المتصفح هو نفسه الملف الذي يعرضه ls بعد ثانية واحدة.

تخلط نتائج البحث بين هذا النوع من البرامج وبرامج تؤدي مهام أخرى. تحتفظ أدوات المزامنة بنسخة من كل ملف على كل جهاز، وهذا ما يقدّمه بديل Dropbox مستضاف ذاتياً. لا تحتوي خدمة تخزين الكائنات على شجرة مجلدات، بل تحتوي على buckets وواجهة API، لذلك فإن تشغيل MinIO لتخزين الكائنات المتوافق مع S3 يجيب عن سؤال مختلف. تدير لوحات إدارة الخوادم الجهاز بدلاً من الملفات، وهذا ما تتناوله مقارنة Cockpit وWebmin.

تحتاج إلى مدير ملفات عندما يحتاج أحد الزملاء إلى أرشيف حجمه 300 MB من الخادم، أو عندما تريد إصلاح خطأ مطبعي في ملف إعداد من هاتف. المهمة صغيرة، ولذلك تكون الأدوات صغيرة أيضاً.

ضع حقيقة واحدة في اعتبارك أثناء القراءة. هذا تطبيق ويب يملك صلاحية القراءة والكتابة في نظام الملفات لديك، ويستمع على منفذ. كل خيار أدناه هو في الواقع اختيار لمقدار القرص الذي يمكن لهذه العملية الوصول إليه.

FileBrowser مؤرشف، لذا اقرأ هذا قبل تثبيته

يُعد FileBrowser، مشروع filebrowser/filebrowser، الإجابة التي لا تزال معظم الأدلة تقدمها. وتبدأ وثيقة README الخاصة به الآن بإشعار:

أُرشف File Browser في 2026-09-01. وقد صدر الإصدار الأخير المخطط له بالفعل. ولن تصدر إصدارات أو إصلاحات أخطاء أو إصلاحات أمنية أخرى.

يواصل كود Apache 2.0 العمل. لكن الإصلاحات الأمنية تتوقف. وهذا مهم في هذه الفئة أكثر من معظم الفئات الأخرى، لأن الغرض الكامل من البرنامج هو توفير وصول كتابة إلى نظام ملفات عبر HTTP.

دوّن المشرفون على المشروع طريقة مواصلة تشغيله، وتستحق هذه النصيحة الاتباع أيّاً كانت الأداة التي تختارها: لا تعرّضه مباشرة للإنترنت، وضعه خلف reverse proxy ينهي TLS (أمن طبقة النقل) وينفّذ المصادقة الخاصة به، وأبقِ مشغّل الأوامر معطّلاً، وشغّله دون امتيازات داخل حاوية لا تُضمّن فيها إلا الدليل الذي تريد تقديمه.

يوجد سطر واحد في README تلك أهم من بقية المحتوى. الجلسات عبارة عن JWTs (رموز ويب JSON) مكتفية ذاتياً، وليست معرّفات تُدار من جهة الخادم، ولذلك لا يمكن إبطالها. يظل رمز جلسة مسرّب صالحاً حتى تنتهي صلاحيته، ولا يؤدي تغيير كلمة المرور إلى إبطاله. إذا واصلت استخدام FileBrowser، فإن طبقة المصادقة الموضوعة أمامه هي التي تنفّذ العمل الفعلي.

FileBrowser Quantum: الفرع الذي لا يزال نشطاً

انتقل التطوير النشط إلى فرع FileBrowser Quantum (gtsteffaniak/filebrowser)، المنشور باسم صورة gtstef/filebrowser. يعيد هذا الفرع بناء الإعدادات حول config.yaml واحد بدلاً من المزيج الأقدم من خيارات سطر الأوامر وإعدادات قاعدة البيانات. طريقة التجربة السريعة الموثقة:

docker run -d \
  -v $(pwd):/srv \
  -p 80:80 \
  gtstef/filebrowser:beta

يخدم ذلك الدليل الحالي على http://localhost، وتكون بيانات تسجيل الدخول الأولى admin / admin. غيّرها قبل أن يصبح الحاوي قابلاً للوصول من أي مكان غير جهازك.

بالنسبة إلى نسخة ستحتفظ بها، استخدم Compose، واربط دليل البيانات بدلاً من ملف قاعدة بيانات واحد، واربط المنفذ بـlocalhost:

services:
  filebrowser:
    image: gtstef/filebrowser:beta
    user: "1000:1000"
    volumes:
      - /srv/files:/folder
      - ./data:/home/filebrowser/data
    ports:
      - 127.0.0.1:8080:80
    restart: unless-stopped

يوجد ملف الإعداد في /home/filebrowser/data/config.yaml، وقاعدة البيانات في /home/filebrowser/data/filebrowser.sqlite. غيّر الإصدار 2.0.0 تنسيق قاعدة البيانات، وينفّذ ترحيلًا لمرة واحدة. لذلك تطلب الوثائق ربط دليل: إذ لا يوفّر ربط ملف واحد مكاناً يضع فيه الترحيل الملف الجديد. المسارات داخل config.yaml هي مسارات داخل الحاوي، لذلك يُقرأ المصدر في الإعداد على أنه /folder، لا /srv/files. يؤدي عكس ذلك إلى ظهور قائمة ملفات فارغة بلا خطأ، لأن الدليل غير موجود فعلاً.

ينشر المشروع latest وstable بحجم يقارب 60 MB مع تضمين FFmpeg لإنشاء الصور المصغرة للفيديو، وstable-slim بحجم يقارب 15 MB ويحتوي على المكوّن الأساسي فقط. هذه هي الأرقام الواردة في صفحة التثبيت في August 2026. ثبّت الوسم الذي اخترته. يتغير latest من دون إبلاغك، ومدير الملفات الذي يغيّر تنسيق إعداداته أثناء تشغيل الحاوي يجعل بداية اليوم سيئة.

لهذا الاستخدام، يُعد أقوى الأدوات الصغيرة. فهو يخدم مصادر متعددة باستخدام قواعد التضمين والاستبعاد، لذلك يمكن لنسخة واحدة إتاحة /srv/media و/srv/docs بنطاقين مختلفين. تتضمن المشاركات وقت انتهاء صلاحية، ويمكن أن تكون مجهولة أو مقيدة بمستخدم. تشمل المصادقة OIDC (OpenID Connect)، وLDAP (lightweight directory access protocol)، وكلمة مرور مع عاملين، ووضع ترويسة الوكيل. يتيح هذا الوضع تشغيله خلف تسجيل الدخول الأحادي (SSO) من خادم Authentik مستضاف ذاتياً بدلاً من الاحتفاظ بقائمة ثانية من المستخدمين.

Filestash: واجهة واحدة فوق وحدات التخزين الموجودة لديك

Filestash له بنية مختلفة. فهو واجهة أمامية تتصل بخلفية، وقائمة الخلفيات طويلة: FTP وSFTP (بروتوكول نقل الملفات عبر SSH) وS3 وSMB وWebDAV وIPFS ونحو عشرين خياراً آخر. يناسب ذلك الحالات التي لا تكون فيها الملفات موجودة على الخادم الذي يشغّل الواجهة.

mkdir -p /srv/filestash && cd /srv/filestash
curl -O https://downloads.filestash.app/latest/docker-compose.yml
docker compose up -d

صورة الحاوية هي machines/filestash:latest. افتح http://your_domain:8334، وستطلب الشاشة الأولى تعيين كلمة مرور المسؤول. عيّنها فوراً، لأن وحدة تحكم المسؤول تبقى مفتوحة لأي شخص يعثر على المنفذ إلى أن تفعل ذلك.

افهم نموذج الهوية قبل أن تبني عليه. لا يحتفظ Filestash بقاعدة بيانات للمستخدمين بالمعنى المعتاد. تُخزَّن بيانات الاعتماد في متصفحك باستخدام ملفات cookies مشفّرة وموثّقة ومقيّدة بـHTTP فقط، ولا يُخزَّن شيء على الخادم إلا عند استخدام ميزة المشاركة. عندئذ يحتفظ Filestash بنسخة مشفّرة دائمة من بيانات اعتمادك. «المستخدمون» هم حسابات التخزين: توجد الهوية في الخلفية، أي في حساب SFTP أو مفتاح S3، وليس في Filestash.

هذا التصميم واضح، لكنه يفرض تكلفة. تعرض صفحة الأسعار المستوى المجاني للاستضافة الذاتية بترخيص AGPL v3 (رخصة GNU العامة للبرمجيات الحرة)، مع دعم ما يصل إلى 3 مستخدمين. كما تضع SSO (‏SAML وOIDC وLDAP) مع التحكم في الوصول المستند إلى الأدوار ضمن مستوى الاستضافة الذاتية المدفوع، ابتداءً من $50 شهرياً، وفقاً للوضع في August 2026. إذا كانت خطتك هي «وضع Filestash أمام SSO الخاص بالشركة مجاناً»، فتحقق من تلك الصفحة قبل أن تصمم الحل على هذا الأساس.

SFTPGo: خادم بروتوكولات يوفّر أيضاً واجهة ويب

SFTPGo هو البرنامج الأكثر قدرة هنا، وهو البرنامج الذي يُوصى به غالباً للسبب الخطأ. فهو يوفّر SFTP وHTTP/S وFTP/S وWebDAV، فوق نظام ملفات محلي، أو نظام ملفات محلي مشفّر، أو تخزين كائنات متوافق مع S3، أو Google Cloud Storage، أو Azure Blob Storage، أو خادم SFTP آخر.

تتوفّر الملفات التنفيذية وحزم Debian وUbuntu وصورة حاوية، كما يوجد سطر مستودع APT الحالي ومفتاح التوقيع في صفحة التثبيت ضمن وثائق SFTPGo. ويُعد تشغيله عبر الحاوية أسرع طريقة، مع استبدال tag بالإصدار المطلوب:

docker run --name some-sftpgo -p 8080:8080 -p 2022:2022 -d "drakkan/sftpgo:tag"

يستمع SFTP على المنفذ 2022، وتستمع واجهتا الويب على المنفذ 8080. اربط /srv/sftpgo كوحدة تخزين، وإلا فستختفي الحسابات وملفاتها عند إعادة إنشاء الحاوية، لأن الدليل الرئيسي للمستخدمين يكون افتراضياً /srv/sftpgo/data/<username>.

توجد واجهتا ويب، والفرق بينهما هو الجزء الذي تتركه معظم الشروحات ضمنياً. واجهة WebAdmin الموجودة على /web/admin إدارية؛ فمن خلالها تنشئ المستخدمين والمجموعات والمجلدات الافتراضية وقواعد الأحداث، وتضبط الحصص وحدود عرض النطاق وقيود أوقات الوصول. أما واجهة WebClient الموجودة على /web/client فهي واجهة المستخدم النهائي، حيث يستعرض الشخص الملفات، ويغيّر بيانات اعتماده، ويعدّ المصادقة الثنائية، وينشئ المشاركات.

تُعد هذه المشاركات الأفضل في هذه المقارنة. يستطيع المستخدم إنشاء روابط HTTP/S لمشاركة الملفات والمجلدات، وتحديد عدد عمليات التنزيل والرفع، وحماية المشاركة بكلمة مرور، وتقييد الوصول حسب عنوان IP المصدر، وتعيين تاريخ انتهاء تلقائي.

فلماذا هذا التحفّظ؟ لأن محور البرنامج هو نموذج الحسابات وخادم البروتوكولات، وليس تجربة استعراض الملفات. اختر SFTPGo عندما يحتاج أشخاص آخرون إلى حسابات فعلية ذات حصص، أو عندما تصل الرفوعات عبر SFTP أو FTPS من نظام لا تتحكم فيه، أو عندما يجب أن يظهر bucket واحد داخل الأدلة الرئيسية لعدة مستخدمين. تنفّذ المجلدات الافتراضية الحالة الأخيرة: فهي مجلدات مدعومة بقرص محلي أو S3 أو GCS أو Azure Blob أو SFTP أو HTTP، وتُركَّب داخل حسابات متعددة، مع حصة مستقلة لكل مستخدم على مجلد مشترك. إذا كان كل ما تريده هو صفحة قابلة للاستعراض فوق /srv/files، فهذه منظومة كبيرة لتنفيذ ذلك.

وهناك معلومتان إضافيتان تستحقان الذكر. إصدار Community مرخّص بموجب AGPL-3.0-only مع شروط إضافية، إلى جانب إصدار Enterprise المرخّص تجارياً. وتوجد إمكانية تسجيل الدخول عبر OIDC في الإصدار مفتوح المصدر، حيث تربط مستخدمي موفّر الهوية بحسابات مسؤولي SFTPGo ومستخدميه في كلتا واجهتي الويب. ويمكنك أيضاً تعطيل واجهة العميل على مستوى النظام باستخدام enable_web_client في إعدادات httpd، أو لكل مستخدم بإضافة HTTP إلى البروتوكولات المحظورة لذلك المستخدم، بحيث تتوفّر إدارة الملفات لشخص واحد ولا تتوفّر للجميع.

Cloud Commander: لوحتان وطرفية لمستخدم واحد

Cloud Commander هو مدير Node.js مرخّص بموجب MIT ويستخدم نمط اللوحتين، مع محرّر مدمج ووحدة تحكم وطرفية. ثبّته بشكل عام باستخدام npm i cloudcmd -g، أو شغّل الحاوية المنشورة:

docker run -it --rm -v ~:/root -v /:/mnt/fs -w=/root -p 8000:8000 coderaiser/cloudcmd

اقرأ هذا الأمر قبل تشغيله. يربط -v /:/mnt/fs نظام ملفات المضيف بالكامل داخل الحاوية، ويتضمن المثال ~/.cloudcmd.json و"root": "/" و"auth": false و"console": true. يعني هذا الجمع أن أي شخص يصل إلى المنفذ 8000 يحصل على القرص بالكامل ووحدة تحكم بالأوامر على الخادم. هذا إعداد مناسب افتراضياً لحاسوب محمول، لكنه خيار سيئ لخادم VPS.

قيّد نطاقه. تقرأ الحاوية /root/.cloudcmd.json، ويوفّرها الأمر المنشور من خلال ربط مجلد home الخاص بك، لذا أبقِ ربط الإعدادات واحذف الباقي:

docker run -d --name cloudcmd \
  -v ~/.cloudcmd.json:/root/.cloudcmd.json \
  -v /srv/files:/srv/files \
  -w=/srv/files \
  -p 127.0.0.1:8000:8000 \
  coderaiser/cloudcmd

عيّن في ملف الإعدادات ذلك "root" إلى /srv/files، و"auth" إلى true مع "username" و"password"، وعيّن "console" و"terminal" إلى false ما لم تكن تريد فعلاً الوصول إلى shell عبر المتصفح. تتوفر أيضاً مكافئات عبر سطر الأوامر، ومنها --root و--auth و--username و--password و--prefix.

كن واضحاً بشأن طبيعة الأداة. فهي تستخدم زوجاً واحداً من بيانات الاعتماد، ولا توفر تقييداً لكل مستخدم، ولا حصصاً، ولا روابط مشاركة. إنها أداة شخصية، لذا اربطها بـlocalhost كما سبق، ثم صِل إليها عبر نفق:

ssh -L 8000:127.0.0.1:8000 you@your-vps

بعد ذلك افتح http://127.0.0.1:8000 على جهازك. لا يُعرَض مدير الملفات للعامة مطلقاً، والشيء الوحيد المواجه للإنترنت هو عفريت SSH الذي سبق أن حصّنته على خادم VPS الخاص بك.

لماذا لا تُعد Nextcloud الأداة المناسبة لهذه المهمة

Nextcloud برنامج جيد، لكنه ليس الأداة المناسبة هنا. فهو منصة للتعاون تضم تطبيق PHP، وقاعدة بيانات، ومهام تعمل في الخلفية، وعملاء مزامنة لسطح المكتب، ومتجر تطبيقات. إن تشغيله للحصول على عرض ويب لـ /srv/files يعني إدارة مكوّنات كثيرة مقابل مهمة صغيرة، كما أن هناك تعارضاً محدداً. تحتفظ Nextcloud بالبيانات الوصفية للملفات في جدول بقاعدة البيانات بدلاً من قراءة الدليل عند كل طلب، لذلك قد تبقى الملفات التي يكتبها rsync أو مهمة cron غير ظاهرة في الواجهة إلى أن تكتمل عملية الفحص، مع sudo -u www-data php occ files:scan --all. أما مدير الملفات فيعرض محتويات الدليل عند تحميل الصفحة، ولذلك لا توجد هذه الفجوة.

استخدم Nextcloud في المهام التي تتقنها: التقويمات، وجهات الاتصال، والمزامنة، والمشاركة مع الأشخاص الذين يتوقعون استخدام عميل لسطح المكتب. يشرح تشغيل Nextcloud على VPS باستخدام Docker وTLS والنسخ الاحتياطية هذا الإعداد. إذا كنت تشغّلها بالفعل وتحتاج فقط إلى عرض دليل موجود، ففعّل تطبيق External Storage وتوقف عند ذلك. إن إضافة تطبيق ويب ثانٍ يملك صلاحية الكتابة إلى القرص نفسه تعني إضافة مكوّن ثانٍ يجب تحديثه باستمرار.

كيفية تشغيله دون كشف الخادم بالكامل

لا توجّه التطبيق مطلقاً إلى /. يمكن للعملية قراءة كل ما يستطيع حساب المستخدم الوصول إليه والكتابة فيه، لذلك يصبح رمز الجلسة المسروق بمثابة وصول إلى نظام الملفات بهذا النطاق تحديداً. قدّم دليلاً واحداً، /srv/files، وأنشئه لهذا الغرض.

شغّله كمستخدم غير root، واربط فقط ما يقدّمه. في Compose، يعني ذلك user: "1000:1000" مع عملية bind mount واحدة لكل دليل، واستخدم :ro لأي شيء لا يحتاج التطبيق إلى الكتابة فيه:

    volumes:
      - /srv/files:/folder
      - /srv/media:/media:ro

النتيجة المعتادة لهذا التغيير هي أن التصفح يعمل بينما تفشل عمليات الرفع مع permission denied، لأن معرّف المستخدم داخل الحاوية لا يملك الدليل خارجها. قارن بين الاثنين: يعرض docker exec filebrowser id مستخدم الحاوية، بينما يعرض ls -ln /srv/files مالك الدليل الرقمي على المضيف. أصلح ذلك باستخدام sudo chown -R 1000:1000 /srv/files. هذه هي مشكلة الملكية نفسها التي صُممت قيم PUID وPGID في صور Docker لحلها.

اربط المنفذ المنشور بواجهة localhost، 127.0.0.1:8080:80، بدلاً من 8080:80. يكتب Docker قواعد netfilter الخاصة به قبل قواعد ufw، لذلك يظل المنفذ المنشور بشكل مباشر قابلاً للوصول من الإنترنت حتى عندما يكون ufw deny 8080 مفعّلاً. ضع Reverse Proxy أمامه لتوفير TLS. عبر HTTP العادي تنتقل cookie الجلسة عبر الشبكة دون تشفير، وهذه cookie تمنح وصولاً إلى نظام الملفات. إذا كان Compose جديداً عليك، يشرح Docker Compose على VPS بنية الملفات التي تفترضها هذه المقاطع.

أضف طبقة مصادقة عندما تكون مصادقة التطبيق نفسه محدودة. تكفي مصادقة HTTP الأساسية على الـproxy لمثيل يستخدمه شخص واحد. عند مشاركة المثيل بين أكثر من شخص، استخدم OIDC أو forward auth مع موفّر هوية، بحيث يؤدي إلغاء حساب واحد إلى إلغاء الوصول في كل مكان.

عطّل الميزات الإضافية. أي مدير ملفات يوفّر shell أو command runner أو terminal داخل المتصفح يوفّر تنفيذ أوامر عن بُعد لكل من يملك جلسة صالحة. توصي إرشادات FileBrowser الخاصة بتعطيل command runner، بينما يفعّل نموذج إعداد Cloud Commander وحدة console. اتخذ القرار عمداً، لا وفق الإعداد الافتراضي.

ما الذي يتعطل أولاً، وما الأخطاء التي ستراها

listen tcp :80: bind: permission denied. يحجز Linux المنافذ الأقل من 1024 للعمليات ذات الامتيازات. يستخدم إعداد FileBrowser Quantum الموثّق المنفذ 80، وهذا مناسب داخل حاوية، لكنه يفشل فور تشغيل البرنامج الثنائي كمستخدم غير مميّز على المضيف. عيّن منفذاً أعلى من 1024 في config.yaml، واترك للـproxy إدارة المنفذ 443.

تفشل عمليات الرفع بينما يعمل التصفح. يحتاج عرض دليل إلى r-x، بينما تتطلب الكتابة فيه w. تعرض واجهة الويب خطأً عاماً، لذلك افحص نظام الملفات أولاً بدلاً من البدء بسجلات التطبيق.

413 Request Entity Too Large. يصدر هذا الخطأ عن nginx، وليس عن مدير الملفات. القيمة الافتراضية لـclient_max_body_size هي 1 MB، لذلك يرفض الـproxy عملية رفع أكبر قبل أن يراها التطبيق. عيّن client_max_body_size 4096m; في كتلة server، أو استخدم 0 لتعطيل الفحص.

تحمل الملفات المرفوعة المجموعة الخطأ. تكون ملكية الملفات الجديدة للمستخدم الذي يشغّل العملية، بغض النظر عما يحدده الدليل المحيط بها، وهذا يمنع خدمة ثانية من قراءة الشجرة نفسها. امنح الخدمتين مجموعة مشتركة، وعيّن بت setgid على الدليل باستخدام sudo chmod g+s /srv/files، لكي ترث الملفات الجديدة مجموعة الدليل.

يعمل كل شيء على المنفذ، لكنه يتعطل خلف الـproxy. ينشئ التطبيق الذي يُخدَّم ضمن مسار فرعي الروابط انطلاقاً من بادئة يجب تعريفها له. يوفّر Cloud Commander الخيار --prefix لهذا الغرض. إذا لم يتوفر خيار مماثل، امنح التطبيق نطاقاً فرعياً مستقلاً ووجّه المسار الجذري إليه عبر الـproxy.

أي مدير ملفات مستضاف ذاتياً ينبغي أن تستخدم؟

  • خادم VPS واحد، ودليل واحد أو دليلان، وروابط مشاركة تنتهي صلاحيتها، وربما SSO لاحقاً: FileBrowser Quantum.
  • ملفات موجودة في مكان آخر، مثل حاوية S3 أو مضيف SFTP أو جهاز NAS عبر SMB، وتريد عرضاً واحداً عبر الويب لها جميعاً: Filestash، ضمن حدود الطبقة المجانية.
  • يحتاج أشخاص آخرون إلى حسابات وحصص تخزين ورفع ملفات عبر SFTP أو FTPS: SFTPGo، مع اعتبار عميل الويب ميزة إضافية مفيدة لا سبب اختياره الأساسي.
  • أداة شخصية تتضمن محرراً وطرفية، تصل إليها عبر نفق SSH ولا تنشرها على الإنترنت مطلقاً: Cloud Commander.
  • لديك Nextcloud قيد التشغيل ودليل موجود تريد إتاحته: تطبيق External Storage، ومن دون تثبيت أي برنامج جديد على الإطلاق.

مهما كان اختيارك، فإن طريقة النشر أهم من البرنامج نفسه. استخدم دليلاً واحداً، ومستخدماً غير root، ومنفذاً مرتبطاً بـlocalhost، وضع المصادقة أمامه. يكون مدير الملفات المُعد بهذه الطريقة أداة لتسهيل العمل. أما توجيه البرنامج نفسه إلى / باستخدام كلمة مرور مشتركة، فيحوّله إلى shell بعيد بواجهة أنيقة.

FAQ

هل ما زال تشغيل FileBrowser آمناً في 2026؟

يذكر ملف README filebrowser/filebrowser الرسمي أن File Browser أُرشف في 2026-09-01، ولن تصدر له إصدارات أو إصلاحات أخطاء أو إصلاحات أمنية أخرى. ما زال الكود يعمل، لكن تشغيل برنامج غير مُصحَّح يملك صلاحية الكتابة إلى نظام ملفاتك يمثّل خطراً يزداد بمرور الوقت. إذا أبقيته، فاتبع إرشادات المشروع نفسه: لا تعرّضه مباشرةً للإنترنت، واستخدم reverse proxy يتولى TLS والمصادقة الخاصة به، واترك مشغّل الأوامر معطّلاً، وشغّله داخل حاوية غير مميّزة مع تحميل الدليل الذي تقدّمه فقط. لاحظ أيضاً أن جلساته عبارة عن JWTs مكتفية ذاتياً، وليست معرّفات محفوظة على الخادم، لذلك لا يمكن إبطالها، كما أن تغيير كلمة المرور لا يُبطل الرمز المصدَر. عند تثبيت جديد، استخدم تفرّع FileBrowser Quantum، المنشور باسم الصورة gtstef/filebrowser، حيث يستمر التطوير.

هل يمكن لمدير ملفات مستضاف ذاتياً استخدام SSO الحالي لدي؟

يدعم FileBrowser Quantum بروتوكولات OIDC وLDAP ووضع ترويسة proxy، لذلك يمكن وضعه خلف موفّر هوية حالي من دون قائمة مستخدمين ثانية. يتوفر تكامل SFTPGo مع OpenID Connect في الإصدار مفتوح المصدر، ويربط مستخدمي موفّر الهوية بحسابات مسؤولي SFTPGo ومستخدميه في واجهتي WebAdmin وWebClient. أما Filestash فهو الاستثناء الذي يجب الانتباه إليه: تضع صفحة الأسعار الخاصة به SSO ‏(SAML وOIDC وLDAP) ضمن فئة الاستضافة الذاتية المدفوعة بسعر يبدأ من $50 شهرياً اعتباراً من August 2026، بينما تُدرج الفئة المجانية بترخيص AGPL v3 وبحد أقصى 3 مستخدمين. عندما لا يدعم التطبيق SSO إطلاقاً، يكون البديل هو المصادقة التمريرية في reverse proxy، فهي تحمي صفحة تسجيل الدخول، لكنها لا تغيّر الصلاحيات الداخلية للتطبيق.

أيّ من هذه الأدوات يوفّر روابط مشاركة تنتهي صلاحيتها؟

يملك SFTPGo التطبيق الأكثر اكتمالاً. ينشئ المستخدم رابط HTTP/S من WebClient، ويمكنه تحديد عدد عمليات التنزيل والرفع، وتعيين كلمة مرور، وتقييد الوصول حسب عنوان IP المصدر، وتعيين تاريخ انتهاء تلقائي. يدعم FileBrowser Quantum عمليات مشاركة بمدة انتهاء، مع إتاحة الوصول بشكل مجهول أو تقييده بمستخدم، إضافةً إلى صلاحيات لكل مشاركة للعرض والتحرير والرفع. يوفّر Filestash ميزة مشاركة أيضاً، وهو الحالة الوحيدة التي يحتفظ فيها الخادم بنسخة مشفّرة دائمة من بيانات اعتماد التخزين، لأن الرابط يجب أن يعمل بعد انتهاء جلسة المتصفح. لا يوفّر Cloud Commander روابط مشاركة إطلاقاً.

هل من الآمن توجيه مدير ملفات إلى / إذا كنت المستخدم الوحيد؟

لا، والخطر لا يتعلق فعلياً بمدى ثقتك بنفسك. تملك العملية صلاحية القراءة والكتابة لكل ما يمكن لحساب المستخدم الذي تعمل به الوصول إليه، ولذلك فإن أي مسار إلى تلك الجلسة، مثل ملف تعريف ارتباط مسروق، أو خطأ غير مُصحَّح في معالج الرفع، أو كلمة مرور معاد استخدامها، يتحول إلى وصول إلى /etc، وإلى مفاتيح SSH الخاصة بك، وإلى دليل بيانات كل خدمة. قيّد التحميل بدليل واحد بدلاً من ذلك: /srv/files بدلاً من /. يظهر هذا الخطر بأوضح صورة في Cloud Commander، لأن أمر Docker المنشور له يحمّل جذر المضيف إلى /mnt/fs، ويضبط نموذج الإعدادات لديه "root": "/" مع "auth": false. غيّر القيمتين قبل أن تستمع تلك الحاوية إلى أي شيء باستثناء localhost.

#file-manager#filebrowser#sftpgo#استضافة ذاتية#تخزين