LinuxにNode.jsをインストールして使う入門|nvmでWSL2やVPSにJavaScript実行環境を構築する方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > LinuxにNode.jsをインストールして使う入門|nvmでWSL2やVPSにJavaScript実行環境を構築する方法
「Node.jsをLinuxで動かしたいのに、どこから手をつければいいか分からない」
「WindowsでNode.jsを使っていたが、サーバーや開発環境がLinuxだと設定の仕方が違うのか不安」

こうした悩みを持つ初心者は多いです。Node.jsはWebアプリやAPIサーバーを作るための実行環境ですが、LinuxにインストールしてCLIから動かすとなると、Windows環境とは勝手が違うと感じる方がほとんどです。

この記事では、Linux環境(WSL2・Ubuntu・Rocky Linux)にNode.jsをインストールして動かすまでの手順を、Ubuntu 24.04 LTS / Rocky Linux 9.4での動作確認済みの内容で初心者向けに解説します。
nvm(Node Version Manager)を使ったバージョン管理から、npmコマンドの基本、実際にNode.jsスクリプトを実行するところまでカバーします。

この記事のポイント

・nvm install --lts でNode.jsのLTS版をsudo不要でインストールできる
・nvmを使えばバージョン切り替えが nvm use コマンド1行でできる
・npmコマンドでパッケージの install/uninstall/run などの基本操作を習得できる
・「nvm: command not found」など初心者がはまるエラーと対処法も網羅している


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜLinuxでNode.jsを動かすのか?

JavaScriptはもともとブラウザで動く言語でした。それをサーバーサイドで動かせるようにしたのがNode.jsです。
Node.jsは「イベントループ」という仕組みで非同期処理を効率よく捌くため、WebAPIの開発やリアルタイムアプリに特に向いています。現在ではWebAPIの開発・CLI(コマンドライン)ツールの制作・ビルドツール(webpack/viteなど)の実行に加え、Express・NestJS・Next.jsなどの主要フレームワークの動作基盤としても欠かせません。開発現場でNode.jsが必要になる場面はどんどん増えています。

Windowsでも動かすことはできますが、本番のサーバー環境はほぼ必ずLinuxです。WSL2(Windows Subsystem for Linux)を使えば、自分のPCからLinuxのシェルを起動してNode.jsを扱えるため、「ローカルで開発してLinuxサーバーに本番デプロイ」という本物の開発フローを手元で練習できます。

また、バージョンの切り替えが柔軟に行える点もLinuxの強みです。プロジェクトによって「Node.js 18が必要」「Node.js 20で動かす」といった差があることが多く、nvm(Node Version Manager)というツールを使えばコマンド1行でバージョンを切り替えられます。aptやdnfでシステムにNode.jsを直接インストールする方法もありますが、現場ではnvm経由が標準です。

事前に確認:環境と前提条件

この記事ではUbuntu 24.04 LTS(WSL2またはVPS)・Rocky Linux 9.4で動作確認を行っています。
手順はほかのDebianやCentOS系でも基本的に同じです。

作業前に以下を確認してください:

・インターネットに接続できる状態であること
・sudo(管理者権限)が使えるユーザーでログインしていること
・WSL2を使う場合は「ディストリビューション入門」の手順でWSL2のセットアップを済ませていること
・curl コマンドが使えること(nvmのインストールに必要。入っていなければ後述の手順でインストールできます)

1. シェルが起動できるか確認する

まずターミナル(またはWSL2のシェル)を開いて、Linuxが動いているか確認します。

# ログインユーザーを確認する $ whoami tomohiro # OSの種類を確認する(Ubuntu/Rocky Linuxなど) $ cat /etc/os-release | head -4 NAME="Ubuntu" VERSION="24.04.2 LTS (Noble Numbat)" ID=ubuntu ID_LIKE=debian

上のように自分のユーザー名とOS情報が表示されれば問題ありません。

2. パッケージ管理コマンドの確認

Linuxのディストリビューションによってパッケージマネージャーのコマンドが違います。

Ubuntu/Debian系(WSL2で標準):apt コマンドを使う
Rocky Linux/RHEL系:dnf コマンドを使う

どちらを使うかわからない場合は、以下で確認できます。

# Ubuntuかどうか確認する $ which apt /usr/bin/apt # Rocky Linuxかどうか確認する $ which dnf /usr/bin/dnf

コマンドのパスが表示されれば、そのパッケージマネージャーが使えます。

3. 使っているシェルを確認する

nvmはインストール時に ~/.bashrc に設定を追記しますが、zshを使っている場合は ~/.zshrc に追記されます。自分がどのシェルを使っているか事前に確認しておきましょう。

# 現在使っているシェルを確認する $ echo $SHELL /bin/bash ← bashの場合 # または /bin/zsh ← zshの場合

WSL2のUbuntuは初期設定でbashが起動します。VPSの場合も通常はbashが標準です。

nvmをインストールする

Node.jsを直接インストールする方法もありますが、現場ではnvm(Node Version Manager)経由でのインストールを強く推奨します。
理由は2つあります。

・複数バージョンを切り替えられる(プロジェクトによってNode.jsのバージョンが異なるため)
・sudo不要でインストールできる(システム全体を汚染しない)

1. nvmをダウンロードしてインストールする

nvmはcurlコマンドで提供されているインストールスクリプトを実行するだけでセットアップできます。Ubuntu・Rocky Linuxともに手順は同じです。
インストールスクリプトのバージョン(v0.40.0の部分)は、nvm公式GitHubのリリースページで最新版を確認してから実行すると確実です。

# curlでnvmのインストールスクリプトをダウンロード・実行する $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash # 実行後の出力例 => Downloading nvm from git to '/home/tomohiro/.nvm' => Cloning into '/home/tomohiro/.nvm'... remote: Enumerating objects: 375, done. remote: Counting objects: 100% (375/375), done. => Appending nvm source string to /home/tomohiro/.bashrc => Appending bash_completion source string to /home/tomohiro/.bashrc => Close and reopen your terminal to start using nvm or run the following to use it now:

「Appending nvm source string to /home/ユーザー名/.bashrc」と表示されればインストール成功です。

2. シェルに設定を反映させる

nvmをインストールすると ~/.bashrc にパスが追記されますが、現在のシェルには反映されていないため、以下のコマンドで読み込みます。

# .bashrcを再読み込みする $ source ~/.bashrc # nvmが使えるようになったか確認する $ nvm --version 0.40.0

バージョン番号が表示されればnvmが使えるようになっています。
zshを使っている場合は ~/.bashrc ではなく ~/.zshrc にパスが追記されます。その場合は source ~/.zshrc で読み込んでください。

3. curlが入っていない場合

インストールスクリプトのダウンロードにはcurlコマンドを使います。
「command not found」と出た場合はcurlを先にインストールしてください。

# Ubuntu/Debianの場合 $ sudo apt update && sudo apt install -y curl # Rocky Linux/RHELの場合 $ sudo dnf install -y curl

Node.jsをインストールする

nvmが使えるようになったら、Node.jsの最新LTS(Long Term Support)バージョンをインストールします。
LTSとは長期サポート版のことで、本番環境での安定稼働が保証されたバージョンです。Node.jsのLTS版は偶数番号(v18・v20・v22・v24など)のメジャーバージョンにあたります。機能追加よりも安定性・セキュリティ修正を優先したいプロジェクトではLTS版を選ぶのが基本です。

1. LTS版Node.jsをインストールする

# 最新LTS版のNode.jsをインストールする $ nvm install --lts # インストール後の出力例 Installing latest LTS version. Downloading and installing node v22.15.0... Downloading https://nodejs.org/dist/v22.15.0/node-v22.15.0-linux-x64.tar.xz... ######################################################### 100.0% Computing checksum with sha256sum Checksums matched! Now using node v22.15.0 (npm v10.9.2) Creating default alias: default -> lts/* (-> v22.15.0)

「Now using node vXX.XX.X」と表示されればNode.jsのインストール成功です。

2. インストールされたバージョンを確認する

# Node.jsのバージョンを確認する $ node --version v22.15.0 # npm(パッケージマネージャー)のバージョンも確認する $ npm --version 10.9.2 # インストール済みのNode.jsバージョン一覧を表示する $ nvm ls -> v22.15.0 default -> lts/* (-> v22.15.0)

バージョン番号が表示されれば正常です。Node.jsをインストールすると、JavaScriptライブラリ・フレームワークを管理するnpmも同時にインストールされます。

3. デフォルトバージョンを固定する

複数バージョンをインストールしている場合、新しいシェルを開いたときに使われるバージョンを nvm alias default で固定できます。

# デフォルトバージョンをv22に固定する $ nvm alias default 22 # 設定後の確認 $ nvm ls -> v22.15.0 default -> 22 (-> v22.15.0)

この設定をしておけば、新しいターミナルを開いたときも自動的にv22が有効になります。

npmの基本操作を覚える

Node.jsをインストールすると、同時にnpm(Node Package Manager)も使えるようになります。
npmはLinuxのaptやdnfと同じ「パッケージ管理ツール」ですが、JavaScriptのライブラリやフレームワークを管理するために使います。

1. package.jsonを作成してプロジェクトを初期化する

npmを使う場合、まずプロジェクトのディレクトリを作成し、npm initでpackage.jsonを生成します。

# プロジェクト用ディレクトリを作成して移動する $ mkdir my-node-project && cd my-node-project # package.jsonを生成する(-yで質問をスキップ) $ npm init -y # 出力例 Wrote to /home/tomohiro/my-node-project/package.json: { "name": "my-node-project", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo Error: no test specified && exit 1" }, "author": "", "license": "ISC" }

2. パッケージをインストールする

# lodash(ユーティリティライブラリ)をインストールする例 $ npm install lodash # 出力例 added 1 package, and audited 2 packages in 2s 1 package is looking for funding run `npm fund` for details found 0 vulnerabilities # インストール済みパッケージの一覧を確認する $ npm list my-node-project@1.0.0 /home/tomohiro/my-node-project └── lodash@4.17.21

3. パッケージを削除する

# パッケージを削除する $ npm uninstall lodash removed 1 package, and audited 1 package in 1s found 0 vulnerabilities

4. scriptsにコマンドを登録してnpm runで実行する

package.jsonの scripts フィールドにコマンドを登録しておくと、npm run コマンド名 で呼び出せます。長いコマンドや環境ごとに異なる起動オプションをまとめておくのに役立ちます。

# package.json の scripts フィールドの例 { "scripts": { "start": "node server.js", "dev": "node --watch server.js", "test": "node test.js" } } # npm run で実行する $ npm run start $ npm run dev # start と test は run を省略できる $ npm start $ npm test

5. npxでインストールせずにコマンドを実行する

npxはnpmに同梱されているコマンドで、パッケージをグローバルインストールせずに一時的に実行できます。
「試しに使ってみたいだけ」という場面で重宝します。

# create-react-appをインストールせずに一時実行する例 $ npx create-react-app my-app # コマンドのバージョン確認ツールを一時実行する例 $ npx npm-check-updates

6. node_modulesと.gitignoreの関係

npm install を実行すると、パッケージは node_modules/ ディレクトリに保存されます。このディレクトリは数千のファイルを含むため、Gitリポジトリにコミットしてはいけません。プロジェクトのルートに .gitignore ファイルを作成して除外しておきましょう。

# .gitignoreを作成してnode_modulesを除外する $ echo "node_modules/" > .gitignore # 他の開発者が package.json から依存関係を再現する場合は # npm install を実行するだけで node_modules が再作成される $ npm install

Node.jsでスクリプトを実行する

インストールと基本操作が確認できたら、実際にNode.jsでJavaScriptファイルを実行してみましょう。

1. 最初のJSファイルを作成する

# テキストエディタ(nano)でJSファイルを作成する $ nano hello.js

nanoが開いたら、以下を入力してください(Ctrl+Oで保存、Ctrl+Xで終了):

// hello.js console.log('Hello, Linux Node.js!'); const now = new Date(); console.log('現在時刻: ' + now.toLocaleString('ja-JP'));

2. スクリプトを実行する

# nodeコマンドでJSファイルを実行する $ node hello.js # 出力例 Hello, Linux Node.js! 現在時刻: 2026/7/11 10:00:00

「Hello, Linux Node.js!」と現在時刻が表示されれば成功です。

3. 簡単なHTTPサーバーを起動してみる

Node.jsの組み込みモジュール(http)を使えば、数行のコードでHTTPサーバーを立ち上げられます。
これはNode.jsの特徴的な使い方であり、Expressなど人気フレームワークの動作原理でもあります。

# server.jsを作成する $ nano server.js

以下の内容を入力してください:

// server.js const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end('Hello from Node.js on Linux! '); }); server.listen(3000, () => { console.log('サーバーがポート3000で起動しました'); console.log('http://localhost:3000 にアクセスしてください'); });

# サーバーを起動する $ node server.js # 出力例 サーバーがポート3000で起動しました http://localhost:3000 にアクセスしてください

別のターミナルを開いて curl http://localhost:3000 で動作を確認するか、WSL2であればブラウザで http://localhost:3000 にアクセスしてみてください。
サーバーを停止するには Ctrl+C を押します。

4. 対話型シェル(REPL)を起動する

nodeコマンドをファイルなしで実行すると、対話型のJavaScript実行環境(REPL)が起動します。
計算やちょっとした動作確認に使えます。

# REPLを起動する $ node Welcome to Node.js v22.15.0. Type ".help" for more information. > 1 + 2 3 > console.log('test') test undefined > .exit $

「.exit」または「Ctrl+C」を2回押すと終了します。

バージョンを複数管理する(nvmの応用)

プロジェクトによってNode.jsのバージョンを切り替えるのがnvmの真価です。

1. 別バージョンのNode.jsを追加インストールする

# Node.js 20系をインストールする $ nvm install 20 # インストール済みバージョン一覧を確認する $ nvm ls v20.18.0 -> v22.15.0 default -> lts/* (-> v22.15.0) lts/* -> lts/jod (-> v22.15.0) lts/iron -> v20.18.0

2. 使用するバージョンを切り替える

# Node.js 20に切り替える $ nvm use 20 Now using node v20.18.0 (npm v10.8.2) # バージョンを確認する $ node --version v20.18.0 # 元のLTS(v22)に戻す $ nvm use --lts Now using node v22.15.0 (npm v10.9.2)

3. .nvmrcファイルでプロジェクトのバージョンを固定する

プロジェクトのルートディレクトリに.nvmrcファイルを置くと、そのプロジェクトで使うNode.jsのバージョンを明示できます。

# .nvmrcファイルを作成する(v22を指定する例) $ echo "22" > .nvmrc # .nvmrcを読んでバージョンを切り替える $ nvm use Found '/home/tomohiro/my-node-project/.nvmrc' with version <22> Now using node v22.15.0 (npm v10.9.2)

チームで開発する場合や、複数プロジェクトを管理する場合に役立ちます。リポジトリに .nvmrc をコミットしておけば、チームメンバー全員が同じバージョンで開発できます。

トラブルシュート:よくあるエラーと対処法

「nvm: command not found」が出る

nvmをインストールしたのに使えない場合は、シェルに設定が読み込まれていない可能性があります。

# .bashrcを再読み込みする $ source ~/.bashrc # または新しいターミナルを開き直す # WSL2の場合はウィンドウを閉じて再度開く # ~/.bashrc にnvmの記述があるか確認する $ grep -n "nvm" ~/.bashrc export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

上の2行が~/.bashrcに追記されていない場合は、以下を手動で追記します。

# 手動でnvmのパス設定を~/.bashrcに追記する $ echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc $ echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc $ source ~/.bashrc

「node: command not found」が出る

nvmはインストールできたがnodeが使えない場合は、Node.jsがインストールされていないかバージョンが切り替わっていない可能性があります。

# インストール済みバージョンを確認する $ nvm ls # 何も表示されない場合はLTS版をインストールする $ nvm install --lts # バージョンが表示されるがnodeが使えない場合はuseで切り替える $ nvm use --lts

「EACCES: permission denied」でnpmがエラーになる

nvmを使わずにaptやdnfでNode.jsをインストールした環境でnpmを使おうとすると、権限エラーが出ることがあります。

# エラーの例 $ npm install -g some-package npm WARN checkPermissions Missing write access to /usr/lib/node_modules npm ERR! code EACCES npm ERR! syscall access npm ERR! path /usr/lib/node_modules # 対処:nvmでNode.jsをインストールし直す # (nvmを使えばsudo不要でグローバルインストールが可能になる) $ nvm install --lts $ nvm use --lts $ npm install -g some-package # sudoなしで成功する

nvmを使わない場合にこのエラーが出たら、nvmを使う方式に切り替えることを強く推奨します。

「npm WARN EBADENGINE」が出る

使用しているNode.jsのバージョンが、インストールしようとしているパッケージの要件を満たさない場合に出ます。

# エラーの例 npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: 'some-package@2.0.0', npm WARN EBADENGINE required: { node: '>=20' }, npm WARN EBADENGINE current: { node: 'v18.20.5', npm: '10.7.0' } npm WARN EBADENGINE } # 対処:Node.jsを必要バージョン以上に切り替える $ nvm use 20 $ npm install some-package

「npm ERR! code CERT_HAS_EXPIRED」が出る

企業のプロキシ環境やVPN経由でnpmを使っている場合に、SSL証明書エラーが出ることがあります。

# エラーの例 npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED # 対処1:npmのキャッシュをクリアして再試行する $ npm cache clean --force $ npm install # 対処2:システムのCA証明書を更新する(Ubuntu/Debian) $ sudo apt update && sudo apt install -y ca-certificates $ sudo update-ca-certificates

「Error [ERR_OSSL_EVP_UNSUPPORTED]」が出る

古いフロントエンドプロジェクト(webpack 4系など)をNode.js 17以降で動かすと、OpenSSLのバージョン非互換でこのエラーが出ることがあります。

# エラーの例 Error: error:0308010C:digital envelope routines::unsupported opensslErrorStack: [ 'error:03000086:...' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' # 対処1:Node.js 16系に切り替える(プロジェクトが新しいNode.jsに対応していない場合) $ nvm install 16 $ nvm use 16 $ npm start # 対処2:環境変数でOpenSSLのレガシープロバイダーを有効にする(一時的な回避策) $ export NODE_OPTIONS=--openssl-legacy-provider $ npm start

長期的には、依存ライブラリを最新版に更新してNode.js 20以降で動くようにするのが根本対処です。

本記事のまとめ

Linux環境(Ubuntu・Rocky Linux・WSL2)でNode.jsを使う基本的な手順を解説しました。
やりたいこと コマンド
nvmをインストールする curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
nvmの設定を現在のシェルに反映する source ~/.bashrc
Node.js(最新LTS)をインストールする nvm install --lts
Node.jsのバージョンを確認する node --version
npmのバージョンを確認する npm --version
インストール済みバージョン一覧を表示する nvm ls
使用バージョンを切り替える nvm use 20
デフォルトバージョンを固定する nvm alias default 22
JSファイルを実行する node ファイル名.js
パッケージをインストールする npm install パッケージ名
パッケージを削除する npm uninstall パッケージ名
scriptsのコマンドを実行する npm run コマンド名
プロジェクトのバージョンを固定する echo "22" > .nvmrc && nvm use
インストールせずにパッケージを実行する npx パッケージ名
nvmを使ったインストールを習得すると、バージョン管理がスムーズになり、実際の開発現場に近い環境を手元で再現できます。

Node.jsが動く環境を構築できたら、次のステップとしてLinuxのコマンドや権限管理を深く理解しておくと、サーバー上でのアプリ運用がずっとスムーズになります。以下の記事で基礎をおさらいしてください。

Linuxの基礎スキルを次のステップへ

Node.jsのような開発ツールをLinux上で運用するためには、コマンドや権限・プロセス管理の知識が不可欠です。
以下の7つのテーマで、実務直結のLinuxスキルを身につけましょう。

grepコマンドで文字列を検索する方法|複数ファイルやディレクトリ除外も(ログ調査に必須)
chmodコマンドで権限を変更する方法|755と644の違いや一括変更も(スクリプトや設定ファイルの権限管理)
chownコマンドで所有者・グループを変更する方法|-Rの一括変更も(デプロイ後のファイル所有者変更)
psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索も(Node.jsプロセスの確認)
crontabコマンドの設定と書き方|動かない時のログ確認まで(定期実行・バッチ処理)
・findコマンドでファイル・ディレクトリを検索する方法|名前や更新日時で探す(ファイル管理・調査)
tarコマンドで圧縮・解凍(展開)する方法|必須のzxvfやディレクトリ指定も(バックアップ・ファイル転送)
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。