Настройка Object Storage
S3 (AWS SDK v3)
Пример настройки при использовании Yandex Object Storage
"s3":{
"access_key":"YCAJEZZ2WQyqGTL**********",
"secret_key":"YCPC1C9iW_LJLc7bMvgY9LiCl4O6vC**********",
"bucket":"s3-v3-pruffme",
"endpoint":"https://storage.yandexcloud.net",
"public_prefix":"https://storage.yandexcloud.net/s3-v3-pruffme/",
"region":"ru-central1",
"extensions": [
"png",
"jpeg",
"jpg",
"pdf",
"docx",
"doc",
"xlsx",
"xls",
"pptx",
"ppt",
"mp4",
"mp3"
]
},
Описание параметров
Параметр | Описание | Тип данных |
---|---|---|
access_key | Идентификатор доступа пользователя. Используется вместе с секретным ключом для аутентификации запросов к хранилищу | Строка |
secret_key | Секретный ключ пользователя. Выступает в паре с идентификатором доступа для создания подписанных запросов | Строка |
bucket | Название контейнера, который используется для хранения данных | Строка |
endpoint | URL-адрес сервиса хранилища | Строка |
public_prefix | Находится в начале ссылки на файл, когда генерируется URL. Обычно это путь к bucket | Строка |
region | Регион, в котором расположено хранилище | Строка |
extensions | Список расширений файлов, которые поддерживаются для хранения. Это позволяет ограничить типы файлов, которые могут быть загружены | Строка |
S3 (AWS SDK v2)
Пример настройки при использовании MinIO и второй версии AWS SDK
"s3":{
"version": 2,
"access_key": "tQemfrt5ne**********",
"secret_key": "8zeNaP0z3m5fAKs8vcrWOorjN2pGax**********",
"bucket": "pruffme",
"endpoint": "https://editboard.mycorp.com:9000",
"region": "ru-1",
"public_prefix": "https://editboard.mycorp.com:9000/pruffme/",
"s3ForcePathStyle": true,
"apiVersion": "latest"
},
Описание параметров
Параметр | Описание | Тип данных |
---|---|---|
version | Указывает версию AWS SDK | Число |
access_key | Идентификатор доступа пользователя. Используется вместе с секретным ключом для аутентификации запросов к хранилищу | Строка |
secret_key | Секретный ключ пользователя. Выступает в паре с идентификатором доступа для создания подписанных запросов | Строка |
bucket | Название контейнера, который используется для хранения данных | Строка |
endpoint | URL-адрес сервиса хранилища | Строка |
public_prefix | Находится в начале ссылки на файл, когда генерируется URL. Обычно это путь к bucket | Строка |
region | Регион, в котором расположено хранилище | Строка |
s3ForcePathStyle | Параметр, указывающий на необходимость использования старого стиля формирования путей к объектам в S3 | Логический |
apiVersion | Версия API, которую следует использовать при работе с S3 | Строка |
LocalFolder
При данном варианте использования объектного хранилища, файлы можно сохранять непосредственно в локальной папке.
"s3":{
"type":"localfolder",
"storage_dir":"/storage",
"public_prefix":"https://editboard.mycorp.com/storage/",
"skiphttp": true,
"extensions":[
"png","jpeg","jpg",
"pdf",
"docx","doc","xlsx","xls",
"pptx","ppt",
"mp4","mp3"
]
},
Особенности использования
Изменение в конфигурации nginx
Добавить в раздел server
для порта 443
\
location /storage {
alias /storage;
try_files $uri $uri/ /index.html;
}
Изменения команды запуска Docker:
docker run -it \
--rm \
-p 443:443 \
-e TZ=Europe/Moscow \
-v /editboard-conf:/conf \
-v /editboard-logs/nginx:/var/log/nginx \
-v /editboard-logs/app:/root/.pm2/logs \
-v /mnt/editboard-storage:/storage \
--name editboard docker-registry.pruffme.com/editboard:latest
Описание параметров
Параметр | Описание | Тип данных |
---|---|---|
type | Параметр, который указывает на режим использования объектного хранилища в режиме локальной папки. Специфичен и используется только для LocalFolder | Строка |
storage_dir | Путь к папке в которую сохраняются файлы. Специфичен и используется только для LocalFolder | Строка |
public_prefix | Находится в начале ссылки на файл, когда генерируется URL. Обычно это путь к bucket | Строка |
skiphttp | Изменяет механику проверки работоспособности хранилища | Логический |
extensions | Список расширений файлов, которые поддерживаются для хранения. Это позволяет ограничить типы файлов, которые могут быть загружены | Строка |
Новые параметры для версии 1.8.0 и выше
"s3":{
"acl": "public-read",
...
},
Параметр | Описание | Тип данных |
---|---|---|
acl | Access Control List Bucket. public-read - устанавливает разрешение на чтение для всех пользователей |
Строка |
Возможные ошибки при настройке
Ошибка чтения из Object Storage
Описание ситуации
- Пользователь может загружать изображения и файлы на доску, но они не открываются.
- Ссылки сформированы корректно.
- Файлы не открываются по прямой ссылке.
Решение: в настройках бакета установить для анонимного доступа префикс / с правами на чтение
Невалидная ссылка на файлы и изображения
Описание ситуации
- Пользователь может загружать изображения и файлы на доску, но они не открываются.
- В MinIO в бакете на анонимный доступ есть префикс / на ro и выше.
Решение: проверить пути в MongoDB. Для загруженных файлов пути можно увидеть в коллекции user_media
; для шаблонов dashboard_templates
Подробнее о том, как формируется ссылка
Как происходит склейка URL изображения\файла, которое использует приложение
public_prefix
+ ${MODULE_PARTNER_NAME}
+ ids_path
+ file_name
Например:
public_prefix
+ ${MODULE_PARTNER_NAME}
+ ids_path
+ file_name
Пути до файлов шаблонов прописываются во время установки, поэтому если имя бакета было изменено, то нужно:
- изменить их в базе через запрос;
- удалить базу и запустить приложение в режиме установки. После этого сделать стандартный запуск.
Не загружаются файлы (версия 1.8.11)
Пример конфигурации nginx.conf
при обновлении на 1.8.11 с предыдущих версий приложения.
Основные изменения, которые необходимо внести в nginx.conf
приложения:
server {
...
location / {
...
add_header 'Access-Control-Allow-Headers' 'Range,Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With,X-File-Name,source-origin,presentation,dashboard,position,parent,unconvertable,sid,hash,participant,owner,webinar,action,media,token,type';
...