По умолчанию Matrix Synapse устанавливает лимит загрузки файлов в 20 MB. При попытке загрузить файл большего размера появляется ошибка: «Этот файл слишком большой для загрузки. Лимит размера файла составляет 20 MB«.
Откройте файл конфигурации Synapse:
nano ./data/synapse/homeserver.yaml
Найдите параметр max_upload_size и измените его значение:
max_upload_size: "200M" # Было: "20M"
<note tip> Рекомендуемые значения:
</note>
Откройте конфигурацию Element Web:
nano ./data/element/config.json
Добавьте параметр max_upload_size в конец файла (перед закрывающей скобкой):
{
"default_server_config": {
...
},
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx",
"max_upload_size": 209715200
}
<note important> Важно! Не забудьте добавить запятую после предыдущего параметра!
Значение указывается в байтах:
</note>
Если вы используете Nginx Proxy Manager:
syna.digitizepro.tech)client_max_body_size 200M; proxy_request_buffering off;
Выполните перезапуск всех контейнеров:
cd /path/to/matrix/ docker compose down docker compose up -d
Проверьте статус контейнеров:
docker compose ps
<note warning> Обязательный шаг! Браузер кэширует настройки клиента. </note>
Выберите один из вариантов:
docker compose exec synapse_app cat /data/homeserver.yaml | grep max_upload_size
Должно вывести:
max_upload_size: "200M"
docker compose logs synapse_app | grep -i upload docker compose logs element_web | tail -20
| Размер | Байты | Применение |
|---|---|---|
| 50 MB | 52428800 | Минимальный комфортный лимит |
| 100 MB | 104857600 | Рекомендуется для повседневного использования |
| 200 MB | 209715200 | Оптимальный вариант для большинства случаев |
| 500 MB | 524288000 | Для обмена большими файлами |
| 1 GB | 1073741824 | Максимальный рекомендуемый лимит |
Проверьте все три места где установлен лимит:
homeserver.yaml → параметр max_upload_sizeconfig.json (Element Web) → параметр max_upload_sizeclient_max_body_size
Большие файлы занимают много места в /data/media_store. Проверьте свободное место:
df -h du -sh ./data/synapse/media_store
Проверьте:
<note tip> Автоматическая очистка старых медиа
Добавьте в homeserver.yaml:
retention: enabled: true default_policy: min_lifetime: 1d max_lifetime: 30d retention_purge_jobs: - shortest_max_lifetime: 1d longest_max_lifetime: 30d interval: 12h
Это автоматически удалит файлы старше 30 дней. </note>
Для ручной очистки файлов старше 30 дней:
docker compose exec synapse_app curl -X POST \ -H "Authorization: Bearer <admin_token>" \ "http://localhost:8008/_synapse/admin/v1/media/syna.digitizepro.tech/delete?before_ts=$(date -d '30 days ago' +%s)000"
<note>Замените <admin_token> на ваш токен администратора</note>