Nextcloud Talk — 外部ゲスト招待 構築 → 廃止 (記録)

// NC TALK — 最終更新: 2026-05-14 / 外部ゲスト招待は廃止、 内部ユーザー間Talkのみ運用

廃止済 talk.katuocloud.com / Cloudflare Tunnel / port 9082 nginx — 全撤去 運用中 内部Talk (cloud.k2-o.net/apps/spreed/) のみ

現状 (2026-05-14)

Nextcloud Talk は内部ユーザー間 (WireGuard 接続済顧客) のみで運用中。 外部ゲスト招待機能は 2026-04-05 にロールバック済で、 関連インフラは全て撤去済。

機能状態経路
内部 Talk (チャット / 通話)運用中WG → cloud.k2-o.net → maguro NC Docker
外部ゲスト招待 (talk.katuocloud.com)✗ 廃止 (2026-04-05)Cloudflare Tunnel + R640 nginx:9082 → 全削除
なぜ廃止したか (経緯)

2026-04-05 に「外部ゲスト招待ビデオ通話 +¥2,000/月」 オプションとして実装・公開。 ところが以下の制約から、 新ビジネスモデル「追加端末 = 追加ユーザー枠」 への移行を判断:

  • ユーザー単位の制限が技術的に困難
  • 参加者数の制限ができない (Cloudflare Tunnel + nginx 全許可方式)
  • WG経由なしで NC API が露出するセキュリティ懸念
  • 顧客にとっての価値は「友人共有」が本質 → WG QR発行で対応可能
新モデル (現行運用): 追加端末オプション (+¥500/月) で友人にWG QR を発行 → 友人も完全な内部ユーザーとして NC アカウント取得 → Talk機能で自由にチャット・通話。 契約者のストレージクォータを共有する形式。
廃止前の実装 (記録として残す)

営業材料としての「過去にやった実績」と、 将来再実装する際の参考として、 旧構成と教訓を残しておく。

// 旧アーキテクチャ (2026-04-05 廃止)
【外部ゲスト (WG不要)】
        ↓
https://talk.katuocloud.com/call/xxxxx
        ↓
Cloudflare Tunnel (6ace0e0b-373d-452f-80be-af40048d0875)
        ↓
R640 nginx :9082 (talk.katuocloud.com 専用 vhost)
        ↓
Nextcloud Docker :9080
        ↓
Nextcloud Talk

【かつおcloud顧客 (WG接続)】
        ↓
https://cloud.k2-o.net/apps/spreed/
        ↓
RTX1300 NAT (TCP 443) → R640 SNI → maguro NC
// 旧設定の主要パラメータ
項目値
外部URLhttps://talk.katuocloud.com/
Cloudflare Tunnel UUID6ace0e0b-373d-452f-80be-af40048d0875 (現在は portal.katuocloud.com 用としてのみ稼働)
R640 nginx vhostport 9082 (/etc/nginx/sites-available/talk.katuocloud.com)
NC configoverwritehost=talk.katuocloud.com, spreed.baseUrl, trusted_domains[2]
2026-04-05 ロールバック作業 (記録)

以下を全て実施し、 talk.katuocloud.com 関連インフラは完全撤去済。

// Nextcloud config 復元
# 当時のバックアップから復元
docker exec nextcloud-stack-app-1 php occ maintenance:mode --on
cp /srv/storage/SM-storage/backup/nextcloud/20260405_181221/config.php \
   /var/lib/docker/volumes/nextcloud-stack_nextcloud/_data/config/config.php
docker exec nextcloud-stack-app-1 php occ config:app:delete spreed enable_guests
docker exec nextcloud-stack-app-1 php occ config:app:delete spreed start_conversations
docker exec nextcloud-stack-app-1 php occ maintenance:repair --include-expensive
docker exec nextcloud-stack-app-1 php occ maintenance:mode --off

# 復元後の手動修正 (overwritehost が誤値だったため)
docker exec nextcloud-stack-app-1 php occ config:system:set overwritehost --value="cloud.k2-o.net"
docker exec nextcloud-stack-app-1 php occ config:system:set overwrite.cli.url --value="https://cloud.k2-o.net"
docker exec nextcloud-stack-app-1 php occ config:system:delete trusted_domains 2
// インフラ撤去
# R640 nginx 設定削除
sudo rm /etc/nginx/sites-enabled/talk.katuocloud.com
sudo rm /etc/nginx/sites-available/talk.katuocloud.com
sudo nginx -t && sudo systemctl reload nginx

# Cloudflare Tunnel から talk エンドポイント削除
# /etc/cloudflared/config.yml を portal のみに変更
tunnel: 6ace0e0b-373d-452f-80be-af40048d0875
credentials-file: /root/.cloudflared/6ace0e0b-373d-452f-80be-af40048d0875.json
ingress:
  - hostname: portal.katuocloud.com
    service: http://127.0.0.1:9000
  - service: http_status:404

sudo systemctl restart cloudflared

# Cloudflare DNS から CNAME talk.katuocloud.com 削除 (手動 Dashboard 操作)

# Stripe 商品「ゲスト招待ビデオ通話」 (price_1TIg2jDxP0kEA5q8qeDO28f9) を削除
// コード修正
ファイル変更
R640 FastAPI main.pySTRIPE_PRICE_VIDEO 削除 + Stripe line item 追加処理 (653-654行) 削除
R640 .envSTRIPE_PRICE_VIDEO 行削除
WordPress functions.php「ゲスト招待ビデオ」表示行 215-216 / Telegram 通知行 532 / $guest_video 関連削除、 $guest_video = false 固定化

互換性のため残置: guest_video_enabled フォームパラメータ・DBカラム・関数パラメータは「常に no/false」 で書き込み続ける形で温存。 将来の機能拡張で再使用可能な構造を維持。

2026-05-14 確認: R640 再構築 (Phase 3) 時に旧 nginx 設定 / Cloudflare Tunnel ingress は OS 再インストールで完全消失。 maguro へ NC 移植後の config.php は overwritehost=cloud.k2-o.net + trusted_domains= cloud.k2-o.net, office.wan-secure.net で正常運用。
現在の Talk 利用方法 (顧客向け)
  1. WireGuard VPN に接続
  2. https://cloud.k2-o.net/ で Nextcloud にログイン
  3. Talk アプリを開く
  4. 「新しい会話」 で参加者 (NCユーザー = 自分の追加端末 = 友人) を選択
  5. チャット / 音声通話 / ビデオ通話 が利用可能

友人を追加するには:

  1. 顧客ポータル (https://cloud.k2-o.net/client/) でログイン
  2. 「子端末追加」 で +¥500/月 オプションを購入
  3. 生成された WG QR を友人に渡す
  4. 友人は完全な内部ユーザーとして NC アカウントを取得し、 Talk で参加可能
将来検討事項
  • ! TURN/STUN サーバー設定 (NAT越え通話の品質向上) — 旧 wg2 → VPS で TURN を運用する計画もあったが、 VPS 解約に伴い R640 / maguro 上で再検討
  • ! Talk High-Performance Backend (HPB) 導入検討 — 同時通話数増加時
  • ! 外部ゲスト招待を再導入する場合は、 (a) 招待トークン単位の TTL + (b) 参加人数制限 + (c) 専用ストリーミング経路、 の3点を設計してから
関連ファイルパス (現状)
種類パス
NC config.phpmaguro Docker内 /home/xs273132/wanchance.com/public_html/config/config.php
NC Talk ログDocker内 /home/xs273132/wanchance.com/public_html/data/nextcloud.log
NC バックアップmaguro /srv/storage/SM-storage/backup/nextcloud/
nginx cloud.k2-o.netmaguro /etc/nginx/sites-enabled/cloud.k2-o.net
Cloudflare Tunnel (portal のみ)R640 /etc/cloudflared/config.yml
結論: Nextcloud Talk は「内部ユーザー間 (WG必須)」 限定でシンプル運用中。 外部ゲスト招待機能は構築〜廃止までの試行錯誤を経て「追加端末 = 追加ユーザー枠」 モデルに収束。 既存契約は全てテストのため顧客への影響はゼロで完了。