omega80 Posted September 28 Share Posted September 28 Ввиду нерационального использования дорогостоящей 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 хостинга Теперь ограничиваем доступ к файлу с информацией для подключения к нашему 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 More sharing options...
omega80 Posted September 28 Author Share Posted September 28 Спустя ровно 10 дней после подключения S3 хранилища через создание символьной ссылки перестали открываться видео файлы, которые размещены на S3 хранилище. Если файл переконвертировать в web (он помещается в физический каталог на сервере) - такие видео будут доступны. Обращение в техническую поддержку не дало результатов (более суток переписки). Пока решается вопрос с предоставлением нам статистики использования нашего хранилища S3 (может все-таки есть лимиты на трафик/перезапись) решили сделать подключение внешнего хранения согласно официальной инструкции peertube: Link to comment Share on other sites More sharing options...
omega80 Posted October 2 Author Share Posted October 2 Достаточно оперативно ответила техподдержка, пробуем применить политики: 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 где "AWS Access Key ID" - это ваш код доступа к S3 бакету, а "AWS Secret Access Key" - ключ доступа к S3 бакету. Остальные делаем согласно данным вашего бакета (для timeweb - "Default region name": ru-1. Последний пункт "Default output format" оставляем без изменений - 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now