PeerTube 部署指南:自建视频托管平台

PeerTube 部署指南:自建视频托管平台

PeerTube 是一个去中心化的视频托管平台,基于 ActivityPub 协议,可以和 Mastodon 等 Fediverse 应用互联。你可以用它搭建自己的视频平台:存放课程视频、技术分享、私人录像,也可以开放给社区使用。视频托管在你自己的服务器,不受平台审查,没有广告算法推荐,播放体验完全自控。

服务器配置建议

视频平台对存储和带宽要求较高:

用途 CPU 内存 硬盘 带宽
个人/小团队 2 核 2G 100GB+ 20Mbps
社区平台 4 核 4G 500GB+ 100Mbps

视频转码会消耗大量 CPU,建议开启后台转码,避免影响播放。我在 雨云 rainyun+com 开了一台 4 核 4G 带大硬盘的服务器专门跑 PeerTube,视频转码队列完全够用。雨云新用户注册填优惠码 2026off 能领 5 折优惠券。

使用 Docker 部署

bash 复制代码
mkdir -p /opt/peertube

# 下载官方 docker-compose 配置
cd /opt/peertube
curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/docker/production/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/docker/production/.env -o .env

编辑 .env 文件:

bash 复制代码
nano .env

关键配置项:

env 复制代码
# 服务器域名
PEERTUBE_WEBSERVER_HOSTNAME=video.你的域名.com
PEERTUBE_WEBSERVER_HTTPS=true
PEERTUBE_WEBSERVER_PORT=443

# 管理员邮箱
PEERTUBE_ADMIN_EMAIL=admin@你的域名.com

# 数据库
PEERTUBE_DB_USERNAME=peertube
PEERTUBE_DB_PASSWORD=数据库强密码
PEERTUBE_DB_HOSTNAME=postgres

# Redis
PEERTUBE_REDIS_HOSTNAME=redis

# SMTP 邮件(用于注册验证)
PEERTUBE_SMTP_HOSTNAME=smtp.你的邮件服务商.com
PEERTUBE_SMTP_PORT=587
PEERTUBE_SMTP_USERNAME=你的邮件账号
PEERTUBE_SMTP_PASSWORD=邮件密码
PEERTUBE_SMTP_FROM=noreply@你的域名.com
PEERTUBE_SMTP_TLS=false
PEERTUBE_SMTP_STARTTLS=true

配置 Nginx 反代

PeerTube 的 docker-compose 默认包含 Nginx,但如果你已经有自己的 Nginx/Caddy,需要做相应配置。

使用 Caddy:

bash 复制代码
sudo tee -a /etc/caddy/Caddyfile << 'EOF'

video.你的域名.com {
    reverse_proxy localhost:9000

    # 提高上传限制(视频文件很大)
    request_body {
        max_size 8GB
    }
}
EOF

sudo systemctl reload caddy

启动服务

bash 复制代码
cd /opt/peertube

# 首次启动
docker compose up -d

# 等待初始化完成(约 1-2 分钟)
docker compose logs -f peertube

# 获取管理员初始密码
docker compose exec -u peertube peertube node dist/server/tools/peertube.js get-settings

首次启动会自动生成管理员密码,记录下来。

初始配置

登录 https://video.你的域名.com 后,进入管理面板(Admin Panel):

实例设置

复制代码
管理 → 实例设置
- 实例名称:你的视频平台名称
- 简介:平台说明
- 关键词:用于 Fediverse 发现
- 默认语言:zh-Hans
- 注册:选择是否开放公开注册

视频配置

复制代码
管理 → 配置
- 视频配额:每个用户可上传的总量限制
- 每日配额:每日上传限制
- 允许的视频格式:mp4, webm, ogv, avi 等
- 最大视频大小:根据服务器带宽设置

转码设置

复制代码
管理 → 配置 → 转码
- 启用转码:是
- 线程数:根据 CPU 核心数设置(建议核心数-1)
- 720p、1080p:根据需要启用
- HLS 流:推荐开启(更好的播放体验)

频道和视频管理

创建频道

每个账户可以创建多个频道,类似 YouTube 上的子频道:

复制代码
我的账户 → 我的频道 → 新建频道
- 名称:技术分享
- 简介:Linux 和开发相关的视频
- 头像:上传图片

上传视频

支持直接上传或从 URL 导入(YouTube 等平台链接):

复制代码
上传 → 选择文件
- 标题、描述、标签
- 隐私设置:公开 / 不公开 / 仅我可见
- 频道选择
- 发布时间(可以定时发布)

联邦功能

PeerTube 基于 ActivityPub,可以和其他 PeerTube 实例以及 Mastodon 互联:

复制代码
管理 → 联邦 → 关注

关注其他 PeerTube 实例后,可以在本地搜索到其他实例的视频,实现内容聚合。

P2P 视频分发

PeerTube 的特色是使用 WebTorrent 技术,观看人数越多,服务器带宽压力越小,因为观众之间会互相传输视频数据。对于带宽有限的服务器特别友好。

存储优化

视频文件很大,建议把存储目录挂载到大容量磁盘:

bash 复制代码
# 如果使用 LVM 扩容(参考 LVM 文章)
# 挂载到 /opt/peertube/storage

# 或者使用对象存储(MinIO/S3)
# 在 PeerTube 配置里设置 object_storage

数据备份

bash 复制代码
cat > /opt/backup_peertube.sh << 'EOF'
#!/bin/bash

BACKUP_DIR=/backup/peertube

mkdir -p $BACKUP_DIR

# 备份数据库
docker exec peertube_postgres pg_dump -U peertube peertube > $BACKUP_DIR/db-$(date +%Y%m%d).sql

# 视频文件太大,只备份元数据
tar czf $BACKUP_DIR/config-$(date +%Y%m%d).tar.gz /opt/peertube/config

find $BACKUP_DIR -mtime +14 -delete
EOF

chmod +x /opt/backup_peertube.sh

更新

bash 复制代码
cd /opt/peertube
docker compose pull
docker compose up -d

PeerTube 最适合有内容创作需求但不想依赖平台的场景:技术团队内部知识分享、在线课程托管、播客视频版归档,或者只是不想让自己的视频被平台算法决定命运。相比 Owncast 专注直播,PeerTube 更适合录播内容管理,两者可以配合使用。

相关推荐
luoqice2 小时前
FLV文件解析
音视频
空中海3 小时前
Docker入门到精通
java·docker·eureka
小义_3 小时前
【Kubernetes】(十二)配置存储卷
云原生·容器·kubernetes
byte轻骑兵4 小时前
【AVRCP】规范精讲[10]:链路管理器LM互操作规则与场景落地
人工智能·音视频·蓝牙·avrcp·音视频控制
AI攻城狮4 小时前
AI的"平庸之恶":当机器正确地做了灾难性的事
云原生
JK Chen4 小时前
faster_whisper,视频转文字,并生成字幕文件
python·whisper·音视频
薪火铺子16 小时前
微服务认证方案对比与选型
微服务·云原生·架构
运维全栈笔记17 小时前
K8S部署Redis高可用全攻略:1主2从3哨兵架构实战
redis·docker·云原生·容器·架构·kubernetes·bootstrap
AI攻城狮18 小时前
AI Agent 从上线到删库跑路始末
云原生