Moonshine:Linux 無頭遊戲串流伺服器

Moonshine:Linux 無頭遊戲串流伺服器

Moonshine 讓 Linux 能夠無頭、隔離式的遊戲串流

Moonshine 是一個以 Rust 撰寫的無頭串流伺服器,讓使用者能將 Linux PC 上的遊戲串流至任何執行 Moonlight 客戶端的裝置。與傳統的串流解決方案會鏡射實體顯示器不同,Moonshine 為每個串流會話建立自己的隔離合成器,這意味著主機 PC 在遠端串流遊戲時仍可完整使用於其他工作。

主要技術特點

Moonshine 透過專注於精簡、僅限 Linux 的實作,省去實體螢幕或 HDMI 假接頭的需求,從而與其他串流主機區隔開來。

隔離式串流會話

每個串流都在其獨立的合成器中執行,與主機的桌面環境完全分離。此架構提供類似多座位的功能,讓一位使用者使用主機,另一位則可從同一硬體遠端串流遊戲。

無頭運作與虛擬顯示器

因為 Moonshine 控制自己的合成器,它可以在任意解析度或刷新率下產生虛擬顯示器,無需實體螢幕或假接頭。這也讓 HDR(10 位元)即插即用,即使連接於主機的實體螢幕不支援 HDR,也能正常運作。

硬體編碼與效能

Moonshine 採用 Vulkan 視訊編碼以達到低延遲效能。支援項目包括:

  • 編解碼器:H.264、H.265 與 AV1(AV1 仍屬實驗性,於 NVIDIA GPU 上可能在驅動程式 595.44.3.0 之前出現問題)。
  • 音訊:低延遲 Opus 編碼,支援立體聲與環繞聲(5.1/7.1)。
  • 輸入:完整支援滑鼠、鍵盤與手把,包含觸覺回饋、觸控板與動作控制。

系統需求與安裝

Moonshine 為現代 Linux 環境設計,需具備特定硬體以支援 Vulkan 編碼。

需求

  • 作業系統:Linux(已於 Arch Linux 測試)。
  • Init 系統:systemd(用於程序管理,必須)。
  • GPU:具 Vulkan 視訊編碼支援的顯示卡(NVIDIA RTX、AMD RDNA2+ 或 Intel Arc)。
  • 客戶端:Moonlight v6.0.0 或更新版本。

在 Arch Linux 上安裝

使用者可透過 AUR 安裝 Moonshine:

yay -S moonshine

為確保伺服器能在未登入使用者的情況下啟動應用程式,請啟用 linger:

sudo loginctl enable-linger $USER
sudo systemctl enable --now moonshine@$USER

設定與應用程式管理

Moonshine 使用 config.toml 檔案進行設定,內建自動掃描器以減少手動配置。

新增應用程式

在設定檔中以 command 定義要執行的應用程式。Moonshine 亦支援 pre_commandpost_command 陣列,讓使用者在會話前後撰寫腳本以變更環境(例如停止衝突服務或調整 GPU 電源狀態)。

應用程式掃描器

為簡化設定,Moonshine 內建以下掃描器:

  • Steam 掃描器:自動偵測已安裝的 Steam 遊戲,並以 Big Picture 模式啟動。
  • Desktop 掃描器:在系統與使用者的標準目錄中搜尋 .desktop 檔案以找到應用程式。

與 Sunshine 及其他工具的比較

雖然 Sunshine 是開源 GameStream 主機的業界標準,Moonshine 在無頭伺服器上提供了特定的架構優勢。

Moonshine vs. Sunshine

Sunshine 為跨平台工具,功能較為廣泛。然而,Sunshine 通常會鏡射現有的桌面會話。Moonshine 使用隔離合成器,無需依賴正在執行的桌面環境,因而更適合無頭 Linux 伺服器。

生態系統背景

社群討論顯示串流工具的版圖相當複雜,包含 Apollo、Artemis 等分支,以及 Games on Whales 等專案。正如 Moonshine 的創作者在討論中所說:

"它的核心與 Sunshine 類似,但有一個重要差異:Moonshine 會自行建立合成器,且不依賴既有的桌面環境。"

安全警告

Moonshine 並非設計用於公共網路。GameStream 協定未提供完整的應用層加密。透過網際網路串流的使用者必須使用安全隧道(如 Tailscale、WireGuard 或 ZeroTier),且絕不可直接將 Moonshine 埠號暴露於網際網路上。

Sources