Установка PeerTube в контейнер Docker на Synology

Всем привет!!!

В этом материале я покажу как установить альтернативный видео хостинг PeerTube на вашем Synology в контейнер Docker. Вы узнаете какие есть особенности и поймете как работает PeerTube.

Введение

PeerTube — это децентрализованная платформа для обмена видео, которая использует технологию peer-to-peer (P2P) для распространения контента. Она была создана как альтернатива централизованным платформам, таким как YouTube, с целью предоставить пользователям больше свободы, конфиденциальности и контроля над своими данными.

Основные особенности PeerTube:

  1. Децентрализация: PeerTube работает на основе сети независимых серверов (инстансов), которые могут быть созданы и управляться разными людьми или организациями. Каждый инстанс может иметь свои правила и модерацию.
  2. P2P-технология: Видео передаются между пользователями через peer-to-peer соединения, что снижает нагрузку на серверы и позволяет экономить ресурсы.
  3. Открытый исходный код: PeerTube является свободным программным обеспечением, что позволяет любому человеку изучать, изменять и улучшать код.
  4. Конфиденциальность: Платформа минимизирует сбор данных о пользователях, что делает её более приватной по сравнению с коммерческими аналогами.
  5. Сообщество и модерация: Каждый инстанс может устанавливать свои правила, что позволяет создавать сообщества с разными ценностями и подходами к контенту.
  6. Поддержка ActivityPub: PeerTube совместим с протоколом ActivityPub, что позволяет интегрировать её с другими децентрализованными платформами, такими как Mastodon.

Преимущества:

  • Свобода от цензуры: Пользователи могут выбирать инстансы, которые соответствуют их взглядам.
  • Экономия ресурсов: P2P-технология снижает затраты на хостинг и пропускную способность.
  • Прозрачность: Открытый исходный код позволяет убедиться в отсутствии скрытых механизмов слежки.
  • Ресурсы: Просмотр видео роликов практически не потребляет ресурсы процессора на сервере

Недостатки:

  • Меньшая популярность: PeerTube пока не может конкурировать с YouTube по количеству пользователей и контента.
  • Технические сложности: Для создания и управления инстансом требуются определённые технические знания.
  • Процессор: Так как сервера Synology используют энергоэффективные процессоры, то перекодирование видео роликов может длиться длительное время, например у меня ролик перекодировался 6 часов.

PeerTube активно развивается и является частью движения за свободный интернет и децентрализацию.

Любой человек или организация могут установить программное обеспечение PeerTube на свой сервер и создать собственный инстанс. Это похоже на создание отдельного “мини-YouTube” с собственным доменным именем и настройками. На такой инстансе можно разрешать или запрещать регистрацию, делиться видео роликами, встраивать видео на сайт и т.д. Первое, что приходит на ум это идеальная платформа для хостинга запрещенного контента.

Не забыли разработчики PeerTube и о приложениях для телефонов, найдете по поиску при желании.

Установка PeerTube

Для установки PeerTube в контейнер Docker на Synology нужно в папке docker создать каталог peertube и четыре пустых папки config data db redis.

Затем нужно положить в папку peertube файл stack.env с таким содержанием:

Не создавайте текстовые файлы в блокноте Windows. Используйте для этого Notepad++ или текстовый редактор в Synology, который легко устанавливается из центра пакетов DSM.

# Database / Postgres service configuration
POSTGRES_USER=POSTGRES_USER
POSTGRES_PASSWORD=POSTGRES_PASSWORD
# Postgres database name "peertube"
POSTGRES_DB=peertube
# The database name used by PeerTube will be PEERTUBE_DB_NAME (only if set) *OR* 'peertube'+PEERTUBE_DB_SUFFIX
#PEERTUBE_DB_NAME=<MY POSTGRES DB NAME>
#PEERTUBE_DB_SUFFIX=_prod
# Database username and password used by PeerTube must match Postgres', so they are copied:
PEERTUBE_DB_USERNAME=$POSTGRES_USER
PEERTUBE_DB_PASSWORD=$POSTGRES_PASSWORD
PEERTUBE_DB_SSL=false
# Default to Postgres service name "postgres" in docker-compose.yml
PEERTUBE_DB_HOSTNAME=peertube-db

# PeerTube server configuration
# If you test PeerTube in local: use "peertube.localhost" and add this domain to your host file resolving on 127.0.0.1
PEERTUBE_WEBSERVER_HOSTNAME=peertube.XXX.synology.me
# If you just want to test PeerTube on local
#PEERTUBE_WEBSERVER_PORT=9000
#PEERTUBE_WEBSERVER_HTTPS=false
# If you need more than one IP as trust_proxy
# pass them as a comma separated array:
PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback", "192.168.0.0/16"]

# Generate one using `openssl rand -hex 32`
PEERTUBE_SECRET=d20bf3432a90f2a8df08d080387961bfed5b3e4b1f995cc36d1bca70018359b0

# E-mail configuration
# If you use a Custom SMTP server
PEERTUBE_SMTP_USERNAME=user
PEERTUBE_SMTP_PASSWORD=password
# Default to Postfix service name "postfix" in docker-compose.yml
# May be the hostname of your Custom SMTP server
PEERTUBE_SMTP_HOSTNAME=smtp.example.ru
PEERTUBE_SMTP_PORT=465
PEERTUBE_SMTP_FROM=user@example.ru
PEERTUBE_SMTP_TLS=true
PEERTUBE_SMTP_DISABLE_STARTTLS=false
PEERTUBE_ADMIN_EMAIL=admin@example.ru

PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC="public-read"
PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE="private"

#PEERTUBE_LOG_LEVEL=info

# /!\ Prefer to use the PeerTube admin interface to set the following configurations /!\
#PEERTUBE_SIGNUP_ENABLED=true
#PEERTUBE_TRANSCODING_ENABLED=true
#PEERTUBE_CONTACT_FORM_ENABLED=true
#Установите начальный пароль администратора. Должно быть 6 или более символов
PT_INITIAL_ROOT_PASSWORD=1q2w3e4r

В этом файле нужно скорректировать следующие настройки под вас:

  • PEERTUBE_WEBSERVER_HOSTNAME=peertube.XXX.synology.me – тут укажите ваше доменное имя, по которому будет доступен ваш инстанс
  • PEERTUBE_SMTP – обязательно пропишите корректные данные почты, Инстанс не заработает без этих корректных настроек.
  • PT_INITIAL_ROOT_PASSWORD – укажите ваш пароль или оставьте таким, его можно и нужно поменять потом.

Откройте Container Manager в DSM и перейдите на вкладку проекты. Создайте новый проект, придумайте ему имя, укажите путь до папки peertube и либо вставьте файл docker-compose либо его текст:

1935 – Порт для Live трансляций, конфликтует с Surveillance Station. Поэтому у меня он закомментирован.

TZ: Asia/Omsk укажите свой корректный часовой пояс

version: "3.9"
services:
  redis:
    image: redis:7
    container_name: PeerTube-Redis
    hostname: peertube-redis
    security_opt:
      - no-new-privileges:true
    read_only: true
    user: 1026:100
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    volumes:
      - ./redis:/data:rw
    environment:
      TZ: Asia/Omsk
    restart: on-failure:5

  db:
    image: postgres:16
    container_name: PeerTube-DB
    hostname: peertube-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "$POSTGRES_DB", "-U", "$POSTGRES_USER"]
      timeout: 45s
      interval: 10s
      retries: 10
    volumes:
      - ./db:/var/lib/postgresql/data:rw
    env_file:
      - ./stack.env
    restart: on-failure:5

  peertube:
    image: chocobozzz/peertube:production-bookworm
    container_name: PeerTube-APP
    hostname: peertube
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:9000/ || exit 1
    ports:
      # - 1935:1935 # Порт для Live трансляций, конфликтует с Surveillance Station
      - 9000:9000
    volumes:
      - ./data:/data:rw
      - ./config:/config:rw
    env_file:
      - ./stack.env
    restart: on-failure:5
    depends_on:
      redis:
        condition: service_healthy
      db:
        condition: service_healthy

Если нужно альтернативное место хранения файлов видео в PeerTube, то замените ./data (тот что с точкой и с лева) на путь до нужной вам папки. Например: /volume1/video. Тогда все файлы видео, аватар, картинки PeerTube будут лежать в этой папке.

Предоставьте такой папке права Everyone на чтение и запись

Обратный прокси

Можно сделать доступ к PeerTube по доменному имени через обратный прокси в Synology. Откройте панель управления в DSM, портал для входа, дополнительно и обратный прокси. Создайте новое правило. Придумайте название правила. В источнике укажите https, имя домена, например peertube.XXX.synology.me и 443 порт. В месте назначения укажите http, localhost и порт 9000.

Не забудьте привязать нужный SSL сертификат в Панель управления – Безопасность – Сертификаты

Настройка фаервола

Если у вас включен фаервол на Synology, то нужно дополнительно разрешить сеть проекта, что бы все работало корректно. Напомню, что 16 маска это 255.255.0.0.

Подробнее про настройку фаервола можно узнать в статье Настройка безопасности Synology NAS защищаем данные от внешних угроз

Сброс пароля

Для сброса пароля пользователя root в контейнере peertube нужно выполнить такую команду:

npm run reset-password -- -u root

Подключение к PeerTube

После разворачивания docker проекта с PeerTube откройте в браузере https://peertube.XXX.synology.me или по IP-NAS и порту 9000 указанному в docker-compose файле при инсталлияции. Откроется окно, в котором введите пользователя root, а пароль из переменной PT_INITIAL_ROOT_PASSWORD.

Первым делом я рекомендую создать пользователя с правами администратор, отключить пользователя root и создать новому пользователю канал. Затем в настройках во вкладке обработка видео указать требуемое разрешение для перекодирования. Я указал все возможные. В таком случаи при любом качестве канала интернет у всех пользователей будет хорошо без тормозов проигрываться видео с вашего инстанса PeerTube.

Но надо понимать, что перекодирование видео на энергоэффективных процессорах Synology будет очень долгим. Вот например у меня было 3 часа, а бывает и 6 часов в зависимости от продолжительности видео ролика.

Мой итог

PeerTube отличное решение для собственного видео хостинга на Synology. Можно хранить большие объемы видео и воспроизводить их даже на слабых процессорах и не быстрых каналах интернета за счет технологии P2P и перекодирования видео. Такое видео можно встраивать ан сайты или делиться ими в соцсетях. Но заменить YouTube этот сервис не сможет как это планировали разработчики, по крайней мере пока. Видео можно загружать на Rutube или VK и там нет ограничений по количеству файлов и прочих, но есть законы и правила этих площадок.

Лично я на данный момент не буду использовать PeerTube для своего блога, но как альтернативу всем остальным буду иметь в виду.

Подписаться
Уведомить о
guest
16 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии