PeerTube 安装教程:如何搭建视频分享平台
文章首发于公号「阿拉平平」
最近在 GitHub 上看到了一个比较有意思的视频平台 PeerTube,与一般的视频平台不同,它的目标是打造一个去中心化的视频平台,即使某个节点出现问题,也不会影响观众观看视频。本文将介绍 PeerTube 的安装与使用方法。
项目介绍
PeerTube [1] 是一个开源、分布式、可互联的视频平台,通过点对点网络来减少单一服务器的负载。任何人都可以在服务器上搭建 PeerTube,共享上传的视频。
下载安装
目前 PeerTube 的最新版本为 v3.0.1,可以通过源码或者 docker 来安装。这里我准备采用容器的方式,将项目部署在一台 CentOS 7.8 的虚拟机上。
部署前需要安装 docker
和 docker-compose
。安装好后,创建并进入 PeerTube 的工作目录:
[root@localhost ~]# mkdir /opt/peertube/
[root@localhost ~]# cd /opt/peertube/
编排文件
下载最新的编排文件 docker-compose.yaml
[root@localhost peertube]# curl https://raw.githubusercontent.com/chocobozzz/PeerTube/develop/support/docker/production/docker-compose.yml > docker-compose.yml
这个文件将创建以下服务,可根据实际情况进行调整:
- webserver:web 服务,供浏览器访问。
- peertube:后端服务,提供核心内容。
- redis:后端数据存储。
- postgres:后端数据库。
- postfix:提供邮件服务。
- certbot:自动续期 Let’s Encrypt 证书。
.env
下载最新的 .env
文件:
[root@localhost peertube]# curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/develop/support/docker/production/.env > .env
修改以下参数:
-
<MY POSTGRES USERNAME>
:数据库的用户名。 -
<MY POSTGRES PASSWORD>
:数据库的密码。 -
<MY DOMAIN>
:域名,不用加https://
。 -
<MY EMAIL ADDRESS>
:邮箱地址。
webserver
webserver 本质是一个 nginx 服务,所以需要下载配置文件 peertube
:
[root@localhost peertube]# mkdir -p docker-volume/nginx
[root@localhost peertube]# curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/develop/support/nginx/peertube > docker-volume/nginx/peertube
如果要使用本地的 nginx 服务,则需要修改配置文件的变量值,并注释掉编排文件中的 webserver。
域名
搭建 PeerTube 需要一个 HTTPS 域名,如果满足条件,可以注释掉编排文件中的 certbot。
如果有域名,但没有 HTTPS 证书,可以通过 certbot 生成免费的证书。
[root@localhost peertube]# mkdir -p docker-volume/certbot
[root@localhost peertube]# docker run -it --rm --name certbot -p 80:80 -v "$(pwd)/docker-volume/certbot/conf:/etc/letsencrypt" certbot/certbot certonly --standalone
由于手边没有域名,所以准备以 https://<ip>
来访问,配置方法如下:
# 创建并进入目录,192.168.128.134 为虚拟机 IP
[root@localhost peertube]# mkdir -p docker-volume/certbot/conf/live/192.168.128.134
[root@localhost peertube]# cd docker-volume/certbot/conf/live/192.168.128.134
# 生成 HTTPS 证书
[root@localhost 192.168.128.134]# openssl genrsa -des3 -out privkey.pem 2048
[root@localhost 192.168.128.134]# openssl rsa -in privkey.pem -out privkey.pem
[root@localhost 192.168.128.134]# openssl req -new -key privkey.pem -out privkey.csr
[root@localhost 192.168.128.134]# openssl req -new -x509 -key privkey.pem -out ca.crt -days 3650
[root@localhost 192.168.128.134]# openssl x509 -req -days 3650 -in privkey.csr -CA ca.crt -CAkey privkey.pem -CAcreateserial -out fullchain.pem
启动
全部配置完成后,运行以下命令启动:
# 回到工作目录并启动
[root@localhost 192.168.128.134]# cd /opt/peertube/
[root@localhost peertube]# docker-compose up -d
服务启动后,就可以通过浏览器来访问,界面如下:
使用说明
本章将简单演示下 PeerTube 的用法,包含:
- 如何用 root 账号登录
- 如何上传视频
- 如何订阅视频
登录
PeerTube 内置了一个管理员账号,通过以下命令获取 root 的密码:
[root@master peertube]# docker-compose logs peertube | grep -A1 root
peertube_1 | [192.168.128.134:443] 2021-03-15 07:38:30.809 info: Username: root
peertube_1 | [192.168.128.134:443] 2021-03-15 07:38:30.809 info: User password: kegumejubikozido
登录后的界面如下:
上传视频
点击右上角的「上传」,选择要上传的视频。
上传的视频可以在线播放,支持下载、分享以及评论:
订阅视频
如果需要订阅他人的视频,只需在管理页面选择 「Instances you follow 」,点击「Follow domain」,加入域名即可。
提交的请求需要对方允许,否则会一直处于等待中:
写在最后
PeerTube 的机制与 BT 下载类似,多个用户在观看同一部视频时,可相互连接、传输数据给对方,达到播放视频加速的效果。如果大家对这个项目有兴趣的话,可以查阅官方文档 [2] 获得更多帮助。
References
[1] PeerTube: https://github.com/Chocobozzz/PeerTube
[2] 官方文档: https://docs.joinpeertube.org