日時: | 2022-04-19 |
---|---|
作: | 時雨堂 |
バージョン: | 2022.1 |
URL: | https://ayame-labo.shiguredo.app/ |
このサービスに興味がある人はこの資料に Star をつけてもらえると嬉しいです。
Ayame Labo は Ayame 仕様 の WebRTC の P2P 利用向けの無料で利用できるシグナリングサービスです。
シグナリングサーバ以外に、ルーム認証機能や TURN サーバを提供しています。 将来的にはウェブフックを利用した自前での認証/承認機能が利用可能になる予定です。
このサービスは Ayame を気軽に利用してもらいたいという思いから、提供しています。
GitHub アカウントさえあれば、すぐに無料で利用できます。
Ayame 仕様のリファレンス実装である WebRTC Signaling Server Ayame は OpenAyame プロジェクトとして開発しています、詳細は以下をご確認ください。
このサービスを長く続けていきたいと考えているため、コスト削減を最初から行います。
- このサービスのための機能を Ayame 側に追加することはしません
- 無料プランのみで、有料プランは提供しません
- サポートは提供しません
- デザインは最低限です
- 運用保証は行いません
- 帯域保証は行いません
- [x] 無料で利用可能
- [x] 認証なしでの利用
- [x] GitHub ID ログインした場合はシグナリングキーを利用可能
- [x] STUN 払い出しの対応
- [x] TURN 払い出しの対応
- [x] 認証ログ確認機能
ルーム ID に <GitHub ID>@ をつけることで、接続にシグナリングキーを要求します。
- Ayame 仕様互換の Erlang 版 Ayame
- GitHub
- GitHub Actions
- Ansible
- coturn
- Redis
- Go
- SQLite3
- Vultr
- https://www.vultr.com/
- 月 $ 6 のサーバです
- 1C / 1G
- 転送量は 2 TiB しかありません
まずはこちらをご覧ください。
OpenAyame/ayame-web-sdk: Web SDK for WebRTC Signaling Server Ayame
Ayame で利用できる Web SDK が公開されていますので、それを利用してください。
- ルーム ID はここでは
test-ayame-labo-room
としていますが、推測されにくい値を指定してください
const conn = Ayame.connection('wss://ayame-labo.shiguredo.app/signaling', 'test-ayame-labo');
const startConn = async () => {
const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
await conn.connect(mediaStream);
conn.on('disconnect', (e) => console.log(e));
conn.on('addstream', (e) => {
document.querySelector('#remote-video').srcObject = e.stream;
});
document.querySelector('#local-video').srcObject = mediaStream;
};
startConn();
これで接続できます。
- ルーム ID を
<自分の GitHub ID>@<好きな Room ID>
のように指定してください - 自分のシグナリングキーをオプションで指定してください
const conn = Ayame.connection('wss://ayame-labo.shiguredo.app/signaling', 'shiguredo@test-ayame-labo');
const signalingKey = 'CO6p4pdJH4n7SfM6dBLIFzpvop9kefkypoDsddoPMhp3m4FX';
const startConn = async () => {
const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
await conn.connect(mediaStream, {'key': signalingKey});
conn.on('disconnect', (e) => console.log(e));
conn.on('addstream', (e) => {
document.querySelector('#remote-video').srcObject = e.stream;
});
document.querySelector('#local-video').srcObject = mediaStream;
};
startConn();
これで接続できます。
shiguredo/momo: WebRTC Native Client Momo
Momo で Ayame が利用できます。
- ルーム ID はここでは
test-ayame-labo-room
としていますが、推測されにくい値を指定してください
./momo --no-audio ayame wss://ayame-labo.shiguredo.app/signaling test-ayame-labo
- ルーム ID を
<自分の GitHub ID>@<好きな Room ID>
のように指定してください - 自分のシグナリングキーをオプションで指定してください
GitHub ID が shiguredo で、 ルーム ID が test-ayame-labo の場合:
./momo --no-audio ayame wss://ayame-labo.shiguredo.app/signaling shiguredo@test-ayame-labo \ --signaling-key CO6p4pdJH4n7SfM6dBLIFzpvop9kefkypoDsddoPMhp3m4FX
- Ayame Labo サービスドメインを ayame-labo.shiguredo.app に変更しました
- Ayame Labo TURN サーバを独立させ転送量を 2 TiB に変更しました
- Ayame Labo の利用を日本国内のみに制限しました
サンプルに AV1 を追加しました。
Ayame Labo をリリースしました。
正式リリースでは Ayame Lite を Ayame Labo という名前でリリース予定です。
- wss://ayame.shiguredo.jp/ws を無効にしました
- 支える技術を追記しました
- 認証ログ機能を追加しました
- 直近 5 件の認証ログが確認できます
- Ayame Lite の利用方法を公開しました
- Discord を Ayame と同じサーバ内に別チャンネルとして用意しました
- オープンベータテスト開始しました
- オープンベータテスト向けにシグナリングキーありのサンプルを用意
- wss://ayame-lite.shiguredo.jp/signaling に変更しました
- wss://ayame.shiguredo.jp/ws は使えなくなりました
- サービス名を Ayame Lite にしました
- クローズドベータテストの参加募集を開始しました
- GitHub ID が必要です
- シグナリングキーが払い出されます
- ルーム ID に自分の GitHub ID を prefix として利用することでそのルーム ID に認証をかけられます
- TURN サーバ用の設定が払い出されます
- Web SDK を使っていれば意識する必要はありません
- TURN の払い出し設定を iceServers に変更
- 認証サーバの開発を開始しました
- GitHub アカウントを持ってシグナリングキーを取得することで特定のチャネルにアクセスするには認証が必要になります
- TURN サーバ連携の開発を開始しました
- シグナリングキーを利用した場合は TURN サーバで利用できる TURN 向け設定をシグナリングサーバが払い出すようになります
- WebRTC Signaling Server Ayame as a Service (仮) を公開しました