Windowsキオスク端末の構築手順|Node.js・自動起動・安定運用
- Windows
- 常設コンテンツ
Windows PCをデジタルサイネージや受付端末などのキオスク端末として運用するには、アプリを起動できるだけでなく、Windowsへのサインイン後に自動で表示を開始し、再起動や一時的な障害から復旧できる構成にする必要があります。
本記事では、Windows Terminal、nvm-windows、Node.jsを使った実行環境の準備から、表示アプリの配置、自動起動、動作確認、継続運用までの全体像を解説します。各ソフトの詳しいインストール操作は、画面付きの姉妹記事を参照してください。
最短回答: Windowsキオスク端末は「専用ユーザーの準備→実行環境の導入→アプリの配置→自動起動の設定→再起動テスト」の順で構築します。無人運用では、アプリが起動することだけでなく、電源断や通信障害の後に自動復旧できるかまで確認することが重要です。
Windowsキオスク端末とは
Windowsキオスク端末とは、利用者に通常のデスクトップ操作をさせず、指定したWebページや業務アプリを常時表示するためのPCです。デジタルサイネージ、受付システム、商品検索端末、展示端末などに利用されます。
Windowsには「割り当てられたアクセス」と呼ばれるキオスク機能があります。一方、Node.jsで動く独自アプリや、XAMPPなど複数のプロセスを使用する構成では、専用ユーザー、スタートアップ、タスクスケジューラなどを組み合わせる方法があります。
本記事の主対象は、通常のWindowsデスクトップ環境に専用ユーザーを用意し、Node.jsアプリをサインイン後に自動表示する構成です。OS標準のキオスク機能そのものをNode.jsへ導入する手順ではありません。
| 構成 | 適しているケース |
|---|---|
| 割り当てられたアクセス | 対応するブラウザや単一アプリだけを制限して表示したい |
| スタートアップ | 専用ユーザーのサインイン後に、アプリを簡単に起動したい |
| タスクスケジューラ | 遅延起動、再試行、実行条件などを細かく管理したい |
利用者によるOS操作を強く制限する必要がある場合は、単にアプリを全画面表示するだけでは不十分です。割り当てられたアクセスなど、Windowsの制限機能を含めて設計してください。
この記事で構築する環境
| 項目 | 内容 |
|---|---|
| OS | Windows 10/11 |
| 操作用ターミナル | Windows Terminal |
| Node.js管理 | nvm-windows |
| アプリ実行環境 | Node.js/npm |
| 主な用途 | デジタルサイネージ、受付端末、展示端末 |
| 自動起動方法 | スタートアップまたはタスクスケジューラ |
Windows Terminalはキオスク表示に必須のソフトではありません。初期構築、ログ確認、Node.jsのバージョン切り替えなど、管理作業を行いやすくする目的で使用します。
構築前に決めておくこと
作業を始める前に、次の項目を決めておきます。
- 表示するのがWebページか、ローカルのNode.jsアプリか
- オフラインでも表示を継続する必要があるか
- Windowsへの自動サインインを使用するか
- アプリ終了時に自動で再起動させる必要があるか
- 端末を1台だけ運用するか、複数台へ展開するか
- 遠隔保守やログ回収をどのように行うか
自動サインインには、端末へ物理的にアクセスした人がそのユーザー環境を利用できるリスクがあります。設置場所、端末内に保存する情報、ネットワーク権限を踏まえて採用を判断してください。
設定ファイル、HTML/CSS、起動用バッチファイルを端末上で編集する場合は、コードエディタがあると変更箇所を確認しやすくなります。必要に応じてVSCodeのインストール方法を参照してください。VSCodeはキオスク表示そのものに必須ではなく、構築・保守作業用のツールです。
手順1:Windows Terminalを準備する
まず、Node.js環境の構築やトラブル対応に使用するWindows Terminalを準備します。
- スタートメニューで「Terminal」または「ターミナル」を検索します。
- インストール済みであれば、そのまま起動します。
- 見つからない場合はMicrosoft Storeからインストールします。
- 起動後、PowerShellのプロンプトが表示されることを確認します。
画面付きの操作手順は、Windows Terminalのインストール方法を参照してください。
手順2:nvm-windowsをインストールする
nvm-windowsを使うと、Node.jsのバージョンを端末ごとに固定し、必要に応じて切り替えられます。
導入前に、既存のNode.jsがインストールされていないか確認します。
node -v
where.exe node
既存のNode.jsが見つかった場合は、PATH競合を防ぐため、設定をバックアップしたうえでアンインストールします。その後、nvm-windows公式GitHubからインストーラーを入手してセットアップします。
nvm-windows 1.2.2のインストーラーに「Desktop Notifications」画面が表示される場合、無人で常時表示する端末では、Node.jsやnvm-windowsなどのリリース通知をすべてオフにしておくと、運用中の画面へ不要な通知が表示されるのを防げます。
詳しい手順と注意点は、nvm-windowsのインストール手順を参照してください。
手順3:Node.jsとnpmをセットアップする
管理者としてPowerShellを開き、使用するNode.jsのバージョンをインストールします。以下はNode.js 22.12.0を使用する例です。
nvm install 22.12.0
nvm use 22.12.0
node -v
npm -v
複数台で運用する場合は、nvm install ltsのように対象が変わり得る指定ではなく、アプリで動作確認した具体的なバージョン番号を固定します。新規構築時は、アプリの対応範囲を確認したうえで保守期間中のLTSリリースを選定してください。
node -vは成功するのにnpm -vだけがPowerShellの実行ポリシーエラーになる場合は、まず次のコマンドでnpm自体が動作するか確認します。
npm.cmd -v
実行ポリシーを変更する前に、端末の管理方針と組織のセキュリティポリシーを確認してください。詳しくは、nvmでNode.js・npmをインストールする方法で解説しています。
複数台へ展開する場合は、Node.jsのバージョンだけでなく、PowerShellの実行ポリシーと適用範囲も端末間で統一・記録します。自動起動用のバッチファイルでは、実行ポリシーの影響を受けるnpm.ps1を避け、npm.cmdを明示する方法もあります。
手順4:表示アプリを配置して動作確認する
Node.js環境の準備ができたら、表示アプリを端末へ配置します。以下は一般的な流れです。実際のコマンドはアプリのREADMEやpackage.jsonに合わせてください。
cd C:\kiosk\app
npm ci
npm run start
npm ciは、アプリにpackage-lock.jsonが含まれ、package.jsonと内容が一致している場合に使用できます。本番相当の端末ではロックファイルも管理し、検証済みの依存関係を再現できるようにします。
自動起動を設定する前に、手動起動で次を確認します。
- エラーなくアプリが起動する
- 表示内容と画面サイズが正しい
- 日本語や記号が文字化けしない
- ネットワーク切断時の表示が想定どおりである
- アプリを終了して再起動できる
- ログの保存場所が決まっている
手動で正常に動かない状態のまま自動起動を設定すると、原因の切り分けが難しくなります。
XAMPPを使用する場合の自動起動設定
表示アプリがXAMPPのApacheやMariaDBを使用する構成では、Windowsの再起動後にXAMPP Control Panelを手動操作しなくてもローカルサーバーが復旧するよう、必要なモジュールをWindowsサービスとして登録します。
XAMPPを使用しないNode.jsアプリの場合、この設定は不要です。XAMPP自体をまだ導入していない場合は、Windows版XAMPPのインストール手順を参照してください。
MacのMAMPとWindowsのXAMPPでローカル開発用のDB資格情報を揃える場合は、XAMPPのrootパスワードをrootに設定する方法も確認してください。root/rootはlocalhost限定の互換設定であり、外部公開環境では使用しません。
XAMPP上のCMSが.htaccessによるURLリライトを必要とする場合は、ApacheでAllowOverrideを設定する方法を確認してください。ファイルシステム全体ではなく、対象サイトのディレクトリだけに必要な上書きを許可します。
サービス登録前の確認
サービスとして登録する前に、XAMPP Control PanelからApacheとMySQLを手動で起動し、必要なページが表示されることを確認します。
http://localhost/dashboard/
この時点でApacheやMySQLが起動しない場合は、サービス登録より先にポート競合や設定エラーを解消します。Windowsサービスの登録・解除には管理者権限が必要です。
ApacheとMySQLをWindowsサービスへ登録する
- XAMPP Control Panelを「管理者として実行」します。
- Apacheの行にある「Svc」列のチェックボックスをオンにします。
- Windowsサービスへの登録確認が表示された場合は、対象がApacheであることを確認して許可します。
- データベースを使用する場合は、MySQLの行でも同じ操作を行います。
- Windowsのサービス管理画面を開き、登録状態とスタートアップの種類を確認します。
サービス管理画面は、Windowsキー + Rを押して次を入力すると開けます。
services.msc
環境によってサービス名の表示が異なる可能性があるため、名前だけで判断せず、実行ファイルのパスが導入したXAMPPを参照していることも確認してください。
再起動後に自動起動を確認する
- Windowsを再起動します。
- XAMPP Control Panelを起動せず、ブラウザで必要なローカルページを開きます。
- ページが表示されることを確認します。
services.mscでApacheとMySQLの状態が「実行中」になっていることを確認します。
Apacheのページが表示されても、データベースを使用するアプリが正常とは限りません。MariaDBへ接続するページまで開き、アプリ全体を確認してください。
サービス登録を解除する
キオスク運用を終了する場合や、サービス競合を切り分ける場合は、XAMPP Control Panelを管理者として開き、対象モジュールの「Svc」をオフにします。解除後はWindowsを再起動し、サービスが自動起動しないことを確認します。
同じPCのlocalhostだけで使用する場合、外部端末からApacheへの接続許可は必要ありません。LAN内の別端末から接続させる場合も、Windowsファイアウォールの許可範囲は信頼できるプライベートネットワークなど必要最小限に限定してください。
手順5:アプリの自動起動を設定する
Node.jsアプリを自動起動する代表的な方法は、スタートアップとタスクスケジューラの2つです。
| 方法 | 適した用途 | 特徴 |
|---|---|---|
| スタートアップ | サインイン後に単純なコマンドを1回実行する | 設定が簡単 |
| タスクスケジューラ | 遅延起動、管理者権限、失敗時の再実行が必要 | 条件と復旧動作を細かく設定できる |
| Windowsの割り当てられたアクセス | 対応する単一アプリだけを利用者へ表示する | OS標準のキオスク制御を利用できる |
スタートアップを使用する場合
対象ユーザーへのサインイン後に単純なアプリや起動用バッチファイルを実行する場合は、現在のユーザーのスタートアップフォルダーを利用できます。shell:startupでの設定方法、ショートカットの作成、動作しない場合の確認項目は、キオスク端末でアプリを自動起動する方法で詳しく解説しています。
Node.jsアプリを起動するバッチファイルでは、作業フォルダーを絶対パスで指定します。npmコマンドの後にも処理を続ける場合は、callを付けます。
@echo off
cd /d C:\kiosk\app
call npm.cmd run start
callが必要になる理由と、複数コマンドを順番に実行する例は、Windowsバッチでnpm後のコマンドが実行されない原因を参照してください。
この方法はユーザーのサインイン後に実行されます。PCの電源投入だけでは起動しないため、無人運用では専用ユーザーへのサインインを含めて動作確認してください。
タスクスケジューラを使用する場合
無人運用では、タスクスケジューラで次の項目を設定できる構成が適しています。
- 対象ユーザーのサインイン時に起動する
- ネットワーク接続を待って起動する
- 起動を数十秒遅らせる
- 異常終了した場合に再実行する
- 必要な場合だけ最上位の権限で実行する
「プログラム/スクリプト」へバッチファイルを指定し、「開始(オプション)」にはアプリの作業フォルダーを指定します。画面を表示するアプリの場合は、ユーザーがサインインしている対話型セッションで実行される設定になっているか確認してください。
手順6:再起動後の動作を確認する
自動起動を設定したら、Windowsを再起動して本番と同じ流れを確認します。
- Windowsが正常に起動する
- 必要に応じて専用ユーザーへサインインする
- Node.jsアプリが自動で起動する
- 表示画面が前面または全画面になる
- ネットワーク接続後にコンテンツが表示される
- キーボードやマウスを操作しなくても表示を継続する
- アプリ終了時に、設定した方法で復旧する
通常の再起動だけでなく、電源断後の起動、ネットワーク切断と復旧、アプリの異常終了もテストします。
常設端末に必要なWindows設定
Node.jsアプリの自動起動だけでは、デジタルサイネージや無人案内端末の運用設定は完了しません。端末の用途に応じて、次の項目も確認します。
| 運用項目 | 確認内容 | 詳細手順 |
|---|---|---|
| タッチ操作 | 画面端スワイプなど、コンテンツから離脱する操作を必要な範囲で制限する | キオスク端末のタッチジェスチャを無効化する方法 |
| タスクバー | 自動的に隠す設定、または割り当てられたアクセスを用途に応じて選ぶ | Windows 11キオスクでタスクバーを非表示にする方法 |
| 通知 | 通知センターと通知バナーの違いを理解し、必要な項目だけを制御する | Windows 11で通知センターを無効化する方法 |
| Windows Update | 営業時間中の予期しない再起動を避け、保守時間に更新する | Windows Updateの自動更新・再起動を制御する方法 |
| 電源管理 | スリープ、画面オフ、自動終了、翌日の起動方法を確認する | Windowsを決まった時間に自動シャットダウンする方法 |
更新サービスや更新関連タスクを常時停止すると、セキュリティ更新が適用されず、Windows側の変更で設定が戻る可能性もあります。更新を永久に止める設計ではなく、検証端末で確認してから保守時間内に適用できる運用を用意してください。
なお、レジストリやグループポリシーで操作を制限しても、すべての抜け道を防げるとは限りません。公共空間で利用者が触れる端末では、専用ユーザーの権限、割り当てられたアクセス、物理ポートの保護も含めて評価します。
複数台へ展開するときのポイント
複数のキオスク端末では、端末ごとの差異を減らすことが保守性につながります。
- Windows、nvm-windows、Node.jsのバージョンを統一する
- Node.jsは表示アプリで動作確認済みのLTS系バージョンを選び、具体的なバージョン番号で固定する
- アプリの配置先を
C:\kiosk\appなどに統一する package-lock.jsonを使って依存関係を固定する- 端末固有値は設定ファイルや環境変数へ分離する
- 自動起動設定、ファイアウォール、電源設定を記録する
- 端末番号、設置場所、アプリバージョンを台帳で管理する
- 更新前に検証端末で再起動テストを行う
セットアップ操作をスクリプト化する場合も、パス、対象ユーザー、バージョン番号を明示し、実行ログを残せるようにします。
セキュリティと安定運用の注意点
専用のWindowsユーザーを使用する
日常業務で使用する個人アカウントをキオスク運用へ流用せず、必要最小限の権限を持つ専用ユーザーを用意します。構築時に管理者権限が必要でも、常時表示するアプリまで管理者として動かす必要があるとは限りません。
バージョンを自動で変更しない
Node.jsや依存パッケージの更新によって表示が変わる可能性があります。運用中の端末ではバージョンを固定し、検証後に計画的に更新します。
電源とスリープを確認する
無人表示中にスリープや画面オフへ移行しないよう、運用要件に合わせてWindowsの電源設定を確認します。営業時間が決まっている場合は、タスクスケジューラによる終了と、UEFI/BIOSのRTC機能による起動も選択肢になります。ただし、組織の省電力・セキュリティ方針がある場合は、その方針を優先してください。
ログと復旧手順を準備する
アプリの標準出力だけに頼らず、日時を含むログをファイルや監視基盤へ保存します。障害時に「再起動する」「直前のバージョンへ戻す」「保守担当者へ通知する」といった復旧手順も決めておきます。
トラブルシューティング
再起動後にnodeまたはnpmが見つからない
自動起動を実行するユーザーと、nvm-windowsをセットアップしたユーザーが同じか確認します。次のコマンドで実行ファイルの参照先を調べます。
where.exe node
where.exe npm
nvm debug
手動では起動するが自動起動では失敗する
作業フォルダー、実行ユーザー、環境変数、起動時点のネットワーク状態を確認します。相対パスに依存せず、バッチファイルやタスクスケジューラでは絶対パスを指定します。
npmコマンドの次の処理が実行されない
Windowsバッチファイルから.cmd形式のコマンドを呼び出す場合は、次のようにcallを付けます。
call npm.cmd run start
アプリより先にWindowsのデスクトップが表示される
スタートアップではサインイン後に処理が始まるため、短時間デスクトップが表示される場合があります。表示開始までの時間を短縮するか、対応アプリであればWindowsの割り当てられたアクセスを検討します。
参考資料
- Windows Terminalのインストール(Microsoft Learn)
- nvm-windows公式README
- XAMPP公式ダウンロードページ(Apache Friends)
- XAMPP Windows FAQ(Apache Friends)
- Windowsのキオスクと制限付きユーザーエクスペリエンス(Microsoft Learn)
- タスクスケジューラのドキュメント(Microsoft Learn)
- Windows Updateのクライアントポリシー(Microsoft Learn)
まとめ
| 手順 | 実施内容 | 完了条件 |
|---|---|---|
| 1 | Windows Terminalを準備 | PowerShellを起動できる |
| 2 | nvm-windowsを導入 | nvmのバージョンが表示される |
| 3 | Node.js/npmを導入 | node -vとnpm -vが成功する |
| 4 | 表示アプリを配置 | 手動で正常に起動する |
| 5 | 自動起動を設定 | サインイン後に自動で起動する |
| 6 | 障害を想定してテスト | 再起動・通信復旧後も表示できる |
Windowsキオスク端末を安定して運用するには、ソフトをインストールするだけでなく、自動起動、バージョン固定、ログ、障害復旧まで一連の仕組みとして設計する必要があります。まず1台の検証端末で再起動やネットワーク障害を含めて確認し、設定を記録したうえで本番端末へ展開してください。