# Интеграция с Selectel


Интеграция с Selectel позволяет хранить видео в вашем собственном объектном хранилище S3 в Selectel. Kinescope продолжает делать всё остальное — принимает загрузку, транскодирует, готовит превью, шифрует по DRM и раздаёт видео через свою CDN, но сами файлы физически лежат в вашем бакете. За хранение вы платите Selectel напрямую по его тарифу, в счёте Kinescope этот объём не учитывается.

## Кому подходит эта статья

* **Клиентам с инфраструктурой в Selectel** — нужно держать видео в том же облаке, что и остальные сервисы, без двойных расходов на хранение
* **Компаниям с требованиями к географии данных** — требуется, чтобы файлы физически лежали в конкретном регионе России
* **Администраторам и владельцам биллинга** — нужно контролировать доступ к хранилищу, политики и отдельный счёт от Selectel
* **Тем, кто оптимизирует стоимость** — хранение по тарифам Selectel вместо тарифа Kinescope за гигабайты

## Что даёт интеграция

* **Видео в вашем бакете.** Новые загрузки складываются напрямую в объектное хранилище Selectel, доступ к нему остаётся под вашим контролем.
* **Обработка на стороне Kinescope.** Транскодирование, подготовка HLS, превью, субтитры, [DRM-шифрование](https://docs.kinescope.ru/zashita-kontenta/drm-shifrovanie-faylov/) и [аналитика](https://docs.kinescope.ru/katalog-i-upravlenie-video/analitika/) работают как обычно.
* **Доставка через CDN Kinescope.** CDN читает файлы из вашего бакета и кеширует их, поэтому на каждый просмотр запрос в Selectel не уходит. Зритель не замечает разницы.
* **Отдельный биллинг.** За хранение файлов вы платите Selectel напрямую, в счёте Kinescope этот объём не учитывается.
* **Выбор региона.** Бакет создаётся в нужном регионе Selectel: Санкт-Петербург, Москва или Новосибирск.

> **Информация:**

Интеграция доступна на всех платных тарифах Kinescope. Подключить и настроить её могут пользователи с ролью **администратор** или **биллинг** — остальные участники команды видят статус подключения, но не могут его изменить. О ролях — в статье [«Управление правами доступа в команде»](https://docs.kinescope.ru/rabota-v-komande/upravlenie-pravami-dostupa-v-komande/).



## Что понадобится

* Аккаунт в [Selectel](https://selectel.ru/) с доступом к созданию бакетов и сервисных пользователей
* Бакет объектного хранилища класса **Standard** в нужном регионе
* Сервисный пользователь с S3-ключом (Access Key ID и Secret Access Key) и правами на чтение и запись в этот бакет
* Права администратора или биллинга в аккаунте Kinescope

> **Внимание:**

**Поддерживается только класс хранения Standard.** Классы **Cold** и **Ice** не подходят: у них задержка чтения объекта достигает минут, что несовместимо с раздачей видео через CDN. Бакет с классом Cold или Ice не пройдёт проверку подключения. Изменить класс у созданного бакета нельзя — понадобится создать новый.



## Шаг 1. Создайте бакет в Selectel

1. Войдите в [панель управления Selectel](https://my.selectel.ru/) и откройте раздел **«Объектное хранилище»** (**Products → S3**).
2. Перейдите на вкладку **«Бакеты»** и нажмите **«Создать бакет»**.
3. Задайте **имя бакета**. Оно должно быть уникальным внутри пула и содержать только строчные латинские буквы, цифры, точки и дефисы.
4. Выберите **регион и пул** — там, где физически будут храниться видео:

   | Регион | Пулы Selectel |
   | --- | --- |
   | Санкт-Петербург | ru-1, ru-3, ru-9 |
   | Москва | ru-2, ru-7 |
   | Новосибирск | ru-8 |

   Актуальный список пулов и адреса дата-центров смотрите в [документации Selectel](https://docs.selectel.ru/control-panel-actions/infrastructure/). В форме подключения Kinescope доступны те пулы, которые поддерживает интеграция.
5. В **классе хранения** выберите **Standard**. Cold и Ice не поддерживаются.
6. **Тип адресации** оставьте рекомендованный Selectel **vHost-style** — он совместим с S3 API. Изменить его после создания бакета нельзя.
7. Нажмите **«Создать бакет»**.

## Шаг 2. Создайте сервисного пользователя и S3-ключ

Kinescope обращается к хранилищу по протоколу S3, поэтому нужен отдельный сервисный пользователь с ключом доступа — не логин от панели Selectel.

1. В панели Selectel откройте раздел **«Управление доступом» → «Пользователи»** (IAM).
2. Создайте **сервисного пользователя** и укажите проект, в котором создан бакет.
3. Выдайте пользователю права на бакет. Достаточно роли уровня S3:
   * `s3.admin` — управление всеми бакетами проекта, самый простой вариант;
   * `s3.bucket.user` или `s3.user` — доступ только к конкретному бакету; в этом случае дополнительно настройте политику доступа бакета, разрешающую чтение и запись объектов.

   Подробнее о ролях и политиках — в [документации Selectel](https://docs.selectel.ru/s3/about/manage-access/), раздел «Управлять доступом к S3».
4. В настройках сервисного пользователя откройте вкладку с ключами доступа и создайте **S3-ключ (EC2)**.
5. Скопируйте **Access Key ID** и **Secret Access Key**.

> **Внимание:**

**Secret Access Key показывается только один раз** — в момент создания ключа. Сохраните его в надёжном месте: посмотреть значение позже в панели Selectel не получится, ключ придётся выпустить заново.



## Шаг 3. Подключите интеграцию в Kinescope

1. Откройте раздел **«Интеграции»** в [панели управления Kinescope](https://app.kinescope.io/integrations) и выберите **Selectel**.
2. Нажмите **«Подключить»** — откроется форма с настройками подключения.
3. Заполните поля:

   | Поле | Что указать |
   | --- | --- |
   | **Локация** | Пул Selectel, в котором создан бакет. Должен совпадать с выбранным на шаге 1 |
   | **Access Key ID** | Идентификатор S3-ключа сервисного пользователя |
   | **Secret Access Key** | Секретная часть ключа. После сохранения отображается маской `••••••••` |
   | **Bucket name** | Имя бакета из шага 1 |
   | **Endpoint URL** | Заполняется автоматически из выбранной локации в виде `s3.{пул}.storage.selcloud.ru` и не редактируется |

4. Нажмите **«Проверить подключение»**. Kinescope обратится к бакету, проверит корректность ключей, доступ к бакету и класс хранения.
5. Если проверка прошла успешно, нажмите **«Сохранить»**.

Кнопка **«Сохранить»** активна только после успешной проверки подключения. Если после проверки изменить любое поле, проверку нужно пройти заново. Ключи хранятся в Kinescope в зашифрованном виде и не выводятся в открытом виде никому, включая администраторов.

После сохранения карточка Selectel в разделе «Интеграции» получает статус **«Подключено»**, а вы увидите уведомление о том, что новые видео будут загружаться в ваш бакет.

### Ошибки при проверке подключения

| Сообщение | Причина и что делать |
| --- | --- |
| Неверные ключи доступа | Access Key ID или Secret Access Key указаны с ошибкой либо ключ удалён в Selectel. Проверьте значения или выпустите новый S3-ключ |
| Бакет не найден | В выбранном пуле нет бакета с таким именем или у сервисного пользователя нет к нему доступа. Проверьте имя, пул и роли пользователя |
| Неподдерживаемый класс хранения | Бакет создан с классом Cold или Ice. Создайте новый бакет с классом Standard и укажите его в форме |
| Ошибка сети | Хранилище Selectel временно недоступно. Повторите проверку позже |

## Как работает загрузка после подключения

* **Новые видео.** Любое видео, загруженное после подключения интеграции, физически попадает в ваш бакет в Selectel.
* **Артефакты обработки.** HLS-сегменты, превью и субтитры складываются в тот же бакет.
* **Обработка и доставка.** Транскодирование, DRM и аналитика остаются на стороне Kinescope, зритель получает видео через CDN Kinescope.
* **Ранее загруженные видео.** Всё, что было загружено до подключения, остаётся в хранилище Kinescope и не переносится. Автоматической миграции в этой версии интеграции нет — если нужно перенести медиатеку, напишите в [чат поддержки](https://t.me/kinescope_bot).

> **Внимание:**

Если хранилище Selectel недоступно — ключи отозваны, бакет удалён или есть проблемы с сетью — **загрузка новых видео не проходит**. Kinescope не сохраняет файлы в своё хранилище «втихую»: это защищает клиентов, для которых внешнее хранилище — требование комплайенса или условие биллинга. В карточке интеграции появится статус **«Ошибка»**, а при попытке загрузки — сообщение о недоступности внешнего хранилища. Чтобы вернуть загрузки в хранилище Kinescope, интеграцию нужно отключить явно.



## Как изменить настройки или отключить интеграцию

* **Сменить ключи или бакет.** Откройте настройки интеграции, измените поля, снова пройдите проверку подключения и сохраните.
* **Сменить локацию.** В тех же настройках выберите другой пул — проверка подключения сбросится, её нужно пройти заново. Видео, уже загруженные в прежний бакет, продолжают раздаваться через CDN Kinescope, пока вы не удалите бакет в Selectel.
* **Отключить интеграцию.** Нажмите **«Отключить»** в настройках и подтвердите действие. Новые видео снова будут загружаться в хранилище Kinescope, а файлы, лежащие в Selectel, остаются доступными для просмотра до тех пор, пока бакет существует.

## Частые вопросы

{{< faq >}}
{{< faq-item id="selectel-storage-class" q="Почему поддерживается только класс Standard?" >}}
Классы Cold и Ice предназначены для редкого доступа: чтение объекта из Ice занимает минуты. Видео раздаётся через CDN и требует быстрого доступа к сегментам, поэтому подключение бакета с классом Cold или Ice отклоняется на этапе проверки. Класс у существующего бакета изменить нельзя — создайте новый бакет с классом Standard.
{{< /faq-item >}}

{{< faq-item id="selectel-migration" q="Перенесутся ли видео, загруженные до подключения?" >}}
Нет. Интеграция действует только на новые загрузки, а ранее загруженные видео остаются в хранилище Kinescope и продолжают работать как обычно. Инструмент миграции появится в следующих версиях; пока перенос возможен через [поддержку](https://t.me/kinescope_bot).
{{< /faq-item >}}

{{< faq-item id="selectel-disconnect" q="Что произойдёт с видео после отключения интеграции?" >}}
Новые загрузки вернутся в хранилище Kinescope, а видео, которые уже лежат в Selectel, останутся доступны зрителям через CDN Kinescope, пока вы не удалите бакет или объекты в нём.
{{< /faq-item >}}

{{< faq-item id="selectel-multiple-buckets" q="Можно ли подключить несколько бакетов?" >}}
Нет, на один аккаунт Kinescope подключается один бакет Selectel, и настройка действует на всё пространство целиком — выбрать хранилище для отдельного проекта или папки нельзя. Чтобы перейти на другой бакет, отключите интеграцию и подключите новый.
{{< /faq-item >}}

{{< faq-item id="selectel-billing" q="Кому платить за хранение?" >}}
За хранение файлов вы платите Selectel напрямую по его тарифам — в счетах Kinescope этот объём не отображается.
{{< /faq-item >}}

{{< faq-item id="selectel-other-s3" q="Поддерживаются ли другие S3-хранилища?" >}}
Пока интеграция работает только с объектным хранилищем Selectel. Поддержка других S3-совместимых провайдеров рассматривается отдельно — расскажите о своём кейсе в [чате поддержки](https://t.me/kinescope_bot).
{{< /faq-item >}}
{{< /faq >}}

## Что дальше?

После подключения хранилища рекомендуем:

1. **[Загрузить видео](https://docs.kinescope.ru/nachalo-raboty/sozdanie-pervogo-proekta-i-zagruzka-faylov/)** — проверьте на одном файле, что загрузка проходит и видео воспроизводится
2. **[Организовать медиатеку](https://docs.kinescope.ru/katalog-i-upravlenie-video/organizatsiya-mediateki-v-kinescope/)** — разложите новые видео по проектам и папкам
3. **[Настроить защиту контента](https://docs.kinescope.ru/zashita-kontenta/)** — включите DRM-шифрование, водяные знаки и ограничения по доменам
4. **[Посмотреть аналитику](https://docs.kinescope.ru/katalog-i-upravlenie-video/analitika/)** — отслеживайте просмотры и вовлечённость зрителей

Если остались вопросы, напишите в [чат поддержки](https://t.me/kinescope_bot) — специалисты помогут!

