この記事は、Solanaチェーン上のプロジェクト「Media Network」のテストネットメディアサーバー構築を、初心者でもほぼコピペするだけで構築できるように、自身の備忘録も兼ねてまとめたものです。
私自身Linuxはほとんど触ったことのないド素人なので、間違いや非効率な部分が大いにあると思います。
その場合、ご指摘をいただけたら幸いです。
##前提条件
・solletウォレットを所有している。
https://www.sollet.io/
・テストネット用SOLを保有している。※1SOLあれば十分
・運営にテストネット参加を表明する。
hello@media.foundationにSOLのアドレスをメールで送信するとテスト用トークンを100もらえます。
現時点でこのトークンはまだ使わないと思います。
・VPSを契約するための出費を許容できる。
おすすめは以下の「Time4VPS」!!
かなりリーズナブルなのでおすすめです。
契約方法はこちらのサイトで詳しく説明されているのでご参照ください。
OSはubuntu20.04かDebian10にしましょう。おすすめはubuntuです。
以下Time4VPSで作業をする前提で説明させていただきます。
#サーバ構築前の準備
契約したVPSは、rootでssh接続をすることになると思います。
それではセキュリティ的に脆弱なので、一手間加えましょう。
構築前の準備は別にやらなくてもメディアサーバーは建てられますが、
犯罪に巻き込まれないためにもやっておいたほうがいいと思います。
使用するターミナルはWindowsなら↓がおすすめです。Macはもともと入ってるやつでいいと思います。
最初に、本来ならばコードの前に$や#をつけるところですが、「コピペでできる」というコンセプトなので省略いたします。
以下ターミナル上で黒枠内のコードをコピペしてください。※[ ]内は自身で入力するものです[]は外して入力してください。
契約したVPSにssh接続する。
ssh root@[IP Address]
####一般ユーザの追加
好きなユーザ名を設定しましょう。
useradd -m -s /usr/bin/bash [ユーザ名]
passwd [ユーザ名]
新しいパスワードを設定する。
New password: [好きなパスワード] #新しいパスワードの設定 ※表示されません
Retype new password: [好きなパスワード] #再入力
####sudoグループに[ユーザ名]を追加
adduser [ユーザ名] sudo
追加されているか確認する
cat /etc/group | grep sudo
以下が表示されていればOK
``sudo:x:27:[ユーザ名]``
***
####ポートの開放
ufw enable
ufw allow 80
ufw allow [49152 〜 65535の内、好きなポート1つ]
``例) ufw allow 50022``
ufw reload
ufw status
↓以下が表示されることを確認 **※これはコピペ不要**
Status: active
To Action From
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 ALLOW Anywhere
80 (v6) ALLOW Anywhere (v6)
50022 ALLOW Anywhere #ここは開放した好きなポートが出ます
50022(v6) ALLOW Anywhere (v6) #ここは開放した好きなポートが出ます
####SSH接続の設定ファイルのバックアップ
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
####SSH接続の設定変更
vi /etc/ssh/sshd_config
``35行目の``
``PermitRootLogin yes``
``yes を no に変更する。``
↓
。
viの使い方は以下のサイトが詳しいです。
https://eng-entrance.com/linux-command-vi
きちんと編集されたか確認する
diff /etc/ssh/sshd_config /etc/ssh/sshd_config.org
以下の表示が出るか確認する。
``< PermitRootLogin no``
``---``
``> PermitRootLogin yes``
sshd -t
これでエラーを吐かなければOK。次に進んでください。
systemctl restart sshd.service
exit
exit
再度rootでSSH接続を試みてください。
ssh root@[IP Address]
``Permission denied, please try again.``の表示が出てログインできなければ成功です。
***
####ssh接続ポートの変更
一般ユーザでログインする。
ssh [ユーザ名]@[IP Address]
sudo su
最初に設定したパスワードを入力
sudo sed -i -e "s/^#Port 22$/Port [先ほど開放した好きなポート]/" /etc/ssh/sshd_config
``例) sudo sed -i -e "s/^#Port 22$/Port 50022/" /etc/ssh/sshd_config``
sudo systemctl restart sshd
exit
exit
***
変更したポートで一般ユーザにログインできることを確認する。
ssh -p [開放した好きなポート] [ユーザ名]@[IP Address]
``例)ssh -p 50022 ubuntu@192.168.1.11``
これで構築前の準備は完了です!
##メディアサーバーを構築する
rootに入る
```
sudo su
nanoとNode.jsのインストール
apt update; \
apt install -y git htop curl nano xz-utils tmux; \
curl -sL https://deb.nodesource.com/setup_15.x | bash -; \
apt install -y nodejs
FFmpegのインストール
cd /tmp; \
rm -rf /tmp/ffmpeg-git*; \
wget https://media.network/static/ffmpeg-release-amd64-static.tar.xz; \
tar xvf ffmpeg-release-amd64-static.tar.xz; \
cd /tmp/ffmpeg-*/; \
mv ffmpeg ffprobe /usr/bin/; \
cd /root;
メディアサーバーのGitリポジトリのクローンを作成
git clone https://github.com/mediafoundation/mediaserver.git; \
cd mediaserver; \
npm i
npmのアップデート
npm install -g npm
パスフレーズとapiパスワードの変更
nano config.js
nanoの使い方は以下のサイトが詳しく説明しています。
以下の部分を編集する。
const config = {
passphrase: "ここに任意のパスフレーズを入力する", #ここを編集する
api : true,
api_user: 'admin',
api_pass: 'ここに任意のパスワードを入力する', #ここを編集する
},
rtmp: {
//...
apiユーザーとapiパスワードは後で管理パネルに入る際に使うので覚えておく!
サーバーを起動する。
node app &
いったんここを参照しMedia Networkアプリ設定を行う。
Step 3のIPアドレスはメディアサーバーを構築したVPSのIPv4アドレスに:80を加えたものを入力してください。
例)192.168.1.11:80
ResourceIDを控えておく。
xxxxxxx.medianet.work
xxxxxxxの部分です。
チャンネルのウェブサイトを編集する
nano views/channel.html
下のほうにすすんでResourceIDがあるところを探す。
<div class="column-2">
<form id="videoUrlForm">
<div class="form-group">
<label for="url">Video URL<span id="https-only" class="hide"> (HTTPS only)</span>:</label>
<input type="text" class="form-control" id="url" name="url" placeholder="Please enter video url" required
value="https://xxxxxxx.medianet.work/live/<%= name %>/index.m3u8" /> #←先ほど控えたResourceIDに置き換える。
</div>
管理パネルにアクセス
https://xxxxxxx.medianet.work/admin/
apiユーザとapiパスワードを使用してログイン
サーバーが動いていることを確認する。
以上でメディアサーバの構築は終了です。
動画配信はまだうまくできてないので、うまくできたらまとめるつもりです。
##参考、引用サイト