Jump to content
Форум Радиодар

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


omega80

Recommended Posts

Ввиду нерационального использования дорогостоящей 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) 

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Member Statistics

    239
    Total Members
    299
    Most Online
    GrelenKa
    Newest Member
    GrelenKa
    Joined
×
×
  • Create New...