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

運維技術·軟件/源碼·lala.im · 2018-04-11 · 144 人浏览

原文地址:https://lala.im/3171.html,請支持原作者!該處僅作轉載。

咱们长话短说,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\n私钥:/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、经过我的多次测试,实测一人播放视频的时候不如直接直链观看速度快,这就是个天坑了啊~

運維技術 軟件/源碼 lala.im
Theme Jasmine by Kent Liao