RHELでYoutubeを自作してみる

1. はじめに

こんにょちわっす、しなもっさんです。

突然ですが皆さんはYoutubeをご存じです。
老若男女問わずいろんな人が気軽にたのしむことができる、そんなサービスYoutubeを自分で作りたいと思ったことありますよね。

ということでPeerTubeを使ってYoutube自作してみます!

2. 前提条件

  • 今回構築するのは最低限動く環境のみです。
  • 今回は必要なソフトウェアのインストールもやります。
  • 実際に使用した環境はAlmaLinux 9.6 (RedHat Enterprise Linux Base)です。
  • 筆者環境ではPostgreSQL17-serverを使用しています

3.環境構築

3-1. 前提ソフトウェアの準備

今回インストールするソフトは以下のソフトです
公式とは別のバージョンを使用するので注意してください
すべてインストールできている方は手順3-2まで飛ばしてください。今回インストールするソフトは以下のソフトです

1. nodejsをインストールする
$ sudo dnf module install nodejs:22
2. Yarnをインストールする
$ curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.yum.repos.d/yarn.repo
$ sudo dnf install yarn
3. FFmpegをインストールする
$ sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
$ sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-release-latest-9.noarc
h.rpm
$ sudo dnf upgrade
$ sudo dnf install ffmpeg

はい、これでインストールできればいいのですがインストールできないことが多いです。
その場合はこちらを参照してください
AlmaLinux9でFFmpegがインストールできないときの対処法

4.その他もろもろのインストール
$ sudo dnf install postgresql17 postgresql17-server postgresql17-contrib openssl gcc-c++ make wget redis git httpd
5. systemctlでredisとpostgresql17を有効にして起動する
$ sudo systemctl enable --now redis
$ sudo systemctl enable --now postgresql-17
6. youtube-dlを動作させるためにpython3からpythonへのシンボリックリンクを作成する
$ sudo ln -s /usr/bin/python3 /usr/bin/python

3-2. PeerTubeを準備する

ユーザーの設定

homeを使用してユーザーを作成し、パスワードを設定します

$ sudo useradd -m -d /var/www/peertube -s /usr/sbin/nologin -p peertube peertube
$ sudo passwd peertube

nginx等のソフトで通過できるようにpeertubeのhomeフォルダの権限を変更します

$ sudo chmod 755 /var/www/peertube
データベースをインストールしていく

PostgreSQL内にユーザーを作成します。

$ cd /var/www/peertube
$ sudo -u postgres createuser -P peertube

PostgreSQLユーザーの新しいパスワードが必要です
何も入力せずにEnterを押すとパスワードは空になります
この後に使用するのでパスワードは控えておいてください

次に本番データベースを作成します

$ sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod

ついでにPeerTubeの動作に必要な拡張機能を有効にします

$ sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod
$ sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod
PeerTube本体を準備

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"

peertubeディレクトリを開いて必要なディレクトリを作成します

$ cd /var/www/peertube
$ sudo -u peertube mkdir config storage versions
$ sudo -u peertube chmod 750 config/

PeerTubeの最新バージョンをダウンロードして解答し、zipファイルを削除します

$ 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

そしてPeerTubeをインストールしましょう

$ cd /var/www/peertube
$ sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest
$ cd ./peertube-latest && sudo -H -u peertube npm run install-node-dependencies -- --production

PeerTube提供のデフォルトの構成ファイルをコピーします
今コピーしたdefault.yamlファイルは編集しないでください

$ cd /var/www/peertube
$ sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml

次に本番環境の構成例をコピーし手編集します

$ cd /var/www/peertube
$ sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
$ nano config/production.yaml

webserver内のhostnameにアクセスするURLを入力します
ここで入力した値の変更できないので注意してください

Nginxの設定

公式のテンプレートをコピーします

$ sudo cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube

ドメインの設定をします(example.comをあなたのpeertubeのドメインに変更してください)

$ sudo sed -i 's/${WEBSERVER_HOST}/example.com/g' /etc/nginx/sites-available/peertube
sudo sed -i 's/${PEERTUBE_HOST}/127.0.0.1:9000/g' /etc/nginx/sites-available/peertube

Nginxのプロファイルを有効化してNginxを再起動します

$ sudo ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/peertube
$ sudo systemctl stop nginx
$ sudo certbot certonly --standalone --post-hook "systemctl restart nginx"
$ sudo systemctl restart nginx
Systemdをセットアップ

systemdから起動できると何かと便利なのでセットアップしておきましょう

まずは公式の構成テンプレートをコピーします

$ sudo cp /var/www/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/

次にサービスファイルをチェックします

$ sudo nano /etc/systemd/system/peertube.service

PeerTubeをスタートアップに設定します

$ sudo systemctl daemon-reload

ついに起動させるぞ!!!

$ sudo systemctl start peertube
$ sudo journalctl -feu peertube

起動した!!!!!!

3-3. おい。設定はどうする

私はここで詰まりました。ログインIDがわからないのです。
PeerTubeで管理者パスワードを設定していない場合は起動ログから確認できます

sudo journalctl -u peertube | grep "User password:"

こんなコマンドを出せばパスワードが出てきます

そのIDでログインしてあとは適当に設定してあげてください

できた

4. おわりに

今回はPeerTubeというY〇utube似のSNSサーバーの構築をしてきました。
また、間違っている点や質問があればぜひコメントお願いします。

今回実際に構築したサイト : https://peertube.cinm.me

コメント

タイトルとURLをコピーしました