静看光阴荏苒
不管不顾不问不说也不念

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

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

赞(2)
未经允许不得转载:荒岛 » PeerTube:去中心化的视频分享平台
分享到: 更多 (0)

评论 20

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    :mrgreen: :mrgreen: 厉害了

    wg19296年前 (2018-04-11) Google Chrome 63.0.3239.84 Google Chrome 63.0.3239.84 Windows 7 x64 Edition Windows 7 x64 Edition回复
  2. #2

    刚准备搞,就看到博主发出来了,合适的很

    zhujiwiki6年前 (2018-04-11) Google Chrome 50.0.2661.102 Google Chrome 50.0.2661.102 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 前排先求个VIP :arrow:

      LALA6年前 (2018-04-12) TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition回复
  3. #3

    要是换服务器怎么搬家 :???: :???:

    wg19296年前 (2018-04-11) Google Chrome 63.0.3239.84 Google Chrome 63.0.3239.84 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 我就是随便装着玩玩,搬家这个还真没考虑到,只能等别的大佬写搬家教程了,我没那个时间。

      LALA6年前 (2018-04-12) TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition回复
  4. #4

    :cry: 大佬厉害了,不过后面的配置有点麻烦,也准备用这个水篇文章,然后简化后面的步骤

    Rat's6年前 (2018-04-12) Google Chrome 55.0.2883.87 Google Chrome 55.0.2883.87 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 活捉一只萌鼠,期待大佬来个手动安装教程 :razz:

      LALA6年前 (2018-04-12) TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition回复
      • 手动压力很大,也是用的docker,只不过反代和你的相比较,更加简单了。 :cool:

        Rat's6年前 (2018-04-12) MIUI Browser 8.5.8 MIUI Browser 8.5.8 Android 6.0.1 Android 6.0.1回复
  5. #5

    没转码,不止是天坑啊 :cry:

    一个疯子6年前 (2018-04-12) Google Chrome 65.0.3325.146 Google Chrome 65.0.3325.146 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 这东西需要完善的地方太多了,如果硬要使用的话,可以把视频在本地转换成mp4再上传。

      LALA6年前 (2018-04-12) TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition回复
  6. #6

    问下,avs 点击上传视频无反应,这个有人解决没

    xhjn6年前 (2018-04-12) Google Chrome 65.0.3325.181 Google Chrome 65.0.3325.181 Mac OS X  10.13.3 Mac OS X 10.13.3回复
    • 进群 71808134

      乐意分享6年前 (2018-04-26) Google Chrome 65.0.3325.181 Google Chrome 65.0.3325.181 Windows 10 x64 Edition Windows 10 x64 Edition回复
  7. #7

    手动安装教程 https://www.gblm.net/1683.html

    乐意分享6年前 (2018-05-10) Google Chrome 66.0.3359.139 Google Chrome 66.0.3359.139 Windows 10 x64 Edition Windows 10 x64 Edition回复
  8. #8

    opvz 服务器可以安装这个吗?

    啦啦6年前 (2018-05-19) Google Chrome 55.0.2883.87 Google Chrome 55.0.2883.87 Windows 7 x64 Edition Windows 7 x64 Edition回复
  9. #9

    我在安装docker时候,启动服务器出现 Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.

    啦啦6年前 (2018-05-19) Google Chrome 55.0.2883.87 Google Chrome 55.0.2883.87 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 换KVM,OpenVZ不支持。

      LALA6年前 (2018-05-20) TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition回复
  10. #10

    为什么我配置好了之后,管理员账号和密码无法登陆,而且还提示,客户端什么连接失败,这个应该如何解决?需不需要创建数据库之类的?

    啦啦6年前 (2018-05-22) Safari 11.0 Safari 11.0 iPhone iOS 11.1.1 iPhone iOS 11.1.1回复
  11. #11

    话说 dalao 能否告知一下 所使用的 git 版本了,新版 confif 变了

    rich5年前 (2019-02-04) Google Chrome 71.0.3578.99 Google Chrome 71.0.3578.99 Android 7.1.2 Android 7.1.2回复
    • 很久没用过这个了,不是很清楚。

      LALA5年前 (2019-02-04) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿