世界を動かす技術を、日本語で。

Moonshine: PCから「Moonlight」を搭載した任意のデバイスにゲームをストリーミングできる

2026年7月20日原文(github.com)

概要

  • Moonshine は、PCゲームを他のデバイスにストリーミングできるLinux専用ソフトウェア
  • 各ストリーミングセッションはデスクトップ環境と分離されて動作
  • GPUによる映像エンコード、HDR、音声ストリーミング、フル入力サポートを搭載
  • インストールや設定は主に Arch Linux を例に解説
  • セキュリティ面では VPN利用 が推奨され、インターネットへの直接公開は非推奨

Moonshineの特徴

  • Moonlight クライアントを使い、PCのゲームを他デバイスでリモートプレイ可能
  • キーボード、マウス、コントローラー入力の双方向対応
  • 各ストリームは 独立したコンポジタ 上で動作
    • ホストPCで他作業と同時進行が可能
  • モニター不要、HDMIダミープラグなしでヘッドレスサーバー利用可能
  • ハードウェア映像エンコード対応
    • H.264、H.265、AV1 (AV1はNVIDIA環境で問題あり、595.44.3.0以降のドライバで修正予定)
  • HDRストリーミング (10bit対応ゲーム限定)
  • マウス・キーボード・ゲームパッド(モーション・タッチパッド・ハプティクス含む)完全対応
  • 低遅延Opus音声エンコード によるステレオ/サラウンド(5.1/7.1ch)配信

動作要件

  • Linux専用 (Arch Linuxで動作確認済み。他ディストリビューション報告あり)
  • systemd 必須(ほぼ全ての近年のLinuxに標準搭載)
  • Vulkan対応GPU (NVIDIA RTX、AMD RDNA2以降、Intel Arc等)
  • Moonlight v6.0.0以降 必須
  • 旧バージョンや非公式ポートの互換性は保証外

インストール方法(Arch Linuxの場合)

  • AURからインストール
    • コマンド例: yay -S moonshine
  • ユーザーで起動
    • ユーザーセッションでのアプリ実行を許可: sudo loginctl enable-linger $USER
      • 常時ログイン状態なら省略可
    • サービスを自動起動かつ即時起動: sudo systemctl enable --now moonshine@$USER
  • ソースビルド
    • 依存パッケージをインストールし、cargo run --release -- /path/to/config.tomlで起動

設定ファイル

  • config.toml が自動生成される(AUR版は $XDG_CONFIG_HOME/moonshine/config.toml がデフォルト)
  • アプリケーションごとに独立したストリーミングセッションを設定
    • 例:
      [[application]]
      title = "Steam"
      command = ["/usr/bin/steam", "steam://open/bigpicture"]
      pre_command = [ ["/usr/bin/systemctl", "stop", "conflicting.service"] ]
      post_command = [ ["/usr/bin/nvidia-smi", "pstate", "performance"] ]
      

クライアントとのペアリング

  • 初回接続時、 PINコード が表示され、ホスト側で通知クリックまたは http://localhost:47989/pin でペアリングページを開く
  • コマンドラインからもペアリング可能
    • 例: curl -X POST "http://localhost:47989/submit-pin" -d "uniqueid=0123456789ABCDEF&pin=<PIN>"

アプリケーション追加・自動検出

  • 手動追加 :config.tomlに[[application]]ブロックで記述
  • スキャナー機能 による自動検出
    • Steamスキャナー:インストール済みSteamゲームを自動登録
    • デスクトップスキャナー:.desktopファイルからアプリを検出

よくある質問(FAQ)

  • Sunshineとの違い
    • Sunshineは多プラットフォーム対応・機能豊富
    • Moonshineは Linux専用、各セッションが独立環境で動作、デスクトップセッション不要
  • セキュリティについて
    • Moonshineはパブリックネットワーク利用非推奨
    • GameStreamプロトコルの仕様上、通信が完全暗号化されていない
    • インターネット越しの利用は VPN(Tailscale, WireGuard, ZeroTier等) 推奨
    • Moonshineのポートを直接インターネット公開しないこと

謝辞

  • Moonlight :Moonshineクライアントの基礎
  • Sunshine :APIホスト部分の設計参考
  • Inputtino :入力デバイス実装
  • magic-mirror :VulkanおよびWaylandコンポジタによるヘッドレス配信の着想元

Hackerたちの意見

これがWii Uや3DSでSwitchゲームをプレイする方法だよ。PCでエミュレートして、古いシステムでストリーミングする感じ。

なるほど、数年前にRustでエミュレーターでマルチプレイネットプレイができるように何か書いたんだけど、意外と簡単だったんだよね。

Moonshineは各ストリーミングセッションをデスクトップとは別の隔離された環境で実行します。これにより、ストリーミング中もホストPCが使える状態を保てて、アクティブなデスクトップセッションがなくても動作します。これって仮想デスクトップみたいな感じになるの?どういう仕組みなの?単なる「画面」なのか、それとも完全に別のコンポジタインスタンスみたいなものなのかな(これが正しい用語ならだけど)。

機能セクションから: > 隔離されたストリーミングセッション: 各ストリームはデスクトップ環境とは完全に別のコンポジタで実行されます。つまり、セッションごとにコンポジタがあるってことだね。複数のインスタンスをホストできるゲームボックスのアイデア、めっちゃいいと思う!

Sunshine/Moonlightの組み合わせで、デスクトップから(少なくとも7年前の)Androidストリーミングボックスにエミュレートしたアップスケール版のSSX Tricky(PS2ゲーム)をスムーズにストリーミングできたよ。唯一の欠点は、ゲームがデスクトップの画面に表示されていないといけないから、デスクトップは他のことに使えないってこと。つまり、他の誰かがゲームをプレイしたいときに、僕がデスクトップで作業してると使えないってこと。これが解決してくれそうだね。Sunshine/Moonlightはすでに美味しいケーキにしっかりアイシングがかかってる感じだったけど、これはその上にグラッセチェリーが乗った感じ。グラッセチェリー大好き!

余談だけど、SSXが恋しい。すごくいいフランチャイズだったのに、EA Bigが閉鎖しちゃって悲しいし、他の誰も引き継がなかったのが残念。Trickyが一番好きだったけど、どれも素晴らしかったよね。

Sunshine/Moonlightを使って、ノートパソコンからスマホへのストリーミング設定にかなりの時間を費やしたんだけど、チュートリアル通りにやってもいい結果が出なかったんだ。ゲームはリラックスするためにやるもので、結局、コーデックやレイテンシ、Wi-Fi設定、いろんなアプリを試して、使える結果が得られなかったから、やる価値がないと思ったんだ。もう3年くらい前の話かな。それ以来、改善されたのかな?

時々うまくいくこともあるよ。完璧に動いたセッションもあったから、動く可能性は十分あるんだけど、90%の確率で変な問題や設定の問題、アップデートでの破壊的変更に悩まされてる。うまくいってる人もいるみたいだけど、まだまだ問題を解決するためにたくさんの作業が必要だと思う。

一週間くらい前に、Windowsマシン(ホスト)からUbuntuラップトップ(クライアント)にセットアップしたんだけど、LLMの助けを借りて30分くらいでできたよ。最初にLAN外で使おうとしたときに15分くらいトラブルシューティングしたけど、結構スムーズに動いてすぐに使えた。で、結局A) 友達とやろうとしたゲームがローカルマルチプレイヤーだけだったから、ホストマシンが接続できなかったし、B) ProtonDBが限られた互換性を主張してたのに、ゲームはすぐに問題なくラップトップで起動したから、結局この作業は必要なかった。まあ、比較的スムーズだったよ。もし関係あるなら、Tailscaleも使ってた。

ホストPCはLANケーブルに接続しておく必要があって、クライアントデバイスは1080p/60fps以上には最低でもWi-Fi 6が必要だよ。うちでは完璧に動いてるけど、ルーターによってはゴミみたいなのもあってパケットが落ちるから、ちゃんとしたルーターを手に入れるか、自分で作った方がいいよ。

デスクトップとPS Vitaの間でSunshine/Moonlightを使ってるよ。ポイントは、ホストが少なくとも有線接続で、理想的には無線ルーターへの遅延が少ないことかな。ルーターは最新のもので、適切に配置・設定されてるといいね。無線接続は理想的な環境でもエラー率が高いから(パケットの再送が必要になることが多い)、クライアント側だけでWi-Fiを使うのがベストだよ。

Moonlight/Apolloを使ってるよ。1. DualsenseコントローラーをMacBookに接続 2. MacBookでMoonlightを開く 3. ゲーミングデスクトップにフルスクリーンモードで接続 3. SteamでAAAゲームを起動 4. Wi-Fi経由で利益を得る 7 ほとんど遅延を感じないから、初めて試したときはびっくりした。大画面テレビにMinisforumを接続してるけど、プロセスは同じで、DualsenseコントローラーでMinisforumに接続するために違うコンボを押すだけ。Apolloが設定を保存してくれるから、ほとんど問題なく2つの間をスムーズに切り替えられるよ。

Hacker Newsで議論の続きを見る