参考文章使用Docker搭建DPlayer视频弹幕接口API后端从零开始搭建DPlayer后端

之前在寻找可以作为m3u8接口的播放器时,我发现了这款Dplayer,因为界面比较简洁,而且同时支持本地与导入Bilibili弹幕的功能,我选择了它。

但是不幸的是,官网所给出的弹幕接口已经年久失修,而moerat大佬的接口也处于不可用的状态,虽然在网络上依然可以找到其他人公开的接口,但是最后能依靠的还是只有自己,为了保证弹幕数据的安全,我决定在本地自行搭建一个弹幕接口后端。

从昨天折腾到现在,总算完成了最初的目标,同时也额外学习了跨域和反代相关知识。因此我打算将这次的教程(伪)分为上下两篇,上篇主要负责介绍接口后端的搭建,下篇负责讲解二级域名反代相关姿势。

在文末我会给出自己的弹幕接口,供有需要的同学自行取用。

简介

DPlayer 是一个支持弹幕的 HTML5 视频播放器。支持 Bilibili 视频和 danmaku,支持HLS,FLV,MPEG DASH,WebTorrent以及其他视频格式,支持截屏、热键、切换清晰度以及字幕等。

获取以及配置docker&npm相关环境

安装npm&nodejs

wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz
xz -d node-v10.13.0-linux-x64.tar.xz
tar -xf node-v10.13.0-linux-x64.tar
ln -s ~/node-v10.13.0-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v10.13.0-linux-x64/bin/npm /usr/bin/npm
npm config set registry https://registry.npm.taobao.org //添加淘宝或任意国内镜像

可以使用npm -vnode -v检测是否成功安装。

安装docker

#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on

#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

#yum
yum install docker

启动、停止、重启命令

#启动
systemctl start docker
#关闭
systemctl stop docker
#重启
systemctl restart docker

安装Docker Compose

第二步的目的是赋予权限,否则会报错。

curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

拉取Dplayer-node

安装git

yum install -y git
# 获取源码,也可以下载后用ftp自行上传
git clone https://github.com/MoePlayer/DPlayer-node.git

安装运行

进入之前得到的文件夹,新建镜像并在后台运行,得到的api就已经在http://127.0.0.1:1207端口运行了,如果使用的是http协议,在后台的设置里将端口设置为对应的http://ip:1207即可。

如果需要更改端口或者其他信息,可以在DPlayer-node文件夹下找到docker-compose.yml并编辑,删除之前的镜像重新建一个即可。

docker-compose.yml

#编辑DPlayer-node文件夹的docker-compose.yml文件,部分修改如下
mongo:
  volumes:
      - ~/dplayer/db:/data/db  #数据库存放文件夹,~/dplayer/db为映射在外部的路径,自行修改,
web:
  ports:
    - 1207:1207  #api映射到外部的端口,将前面的1207修改成你想要的即可
  volumes:
    - ~/dplayer/logs:/usr/src/app/logs  #同数据库操作
    - ~/dplayer/pm2logs:/root/.pm2/logs  #同上

安装命令

cd DPlayer-node
#新建镜像
docker-compose build
#拉取其它镜像并后台运行
docker-compose up -d

删除容器

docker kill (docker ps -aq)
docker rm(docker ps -aq)
docker rmi (docker images -q)
docker volume rm(docker volume ls -q)

输入docker ps -a即可查看当前所有容器的状态。

上篇到此结束,如果你使用的是https,那么使用没有https认证的api会被警告不安全,而如果你使用了CDN,则会出现跨域加载失败的问题,这些问题将在下篇中得到解决。

如果你使用的是阿里云服务器,需要开放对应的端口,分别是1207(dplayernode)、6379(redis)、27017(mongo)。

下篇传送门