【備忘録】ウェブブラウザから仮想マシンサーバを構築する手順

目標

Linux(debian)上に構築した仮想マシンサーバを構築する。

前提条件

以下の環境で構築を行います。

$ uname -a
Linux srvdeb 5.10.0-27-amd64 #1 SMP Debian 5.10.205-2 (2023-12-31) x86_64 GNU/Linux
$  uname -r
5.10.0-27-amd64

構築手順

kvm/QEMUのインストール

次のコマンドを実行し、仮想化に対応しているかどうか確認します。

$ cat /proc/cpuinfo | grep -c vm
8

結果が0以外であれば、問題ないです。

必要なアプリケーションをインストールします。

$ sudo apt install -y qemu-kvm virt-manager libvirt-daemon-system virtinst libvirt-clients bridge-utils

次のコマンドで、仮想化daemonを有効化します。

$ sudo systemctl enable --now libvirtd
$ sudo systemctl start libvirtd
$ sudo systemctl status libvirtd

ユーザーをkvm、libvirtグループに追加します。

$ sudo usermod -aG kvm <ユーザー名>
$ sudo usermod -aG libvirt <ユーザー名>

cockpit(サーバー)をインストールします。

$ sudo apt install -y cockpit cockpit-machines
$ sudo systemctl enable cockpit
$ sudo systemctl start cockpit
$ sudo systemctl status cockpit

正常に起動できた場合、https://<IPアドレス>:9090/にアクセスすると、ログイン画面が表示されます。

ログインは、kvm、libvirtグループに追加したユーザー名とパスワードでログインできます。

仮想マシンの作成

https://<IPアドレス>:9090/にアクセスし、ログインします。

ログイン後、メニューから「仮想マシン」を選択し、「仮想マシンの作成」ボタンをクリックします。

「名前」を入力し、「インストールタイプ」、「オペレーティングシステム」を選択したら「作成」ボタンをクリックすることで仮想マシンの作成ができます。

【備忘録】RTMPサーバーを構築する方法

準備

初めに使用するサーバーはUbuntu 20.04 LTS conoha の環境で進めていきます。

コンソールを開き

sudo apt update && sudo apt upgrade -y

を実行し、一応再起動してください。

次に

sudo apt install nginx libnginx-mod-rtmp

設定

お好きなエディタで /etc/nginx/nginx.conf を開き以下の内容を好きな場所に追加します。

rtmp {
  server {
    listen 1935;
    chunk_size 4096;
    application live {
      live on;
      hls on;
      hls_path /var/www/html;
      hls_fragment 5s;
    }
  }
}

設定を保存して再起動すれば

OBS等のソフトからライブを始められるはずです。

rtmp://{IP}:1935/live/{好きな名前}

視聴も↑か、 /var/www/html ないにある {好きな名前}.m3u8 を参照してください。

 

認証機能

ここから本題・・・。

テーマとしては例えばYoutubeのようなライブ機能でただURLにアクセスしても意味がないもの

これは例えばスパムだとか、Botを通して大量のパケットだとか、サーバーの容量を圧迫しないようにするため。

認証を踏むことで例えば同時に配信できる数に制限をかけたり、視聴用のページをカスタマイズすることができる。

設定項目に以下を加える

on_publish http://{IP}/{認証ページ}

また配信終了の合図は

on_publish_done http://{IP}/{認証ページ}

また以下の設定を追加することでアーカイブを残すことができるが、

これはサーバーの容量と相談しながら決めたほうがよい。

hls_cleanup off;

認証にPOSTかGETを使用するかは

notify_method get;
notify_method post;

できまる。

認証の仕組み

特に難しいことはなく、POST または GET された データにある配信用のキーが登録または許可されているものかどうかが分かればいい。

ただし、HTTP 200 コードだとすべて許可になるため、必ずそれ以外の値を返すようにした方がいいだろう。

また配信用のキーは name プロパティに格納されている。

 

統計情報

以下のサイトが参考になるだろう。

https://github.com/arut/nginx-rtmp-module/wiki/Getting-number-of-subscribers

 

参考文献

https://ccbaxy.xyz/blog/2020/05/05/video2/

MixSounder のご紹介

前提

このアプリは特定の状況下において大変便利なアプリです。

また使用するにあたりVB-Cable などの仮想オーディオデバイスが必要です。

(※なくても使用はできますが、あれば便利です。)

ダウンロード場所

Downloader にて配布しています。

https://devras.info/dl/?name=MixSounder

 

役立つ用途

例えば、

  • Lineなどの通話アプリで音声を流したいとき(PCの音声など)
  • 疑似的なミュート機能が欲しいとき
  • 仮想オーディオデバイスに音声を入力したいとき

他にも役立つ場面はあると思いますが、基本は上の3つだと思います。

 

使用方法

DiscordやLineなどのアプリからマイク設定を開き、入力デバイスに使用する仮想オーディオデバイスを選択し、

MixSounderの入力デバイスに標準入力のマイクを選択。

デスクトップ音声を無効にし、開始します。

これで仮想オーディオデバイス経由で音声を再生させることができます。

 

今後について

簡易的なボイチェン機能を追加しようと思っていたのですが、なかなかうまくいかずに保留しています。

実装できそうであれば、実装していくつもりですが期待はしないでください。