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