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 更适合录播内容管理,两者可以配合使用。

相关推荐
爱睡懒觉的焦糖玛奇朵4 小时前
【从视频到数据集:焦糖玛奇朵的魔法工具使用说明】
人工智能·python·深度学习·学习·算法·yolo·音视频
潜创微科技7 小时前
IT68353:双 DP1.4a+HDMI2.0 转 HDMI2.0 单芯片 KVM 切换方案
嵌入式硬件·音视频
wb1898 小时前
Kubernetes服务优化
云原生·容器·kubernetes
沐禾安信8 小时前
同一画面,如何两个视频同时播放,两个方法
电脑·音视频·分屏·视频转换
500848 小时前
Conv + BN + ReLU 融合:省掉两次显存读写
flutter·架构·开源·wpf·音视频
爱睡懒觉的焦糖玛奇朵11 小时前
【从视频到数据集:焦糖玛奇朵的魔法工具Video To YOLO Dataset】
人工智能·python·学习·yolo·音视频
Waay13 小时前
图文详解|K8s Pod内部结构
docker·云原生·kubernetes
神秘的摄影师13 小时前
2026年AE音乐素材下载网站TOP5评测——短视频与自媒体创作者专属指南
音视频·媒体
2601_9577867713 小时前
短视频矩阵系统的信号处理密码:用奈奎斯特采样定理破解“限流“黑箱
矩阵·音视频·信号处理
openFuyao14 小时前
以开源之力,突破多样化算力困局——openFuyao开源一周年背后的故事
人工智能·云原生·开源·openfuyao·多样化算力·集群软件