Ubuntu 24.04 + NoMachine 9.4で「No available desktops on this server」が出た時の解決法
はじめに
NoMachineでリモートデスクトップ接続をしようとした時に「No available desktops on this server」というエラーで弾かれる現象に遭遇しました。
物理ログイン済み・Xorg起動済み・ネットワーク疎通もOKという状況にも関わらず弾かれる、なかなか厄介な症状でしたが、結論としては server.cfg にAvailableSessionTypes の行が存在しない ことが原因でした。
同じ症状で困っている方向けに、解決手順をまとめます。
結論
/usr/NX/etc/server.cfg に AvailableSessionTypes の行を追記してNoMachineサーバーを再起動します。
echo 'AvailableSessionTypes unix-remote,unix-console,unix-default,unix-application,physical-desktop,shadow,unix-xsession-default,unix-gnome,unix-xdm,vpn' | sudo tee -a /usr/NX/etc/server.cfg
sudo /etc/NX/nxserver --restart
これだけで、サーバーが認識するセッションタイプが正しく設定され、接続できるようになります。
環境
- 接続先サーバー: Ubuntu 24.04.3 LTS
- NoMachine: 9.4.14(Linux server)
- 接続元クライアント: NoMachine for macOS
- ネットワーク: 同一サブネット内
症状
NoMachineクライアントから接続を試みた際、以下のような流れで失敗しました。
- ホスト・ポート(4000)への接続は成功
- ユーザー認証も成功
- その後、以下のいずれかのエラーが表示される
No available desktops on this serverCannot detect any display running. Do you want NoMachine to create a new display and proceed to connect to the desktop?→Yesを押すとThe server was unable to make the local display available or access to the local display is disabled.
サーバー側のログ(/usr/NX/var/log/server.log)を見ても、認証後に --virtualsession のセッションIDが発行された直後に切断されるだけで、明確なエラー理由は出力されません。
検証した項目
最終的な原因は server.cfg の設定不備でしたが、そこに辿り着くまでに確認した項目を共有します。
ネットワーク疎通の確認
まずは接続先PCに到達できているかを確認します。
ping <接続先PCのIP>
応答がなければNoMachine以前の問題(ネットワーク・ファイアウォール・別サブネット)です。SSHでの到達性も確認しておきます。
ssh <ユーザー>@<接続先PCのIP>
Xサーバーの起動確認
接続先PCで物理ログインしている場合、Xorgが動いているか確認します。
ps -ef | grep -E "Xorg|Xwayland" | grep -v grep
/usr/lib/xorg/Xorg vt2 -displayfd 3 ... のような行が出力されれば、X.orgが起動しています。
合わせて、ログインセッションがX11かWaylandかも確認します。NoMachineの過去のバージョンではWayland環境下でnxnodeサービスが終了する不具合が報告されており(公式KB TR01X11699では9.4.14と8.21.3で修正済みとされています)、念のためX.orgセッションでのログインで切り分けするのが無難です。
loginctl list-sessions
loginctl show-session <セッションID> -p Type
Type=x11 ならOK。Type=wayland の場合は /etc/gdm3/custom.conf で WaylandEnable=false のコメントを外し、GDM再起動後にX.orgでログインし直すと安定します。
NoMachineサーバーの状態
サーバーの状態を確認します。
sudo /etc/NX/nxserver --status
nxnode が Disabled と表示されることがありますが、これは仮想デスクトップ接続だけなら無視して問題ありません。物理デスクトップに繋ぐ場合のみ有効化が必要で、その条件は「Xサーバーが検出されること」となっています。
利用可能セッションタイプの確認
sudo /etc/NX/nxnode --desktoplist
sudo /etc/NX/nxnode --resourcelist
--desktoplist では physical-desktop や unix-gnome などのセッションタイプがリストされ、--resourcelist でも physical-desktop yes のように利用可能と表示されます。
ノード側(node.cfg)では問題なくセッションタイプが認識されているのに、なぜかクライアントからの接続だと「利用可能なデスクトップがない」と判定されるのが、今回の症状でした。
設定ファイルの確認
server.cfg と node.cfg の中身を比較します。
sudo grep -v "^#" /usr/NX/etc/server.cfg | grep -v "^$"
sudo grep -v "^#" /usr/NX/etc/node.cfg | grep -v "^$"
私のケースだとAvailableSessionTypes という設定キーが、node.cfg には存在するが server.cfg には存在しない という状態でした。
(node.cfg の出力に含まれる)
AvailableSessionTypes unix-remote,unix-console,unix-default,unix-application,physical-desktop,shadow,unix-xsession-default,unix-gnome,unix-xdm,vpn
(server.cfg にはこの行がない)
これが原因でした。公式のKB AR02N00877によると、AvailableSessionTypes は server.cfg と node.cfg の両方に存在すべきキーで、両ファイルが同じホストにある場合は両者でセッションタイプのリストを揃える必要があるとされています。今回の私の環境では server.cfg 側でこのキーが欠けており、server.cfg に同じ行を追記することで接続できるようになりました。
解決手順
1. server.cfg に AvailableSessionTypes を追記
echo 'AvailableSessionTypes unix-remote,unix-console,unix-default,unix-application,physical-desktop,shadow,unix-xsession-default,unix-gnome,unix-xdm,vpn' | sudo tee -a /usr/NX/etc/server.cfg
node.cfg 側の AvailableSessionTypes と同じ値にしておけば問題ありません。
2. NoMachineサーバーを再起動
sudo /etc/NX/nxserver --restart
--status で nxserver が Enabled になっていることを確認します。
3. 接続を試す
クライアントから接続して、デスクトップが表示されれば完了です。
まとめ
NoMachineで「No available desktops on this server」が出る場合、原因は多岐にわたります(Wayland、ヘッドレス、認証、ファイアウォール等)。
今回のように server.cfg に AvailableSessionTypes が定義されていない というケースは、サーバーログにも明確なエラーが出ず、原因に辿り着きにくい部類です。私の環境ではこの状態で AvailableSessionTypes を追記することで解決しました。
同じ症状で困った時は、まず両方の設定ファイルで AvailableSessionTypes の有無を確認してみることをおすすめします。







