Hướng dẫn cài đặt giải pháp streaming P2P dùng Peertube
Bài viết này sẽ hướng dẫn cách cài đặt giải pháp streaming P2P dùng Peertube trên Ubuntu 20 LTS.
Peertube là một nền tảng chia sẻ video liên hợp, tự do và mã nguồn mở hoạt động với hình thức tự lưu trữ (self-hosting). Nền tảng này sử dụng giao thức ActivityPub và WebTorrent, một công nghệ P2P tiết kiệm tài nguyên cho các máy chủ cá nhân.
Dự án bắt đầu vào năm 2017 bởi một lập trình viên biệt danh Chocobozzz và được tài trợ bởi tổ chức phi lợi nhuận Framasoft ở Pháp. Mục tiêu là tạo ra một nền tảng đối đầu với các nền tảng tập quyền như YouTube, Vimeo, và Dailymotion.
Cài đặt Peertube
1. Yêu cầu cần thiết:
VPS OS Ubuntu 20 LTS đã được cài đặt các tiện ít cơ bản như: curl, unzip, vim
Nếu VPS bạn chưa cài đặt có thể thực thi lệnh sau:
apt-get install curl sudo unzip vim
Tiếp theo VPS cần được cài đặt NodeJS 14.x. Để có thể cài đặt NodeJS:
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
Sau đó VPS cần cài thêm yarn cho VPS:
npm install --global yarn
Thực hiện cài thêm Python:
apt update
apt install python3-dev python-is-python3
Cài đặt thêm các gói cần thiết:
apt install certbot nginx ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git cron wget
2. Đặt thư mục và database
2.1. Tạo User:
Thực hiện tạo một người dùng mới với tên “peertube” như sau:
useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube
- Lưu ý: Đối với đường dẫn thư mục chính chúng ta có thể thay đổi đường dẫn thư mục chính.
Tiến hành đặt password cho user “peertube” bằng cách thực thi lệnh sau:
passwd peertube
2.2. Database
Tiến hành tạo database và user peertube bên trong PostgreSQL:
cd /var/www/peertube
sudo -u postgres createuser -P peertube
Sau đó bạn sẽ được yêu cầu nhập password, bạn nên thực hiện đặt password user peertube bên trong PostgreSQL mật khẩu này sẽ được sao chép trong tệp production.yaml. Vui lòng đừng chỉ nhấn enter nếu không nó sẽ trống.
sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod
Kế tiếp bạn cần thực hiện bật các tiện ích mở rộng mà PeerTube cần:
sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod
sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod
3. Chuẩn bị thư mục dành cho PeerTube
Thực hiện nạp version mới nhất cho PeerTube:
VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4) && echo "Latest Peertube version is $VERSION"
Mở thư mục làm việc peertube, tạo một số thư mục bắt buộc:
sudo -u peertube mkdir config storage versions
sudo -u peertube chmod 750 config/
Tải xuống phiên bản mới nhất của ứng dụng Peertube, giải nén:
cd /var/www/peertube/versions
sudo -u peertube wget -q https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip
sudo -u peertube unzip -q peertube-${VERSION}.zip && sudo -u peertube rm peertube-${VERSION}.zip
Cài đặt Peertube:
cd /var/www/peertube
sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest
cd ./peertube-latest && sudo -H -u peertube yarn install --production --pure-lockfile
4. Tiến hành config PeerTube
Tiến hành sao chép file cấu hình mặc định chứa cấu hình mặc định do PeerTube cung cấp bằng cách thực thi các câu lệnh sau:
cd /var/www/peertube
sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml
Tiếp theo thực hiện sao chép file production mặc định:
cd /var/www/peertube
sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
Tại đây chúng ta có thể thực hiện cấu hình chỉnh sửa file cấu hình tại config/production.yaml thiết lập các thay đổi (webserver, database, redis, smtp and admin.email) các Key được xác định tại config/production.yaml sẽ tiến hành đè lên config/default.yaml
5. Webserver
Thực hiện copy file config webserver của peertube như sau:
cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube
Sau đó đặt miền cho tệp cấu hình máy chủ web. Thay thế [peertube-domain] bằng miền cho máy chủ peertube:
sed -i 's/${WEBSERVER_HOST}/[peertube-domain]/g' /etc/nginx/sites-available/peertube
sed -i 's/${PEERTUBE_HOST}/127.0.0.1:9000/g' /etc/nginx/sites-available/peertube
Kích hoạt tệp cấu hình bằng cách tạo 1 liên kết:
ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/peertube
Để tạo chứng chỉ cho miền của bạn theo yêu cầu để https hoạt động, bạn có thể sử dụng Let’s Encrypt:
systemctl stop nginx
certbot certonly --standalone --post-hook "systemctl restart nginx"
systemctl restart nginx
6. Tiến hành kích hoạt và chạy peertube
Thực thi lệnh sau để kích hoạt peertube và để peertube khởi động cùng với hệ thống:
systemctl start peertube
systemctl enable peertube
Sau đó thực thi lệnh sau để chạy peertube:
journalctl -feu peertube
Mở trình duyệt truy cập domain lúc nảy chúng ta đã config, được kết quả như sau:
Để lấy thông tin password root để đăng nhập vào peertube chúng ta tiến hành đọc file tại /var/www/peertube/storage/logs/peertube.log bằng lệnh cat, sau đó tìm đến thông tin password trong file:
Thực hiện login vào peertube như vậy là hoàn tất quá trình cài đặt peertube:
Tiến hành xem video trên peertube:
Vậy là đã hoàn thành quá trình cài đặt peertube trên VPS OS Ubuntu 20 LTS.
Chúc các bạn thành công!