vm:matrix:02-max_upload_size

Изменение лимита размера загружаемых файлов в Matrix Synapse

По умолчанию Matrix Synapse устанавливает лимит загрузки файлов в 20 MB. При попытке загрузить файл большего размера появляется ошибка: «Этот файл слишком большой для загрузки. Лимит размера файла составляет 20 MB«.

  • Docker и Docker Compose
  • Доступ к конфигурационным файлам Matrix Synapse
  • Права на редактирование файлов и перезапуск контейнеров
  • Nginx Proxy Manager (если используется)

Откройте файл конфигурации Synapse:

nano ./data/synapse/homeserver.yaml

Найдите параметр max_upload_size и измените его значение:

homeserver.yaml
max_upload_size: "200M"  # Было: "20M"

<note tip> Рекомендуемые значения:

  • Для обычного использования: 100M - 200M
  • Для обмена большими файлами: 500M - 1G
  • Не рекомендуется ставить больше 2G

</note>

Откройте конфигурацию Element Web:

nano ./data/element/config.json

Добавьте параметр max_upload_size в конец файла (перед закрывающей скобкой):

config.json
{
    "default_server_config": {
        ...
    },
    "map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx",
    "max_upload_size": 209715200
}

<note important> Важно! Не забудьте добавить запятую после предыдущего параметра!

Значение указывается в байтах:

  • 100 MB = 104857600
  • 200 MB = 209715200
  • 500 MB = 524288000
  • 1 GB = 1073741824

</note>

Если вы используете Nginx Proxy Manager:

  1. Откройте Nginx Proxy Manager в браузере
  2. Перейдите в Proxy Hosts
  3. Найдите хост для вашего Matrix сервера (например, syna.digitizepro.tech)
  4. Перейдите на вкладку Advanced
  5. Добавьте в Custom Nginx Configuration:
client_max_body_size 200M;
proxy_request_buffering off;
  1. Нажмите Save

Выполните перезапуск всех контейнеров:

cd /path/to/matrix/
docker compose down
docker compose up -d

Проверьте статус контейнеров:

docker compose ps

<note warning> Обязательный шаг! Браузер кэширует настройки клиента. </note>

Выберите один из вариантов:

  • Нажмите Ctrl+Shift+R (жёсткая перезагрузка)
  • Откройте DevTools (F12) → правой кнопкой на кнопку обновления → Очистить кэш и жёсткая перезагрузка
  • Откройте сайт в приватном окне браузера
  • Очистите весь кеш браузера: Ctrl+Shift+Delete
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 Максимальный рекомендуемый лимит

Проверьте все три места где установлен лимит:

  1. homeserver.yaml → параметр max_upload_size
  2. config.json (Element Web) → параметр max_upload_size
  3. Nginx Proxy Manager → client_max_body_size

Большие файлы занимают много места в /data/media_store. Проверьте свободное место:

df -h
du -sh ./data/synapse/media_store

Проверьте:

  • Скорость интернет-соединения
  • Нагрузку на сервер
  • Настройки таймаутов в Nginx

<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>

  • vm/matrix/02-max_upload_size.txt
  • Последнее изменение: 2025/12/13 14:14
  • admin