0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RustのRTMPサーバーをGCPにデプロイしたときの記録

Posted at

はじめに

RustのRTMPサーバーを、GCPにデプロイしてOBSで動作確認できたので備忘録的に残しておきます。
あまりプログラムの部分は書いていないので、動作を確認するのがメインになるかと思います。

サンプルのプログラム

https://github.com/KallDrexx/rust-media-libs/tree/master/examples/threaded_rtmp_server

今回はこのリポジトリの、threaded_rtmp_serverの、ライブラリのバージョンを

Cargo.toml
[package]
name = "everlong"
version = "0.1.0"
authors = ["Papillon6814 <41826375+Papillon6814@users.noreply.github.com>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
slab = "0.4.2"
bytes = "0.5.4"
rml_rtmp = "0.3.2"

このように調整して、実行しました。

Google Compute Engineの仮想インスタンスの作成

次は、GCPにアクセスして、VMインスタンスを作成します。

image.png

VMインスタンスは、仮想でつくられたサーバーのようなものです。
インスタンスを作成というところを選択すると、VMインスタンスの作成ページへと遷移します。

そこにはこのように入力しました。

  • 名前: instance-2
  • マシンの構成
    • シリーズ: N1
    • マシンタイプ: n1-standard-2
  • ディスクイメージ: Ubuntu 18.04.1 LTS x86_64
  • HTTPトラフィックを許可する
  • HTTPSトラフィックを許可する

これでVMインスタンスを作成します。

GCPで、RTMP通信用のポート1935を開ける

VPCネットワークから、ファイアウォールルールを選択します。

image.png

そして、ファイアウォールルールを作成というボタンから、RTMP通信用のポート1935でのTCP通信を許可します。

image.png

このような内容で新しいルールを作成しました。

VMインスタンスにファイアウォールルールを適用する

ルールを作成しただけでは、VMインスタンスに適用されないので手動でルールを設定してあげます。
VMインスタンスの編集画面に行き、

image.png

ネットワーク タグという項目に先程作成したallow1935-serverを追加します。

Cloud SDKの導入

terminalからssh接続がしたかったので、Google Cloud SDKを導入します。
以下のリンクを参考に導入ができると思います。

https://cloud.google.com/sdk/docs/quickstart-macos?hl=ja

自分のVMインスタンスにssh接続

Cloud SDKが導入できたら、自分のVMインスタンスにssh接続します。

GCPのVMインスタンスのページから、ssh接続するためのgcloudコマンドを表示という項目を選び、コマンドを自分のターミナルで実行します。

image.png

すると、自分のVMインスタンスにssh接続できるかと思います。

VMインスタンスでのRustの導入

VMインスタンス上でもRustを実行できるようにしないといけないので、ssh接続をしたターミナルでRustのインストール用のコマンドを実行します。

~$ curl https://sh.rustup.rs -sSf | sh

このコマンドでRustの実行環境が導入できます。

RustのRTMPサーバーの導入

ssh接続しているVMインスタンス上で、

mkdir ~/Documents
cd ~/Documents
mkdir ./Github
cd ./Github
git clone https://github.com/Papillon-inc/Everlong.git (ここは自分のクローンしたいリポジトリ)

を実行します。
これで、RTMPサーバーが導入できました。

サーバーの実行

Cargo.tomlのある階層で、

cargo build
./target/debug/[プロジェクト名]

でプログラムを実行します。

$ ./target/debug/everlong
Listening for connections on 0.0.0.0:1935

このように、1935番ポートでRTMPの受付が始まりました。

OBSで、サーバーが反応していることを確認

OBSを開き、
設定配信を開きます。

image.png

このサーバーの欄に、VMインスタンスのグローバルIPと1935からなるURLを入力します。
rtmp://???.???.???.???:1935
こういう感じです!
ストリームキーはとりあえず今回はなんでもいいです。

そして、キャプチャするものをOBSで選択し、配信開始ボタンを押すと、

image.png

このように、RTMPの通信に反応していることを確認できます!

おわり

iosのHaishinKitを使ってのRTMPサーバーへの接続もうまくいったので、機会があったらまとめてみようかと思っています。
今回のサーバーはとりあえず動いてくれて嬉しかったです。

参考リンク

https://ticktakclock.hatenablog.com/entry/2018/09/12/203900
https://qiita.com/yoshiyasu1111/items/0c3d08658560d4b91431

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?