A Matrix Synapse media repository can consume disk space faster than the homeserver database because it holds several different classes of files: media uploaded by local users, thumbnails, cached media fetched from remote homeservers, and resources used for URL previews. The right fix is not to delete random files from the media directory. First identify what is growing, then use Synapse's Admin API or retention controls so the database metadata and on-disk files stay consistent.
As of October 2026, the current Synapse release line is 1.162, and the official media-management documentation includes APIs for querying media, deleting local media, purging cached remote media, and configuring automatic retention. Check the official Synapse releases if your installation is significantly older, because endpoint behavior and configuration options can differ across releases.
Quick Triage Checklist
| Question | What to check | Best next action |
| Is the filesystem actually close to full? | df -h | Confirm which mounted filesystem contains the media store. |
| Is Synapse media the main consumer? | du -sh <media_store_path> | Compare it with other large directories before deleting anything. |
| Is remote cache the largest category? | du -sh <media_store_path>/* | sort -h | Purge old remote media first; it can normally be fetched again. |
| Is local user media the main category? | Admin API media listings and age/size data | Apply a deliberate local-media retention policy; deletion is permanent. |
| Does growth keep returning? | media_retention, upload limits, monitoring | Add automatic retention and capacity alerts. |
1. Confirm That the Media Repository Is the Disk-Space Problem
Start with the filesystem, not with Synapse. Run:
df -h
du -sh /path/to/media_store
The path is installation-specific. Synapse's media_store_path setting defines the directory used for uploaded images and attachments, and its documented default is media_store relative to Synapse's data directory. Distribution packages and container deployments often set an explicit path, so inspect your actual configuration rather than assuming a location.
Caption: Compare filesystem usage with the size of the configured Synapse media store before deciding that media cleanup is the correct fix.
If the disk is nearly full, avoid running broad recursive operations that create large temporary files or backups on the same filesystem. If you are at immediate risk of running out of space, first stop unrelated write-heavy jobs or add temporary capacity, then perform cleanup in a controlled way.
2. Verify the Active Media Configuration and Identify What Is Growing
Open the active homeserver.yaml and find media_store_path. Also review max_upload_size, any media_storage_providers, and any existing media_retention block. The official Synapse configuration manual documents these options.
شرح الصورة: تأكد من تفعيل الجهاز media_store_pathقبل قياس أو تغيير وحدة تخزين الوسائط. المسار الموضح هنا هو مثال على التكوين.
بعد ذلك، قم بقياس الدلائل الفرعية من المستوى الأول:
du -sh /path/to/media_store/* 2>/dev/null | sort -h
توضح وثائق مستودع الوسائط في Synapse الفئات المهمة الموجودة على القرص. يتم تخزين التحميلات المحلية أدناه local_content، والصور المصغرة المحلية أدناه local_thumbnails، والملفات البعيدة المخزنة مؤقتًا أدناه remote_content، والصور المصغرة البعيدة أدناه remote_thumbnail، وبيانات معاينة عنوان URL أدناه url_cacheو url_cache_thumbnails.
التعليق: يساعد تحليل حجم الملفات على مستوى الدليل في التمييز بين ذاكرة التخزين المؤقت البعيدة القابلة للاسترداد وعمليات تحميل المستخدم المحلي التي قد تكون النسخة الوحيدة المخزنة بواسطة خادمك المنزلي.
لا تستخدم rm -rfهذه المسارات كطريقة تنظيف عادية. يتتبع برنامج Synapse الوسائط في قاعدة بياناته. قد يؤدي تجاوز مسارات التنظيف المدعومة إلى ترك بيانات وصفية تشير إلى ملفات لم تعد موجودة، أو إزالة محتوى يتوقع المستخدمون استرجاعه.
3. استعادة ذاكرة التخزين المؤقت للوسائط البعيدة أولاً عندما تكون هي المستهلك الرئيسي
تُعدّ الوسائط البعيدة المخزنة مؤقتًا عادةً أقل الأماكن خطورةً لاستعادة المساحة. يخزن Synapse نسخًا من الوسائط التي استضافتها في الأصل خوادم منزلية أخرى. تقوم واجهة برمجة تطبيقات Purge Remote Media API الرسمية بإزالة الوسائط البعيدة المخزنة مؤقتًا التي تم الوصول إليها آخر مرة قبل تاريخ محدد. إذا طلب المستخدم تلك الوسائط مرة أخرى، فسيطلبها Synapse مجددًا من الخادم المنزلي الأصلي.
تتطلب واجهة برمجة تطبيقات الإدارة رمز وصول خاص بمسؤول الخادم. توصي Synapse بإخفائها /_synapse/admin/...عن الوصول العام واستخدامها محليًا بشكل طبيعي. راجع دليل واجهة برمجة تطبيقات الإدارة الرسمي .
على سبيل المثال، احسب حدًا زمنيًا قبل 30 يومًا وقم بمسح ذاكرة التخزين المؤقت البعيدة الأقدم من ذلك:
export SYNAPSE_ADMIN_TOKEN='your-admin-token'
CUTOFF_MS=$(( $(date -d '30 days ago' +%s) * 1000 ))
curl -sS -X POST -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/purge_media_cache?before_ts=$CUTOFF_MS"
يتضمن الرد deletedعدادًا. يعتمد الحد الزمني على آخر وصول، وليس فقط على وقت تعديل الملف. اختر فترة زمنية تتناسب مع مدى تصفح المستخدمين للملفات القديمة. لا يمكن استعادة المحتوى البعيد المحذوف إلا إذا كان الخادم الأصلي لا يزال يوفره.
4. تعامل مع الوسائط المحلية كبيانات دائمة ما لم تكن لديك سياسة للاحتفاظ بها
تختلف الوسائط المحلية. فقد تم تحميلها إلى خادمك المنزلي، لذا فإن حذفها قد يؤدي إلى تلف المرفقات أو الصور أو أي مراجع أخرى متعلقة بملفات MXC بشكل دائم. قبل حذف الوسائط المحلية دفعة واحدة، يُرجى معاينة العناصر التمثيلية أو وسائط المستخدم من خلال واجهة برمجة تطبيقات الإدارة.
للاستعلام عن عنصر إعلامي معين:
curl -sS -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/media/example.org/MEDIA_ID"
قد تتضمن الاستجابة معلومات مثل media_lengthنوع MIME وحالة الحجر الصحي. يُحدد دليل واجهة برمجة تطبيقات إدارة الوسائط الرسمي هذه الحقول وعمليات الحذف المدعومة.created_tslast_access_ts
التعليق: استعلم عن بيانات الوسائط الوصفية قبل تطبيق قواعد الحذف بحيث تستند قرارات العمر والحجم إلى سجلات Synapse بدلاً من الطوابع الزمنية لنظام الملفات.
يمكن لبرنامج Synapse حذف الوسائط المحلية حسب تاريخ آخر وصول، ويمكن حذفها أيضاً حسب الحجم:
CUTOFF_MS=$(( $(date -d '180 days ago' +%s) * 1000 ))
curl -sS -X POST -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/media/delete?before_ts=$CUTOFF_MS&size_gt=0&keep_profiles=true"
before_tsهو طابع زمني يونكس بالمللي ثانية ويشير إلى آخر وصول. size_gtهو حد بايت؛ قيمته الافتراضية صفر. keep_profiles=trueهو الإعداد الافتراضي ويحافظ على الوسائط التي لا تزال تُستخدم كصور شخصية أو صور غرف. احتفظ بهذه الحماية ما لم يكن لديك سبب محدد لإزالة تلك الصور.
يمكنك أيضًا عرض أو حذف الوسائط التي حمّلها مستخدم محلي محدد /_synapse/admin/v1/users/<user_id>/media. يُفيد هذا الأمر عندما يكون حساب واحد مسؤولاً عن نمو غير معتاد. راجع وثائق واجهة برمجة تطبيقات إدارة المستخدمين قبل استخدام عملية الحذف، وخاصةً معلمات الترتيب والحد.
5. منع متجر الوسائط من ملء القرص مرة أخرى
تفعيل الاحتفاظ التلقائي بالوسائط
يوفر برنامج Synapse ميزة التحكم المستمر media_retention. مثال على ذلك، بناءً على تنسيق التكوين الرسمي:
media_retention:
local_media_lifetime: 180d
remote_media_lifetime: 30d
تُصبح الوسائط قابلةً للحذف عندما لا يتم الوصول إليها خلال فترة صلاحيتها المحددة. إذا لم يتم الوصول إليها مطلقًا، يستخدم Synapse وقت إنشائها. تُحذف كل من النسخة الأصلية والصور المصغرة. إذا تم حذف فترة صلاحية أي منهما أو تعيينها إلى قيمة فارغة، فلن يتم حذف تلك الفئة تلقائيًا.
اختر القيمة المحلية بحذر: على عكس ذاكرة التخزين المؤقت البعيدة، لا يمكن استعادة الوسائط المحلية المحذوفة بمجرد طلب النسخة الأصلية من خادم منزلي آخر. لا تُحذف الوسائط المعزولة تلقائيًا، كما تُستثنى الوسائط المحلية المحمية وفقًا لوثائق التكوين.
استخدم أدوات التحكم في التحميل لتحقيق النمو المستقبلي
max_upload_sizeيُقيّد النظام كل عملية تحميل على حدة، ولكنه لا يفرض حدًا أقصى لحجم المستودع الإجمالي. كما يدعم برنامج Synapse الحالي media_upload_limitsتحديد حجم البيانات التي يُمكن للمستخدم تحميلها خلال فترات زمنية مُحددة. تُقلل هذه الضوابط من نمو المستودع، ولكنها لا تُغني عن مراقبة الاحتفاظ بالبيانات أو سعة التخزين.
ضع في اعتبارك الاستعانة بمزود خدمة تخزين عندما يكون نظام الملفات المحلي هو عنق الزجاجة
يدعم Synapse ميزة media_storage_providersنقل الوسائط إلى مجلد آخر، بما في ذلك موفر نظام ملفات يسمح بذلك. يُفيد هذا عند وجود وحدة تخزين أو طبقة تخزين مخصصة. يُعد هذا تغييرًا في بنية التخزين، وليس إجراءً طارئًا للتنظيف، لذا يُنصح باختبار النسخ الاحتياطية، والأذونات، ووصول العاملين، وسلوك الاسترداد قبل نقل وسائط الإنتاج.
التحقق بعد التنظيف
بعد أي عملية تنظيف، تحقق من كل من السعة وسلوك التطبيق:
df -h
du -sh /path/to/media_store
du -sh /path/to/media_store/* 2>/dev/null | sort -h
- افتح مرفقًا تم تحميله محليًا مؤخرًا في برنامج Matrix.
- افتح مرفقًا عن بُعد قديمًا وتأكد من إمكانية جلبه مرة أخرى.
- تحقق من سجلات Synapse بحثًا عن أخطاء في media-worker أو نظام الملفات.
- إذا كنت تستخدم عمال وسائط مخصصين، فتأكد من توجيه طلبات واجهة برمجة تطبيقات الإدارة إلى عامل مستودع الوسائط. توضح وثائق عامل Synapse نقاط نهاية الإدارة الخاصة بالوسائط التي يجب معالجتها هناك.
- سجل حجم متجر الوسائط بعد التنظيف وقارنه مرة أخرى بعد عدة أيام لقياس معدل النمو الفعلي.
مرجع سريع للقرارات
| ما هو الشيء الكبير؟ | الاستجابة المفضلة | الخطر الرئيسي |
remote_content/remote_thumbnail | قم بمسح ذاكرة التخزين المؤقت البعيدة حسب آخر وقت وصول؛ ثم قم بتعيينها remote_media_lifetime. | يجب إعادة تنزيل الوسائط القديمة وقد لا تكون متاحة إذا لم يعد المصدر يقدمها. |
local_content/local_thumbnails | حدد قاعدة الاحتفاظ الخاصة بالأعمال، وافحص بيانات الوسائط الوصفية، ثم استخدم واجهات برمجة تطبيقات إدارة الوسائط المحلية. | يُعدّ حذف المحتوى المُستضاف على خادمك نهائياً. |
| ذاكرة التخزين المؤقت لمعاينة عنوان URL | تأكد من سلوك معاينة عنوان URL وعملية تنظيف Synapse الحالية قبل التدخل يدويًا. | قد يؤدي حذف الملفات يدويًا من نظام الملفات إلى عدم تزامن البيانات الوصفية المخزنة. |
| جميع الفئات تستمر في النمو | أضف media_retentionعناصر تحكم التحميل، أو المراقبة، أو مساحة تخزين وسائط مخصصة. | إن عملية التنظيف وحدها لا تؤدي إلا إلى تأخير حادثة الطاقة الاستيعابية التالية. |
الخلاصة
عندما يمتلئ القرص بمستودع وسائط Matrix Synapse، حدد أولاً نوع الوسائط المسؤول. عادةً ما تكون ذاكرة التخزين المؤقت البعيدة هي الخيار الأمثل في البداية، لأن Synapse يمتلك واجهة برمجة تطبيقات مخصصة للتنظيف، ويمكنه عادةً استعادة المحتوى مرة أخرى. أما الوسائط المحلية، فتحتاج إلى سياسة أكثر صرامة، لأنها قد تكون النسخة الوحيدة من المرفق على الخادم. بمجرد استعادة المساحة المطلوبة، قم بضبط media_retentionومراقبة معدل نمو مخزن الوسائط، بحيث يصبح التنظيف عملية صيانة دورية وليست طارئة.