PeerTube:去中心化的视频分享平台

先上个大佬发车 演示 https://facegirl.me/

播放器H5 视频是转码切片

咱们长话短说,PeerTube是一个视频上传、分享程序,但与以往的那种传统视频程序不同的地方就在于PeerTube做到了去中心化。什么是去中心化?对于PeerTube我们可以这样理解:

1、我们在服务器上每搭建好一个PeerTube,这个PeerTube就可以称作是一个实例。

2、这个实例具备用户注册、上传视频、分享视频等功能,你可以把它理解成一个简单版的有图比。

3、每个实例可以通过Bittorent相互传输数据,即你搭建的PeerTube可以和其他人搭建的PeerTube相互连接、传输数据,达到播放视频加速的效果。

4、每个用户访问实例并播放视频的时候,每个用户都将变为一个节点,多个用户在观看同一部视频的时候,可以做到相互连接、传输数据给对方,达到播放视频加速的效果。

5、如果某一部视频只有一个人观看,那么搭建PeerTube的服务器会自动把自己变为一个节点,提供数据传输。

经过上面的叙述,我们可以用一句简单的话总结:PeerTube其实就类似于BT下载里面的P2P协议,遵循人人为我,我为人人的原则来达到播放视频加速的效果。

OK,现在我们来尝试搭建一个PeerTube~

由于本人学艺不精,在CentOS7上手动安装这个玩意一直不成功,各种深坑,填都填不完,索性我直接用docker装了。省时省力,小白也能轻松搭建~

准备工作:

1、VPS系统使用CentOS7X64

2、内存大于2GB(硬性条件,1G估计是装不了的)

一、新建一个2G的SWAP:

dd if=/dev/zero of=/var/swap bs=1024 count=2097152
mkswap /var/swap
chmod 0600 /var/swap
swapon /var/swap
复制代码

二、安装常用组件:

yum -y install wget git
复制代码

三、下载安装docker启动并设置开机启动:

wget -4 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.0.ce-1.el7.centos.x86_64.rpm
yum -y install docker-ce-18.03.0.ce-1.el7.centos.x86_64.rpm
systemctl start docker
systemctl enable docker.service
复制代码

四、安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
复制代码

验证安装是否成功,如果正常会回显出版本号:

docker-compose --version
复制代码

五、拉取PeerTube项目文件:

git clone https://github.com/chocobozzz/PeerTube /tmp/peertube
复制代码

六、进入到PeerTube的docker配置目录,编辑docker-compose.yml

cd /tmp/peertube/support/docker/production
vi docker-compose.yml
复制代码

加入端口映射,让公网能够访问到这个docker:

ports:
- "12315:9000"
复制代码

上面这段代码加到如下图红框部分:

注:这里我选择用12315端口,你们可以自定义。

七、开始构建:

docker-compose up
复制代码

这里不出意外的话,到最后会报错,会看到类似于这样的错误信息:

peertube_1 | /app/node_modules/mkdirp/index.js:90
peertube_1 | throw err0;
peertube_1 | ^
peertube_1 |
peertube_1 | Error: EACCES: permission denied, mkdir '/data/logs'
复制代码

直接键盘组合键Ctrl+C退出来,然后执行:

chown -R 991:991 data/
复制代码

再重新执行:

docker-compose up
复制代码

运行正常了:

图中还有一个SMTP的报错,这里是因为我没有配置SMTP发信的原因,这个不影响程序的使用。

现在通过浏览器就应该可以访问到PeerTube了。

默认的管理员账号:root

密码在日志文件内可以翻到,日志文件的路径如下,我们可以直接cat查看:

cat /tmp/peertube/support/docker/production/data/logs/peertube.log
复制代码

或者下载到本地查看:

八、放到后台运行

确认网站都是正常运行后,我们还是老样子键盘组合键Ctrl+C退出来,这次我们就可以把docker-compose放到后台运行了:

docker-compose up -d
复制代码

如果要停止运行可以使用如下命令:

docker-compose stop
复制代码

九、安装Nginx:

新建一个repo:

vi /etc/yum.repos.d/nginx.repo
复制代码

写入:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
复制代码

使用yum安装:

yum -y install nginx
复制代码

启动nginx以及一些其他的常用命令:

systemctl start nginx
systemctl enable nginx
systemctl status nginx
systemctl restart nginx
复制代码

十、申请SSL证书

这里我使用acme来生成let’s Encrypt的证书:

cd ~
curl https://get.acme.sh | sh
cd .acme.sh
./acme.sh --issue -d sp.0o0.lol --webroot /usr/share/nginx/html
复制代码

注:最后一条命令内的sp.0o0.lol换成你自己的域名

成功后会在这个目录内保存你的证书文件:

完整证书:/root/.acme.sh/sp.0o0.lol/fullchain.cer
私钥:/root/.acme.sh/sp.0o0.lol/sp.0o0.lol.key

接着我们在nginx目录内新建一个cert目录,用来存放我们的证书文件

mkdir /etc/nginx/cert/
复制代码

移动证书文件到cert目录:

cp /root/.acme.sh/sp.0o0.lol/fullchain.cer /etc/nginx/cert/sp.0o0.lol.cer
cp /root/.acme.sh/sp.0o0.lol/sp.0o0.lol.key /etc/nginx/cert/sp.0o0.lol.key
复制代码

十一、新建nginx站点配置文件:

vi /etc/nginx/conf.d/peertube.conf
复制代码

写入:

server {
listen 80;
listen 443 ssl http2;
server_name sp.0o0.lol;
client_max_body_size 5000m;

ssl_certificate /etc/nginx/cert/sp.0o0.lol.cer;
ssl_certificate_key /etc/nginx/cert/sp.0o0.lol.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;

location / {
proxy_pass http://127.0.0.1:12315;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
复制代码

注:proxy_pass后面的端口号一定要和我们之前映射的docker端口号对应。

最后重启nginx:

systemctl restart nginx
复制代码

一共11步操作,如果不出意外的话,你的PeerTube现在已经完美运行中了~

扩展:

目前有一个第三方的主题模版可供使用,项目地址:https://github.com/PhieF/Theme-Peertube-Vaurk

安装很简单,登录你的管理员账号,在后台添加上CSS和JS,然后保存即可。如图所示:

需要你确认修改:

OK,看看我的演示站:

嘛,我这人很实在,这种视频程序,我觉得除了适合开H站以外,别的用处我还真想不到,所以我觉得对这个东西有兴趣的人,并且想用它做生产环境的,估计都是想开大姐姐站的吧。。。

写在最后:

PeerTube有几个坑,还是要提一下的:

1、后台有关闭用户注册的功能,但这个按钮不能生效,想关闭注册的话只能修改docker-compose.yml配置文件,这BUG不知道官方会不会修。

2、PeerTube有ffmpeg转码的功能,但是它只适用于转换视频的分辨率,用来根据当前用户带宽情况来自动选择播放适合的分辨率视频。也就是说PeerTube并不能转换视频格式,所以支持上传的视频格式非常有限,貌似只有3种。

3、经过我的多次测试,实测一人播放视频的时候不如直接直链观看速度快,这就是个天坑了啊

转之 https://lala.im/3171.html

教程2 https://www.moerats.com/archives/586/comment-page-1

点赞