视频分享平台PeerTube的搭建

在这里插入图片描述

老苏下载了吴恩达的 Prompt for developer 课程,不管是否有兴趣,都可以看看,早晚我们都得学会使用 ChatGPT

虽然课程对话是英文,但有中文字幕,课程地址:https://www.aliyundrive.com/s/H3CpaapD87Z


这个软件的坑有点多,但是迈过去了再回头看,也就那么回事,细心 + 耐心而已;

什么是 PeerTube ?

这个软件的坑有点多,但是迈过去了再回头看,也就那么回事,细心 + 耐心而已;

什么是 PeerTube ?

PeerTube 是一个开源的去中心化视频分享平台,类似于 YouTube。不同之处在于,PeerTube 使用 P2P 技术来分发视频,从而减轻了服务器负担。此外,PeerTube 支持自托管和自定义,因此您可以创建自己的视频分享平台,以满足自己的需求。PeerTubeYouTube 的去中心化联合替代方案。目标不是取代 YouTube,而是利用 ActivityPubWebTorrent 协议的优势提供一个可行的替代方案。

什么是 ActivityPub ?

ActivityPub 是一个去中心社交网络(decentralized social networking)的交互协议,允许软件项目通过添加 ActivityPub 支持,实现拥有完全不同代码库的应用程序之间的可互操作社交网络。

反向代理

PeerTube 不支持网络服务器主机更改。请记住,您的域名在您第一次启动 PeerTube 后就已确定

假设我们实际访问地址为: https://peertube.laosu.ml:444

域名局域网地址备注
peertube.laosu.mlhttp://192.168.0.197:8900peertube 的访问地址

npm 中的设置

在这里插入图片描述

SSL 都勾选了

在这里插入图片描述

经上面设置后,实际访问时,会遇到下面👇这样的错误

Client log: 错误: 无法检索 OAuth 客户端证书:Getting client tokens for host peertube.laosu.ml is forbidden。确保你你已正确配置 PeerTube(config/ directory),特别是“webserver”部分。

在这里插入图片描述

经分析,实际上还是出现了截端口现象,所以还需要将下面的代码填入到 npmAdvanced

   location / {  proxy_set_header Host $host:444;  proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;  proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Protocol $scheme;proxy_pass  http://192.168.0.197:8900;  proxy_redirect http:// https://;  }

在这里插入图片描述

命令行安装

采用 docker-compose 安装,需要准备环境变量文件 .env.txtdocker-compose.yml 文件

.env.txt 文件

.txt 做后缀名是为了在群晖上修改方便

在官方 https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/docker/production/.env 基础上修改出来的,为了便于理解,老苏改成了中文注释,所以你保存的时候,记得用 utf-8 编码格式

# Postgres 数据库设置
POSTGRES_USER=peertube
POSTGRES_PASSWORD=peertube
POSTGRES_DB=peertube# 同 POSTGRES_USER
PEERTUBE_DB_USERNAME=peertube
# 同 POSTGRES_PASSWORD
PEERTUBE_DB_PASSWORD=peertube
PEERTUBE_DB_SSL=false
# docker-compose.yml 中 Postgres service 名称 "postgres" 
PEERTUBE_DB_HOSTNAME=postgres# PeerTube 服务设置
PEERTUBE_WEBSERVER_HOSTNAME=peertube.laosu.ml# 端口需设置为域名的端口
PEERTUBE_WEBSERVER_PORT=444
PEERTUBE_WEBSERVER_HTTPS=true# trust_proxy 的 IP,用逗号分隔,最后一个为群晖主机IP
PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback", "172.18.0.0/16","192.168.0.197"]# 用 `openssl rand -hex 32` 生成
PEERTUBE_SECRET=8c38d40582cd475f50e87c2d83db9f10fd0ab78b9df3e5c35efa8e6282c0cbb9# E-mail 设置
# If you use a Custom SMTP server
PEERTUBE_SMTP_USERNAME=wbsu2003@88.com
PEERTUBE_SMTP_PASSWORD=<第三方邮件客户端专用密码>
PEERTUBE_SMTP_HOSTNAME=smtp.88.com
PEERTUBE_SMTP_PORT=25
PEERTUBE_SMTP_FROM=wbsu2003@88.com
PEERTUBE_SMTP_TLS=false
PEERTUBE_SMTP_DISABLE_STARTTLS=false
PEERTUBE_ADMIN_EMAIL=wbsu2003@hotmail.com# 启用注册
PEERTUBE_SIGNUP_ENABLED=true

几个主要参数的说明

  • PEERTUBE_DB_PASSWORDPOSTGRES_PASSWORD 要一致,虽然没有对外暴露端口,但是这个应用毕竟已经映射到公网上了,所以建议密码搞复杂一点;
  • PEERTUBE_WEBSERVER_HOSTNAME :这里只填域名,但一定不要带端口,也不要带协议
  • PEERTUBE_WEBSERVER_PORT:老苏因为没有备案,域名是带端口的,如果你是备案过的,这里填 443
  • PEERTUBE_WEBSERVER_HTTPS:设为 true 表示启用了 https 协议,如果这里是 false,如果你备案过的话,那 PEERTUBE_WEBSERVER_PORT 就改 80
  • PEERTUBE_SECRET:执行一次 openssl rand -hex 32 就行

可以在https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/config/custom-environment-variables.yaml 文件中找到其他配置选项

docker-compose.yml 文件

在官方 https://raw.githubusercontent.com/chocobozzz/PeerTube/master/support/docker/production/docker-compose.yml 基础上做了比较大的调整,例如:

  • 删掉了 webservercertbotpostfix
  • 删掉了卷 certbot-www 等等

版本 production-bullseye对应 v5.0.1-bullseye

version: "3.3"services:peertube:image: chocobozzz/peertube:v5.0.1-bullseye# Use a static IP for this container because nginx does not handle proxy host change without reload# This container could be restarted on crash or until the postgresql database is ready for connectionnetworks:default:ipv4_address: 172.18.0.42env_file:- .env.txtports:- "1936:1935" # Comment if you don't want to use the live feature- "8900:9000" # Uncomment if you use another webserver/proxy or test PeerTube in local, otherwise not suitable for productionvolumes:- assets:/app/client/dist- ./data:/data- ./config:/configdepends_on:- postgres- redisrestart: "always"postgres:image: postgres:14env_file:- .env.txtvolumes:- ./db:/var/lib/postgresql/datarestart: "always"redis:image: redis:6.2volumes:- ./redis:/datarestart: "always"networks:default:ipam:driver: defaultconfig:- subnet: 172.18.0.0/16volumes:assets:driver: localdriver_opts:type: 'none'o: 'bind'device: '/volume2/docker/peertube/assets'

docker-compose.yml 文件中需要修改的就两个地方:

  • 端口:
    • 1935rtmp 的默认端口,老苏机器上还有 Owncast,所以被占用了,改为了相邻的 1936
    • 9000web 端口,但是用这个端口的软件太多了,比如 portainer,所以改用了 8900
  • 网络:subnet: 172.18.0.0/16,这是 docker 的子网

在这里插入图片描述

如果非常巧合的情况下,172.18.0.0/16 正好被其它 docker 占用了,你会在一键启动时,看到 ERROR: Pool overlaps with other one on this address space 错误

在这里插入图片描述

这个时候你只能改其他网段试试了,如果这里改了,记得

  • peertube 块中的 ipv4_address 要改
  • .env.txt 中的 PEERTUBE_TRUST_PROXY 也要相应的调整

以上工作都完成之后,你可以依次执行下面的命令

# 新建文件夹 peertube 和 子目录
mkdir -p /volume2/docker/peertube/{assets,config,data,db,redis}# 进入 peertube 目录
cd /volume2/docker/peertube# 将 .env.txt 和 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 https://peertube.laosu.ml:444 就可以看到主界面了

在这里插入图片描述

不要用http://群晖IP:8900,否则右下角还是会显示 无法检索 OAuth 客户端证书 错误

管理员账号

方法一

/docker/peertube/data/logs 目录中找到 peertube.log 文件

在这里插入图片描述

打开 peertube.log,搜索 root

{"message":"Username: root","level":"info","label":"peertube.laosu.ml:444","timestamp":"2023-02-21T15:16:06.996Z"}
{"message":"User password: vohiniduyinajiso","level":"info","label":"peertube.laosu.ml:444","timestamp":"2023-02-21T15:16:06.996Z"}

其中密码就是 User password 后面的 vohiniduyinajiso

方法二

可以用找回密码,来获取管理员 root 的密码,电子邮件就是我们之前填写的 PEERTUBE_ADMIN_EMAIL 的值

在这里插入图片描述

如果邮件配置没问题的话,很快就会收到重置的邮件

在这里插入图片描述

点邮件中的链接,直接重置密码即可

在这里插入图片描述

方法三

通过命令行方式对密码进行管理员账号 root 的密码进行重置

# 重置 root 用户的密码
docker-compose exec -u peertube peertube npm run reset-password -- -u root

在这里插入图片描述

拿到管理员密码后,用用户名 root,也可以用邮件地址 wbsu2003@hotmail.com 登录,对网站进行设置

在这里插入图片描述

注册用户

也可以新建一个用户,用来发布视频

在这里插入图片描述

接下来就是建频道,发布视频

在这里插入图片描述

发布成功后,如果是公开的可以在首页看到

在这里插入图片描述

直接可以播放

在这里插入图片描述

更多的功能老苏也在抽空摸索中

参考文档

GitHub - Chocobozzz/PeerTube: ActivityPub-federated video streaming platform using P2P directly in your web browser
地址:https://github.com/Chocobozzz/PeerTube

PeerTube 是什么? | JoinPeerTube
地址:https://joinpeertube.org/zh_Hans

new docker install, Cannot generate HTML page. ENOENT: no such file or directory · Issue #4522 · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/issues/4522

Invalid client: client is invalid · Issue #3151 · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/issues/3151

PeerTube/tools.md at develop · Chocobozzz/PeerTube
地址:https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/tools.md#reset-passwordjs

PeerTube documentation
地址:https://docs.joinpeertube.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37687.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能Python-python_board

Python Board - 一个强大的开源论坛系统 简介 Python Board是一个基于Django框架的开源论坛系统&#xff0c;具有用户管理、帖子管理、分类管理、评论管理、站内信等功能&#xff0c;支持Markdown格式的文本编辑&#xff0c;并且代码开放&#xff0c;可以由其他开发者进行二次…

记计算机三级网络技术考试经历(附题库)

有教学视频和题库&#xff08;见文末&#xff09;&#xff0c;零基础跟着题库复习两天能过&#xff0c;亲身经历&#xff0c;朋友圈和证书为证。以下时考完后写的总结&#xff1a; 眼见24日的考试步步紧逼也不能白花钱当水军吧&#xff0c;就向同学要来了题库看看视频做做题&a…

chatgpt赋能python:Python题库选择指南

Python题库选择指南 Python 是一种高级编程语言&#xff0c;非常受开发者们的欢迎&#xff0c;它易于学习&#xff0c;语法简洁&#xff0c;广泛应用于数据科学、机器学习、人工智能、自动化、Web开发等多个领域。为了掌握 Python 编程的技能和知识&#xff0c;你需要在练习中…

如何写好周报并建立周报模板

作为一个刚入门的打工人&#xff0c;开始工作后&#xff0c;才发现写周报真的很重要。华为对于新员工有相关的培训&#xff0c;但等我看到那里时已经是我正式工作的第二周了&#xff0c;回首第一周自己freestyle的周报就很...惨不忍睹。所以在此做一个总结&#xff0c;如何写好…

QT-登录界面的实现

QT-登录界面的实现 一、登录界面设计要求 ​ 创建一个窗体&#xff0c;设计用户登录的界面&#xff08;含有用户名、密码&#xff09;&#xff0c;并实现用户登录的功能&#xff0c;要求用户提交的登录按钮时能获取界面中的用户名、密码数据并与数据库中的数据进行匹配&#…

tkinter UI界面模板

写在前面 之前也有写过一篇关于tkinter交互界面的文档&#xff0c;那也是第一次接触&#xff0c;准确说是实际工作用到这个东西&#xff0c;也是现学现卖。当时考虑的也是不多&#xff0c;各种东西都是基于当时特定需求的设定&#xff0c;随着用的越多&#xff0c;越发的发掘之…

QT 做的仿QQ UI界面 登录注册聊天

下载地址:x​​​​​​​QT仿QQ聊天实时IMUI-C文档类资源-CSDN下载 1. 登录 2.主页面 3. 聊天页面 参考了不少人的东西,做出来的. 代码结构如下:

QT——可视化界面ui

目录 1. 需要文件 2.文件关系及编写 3. 源码 4. 界面的模态与非模态 1. 需要文件 test.cpp test.h test.ui ui_test.h 2.文件关系及编写 test.ui&#xff1a; 可视化界面&#xff1b; test.cpp: 启动可视化界面&#xff0c;及可视化界面的各种相关功能源文件&#x…

Qt实现一个登录界面及工具集界面UI

程序功能 Qt实现一个登录界面与工具集界面&#xff0c;包含头像更改&#xff0c;界面换肤&#xff0c; 登录密码的密文输入与显示输入切换&#xff0c;用户名记忆与密码记忆&#xff08;仅界面功能未定义&#xff09;&#xff0c;边角小按钮功能预留&#xff1b;工具集界面仅实…

UI界面编写(仿QQ聊天界面)

UI界面编写实战 这里我们模拟QQ聊天的主界面&#xff0c;编写一个简单的聊天界面。 项目描述 首先搭建我们的主界面&#xff0c;在最上边放一个标题栏&#xff0c;然后是一个ListView&#xff0c;用于展示发送的消息&#xff0c;最下边是选择要发送的表情&#xff0c;内容类…

QT登录界面设计及跳转主界面

文章目录 QT登录界面设计及跳转主界面界面样式创建流程界面设计所需控件界面外观设计添加底色设置密码输入框以密文显示&#xff1a; 程序设计取消按钮登录按钮 注&#xff1a; QT登录界面设计及跳转主界面 界面样式 先贴图 创建流程 首先创建界面&#xff1a; 选择无按钮…

开源一个ChatGPT AI角色对话项目

最近对AI很感兴趣&#xff0c;花了几天时间学习Android&#xff0c;尝试着结合Bmob AI SDK&#xff0c;做了一个具有角色功能的开源项目。可能是因为目前这类型的项目还比较少&#xff0c;发布之后&#xff0c;竟然还获得了几个star和fork。对于一个Android小白来说&#xff0c…

公司宣传片拍摄文案怎么写?

公司宣传片拍摄文案怎么写&#xff1f; 如今的公司宣传片拍摄已成为趋势&#xff0c;很多的企业采用宣传片的方式进行企业的宣传推广。在进行宣传片制作时&#xff0c;宣传片制作需求不同&#xff0c;宣传片制作内容也不同。一般宣传片制作内容是整个宣传片制作的关键&#xf…

短视频拍摄脚本怎么写

优质的短视频每一个镜头都经过精心设计&#xff0c;镜头的设计就是利用镜头脚本&#xff0c;提前设想好一切想要的镜头效果和画面&#xff0c;最终作品才能一气呵成的呈现出来&#xff0c;接下来就来分析一下短视频拍摄脚本怎么写&#xff0c;短视频拍摄脚本有什么用? 短视频脚…

微信小程序:调用API接口

首先去果创云之类的API调用的网站找到你想调用的API 以大学查询接口为例 复制API的接口&#xff0c;然后要现在第一个&#xff1f;前面加上appkey&#xff0c;然后name可以换成变量&#xff0c;最后的10是显示的条数&#xff0c;也可以改。 最后效果是可以查询你想要查询的学校…

微信小程序开发调用接口

今天我们自己调用自己商城中的接口 以下是简单的示例 这是自己的目录结构&#xff0c;我选择的是index1来开发 首先在 index.js中想写逻辑代码 其中page里面的data里面是前台展示时的一些数据&#xff0c;而onload里面是调用的接口&#xff0c;调用的方式为get调用&#xff…

微信小程序调用api接口实例

页面效果&#xff1a; 1、首先在微信开发者工具中开启http域名 2、然后回到开发者工具中&#xff0c;找到详情》项目配置&#xff0c;进行刷新或者重新编译 3、在index.wxml页面中写一个button: <view><button bindTap"test">测试</button> <…

GPT-4 发布:在考试中击败 90% 的人类;谷歌开放大语言模型 PaLM API;FireFox 111 发布|极客头条

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&…

.net应用程序和TW3的ADS之间通讯

Beckhoff ADS (Automation DeviceSpecification)提供一个应用程序之间互相通信的接口&#xff0c;在TW3系统中&#xff0c;TwinCAT PLC&#xff0c;TwinCAT NC等被设计成虚拟的自动化设备&#xff0c;类似于实际的物理设备与设备之间通过基于TCP协议的路由来交换信息&#xff0…

基于CTP的期货集中管理系统之登录篇

上一篇是说要做这个管理系统&#xff0c;还没开始做&#xff0c;就头皮发麻了。想想要实现那么多功能&#xff0c;已经想放弃了。但是呢&#xff0c;我们是日拱一卒的时间主义者&#xff0c;小小的抵触情绪是无法打到我们的。 前端使用VUE,后端使用C来做分布式交易管理总控系统…