文章首發於公號「阿拉平平」
最近在 GitHub 上看到了一個比較有意思的視頻平臺 PeerTube,與一般的視頻平臺不同,它的目標是打造一個去中心化的視頻平臺,即使某個節點出現問題,也不會影響觀衆觀看視頻。本文將介紹 PeerTube 的安裝與使用方法。
項目介紹
PeerTube [1] 是一個開源、分佈式、可互聯的視頻平臺,通過點對點網絡來減少單一服務器的負載。任何人都可以在服務器上搭建 PeerTube,共享上傳的視頻。
下載安裝
目前 PeerTube 的最新版本爲 v3.0.1,可以通過源碼或者 docker 來安裝。這裏我準備採用容器的方式,將項目部署在一臺 CentOS 7.8 的虛擬機上。
部署前需要安裝 docker
和 docker-compose
。安裝好後,創建並進入 PeerTube 的工作目錄:
[root@localhost ~]# mkdir /opt/peertube/
[root@localhost ~]# cd /opt/peertube/
編排文件
下載最新的編排文件 docker-compose.yaml
[root@localhost peertube]# curl https://raw.githubusercontent.com/chocobozzz/PeerTube/develop/support/docker/production/docker-compose.yml > docker-compose.yml
這個文件將創建以下服務,可根據實際情況進行調整:
- webserver:web 服務,供瀏覽器訪問。
- peertube:後端服務,提供核心內容。
- redis:後端數據存儲。
- postgres:後端數據庫。
- postfix:提供郵件服務。
- certbot:自動續期 Let’s Encrypt 證書。
.env
下載最新的 .env
文件:
[root@localhost peertube]# curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/develop/support/docker/production/.env > .env
修改以下參數:
-
<MY POSTGRES USERNAME>
:數據庫的用戶名。 -
<MY POSTGRES PASSWORD>
:數據庫的密碼。 -
<MY DOMAIN>
:域名,不用加https://
。 -
<MY EMAIL ADDRESS>
:郵箱地址。
webserver
webserver 本質是一個 nginx 服務,所以需要下載配置文件 peertube
:
[root@localhost peertube]# mkdir -p docker-volume/nginx
[root@localhost peertube]# curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/develop/support/nginx/peertube > docker-volume/nginx/peertube
如果要使用本地的 nginx 服務,則需要修改配置文件的變量值,並註釋掉編排文件中的 webserver。
域名
搭建 PeerTube 需要一個 HTTPS 域名,如果滿足條件,可以註釋掉編排文件中的 certbot。
如果有域名,但沒有 HTTPS 證書,可以通過 certbot 生成免費的證書。
[root@localhost peertube]# mkdir -p docker-volume/certbot
[root@localhost peertube]# docker run -it --rm --name certbot -p 80:80 -v "$(pwd)/docker-volume/certbot/conf:/etc/letsencrypt" certbot/certbot certonly --standalone
由於手邊沒有域名,所以準備以 https://<ip>
來訪問,配置方法如下:
# 創建並進入目錄,192.168.128.134 爲虛擬機 IP
[root@localhost peertube]# mkdir -p docker-volume/certbot/conf/live/192.168.128.134
[root@localhost peertube]# cd docker-volume/certbot/conf/live/192.168.128.134
# 生成 HTTPS 證書
[root@localhost 192.168.128.134]# openssl genrsa -des3 -out privkey.pem 2048
[root@localhost 192.168.128.134]# openssl rsa -in privkey.pem -out privkey.pem
[root@localhost 192.168.128.134]# openssl req -new -key privkey.pem -out privkey.csr
[root@localhost 192.168.128.134]# openssl req -new -x509 -key privkey.pem -out ca.crt -days 3650
[root@localhost 192.168.128.134]# openssl x509 -req -days 3650 -in privkey.csr -CA ca.crt -CAkey privkey.pem -CAcreateserial -out fullchain.pem
啓動
全部配置完成後,運行以下命令啓動:
# 回到工作目錄並啓動
[root@localhost 192.168.128.134]# cd /opt/peertube/
[root@localhost peertube]# docker-compose up -d
服務啓動後,就可以通過瀏覽器來訪問,界面如下:
使用說明
本章將簡單演示下 PeerTube 的用法,包含:
- 如何用 root 賬號登錄
- 如何上傳視頻
- 如何訂閱視頻
登錄
PeerTube 內置了一個管理員賬號,通過以下命令獲取 root 的密碼:
[root@master peertube]# docker-compose logs peertube | grep -A1 root
peertube_1 | [192.168.128.134:443] 2021-03-15 07:38:30.809 info: Username: root
peertube_1 | [192.168.128.134:443] 2021-03-15 07:38:30.809 info: User password: kegumejubikozido
登錄後的界面如下:
上傳視頻
點擊右上角的「上傳」,選擇要上傳的視頻。
上傳的視頻可以在線播放,支持下載、分享以及評論:
訂閱視頻
如果需要訂閱他人的視頻,只需在管理頁面選擇 「Instances you follow 」,點擊「Follow domain」,加入域名即可。
提交的請求需要對方允許,否則會一直處於等待中:
寫在最後
PeerTube 的機制與 BT 下載類似,多個用戶在觀看同一部視頻時,可相互連接、傳輸數據給對方,達到播放視頻加速的效果。如果大家對這個項目有興趣的話,可以查閱官方文檔 [2] 獲得更多幫助。
References
[1] PeerTube: https://github.com/Chocobozzz/PeerTube
[2] 官方文檔: https://docs.joinpeertube.org