Налаштування "Сховище файлів"
Сторінка «Сховище файлів» призначена для конфігурації місця зберігання файлів, що завантажуються у систему. Тут обирається спосіб зберігання — вбудоване сховище системи або власний S3-сумісний сервіс. Це забезпечує збереження документів, фотографій та інших вкладень, прикріплених до клієнтів, замовлень та інших сутностей.
Терміни
- Постачальник сховища — спосіб або сервіс, який використовується для збереження файлів (вбудований або власний S3)
- Вбудоване сховище — хмарне сховище системи з включеним лімітом, готове до роботи без налаштувань
- Власний S3 (BYOD) — підключення власного S3-сумісного сервісу (AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO)
- Access Key ID — публічна частина ключа доступу до вашого S3-сховища
- Secret Access Key — секретна частина ключа доступу, зберігається у зашифрованому вигляді
- Bucket — контейнер (папка верхнього рівня) у S3-сховищі, в якому зберігаються файли
- Region — географічний регіон розташування серверів S3-сховища (наприклад,
eu-central-1) - Endpoint — адреса сервера для S3-сумісних провайдерів, що не є AWS (наприклад, Cloudflare R2, MinIO)
- Тестування з'єднання — перевірка коректності підключення до S3-сховища перед збереженням налаштувань
- Ліміт сховища — максимальний обсяг файлів для вбудованого сховища (5 ГБ на акаунт з можливістю збільшення ліміту за додаткову плату)
- CORS — механізм безпеки браузера, що контролює які сайти можуть надсилати запити до вашого S3-bucket напряму
Загальний огляд
Користувач бачить форму вибору постачальника сховища та відповідні поля конфігурації. У верхній частині доступна кнопка «Зберегти» для користувачів з правом storage.edit. При виборі вбудованого сховища відображається індикатор використання місця з прогрес-баром. При виборі власного S3 відкриваються поля для введення даних підключення та кнопка «Перевірити з'єднання». Праворуч розташована довідкова інформація з інструкцією налаштування для обраного провайдера.
Основні можливості
Вибір постачальника сховища
Користувач може обрати спосіб зберігання файлів з випадаючого списку. Доступні варіанти: «Вбудоване сховище (5 ГБ з можливістю збільшення ліміту за додаткову плату)» та «Власний S3 (BYOD)». Вибір визначає відображення додаткових полів та поведінку системи при завантаженні файлів.
Моніторинг використання вбудованого сховища
При виборі вбудованого сховища відображається поточне використання місця: обсяг зайнятого простору та ліміт. Прогрес-бар наочно показує відсоток заповненості — при досягненні 90% змінює колір на попереджувальний. При перевищенні ліміту завантаження нових файлів буде заблоковано.
Підключення власного S3
При виборі «Власний S3» відкриваються поля для введення даних підключення: Access Key ID, Secret Access Key, Region, Bucket та Endpoint. Поле Endpoint є опційним і використовується лише для провайдерів, що не є стандартним AWS S3 (Cloudflare R2, DigitalOcean Spaces, MinIO). Після успішного тестування поруч з полем Access Key ID з'являється іконка підтвердження.
Тестування з'єднання
Перед збереженням налаштувань власного S3 користувач може перевірити коректність даних підключення кнопкою «Перевірити з'єднання». Система намагається записати та видалити тестовий файл у вказаному bucket та повідомляє про результат. Кнопка зникає після успішного тестування.
Збереження налаштувань
Після вибору постачальника та заповнення необхідних полів користувач натискає «Зберегти» для застосування змін. Secret Access Key зберігається у зашифрованому вигляді та ніколи не повертається у відповіді API — при відображенні замінюється маскою ********. Доступно лише користувачам з правом storage.edit.
Створення ключів доступу
Ключі доступу (Access Key ID та Secret Access Key) не створюються в самому bucket. Вони створюються в сервісі IAM (Identity and Access Management) для конкретного IAM-користувача.
⚠️ Ніколи не використовуйте root-ключі акаунту для підключення до застосунків — це критичний ризик безпеки. Завжди створюйте окремого IAM-користувача з обмеженими правами.
AWS S3 — покрокова інструкція
Крок 1: Створити IAM-політику з обмеженим доступом
- Відкрийте AWS Console → IAM → Policies → Create policy.
- Перейдіть на вкладку JSON та вставте:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::your-bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": ["clients/*"]
}
}
},
{
"Sid": "ObjectOperations",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:GetObjectAttributes"
],
"Resource": "arn:aws:s3:::your-bucket-name/clients/*"
}
]
}
- Замініть
your-bucket-nameна назву вашого bucket. - Натисніть Next, вкажіть назву політики (наприклад
CRM-S3-Access) та Create policy.
Крок 2: Створити IAM-користувача
- Перейдіть IAM → Users → Create user.
- Вкажіть ім'я користувача, наприклад
crm-s3-user. - На кроці Set permissions оберіть Attach policies directly → знайдіть та оберіть щойно створену політику
CRM-S3-Access. - Натисніть Create user.
Крок 3: Створити ключі доступу
- Відкрийте створеного користувача → вкладка Security credentials.
- Прокрутіть до секції Access keys → Create access key.
- Оберіть Application running outside AWS → Next.
- Натисніть Create access key.
- Скопіюйте або завантажте обидва ключі одразу — Secret Access Key показується лише один раз. Якщо втратите — доведеться створювати новий.
Де знаходиться кожен елемент
| Що | Де створюється |
|---|---|
| Access Key ID + Secret Access Key | IAM → Users → Security credentials → Access keys |
| Політика доступу | IAM → Policies → Create policy |
| Сам bucket | S3 → Buckets |
| CORS-налаштування | S3 → ваш bucket → Permissions → CORS |
Cloudflare R2
- Відкрийте Cloudflare Dashboard → R2 → Manage R2 API Tokens.
- Натисніть Create API token.
- Вкажіть назву токена, наприклад
crm-r2-token. - Оберіть права: Object Read & Write для вашого bucket.
- Натисніть Create API Token.
- Скопіюйте Access Key ID та Secret Access Key — вони показуються лише один раз.
- Account ID для Endpoint знаходиться на головній сторінці R2.
DigitalOcean Spaces
- Відкрийте DigitalOcean Dashboard → API → Spaces Keys.
- Натисніть Generate New Key.
- Вкажіть назву ключа та натисніть Generate Key.
- Скопіюйте Key (це Access Key ID) та Secret — Secret показується лише один раз.
- Endpoint для вашого регіону:
https://<region>.digitaloceanspaces.com(наприкладhttps://nyc3.digitaloceanspaces.com).
Покрокові сценарії
Як налаштувати вбудоване сховище
- Відкрийте розділ Налаштування → Сховище файлів.
- У полі Постачальник оберіть Вбудоване сховище.
- Перевірте поточне використання місця на індикаторі.
- Натисніть Зберегти — жодних додаткових налаштувань не потрібно.
Як підключити власний AWS S3
- Відкрийте розділ Налаштування → Сховище файлів.
- У полі Постачальник оберіть Власний S3 (BYOD).
- У консолі AWS створіть IAM-користувача з доступом до S3 та отримайте Access Key ID і Secret Access Key.
- Створіть bucket та вкажіть його назву у полі Bucket.
- Вкажіть Region (наприклад,
eu-central-1). Поле Endpoint залиште порожнім. - Налаштуйте CORS для bucket (див. розділ Налаштування CORS для власного S3).
- Натисніть Перевірити з'єднання та переконайтеся у успішному результаті.
- Натисніть Зберегти для застосування налаштувань.
Як підключити Cloudflare R2
- Відкрийте розділ Налаштування → Сховище файлів.
- У полі Постачальник оберіть Власний S3 (BYOD).
- У панелі Cloudflare R2 створіть API-токен та отримайте Access Key ID і Secret Access Key.
- Створіть bucket та вкажіть його назву у полі Bucket.
- У полі Region вкажіть
auto. - У полі Endpoint вкажіть адресу вашого R2:
https://<ACCOUNT_ID>.r2.cloudflarestorage.com. - Налаштуйте CORS для bucket (див. розділ Налаштування CORS для власного S3).
- Натисніть Перевірити з'єднання та переконайтеся у успішному результаті.
- Натисніть Зберегти для застосування налаштувань.
Як змінити постачальника сховища
- Відкрийте розділ Налаштування → Сховище файлів.
- У полі Постачальник оберіть інший варіант зі списку.
- Заповніть необхідні поля або перевірте індикатор використання місця.
- Натисніть Перевірити з'єднання (для власного S3) та Зберегти.
⚠️ При зміні постачальника вже завантажені файли залишаються на попередньому сховищі. Рекомендується перенести файли до нового сховища перед зміною налаштувань.
Як перевірити з'єднання з власним S3
- Заповніть усі поля даних підключення у формі налаштування.
- Натисніть кнопку Перевірити з'єднання.
- Дочекайтеся результату — система запише та видалить тестовий файл у вашому bucket.
- Якщо тест успішний — з'явиться іконка підтвердження та повідомлення «Перевірка успішна».
- Натисніть Зберегти для застосування налаштувань.
Налаштування CORS для власного S3
Файли завантажуються напряму з браузера в S3 через presigned URL, оминаючи сервер. Браузер надсилає запит безпосередньо до вашого bucket — без CORS він заблокує такі запити з міркувань безпеки.
⚠️ Без правильного CORS завантаження файлів у власний S3 не працюватиме, навіть якщо тестування з'єднання пройшло успішно — тест виконується з сервера, а не з браузера.
AWS S3
- Відкрийте AWS Console → S3 → ваш bucket → Permissions → Cross-origin resource sharing (CORS).
- Натисніть Edit та вставте конфігурацію:
[
{
"AllowedHeaders": ["Content-Type"],
"AllowedMethods": ["PUT"],
"AllowedOrigins": ["https://bims.com.ua"],
"MaxAgeSeconds": 3600
}
]
- Натисніть Save changes.
Cloudflare R2
- Відкрийте Cloudflare Dashboard → R2 → ваш bucket → Settings → CORS Policy.
- Натисніть Add CORS policy та вставте:
[
{
"AllowedHeaders": ["Content-Type"],
"AllowedMethods": ["PUT"],
"AllowedOrigins": ["https://bims.com.ua"],
"MaxAgeSeconds": 3600
}
]
- Натисніть Save.
DigitalOcean Spaces
- Відкрийте DigitalOcean Dashboard → Spaces → ваш bucket → Settings → CORS Configurations.
- Додайте нове правило:
- Origin:
https://bims.com.ua - Allowed Methods:
PUT - Allowed Headers:
Content-Type
- Origin:
- Натисніть Save.
MinIO
Конфігурація CORS встановлюється через CLI:
mc anonymous set-json cors.json your-alias/your-bucket
де cors.json містить:
{
"CORSRules": [
{
"AllowedHeaders": ["Content-Type"],
"AllowedMethods": ["PUT"],
"AllowedOrigins": ["https://bims.com.ua"]
}
]
}
💡 Корисні поради
💡 Перевірка перед збереженням — завжди тестуйте з'єднання кнопкою «Перевірити з'єднання» перед збереженням налаштувань власного S3, щоб уникнути недоступності файлів у системі.
💡 CORS обов'язковий для власного S3 — без налаштування CORS браузер блокує пряме завантаження файлів у bucket. Тестування з'єднання при цьому може пройти успішно, оскільки воно виконується з сервера, а не з браузера.
💡 Права доступу до bucket — для коректної роботи IAM-користувач або API-токен повинні мати права s3:PutObject, s3:GetObject, s3:DeleteObject та s3:ListBucket на вказаний bucket.
💡 Endpoint для не-AWS провайдерів — поле Endpoint заповнюється лише для Cloudflare R2, DigitalOcean Spaces або MinIO. Для стандартного AWS S3 залиште це поле порожнім.
💡 Ліміт вбудованого сховища — при наближенні до ліміту розгляньте можливість збільшення ліміту за додаткову плату або підключення власного S3 або видалення непотрібних файлів. При перевищенні ліміту завантаження нових файлів автоматично блокується.
💡 Безпека ключів — Secret Access Key зберігається у зашифрованому вигляді та ніколи не відображається повністю у формі. При необхідності зміни ключа просто введіть новий — старий буде замінено після збереження.
💡 Вплив на систему — усі зміни постачальника сховища впливають на завантаження нових файлів у всій системі. Вже збережені файли залишаються на попередньому сховищі до їх перенесення.
💡 Файли та коментарі — сховище використовується для файлів прикріплених до клієнтів, замовлень, лідів та інших сутностей системи. Коментарі не зберігаються у сховищі.