ビデオ会議やリモート作業において遅延はできるだけ短い方がストレス無く作業できます。ブラウザで低遅延通信を実現するWebRTCを利用し、クラウドやローカル環境でブラウザや仮想デスクトップの共有システムを簡単に構築できる「n.eko」が公開されています。

n.eko

https://neko.m1k1o.net/



m1k1o/neko: A self hosted virtual browser that runs in docker and uses WebRTC.

https://github.com/m1k1o/neko

◆ホストサーバー構築方法

今回はGoogle Cloud上のVMインスタンスにUbuntu環境を構築し、Dockerが利用できる状態でnekoコンテナを起動します。まず、作業フォルダでリポジトリをクローンします。


git clone https://github.com/m1k1o/neko.git


nekoフォルダに移動しdocker-compose.yamlを編集します。デフォルトでFirefoxを共有するための設定になっているので、解像度やホストのIPなどを環境に合わせて調整します。


services:
neko:
image: "ghcr.io/m1k1o/neko/firefox:latest"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
environment:
NEKO_DESKTOP_SCREEN: 1280x720@30
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin
NEKO_WEBRTC_EPR: 52000-52100
NEKO_WEBRTC_NAT1TO1: 'ホストのIPまたはドメイン'
NEKO_WEBRTC_ICELITE: 1


コンテナを起動します。


docker compose up -d


◆ブラウザから共有画面にアクセス

コンテナが起動したらブラウザでホストの8080ポートにアクセスします。ログイン画面が表示されるので、管理者としてログインするため任意の名前とdocker-compose.yamlで設定した管理者パスワードを入力して「接続」をクリックします。



共有画面が表示されました。画面内を操作する権限を得るため共有画面下の「キーボード」アイコンをクリック。



コントロール権限が得られ画面内を自由に操作できるようになります。



YouTubeの動画を再生すると動画も音声もクリアに再生されました。リアクション用のアイコンをクリックすると共有画面にエフェクトが流れます。



別のブラウザを用意し一般ユーザーとしてログインすると管理者と同じ共有画面が表示されました。左の管理者側のブラウザでリアクションアイコンをクリックすると、右の一般ユーザー側の共有画面にもすぐにエフェクトが反映されました。



一般ユーザー側からコントロールを要求するため「キーボード」アイコンをクリックすると管理者側に「ユーザーがコントロールを要求しています」と通知が表示されます。



権限を譲るため「キーボード」アイコンをクリックしてコントロール権限を解放。



コントロール権限が解放されると「キーボード」アイコンが赤色から灰色に変わるので、灰色の「キーボード」アイコンをクリック。



コントロールの権限を取得することができました。



ただし、管理者はコントロール権限を制御することが可能で、右上の「マウス」アイコンをクリックすることでコントロール権限を与えるかどうか切り替えが可能です。



コントロール権限が抑制された場合は「キーボード」アイコンが消え、権限を得る操作ができなくなります。



さらに「鍵」アイコンをクリックすると新規参加者を許可するかどうかの設定も行えます。



新規参加者が拒否される状態ではログインできません。



その他の機能として、参加者全体の連絡用チャットも共有画面とは別に用意されています。



配信サービスを経由して共有画面を配信することも可能。



なお、Firefoxだけでなく以下のブラウザを共有できます。

・Chromium

・Google Chrome

・ungoogled-chromium

・Microsoft Edge

・Brave

・Vivaldi

・Opera

ブラウザ以外にもリモートクライアントのRemminaや動画再生プレイヤーVLCなどのアプリ単体の共有、さらにデスクトップ環境のXfceやKDE Plasmaでは、さまざまなアプリをインストールし共有可能です。