Перейти к содержанию
Форум Радиодар

Добавляем дешевое хранилище S3 к видео площадке Peertube


omega80

Рекомендуемые сообщения

Ввиду нерационального использования дорогостоящей NVMe на сервере решили подключить хранилище типа Amazon S3, но на российских хостингах.

Из большого количество хостингов, которые применяем в нашем проекте для этих целей отлично подошел timeweb.ru (реферальная ссылка) - при регистрации по ссылке Вам будет начислено 2000 руб.:

+ одна из самых низких цен на хранилище в России

+ размещение S3 хранилищ в том же дата центре, что и сервера 

- ограничение на максимальный объем 2Тб (будем делать единый массив из нескольких S3 и это не будет проблемой)

Таким образом переходим к оформлению хранилища S3 - можно сперва для опытов взять самый минимальный на 10Gb за 75 руб:

Рис.1

Получаем отдельные 10 Гигабайт в облаке (можно также сделать собственное облако для себя, а не платить яндекс.диску - намного выгоднее).

В настрояках бакета нам необходима информация для подключение нашего хранилища к нашей видеоплощадке:

адрес бакета (хранилища)

ключи (public и secret)

Теперь подключаем к нашему видеопорталу на Peertube новое хранилище S3:

sudo apt install s3fs

*рекомендуется использовать версию не ниже 1.90 (по умолчанию именно она и устанавливается в Debian 12, если у вас более ранние выпуски - необходимо отдельно скомпилировать под вашу версию)

Далее вносим данные для подключения в конфигурационный файл S3:

echo <Access Key>:<Secret Access Key> >  ~/.passwd-s3fs

Теперь ограничиваем доступ к файлу с информацией для подключения к нашему S3 для остальных:

chmod 600  ~/.passwd-s3fs

Теперь подключаем наше хранилище к каталогу peertube:

s3fs <имя бакета> /mnt/s3/ -o use_path_request_style -o url=https://s3.timeweb.com -o passwd_file=~/.passwd-s3fs

*применяйте ваши данные для бакета и каталогов, например:

s3fs a1b2c3-a1b2c3-a1b2c3-a1b2c3-a1b2c3-a1b2c3 /var/www/peertube/storage/S3/ -o use_path_request_style -o url=https://s3.timeweb.cloud -o passwd_file=~/.passwd-s3fs

Теперь хранилище будет доступно по адресу:

Проверяем через MC доступность нашего нового каталога (можно создать на S3 файл с названием "test" и убедиться в его доступности из под bash на сервере.

Но это только до перезагрузки сервера. Чтобы у нас производилось автоматическое монтирование при каждом запуске сервера необходимо добавить монтирование каталога S3 в автозагрузку "/etc/fstab" (для Debian 12):

s3fs#<имя бакета> /mnt/s3 fuse _netdev,allow_other,use_path_request_style,url=https://s3.timeweb.com,passwd_file=/root/.passwd-s3fs 0 0

*обращаемся внимание на пути монтирования и путь расположения файла с паролями! Многие делают ошибку именно в адресе пароля (добавляют в автозагрузку от root, а у него другой адрес домашнего каталога)

 

 

Полезные источники:

1) Инструкция по настройке хранилища S3 (документация на официальном сайте хостинга timeweb.ru)

2) 

Ссылка на комментарий
Поделиться на другие сайты

Спустя ровно 10 дней после подключения S3 хранилища через создание символьной ссылки перестали открываться видео файлы, которые размещены на S3 хранилище. Если файл переконвертировать в web (он помещается в физический каталог на сервере) - такие видео будут доступны.

Обращение в техническую поддержку не дало результатов (более суток переписки).

Пока решается вопрос с предоставлением нам статистики использования нашего хранилища S3 (может все-таки есть лимиты на трафик/перезапись)  решили сделать подключение внешнего хранения согласно официальной инструкции peertube:

Ссылка на комментарий
Поделиться на другие сайты

Достаточно оперативно ответила техподдержка, пробуем применить политики:

1) Установим пакет работы с AWS:

sudo apt install awscli -y

Проверяем установленную версию:

aws --version

Теперь настроим AWS:

aws configure

На предложения вбиваем данные нашего бакета:

AWS Access Key ID [None]: <Access Key>
AWS Secret Access Key [None]: <Secret Access Key>
Default region name [None]: ru-1
Default output format [None]: json

где "

2) Создаем из под пользователя peertube файл cors.json (прям в корневом для peertube каталоге) и вставляем в него:

{
  "CORSRules": [
	{
  	"AllowedHeaders": ["*"],
  	"AllowedMethods": ["GET", "HEAD"],
  	"AllowedOrigins": ["*"]
	}
  ]
}

3) Подключаем наш файл к бакету S3:

aws s3api put-bucket-cors --bucket ИМЯ_БАКЕТА --endpoint-url https://s3.timeweb.cloud --cors-configuration file://cors.json

где "ИМЯ_БАКЕТА" - ваш код бакета (длинный код, имя контейнера)

Теперь можно проверить наши правила:

aws s3api get-bucket-cors --bucket ИМЯ_БАКЕТА --endpoint-url https://s3.timeweb.cloud

В терминалку система выдаст содержимое нашего файла из пункта 2

 

Источники:

1) Настройка CORS для доступа к объектам S3 (документация хостинга timeweb.cloud)

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Статистика пользователей

    229
    Пользователей
    299
    Максимум онлайн
    AlbertVap
    Новый пользователь
    AlbertVap
    Регистрация
×
×
  • Создать...