咱们长话短说,PeerTube是一个视频上传、分享程序,但与以往的那种传统视频程序不同的地方就在于PeerTube做到了去中心化。什么是去中心化?对于PeerTube我们可以这样理解:
1、我们在服务器上每搭建好一个PeerTube,这个PeerTube就可以称作是一个实例。
2、这个实例具备用户注册、上传视频、分享视频等功能,你可以把它理解成一个简单版的Youtube。
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://sp.0o0.lol/
扩展:
目前有一个第三方的主题模版可供使用,项目地址:https://github.com/PhieF/Theme-Peertube-Vaurk
安装很简单,登录你的管理员账号,在后台添加上CSS和JS,然后保存即可。如图所示:
需要你确认修改:
OK,看看我的演示站:
嘛,我这人很实在,这种视频程序,我觉得除了适合开H站以外,别的用处我还真想不到,所以我觉得对这个东西有兴趣的人,并且想用它做生产环境的,估计都是想开大姐姐站的吧。。。
写在最后:
PeerTube有几个坑,还是要提一下的:
1、后台有关闭用户注册的功能,但这个按钮不能生效,想关闭注册的话只能修改docker-compose.yml配置文件,这BUG不知道官方会不会修。
2、PeerTube有ffmpeg转码的功能,但是它只适用于转换视频的分辨率,用来根据当前用户带宽情况来自动选择播放适合的分辨率视频。也就是说PeerTube并不能转换视频格式,所以支持上传的视频格式非常有限,貌似只有3种。
3、经过我的多次测试,实测一人播放视频的时候不如直接直链观看速度快,这就是个天坑了啊~
厉害了
刚准备搞,就看到博主发出来了,合适的很
前排先求个VIP
要是换服务器怎么搬家
我就是随便装着玩玩,搬家这个还真没考虑到,只能等别的大佬写搬家教程了,我没那个时间。
大佬厉害了,不过后面的配置有点麻烦,也准备用这个水篇文章,然后简化后面的步骤
活捉一只萌鼠,期待大佬来个手动安装教程
手动压力很大,也是用的docker,只不过反代和你的相比较,更加简单了。
没转码,不止是天坑啊
这东西需要完善的地方太多了,如果硬要使用的话,可以把视频在本地转换成mp4再上传。
问下,avs 点击上传视频无反应,这个有人解决没
进群 71808134
手动安装教程 https://www.gblm.net/1683.html
opvz 服务器可以安装这个吗?
我在安装docker时候,启动服务器出现 Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
换KVM,OpenVZ不支持。
为什么我配置好了之后,管理员账号和密码无法登陆,而且还提示,客户端什么连接失败,这个应该如何解决?需不需要创建数据库之类的?
话说 dalao 能否告知一下 所使用的 git 版本了,新版 confif 变了
很久没用过这个了,不是很清楚。