视频分享平台PeerTube的搭建
老苏下载了吴恩达的 Prompt for developer
课程,不管是否有兴趣,都可以看看,早晚我们都得学会使用 ChatGPT
虽然课程对话是英文,但有中文字幕,课程地址:https://www.aliyundrive.com/s/H3CpaapD87Z
这个软件的坑有点多,但是迈过去了再回头看,也就那么回事,细心 + 耐心而已;
什么是 PeerTube ?
PeerTube
是一个开源的去中心化视频分享平台,类似于YouTube
。不同之处在于,PeerTube
使用P2P
技术来分发视频,从而减轻了服务器负担。此外,PeerTube
支持自托管和自定义,因此您可以创建自己的视频分享平台,以满足自己的需求。PeerTube
是YouTube
的去中心化联合替代方案。目标不是取代YouTube
,而是利用ActivityPub
和WebTorrent
协议的优势提供一个可行的替代方案。
什么是 ActivityPub ?
ActivityPub
是一个去中心社交网络(decentralized social networking
)的交互协议,允许软件项目通过添加ActivityPub
支持,实现拥有完全不同代码库的应用程序之间的可互操作社交网络。
反向代理
PeerTube 不支持网络服务器主机更改。请记住,您的域名在您第一次启动
PeerTube
后就已确定
假设我们实际访问地址为: https://peertube.laosu.ml:444
域名 | 局域网地址 | 备注 |
---|---|---|
peertube.laosu.ml |
http://192.168.0.197:8900 |
peertube 的访问地址 |
在 npm
中的设置
SSL
都勾选了
经上面设置后,实际访问时,会遇到下面👇这样的错误
1 | Client log: 错误: 无法检索 OAuth 客户端证书:Getting client tokens for host peertube.laosu.ml is forbidden。确保你你已正确配置 PeerTube(config/ directory),特别是“webserver”部分。 |
经分析,实际上还是出现了截端口现象,所以还需要将下面的代码填入到 npm
的 Advanced
中
1 | location / { |
命令行安装
采用 docker-compose
安装,需要准备环境变量文件 .env.txt
和 docker-compose.yml
文件
.env.txt 文件
用
.txt
做后缀名是为了在群晖上修改方便
在官方 https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/docker/production/.env 基础上修改出来的,为了便于理解,老苏改成了中文注释,所以你保存的时候,记得用 utf-8
编码格式
1 | # Postgres 数据库设置 |
几个主要参数的说明
PEERTUBE_DB_PASSWORD
和POSTGRES_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 基础上做了比较大的调整,例如:
- 删掉了
webserver
、certbot
、postfix
块 - 删掉了卷
certbot-www
等等
版本
production-bullseye
对应v5.0.1-bullseye
1 | version: "3.3" |
docker-compose.yml
文件中需要修改的就两个地方:
- 端口:
-
1935
是rtmp
的默认端口,老苏机器上还有Owncast
,所以被占用了,改为了相邻的1936
-
9000
是web
端口,但是用这个端口的软件太多了,比如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
也要相应的调整
以上工作都完成之后,你可以依次执行下面的命令
1 | # 新建文件夹 peertube 和 子目录 |
运行
在浏览器中输入 https://peertube.laosu.ml:444
就可以看到主界面了
不要用
http://群晖IP:8900
,否则右下角还是会显示无法检索 OAuth 客户端证书
错误
管理员账号
方法一
在 /docker/peertube/data/logs
目录中找到 peertube.log
文件
打开 peertube.log
,搜索 root
1 | {"message":"Username: root","level":"info","label":"peertube.laosu.ml:444","timestamp":"2023-02-21T15:16:06.996Z"} |
其中密码就是 User password
后面的 vohiniduyinajiso
方法二
可以用找回密码,来获取管理员 root
的密码,电子邮件就是我们之前填写的 PEERTUBE_ADMIN_EMAIL
的值
如果邮件配置没问题的话,很快就会收到重置的邮件
点邮件中的链接,直接重置密码即可
方法三
通过命令行方式对密码进行管理员账号 root
的密码进行重置
1 | # 重置 root 用户的密码 |
拿到管理员密码后,用用户名 root
,也可以用邮件地址 wbsu2003@hotmail.com
登录,对网站进行设置
注册用户
也可以新建一个用户,用来发布视频
接下来就是建频道,发布视频
发布成功后,如果是公开的可以在首页看到
直接可以播放
更多的功能老苏也在抽空摸索中
参考文档
GitHub - Chocobozzz/PeerTube: ActivityPub-federated video streaming platform using P2P directly in your web browser
地址:https://github.com/Chocobozzz/PeerTubePeerTube 是什么? | JoinPeerTube
地址:https://joinpeertube.org/zh_Hansnew docker install, Cannot generate HTML page. ENOENT: no such file or directory · Issue #4522 · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/issues/4522Invalid client: client is invalid · Issue #3151 · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/issues/3151PeerTube/tools.md at develop · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/tools.md#reset-passwordjsPeerTube documentation
地址:https://docs.joinpeertube.org/