Содержание

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

Описание проблемы

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

Требования

Пошаговая инструкция

Шаг 1: Изменить лимит в homeserver.yaml

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

nano ./data/synapse/homeserver.yaml

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

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

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

</note>

Шаг 2: Изменить лимит в Element Web

Откройте конфигурацию 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> Важно! Не забудьте добавить запятую после предыдущего параметра!

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

</note>

Шаг 3: Настроить Nginx Proxy Manager

Если вы используете 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

Шаг 4: Перезапустить контейнеры

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

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

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

docker compose ps

Шаг 5: Очистить кеш браузера

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

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

Проверка настроек

Проверить конфигурацию Synapse

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

Медленная загрузка файлов

Проверьте:

Дополнительные рекомендации

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

Ссылки


Дата создания: 2024-12-13