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

一个支持直播的视频程序:NodeTube

取自官方的项目介绍:NodeTube是YouTube的开源替代品,可提供视频,音频和图像上传,实时流媒体和内置获利功能。

官方没有详细的文档,自己部署的时候遇到很多坑,这里记录一下。另外吐槽一下这个程序的前端属实是有点简陋。不过反正能用,开源的嘛白嫖也不指望个啥。

系统debian10,安装nodejs10/mongodb/redis:

apt -y update
apt -y install build-essential gnupg curl wget git
curl -sL https://deb.nodesource.com/setup_10.x | bash -
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list
apt -y update
apt -y install nodejs mongodb-org redis-server

注意nodejs的版本只能是10,其他版本跑不起来或者跑起来有问题。

安装nginx/certbot,如果要直播支持还需要安装rtmp模块:

apt -y install nginx python-certbot-nginx libnginx-mod-rtmp

启动mongodb/redis,以及设置一下这些程序的开机自启:

systemctl start mongod redis
systemctl enable nginx mongod redis

现在拉取项目文件/安装依赖:

cd /opt
git clone https://github.com/mayeaux/nodetube
cd nodetube
npm install

修改程序的配置文件:

nano .env.private

如下位置需要改动:

DOMAIN_NAME_AND_TLD='https://nodetube.imlala.best'
INSTANCE_DOMAIN_NAME='nodetube.imlala.best'

如果你需要直播功能,还需要更改另一个配置文件:

nano .env.settings

其中要改动的位置如下:

LIVESTREAM_APP=true
NODE_ENV='production'
RUN_NGROK=false

修改目录/文件的所有者:

chown -R www-data:www-data /opt/nodetube

接着新建一个systemd服务文件:

nano /lib/systemd/system/nodetube.service

写入如下配置:

[Unit]
Description=nodetube

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/opt/nodetube
ExecStart=/usr/bin/npm start
Restart=always

[Install]
WantedBy=multi-user.target

启动以及设置开机自启:

systemctl start nodetube
systemctl enable nodetube

编辑nginx的主配置文件:

nano /etc/nginx/nginx.conf

在文件的末尾加入直播需要的rtmp配置:

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application live {
            live on;
            on_publish http://127.0.0.1:3000/livestream/on-live-auth;
            on_publish_done http://127.0.0.1:3000/livestream/on-live-done;
            hls on;
            hls_path /opt/nodetube/hls;
            hls_fragment 10s;
        }
    }
}

接着新建一个nginx站点配置文件用于反向代理:

nano /etc/nginx/conf.d/nodetube.conf

写入如下配:

server {
      listen 80;
      server_name nodetube.imlala.best; # 换成你的域名
      client_max_body_size 0;
      root /opt/nodetube;

      location /uploads/ {
          gzip off;
          sendfile           on;
          sendfile_max_chunk 1m;
          tcp_nopush on;
          try_files $uri @redirect;
      }

      location @redirect {
          proxy_pass http://127.0.0.1:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection 'upgrade';
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      }

      location / {
          proxy_pass http://127.0.0.1:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection 'upgrade';
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

接下来用certbot签一个ssl证书:

certbot --nginx --agree-tos --no-eff-email --email xxxxx@qq.com

证书签好了之后,由于这个程序直播界面有一个基于websocket的聊天功能是用的自签证书,这里需要把我们的证书替换掉自签证书,否则聊天功能不能正常使用:

cd /opt/nodetube/keys
mv server.crt server.crt.bak
mv server.key server.key.bak
cp /etc/letsencrypt/live/nodetube.imlala.best/fullchain.pem server.crt
cp /etc/letsencrypt/live/nodetube.imlala.best/privkey.pem server.key

给予正确的文件所有者,否则程序运行的时候报错:

chown www-data:www-data server.crt
chown www-data:www-data server.key

最后重启一下nodetube即可:

systemctl restart nodetube

打开你的域名,如果正常应该可以看到如下界面:

第一个注册的用户自动成为管理员,直播功能,在MY ACCOUNT-Livestreaming:

OBS和FFMPEG推流的方法都在页面内有介绍,自己看着设置就行了。

赞(1)
未经允许不得转载:荒岛 » 一个支持直播的视频程序:NodeTube
分享到: 更多 (0)

评论 8

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

    俺又回来了,是个马甲哦新建了个网站来串串门,不过好像没效果,因为lala被墙了!不过还是喜欢lala多发视频类下载类的教程,确实学了不少啊!啥时候发个七彩云的转码教程啊?

    值吧值9.9包邮3个月前 (08-22) Google Chrome 76.0.3809.87 Google Chrome 76.0.3809.87 Windows 7 x64 Edition Windows 7 x64 Edition回复
  2. #2

    :idea: 那么请lala开播测试一下呗

    橘子3个月前 (08-22) Google Chrome 84.0.4147.111 Google Chrome 84.0.4147.111 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 你想ghs :arrow:

      LALA3个月前 (08-23) Google Chrome 83.0.4103.116 Google Chrome 83.0.4103.116 Windows 10 x64 Edition Windows 10 x64 Edition回复
  3. #3

    弄是弄出来了,可是上传视频或者打开某些功能会出现无法打开网页的情况。不知道什么原因 :???:

    Foliage3个月前 (08-22) Chrome 84.0.4147.122 Chrome 84.0.4147.122 iPhone iOS 13.6 iPhone iOS 13.6回复
    • https://ck.foliage.top/images/2020/08/22/_20200822204025.md.png
      除了注册菜单可以正常打开,其他菜单点击进去都是无法打开网页。 :cry:
      试过几次了,大佬!

      Foliage3个月前 (08-22) Google Chrome 84.0.4147.135 Google Chrome 84.0.4147.135 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 单从你这张截图来看,获取不到任何对排错有价值的信息,所以我也不知道你的问题在哪。。
        可以先停了systemd的服务然后直接放在前台运行,然后看看日志。。

        LALA3个月前 (08-23) Google Chrome 83.0.4103.116 Google Chrome 83.0.4103.116 Windows 10 x64 Edition Windows 10 x64 Edition回复
        • 估计是nginx主配文件出问题了,那段代码放文末,是最下面吗?

          Foliage3个月前 (08-23) Chrome 84.0.4147.122 Chrome 84.0.4147.122 iPhone iOS 13.6 iPhone iOS 13.6回复
          • rtmp的配置吗?加在末尾就行了。遇到问题先想办法弄各种日志出来看。。

            LALA3个月前 (08-24) Google Chrome 83.0.4103.116 Google Chrome 83.0.4103.116 Windows 10 x64 Edition Windows 10 x64 Edition

分享创造快乐

广告合作资源投稿