https://github.com/pyu224/peertube-plugin-xmr-superchat
Monero(XMR)でスパチャができるPeertubeプラグイン(試作段階)
https://github.com/pyu224/peertube-plugin-xmr-superchat
monero peertube peertube-plugin superchat
Last synced: about 2 months ago
JSON representation
Monero(XMR)でスパチャができるPeertubeプラグイン(試作段階)
- Host: GitHub
- URL: https://github.com/pyu224/peertube-plugin-xmr-superchat
- Owner: PYU224
- License: agpl-3.0
- Created: 2025-12-18T06:49:55.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-18T07:31:28.000Z (6 months ago)
- Last Synced: 2025-12-21T15:23:43.682Z (6 months ago)
- Topics: monero, peertube, peertube-plugin, superchat
- Language: TypeScript
- Homepage: https://33-4.me
- Size: 27.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PeerTube XMR Superchat Plugin
XMR (Monero) スーパーチャット機能をPeerTubeに追加するプラグイン(まだ試作段階)
## 機能
- ✅ XMRでの投げ銭
- ✅ リアルタイム着金通知
- ✅ YouTube風のオーバーレイ表示
- ✅ QRコード生成
- ✅ WebSocket経由のリアルタイム通知
- ✅ 金額に応じた演出の変化
## 必要要件
- PeerTube >= 5.0.0
- monero-wallet-rpc (リモートまたはローカル)
- Node.js >= 18
## セットアップ
### 1. monero-wallet-rpcの起動
#### リモートノードを使う場合(推奨 - 簡単)
```bash
monero-wallet-rpc \
--daemon-address your-remote-node.onion:18081 \
--wallet-file /path/to/your/wallet \
--password "your-password" \
--rpc-bind-port 18082 \
--rpc-bind-ip 127.0.0.1 \
--disable-rpc-login \
--trusted-daemon
```
Tor経由でOnionノードに接続する場合:
```bash
monero-wallet-rpc \
--daemon-address your-remote-node.onion:18081 \
--proxy 127.0.0.1:9050 \
--wallet-file /path/to/your/wallet \
--password "your-password" \
--rpc-bind-port 18082 \
--rpc-bind-ip 127.0.0.1 \
--disable-rpc-login \
--trusted-daemon
```
### 2. (ローカルの場合での)プラグインのビルド
```bash
npm install
npm run build
```
### 3. (ローカルの場合での)プラグインのインストール
```bash
# PeerTubeのCLIを使用
cd /var/www/peertube
sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config \
NODE_ENV=production \
npm run plugin:install -- --path /path/to/peertube-plugin-xmr-superchat
```
### 4. プラグインの設定
PeerTube管理画面 → プラグイン → XMR Superchat で以下を設定:
- **Monero Wallet RPC URL**: `http://localhost` (または `http://127.0.0.1`)
- **Monero Wallet RPC Port**: `18082`
- **RPC Username**: (オプション - 設定していない場合は空)
- **RPC Password**: (オプション - 設定していない場合は空)
- **Minimum Confirmations**: `1` (推奨)
### 5. 動作確認
1. 任意の動画を再生
2. プレイヤーコントロールに💰ボタンが表示される
3. ボタンをクリックしてモーダルを開く
4. 金額とメッセージを入力
5. QRコードが生成される
6. XMRウォレットから支払い
7. 確認後、動画上にオーバーレイが表示される
## 開発
### ディレクトリ構造
```
peertube-plugin-xmr-superchat/
├── client/ # クライアント側コード
│ ├── common-client-plugin.ts
│ └── video-watch-client-plugin.ts
├── server/ # サーバー側コード
│ ├── main.ts
│ └── lib/
│ ├── xmr-wallet.ts
│ └── payment-monitor.ts
├── assets/styles/ # スタイル
│ └── superchat.scss
└── scripts/ # ビルドスクリプト
└── build-client.mjs
```
### ビルドコマンド
```bash
npm run build # 全体ビルド
npm run build:client # クライアントのみ
npm run build:server # サーバーのみ
npm run build:css # CSSのみ
npm run clean # distフォルダを削除
```
## API エンドポイント
### POST /plugins/xmr-superchat/router/create-payment
支払い用のアドレスを生成
**リクエスト:**
```json
{
"videoId": "video-uuid",
"amount": "0.1",
"message": "Great video!"
}
```
**レスポンス:**
```json
{
"address": "4...",
"paymentId": "abc123...",
"qrCode": "data:image/png;base64,...",
"amount": "0.1"
}
```
### GET /plugins/xmr-superchat/router/health
ウォレットRPCのヘルスチェック
**レスポンス:**
```json
{
"healthy": true
}
```
## WebSocket Events
### クライアント → サーバー
- `join-video`: 動画ルームに参加 `{ videoId: string }`
- `leave-video`: 動画ルームから退出 `{ videoId: string }`
### サーバー → クライアント
- `superchat`: 新しいスパチャ通知
```json
{
"amount": 0.1,
"message": "Great video!",
"txid": "abc123...",
"confirmations": 1
}
```
## トラブルシューティング
### ウォレットRPCに接続できない
1. monero-wallet-rpcが起動しているか確認
2. ファイアウォール設定を確認
3. `/plugins/xmr-superchat/router/health` でヘルスチェック
### オーバーレイが表示されない
1. ブラウザのコンソールでエラーを確認
2. WebSocket接続が確立されているか確認
3. 支払いが1確認以上受けているか確認
### QRコードが表示されない
1. サーバーログでエラーを確認
2. `qrcode` パッケージが正しくインストールされているか確認
## ライセンス
AGPL-3.0
## TODO
- [ ] LTC対応
- [ ] BTC対応
- [ ] サウンド通知
- [ ] 管理画面での統計表示
- [ ] 複数通貨対応
- [ ] OBS専用オーバーレイページ
# peertube-plugin-xmr-superchat