视频分享平台PeerTube的搭建

news2024/12/26 5:57:40

在这里插入图片描述

老苏下载了吴恩达的 Prompt for developer 课程,不管是否有兴趣,都可以看看,早晚我们都得学会使用 ChatGPT

虽然课程对话是英文,但有中文字幕,课程地址:https://www.aliyundrive.com/s/H3CpaapD87Z


这个软件的坑有点多,但是迈过去了再回头看,也就那么回事,细心 + 耐心而已;

什么是 PeerTube ?

这个软件的坑有点多,但是迈过去了再回头看,也就那么回事,细心 + 耐心而已;

什么是 PeerTube ?

PeerTube 是一个开源的去中心化视频分享平台,类似于 YouTube。不同之处在于,PeerTube 使用 P2P 技术来分发视频,从而减轻了服务器负担。此外,PeerTube 支持自托管和自定义,因此您可以创建自己的视频分享平台,以满足自己的需求。PeerTubeYouTube 的去中心化联合替代方案。目标不是取代 YouTube,而是利用 ActivityPubWebTorrent 协议的优势提供一个可行的替代方案。

什么是 ActivityPub ?

ActivityPub 是一个去中心社交网络(decentralized social networking)的交互协议,允许软件项目通过添加 ActivityPub 支持,实现拥有完全不同代码库的应用程序之间的可互操作社交网络。

反向代理

PeerTube 不支持网络服务器主机更改。请记住,您的域名在您第一次启动 PeerTube 后就已确定

假设我们实际访问地址为: https://peertube.laosu.ml:444

域名局域网地址备注
peertube.laosu.mlhttp://192.168.0.197:8900peertube 的访问地址

npm 中的设置

在这里插入图片描述

SSL 都勾选了

在这里插入图片描述

经上面设置后,实际访问时,会遇到下面👇这样的错误

Client log: 错误: 无法检索 OAuth 客户端证书:Getting client tokens for host peertube.laosu.ml is forbidden。确保你你已正确配置 PeerTube(config/ directory),特别是“webserver”部分。

在这里插入图片描述

经分析,实际上还是出现了截端口现象,所以还需要将下面的代码填入到 npmAdvanced

   location / {  
       proxy_set_header Host $host:444;  
       proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;  
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Protocol $scheme;
       proxy_pass  http://192.168.0.197:8900;  
       proxy_redirect http:// https://;  
   }

在这里插入图片描述

命令行安装

采用 docker-compose 安装,需要准备环境变量文件 .env.txtdocker-compose.yml 文件

.env.txt 文件

.txt 做后缀名是为了在群晖上修改方便

在官方 https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/docker/production/.env 基础上修改出来的,为了便于理解,老苏改成了中文注释,所以你保存的时候,记得用 utf-8 编码格式

# Postgres 数据库设置
POSTGRES_USER=peertube
POSTGRES_PASSWORD=peertube
POSTGRES_DB=peertube

# 同 POSTGRES_USER
PEERTUBE_DB_USERNAME=peertube
# 同 POSTGRES_PASSWORD
PEERTUBE_DB_PASSWORD=peertube
PEERTUBE_DB_SSL=false
# docker-compose.yml 中 Postgres service 名称 "postgres" 
PEERTUBE_DB_HOSTNAME=postgres

# PeerTube 服务设置
PEERTUBE_WEBSERVER_HOSTNAME=peertube.laosu.ml

# 端口需设置为域名的端口
PEERTUBE_WEBSERVER_PORT=444
PEERTUBE_WEBSERVER_HTTPS=true

# trust_proxy 的 IP,用逗号分隔,最后一个为群晖主机IP
PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback", "172.18.0.0/16","192.168.0.197"]

# 用 `openssl rand -hex 32` 生成
PEERTUBE_SECRET=8c38d40582cd475f50e87c2d83db9f10fd0ab78b9df3e5c35efa8e6282c0cbb9

# E-mail 设置
# If you use a Custom SMTP server
PEERTUBE_SMTP_USERNAME=wbsu2003@88.com
PEERTUBE_SMTP_PASSWORD=<第三方邮件客户端专用密码>
PEERTUBE_SMTP_HOSTNAME=smtp.88.com
PEERTUBE_SMTP_PORT=25
PEERTUBE_SMTP_FROM=wbsu2003@88.com
PEERTUBE_SMTP_TLS=false
PEERTUBE_SMTP_DISABLE_STARTTLS=false
PEERTUBE_ADMIN_EMAIL=wbsu2003@hotmail.com

# 启用注册
PEERTUBE_SIGNUP_ENABLED=true

几个主要参数的说明

  • PEERTUBE_DB_PASSWORDPOSTGRES_PASSWORD 要一致,虽然没有对外暴露端口,但是这个应用毕竟已经映射到公网上了,所以建议密码搞复杂一点;
  • PEERTUBE_WEBSERVER_HOSTNAME :这里只填域名,但一定不要带端口,也不要带协议
  • PEERTUBE_WEBSERVER_PORT:老苏因为没有备案,域名是带端口的,如果你是备案过的,这里填 443
  • PEERTUBE_WEBSERVER_HTTPS:设为 true 表示启用了 https 协议,如果这里是 false,如果你备案过的话,那 PEERTUBE_WEBSERVER_PORT 就改 80
  • PEERTUBE_SECRET:执行一次 openssl rand -hex 32 就行

可以在https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/config/custom-environment-variables.yaml 文件中找到其他配置选项

docker-compose.yml 文件

在官方 https://raw.githubusercontent.com/chocobozzz/PeerTube/master/support/docker/production/docker-compose.yml 基础上做了比较大的调整,例如:

  • 删掉了 webservercertbotpostfix
  • 删掉了卷 certbot-www 等等

版本 production-bullseye对应 v5.0.1-bullseye

version: "3.3"

services:

  peertube:
    image: chocobozzz/peertube:v5.0.1-bullseye
    # Use a static IP for this container because nginx does not handle proxy host change without reload
    # This container could be restarted on crash or until the postgresql database is ready for connection
    networks:
      default:
        ipv4_address: 172.18.0.42
    env_file:
      - .env.txt
    ports:
      - "1936:1935" # Comment if you don't want to use the live feature
      - "8900:9000" # Uncomment if you use another webserver/proxy or test PeerTube in local, otherwise not suitable for production
    volumes:
      - assets:/app/client/dist
      - ./data:/data
      - ./config:/config
    depends_on:
      - postgres
      - redis
    restart: "always"

  postgres:
    image: postgres:14
    env_file:
      - .env.txt
    volumes:
      - ./db:/var/lib/postgresql/data
    restart: "always"

  redis:
    image: redis:6.2
    volumes:
      - ./redis:/data
    restart: "always"

networks:
  default:
    ipam:
      driver: default
      config:
      - subnet: 172.18.0.0/16

volumes:
  assets:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/volume2/docker/peertube/assets'

docker-compose.yml 文件中需要修改的就两个地方:

  • 端口:
    • 1935rtmp 的默认端口,老苏机器上还有 Owncast,所以被占用了,改为了相邻的 1936
    • 9000web 端口,但是用这个端口的软件太多了,比如 portainer,所以改用了 8900
  • 网络:subnet: 172.18.0.0/16,这是 docker 的子网

在这里插入图片描述

如果非常巧合的情况下,172.18.0.0/16 正好被其它 docker 占用了,你会在一键启动时,看到 ERROR: Pool overlaps with other one on this address space 错误

在这里插入图片描述

这个时候你只能改其他网段试试了,如果这里改了,记得

  • peertube 块中的 ipv4_address 要改
  • .env.txt 中的 PEERTUBE_TRUST_PROXY 也要相应的调整

以上工作都完成之后,你可以依次执行下面的命令

# 新建文件夹 peertube 和 子目录
mkdir -p /volume2/docker/peertube/{assets,config,data,db,redis}

# 进入 peertube 目录
cd /volume2/docker/peertube

# 将 .env.txt 和 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 https://peertube.laosu.ml:444 就可以看到主界面了

在这里插入图片描述

不要用http://群晖IP:8900,否则右下角还是会显示 无法检索 OAuth 客户端证书 错误

管理员账号

方法一

/docker/peertube/data/logs 目录中找到 peertube.log 文件

在这里插入图片描述

打开 peertube.log,搜索 root

{"message":"Username: root","level":"info","label":"peertube.laosu.ml:444","timestamp":"2023-02-21T15:16:06.996Z"}
{"message":"User password: vohiniduyinajiso","level":"info","label":"peertube.laosu.ml:444","timestamp":"2023-02-21T15:16:06.996Z"}

其中密码就是 User password 后面的 vohiniduyinajiso

方法二

可以用找回密码,来获取管理员 root 的密码,电子邮件就是我们之前填写的 PEERTUBE_ADMIN_EMAIL 的值

在这里插入图片描述

如果邮件配置没问题的话,很快就会收到重置的邮件

在这里插入图片描述

点邮件中的链接,直接重置密码即可

在这里插入图片描述

方法三

通过命令行方式对密码进行管理员账号 root 的密码进行重置

# 重置 root 用户的密码
docker-compose exec -u peertube peertube npm run reset-password -- -u root

在这里插入图片描述

拿到管理员密码后,用用户名 root,也可以用邮件地址 wbsu2003@hotmail.com 登录,对网站进行设置

在这里插入图片描述

注册用户

也可以新建一个用户,用来发布视频

在这里插入图片描述

接下来就是建频道,发布视频

在这里插入图片描述

发布成功后,如果是公开的可以在首页看到

在这里插入图片描述

直接可以播放

在这里插入图片描述

更多的功能老苏也在抽空摸索中

参考文档

GitHub - Chocobozzz/PeerTube: ActivityPub-federated video streaming platform using P2P directly in your web browser
地址:https://github.com/Chocobozzz/PeerTube

PeerTube 是什么? | JoinPeerTube
地址:https://joinpeertube.org/zh_Hans

new docker install, Cannot generate HTML page. ENOENT: no such file or directory · Issue #4522 · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/issues/4522

Invalid client: client is invalid · Issue #3151 · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/issues/3151

PeerTube/tools.md at develop · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/tools.md#reset-passwordjs

PeerTube documentation
地址:https://docs.joinpeertube.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/484895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用ChatGPT+Xmind一键生成思维导图,简直泰裤辣

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

python 编写K210控制步进电机的程序示例

今天正好看到K210的脉冲章节&#xff0c;就顺便拿出步进电机做个小实验&#xff0c;也好巩固一下所学的知识。下面是K210关于脉冲的相关介绍&#xff1a; 构造函数 machine.PWM(tim, freq, duty, pin, enableTrue) PWM 对象在 machine 模块下 【tim】K210 的 PWM 依赖…

789. 数的范围(C++和Python3)——2023.5.3打卡

文章目录 QuestionIdeasCode Question 给定一个按照升序排列的长度为 n 的整数数组&#xff0c;以及 q 个查询。 对于每个查询&#xff0c;返回一个元素 k 的起始位置和终止位置&#xff08;位置从 0 开始计数&#xff09;。 如果数组中不存在该元素&#xff0c;则返回 -1 -…

【C++从0到王者】第二站:类和对象(上)

文章目录 一、面向过程与面向对象二、类的引入三、类的访问限定符四、类的定义五、封装六、类的作用域七、类的实例化八、类对象模型1.如何计算类对象的大小2.类对象存储方式猜测 九、this指针1.this指针的引出2.this指针的特性 一、面向过程与面向对象 C语言是面向过程的&…

Web2与Web3开发的不同之处

Web2是引入交互功能的第二代互联网&#xff0c;也是我们今天所熟悉的。随着Web的不断发展&#xff0c;第三代互联网&#xff0c;也被称为Web3&#xff0c;正处于积极开发中。Web3引入了在区块链上运行的去中心化和无需许可的系统。但是Web2和Web3开发之间有什么区别呢&#xff…

23.5.1总结

这几天都在写项目&#xff1a; 在实现页面&#xff0c;调用数据库的时候&#xff0c;总是把数据库的表改了又改&#xff0c;然后完善了下数据库的表。 存储的思路大概是&#xff1a; 一个课程下可以有多个班级&#xff0c;所以以课程id作为主键建一个表&#xff0c;内容包括…

在win11搭建ubuntu目标机器的QT开发环境的实践

环境&#xff1a; 笔记本电脑 16G内存 win11 尝试wsl的方案&#xff1a; wsl2 ubuntu gnome xrdp wsl安装ubuntu并设置gnome图形界面详细步骤&#xff08;win11ubuntu18&#xff09;_heusjh的博客-CSDN博客 wsl2 ubuntu gnome VcXsrv Windows中WSL2 配置运行GNOM…

Centos7快速安装Elasticsearch 7.17.7

从 Elasticsearch 7.x 版本开始&#xff0c;Elasticsearch 发行版包括了自己的 JDK。因此&#xff0c;您不需要单独安装 Java。以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤&#xff1a;&#xff08;数据默认保存在/var/lib/elasticsearch下&#xff0c;自行更改…

vmware安装arch linux

vmware安装arch linux 1、下载镜像2、安装2.1、VMware 系统版本选择 其他Linux 5.x 内核 64位2.2、进行磁盘分区 3、重启系统后登录进来发现没有地址 由于安装系统时没有安装任何软件 只安装了1个vim 无法动态获取地址4、安装必需的软件 最小化安装5、编辑/etc/ssh/sshd_config…

【Python】flask框架学习 flask框架的基本使用

flask框架是什么&#xff1f; Flask 是一个轻量级的 Web 框架&#xff0c;用于构建 Web 应用程序。它基于 Python 编程语言和 Werkzeug 工具包&#xff0c;提供了简单易用的 API&#xff0c;可以轻松地创建 RESTful API 和 Web 应用程序。 flask的特点 轻量级&#xff1a;Fl…

学会这些常用调试技巧,让你的C/C++代码调试起来如虎添翼

本篇博客主要讲解程序员最应该掌握的技能之一——调试。我个人认为&#xff0c;学习编程&#xff0c;有2件事情非常重要&#xff0c;一是画图&#xff0c;一是调试。下面我会以Visual Studio 2022为例&#xff08;VS的其他版本大同小异&#xff09;&#xff0c;演示如何调试一个…

怎么体验gpt4-国内怎么使用chatGPT

gpt4api要等多久 目前&#xff0c;OpenAI尚未公布GPT-4 API的发布计划和时间表。GPT-4 将是前置还增加强大的自然语言处理能力和推理能力&#xff0c;OpenAI正在为其开发和研究&#xff0c;以使其更加流畅、准确和智能。因此&#xff0c;GPT-4 API的发布时间尚未确定。但是&am…

云原生Istio安装和使用

目录 1 Kubernetes集群环境2 安装Istio2.1 快速部署Istio2.2 回顾K8S组件以及使用2.2.1 Deployment2.2.2 Labels and Selectors2.2.3 Namespace2.2.4 Service2.2.5 Ingress 2.3 初步感受istio2.4 手动注入2.5 自动注入sidecar 1 Kubernetes集群环境 Istio支持在不同的平台下安装…

华为OD机试真题(Java),计算字符串的编辑距离(100%通过+复盘思路)

一、题目描述 Levenshtein 距离&#xff0c;又称编辑距离&#xff0c;指的是两个字符串之间&#xff0c;由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符&#xff0c;插入一个字符&#xff0c;删除一个字符。编辑距离的算法是首先由…

STM32CubeMX时钟树配置详解(F103)

外部时钟配置 学习时使用的是stm32f103系列芯片&#xff0c;文档的时钟树属实不适合新手阅读&#xff0c;STM32cube的功能很强大&#xff0c;时钟树清晰明了&#xff1a; 首先我们要知道&#xff0c;芯片需要一个频率来进行工作&#xff0c;通常选用的是晶振来提供工作频率&a…

数据存储系统概要

可靠、可扩展与可维护性 现在有很多都属于数据密集型&#xff0c;而不是计算密集型。对于这些类型应用&#xff0c;CPU的处理能力往往不是第一限制性因素&#xff0c;关键在于数据量、数据的复杂度及数据的快速多边形。 数据密集型应用模块&#xff1a; 数据库&#xff1a;存…

不会JVM调优怎么进互联网大厂

&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f38d;大家好&#xff0c;我是慕枫 &#x1f38d;前阿里巴巴高级工程师&#xff0c;InfoQ签约作者、阿里云专家博主&#xff0c;一直致力于用大白话讲解技术知识 &#x…

设计模式七大设计原则

文章目录 1、什么是设计模式2、单一职责原则3、开闭原则4、接口隔离原则5、依赖倒置原则6、迪米特法则&#xff08;最少知道原则&#xff09;7、里式替换原则8、组合优于继承 设计模式主要是为了满足一个字 变&#xff0c;这个字&#xff0c;可能是需求变更、可能是场景变更&a…

【VAR | 时间序列】以美国 GDP 和通货膨胀数据为例的VAR模型简单实战(含Python源代码)

以美国 GDP 和通货膨胀数据为例&#xff1a; 1. 数据集 下载数据我们需要从 FRED 数据库下载美国 GDP 和通货膨胀数据&#xff0c;并将它们存储在 CSV 文件中。可以在 FRED 网站&#xff08;https://fred.stlouisfed.org/&#xff09;搜索并下载需要的数据。在这里&#xff0…

非静压模型SWASH学习(7)——自制算例Lock-Exchange

自制算例Lock-Exchange 算例简介模型配置网格及参数设置网格与地形初始条件与边界条件物理参数设置数值求解方法模型输出计算时间 模拟结果 SWASH是由Delft大学开发&#xff0c;用于模拟非静压条件下的水动力/波浪运动的数值模型。 与模型原理相关的内容详见以下论文&#xff1…