====== Изменение лимита размера загружаемых файлов в Matrix Synapse ====== ===== Описание проблемы ===== По умолчанию Matrix Synapse устанавливает лимит загрузки файлов в 20 MB. При попытке загрузить файл большего размера появляется ошибка: **"Этот файл слишком большой для загрузки. Лимит размера файла составляет 20 MB"**. ===== Требования ===== * Docker и Docker Compose * Доступ к конфигурационным файлам Matrix Synapse * Права на редактирование файлов и перезапуск контейнеров * Nginx Proxy Manager (если используется) ===== Пошаговая инструкция ===== ==== Шаг 1: Изменить лимит в homeserver.yaml ==== Откройте файл конфигурации Synapse: nano ./data/synapse/homeserver.yaml Найдите параметр ''max_upload_size'' и измените его значение: max_upload_size: "200M" # Было: "20M" **Рекомендуемые значения:** * Для обычного использования: 100M - 200M * Для обмена большими файлами: 500M - 1G * Не рекомендуется ставить больше 2G ==== Шаг 2: Изменить лимит в Element Web ==== Откройте конфигурацию 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 } **Важно!** Не забудьте добавить запятую после предыдущего параметра! Значение указывается в **байтах**: * 100 MB = 104857600 * 200 MB = 209715200 * 500 MB = 524288000 * 1 GB = 1073741824 ==== Шаг 3: Настроить Nginx Proxy Manager ==== Если вы используете Nginx Proxy Manager: - Откройте **Nginx Proxy Manager** в браузере - Перейдите в **Proxy Hosts** - Найдите хост для вашего Matrix сервера (например, ''syna.digitizepro.tech'') - Перейдите на вкладку **Advanced** - Добавьте в **Custom Nginx Configuration**: client_max_body_size 200M; proxy_request_buffering off; - Нажмите **Save** ==== Шаг 4: Перезапустить контейнеры ==== Выполните перезапуск всех контейнеров: cd /path/to/matrix/ docker compose down docker compose up -d Проверьте статус контейнеров: docker compose ps ==== Шаг 5: Очистить кеш браузера ==== **Обязательный шаг!** Браузер кэширует настройки клиента. Выберите один из вариантов: * Нажмите **Ctrl+Shift+R** (жёсткая перезагрузка) * Откройте DevTools (F12) → правой кнопкой на кнопку обновления → **Очистить кэш и жёсткая перезагрузка** * Откройте сайт в **приватном окне** браузера * Очистите весь кеш браузера: **Ctrl+Shift+Delete** ===== Проверка настроек ===== ==== Проверить конфигурацию 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 | Максимальный рекомендуемый лимит | ===== Возможные проблемы ===== ==== Ошибка всё ещё появляется ==== Проверьте все три места где установлен лимит: - ''homeserver.yaml'' → параметр ''max_upload_size'' - ''config.json'' (Element Web) → параметр ''max_upload_size'' - Nginx Proxy Manager → ''client_max_body_size'' ==== Недостаточно места на диске ==== Большие файлы занимают много места в ''/data/media_store''. Проверьте свободное место: df -h du -sh ./data/synapse/media_store ==== Медленная загрузка файлов ==== Проверьте: * Скорость интернет-соединения * Нагрузку на сервер * Настройки таймаутов в Nginx ===== Дополнительные рекомендации ===== **Автоматическая очистка старых медиа** Добавьте в ''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 дней. ===== Ручная очистка медиа ===== Для ручной очистки файлов старше 30 дней: docker compose exec synapse_app curl -X POST \ -H "Authorization: Bearer " \ "http://localhost:8008/_synapse/admin/v1/media/syna.digitizepro.tech/delete?before_ts=$(date -d '30 days ago' +%s)000" Замените '''' на ваш токен администратора ===== Ссылки ===== * [[https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html|Официальная документация Synapse]] * [[https://github.com/vector-im/element-web/blob/develop/docs/config.md|Документация Element Web]] ---- **Дата создания:** 2024-12-13