「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」など初心者がはまるエラーと対処法も網羅している
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜ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
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の場合
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:
2. シェルに設定を反映させる
nvmをインストールすると ~/.bashrc にパスが追記されますが、現在のシェルには反映されていないため、以下のコマンドで読み込みます。# .bashrcを再読み込みする $ source ~/.bashrc # nvmが使えるようになったか確認する $ nvm --version 0.40.0
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)
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)
3. デフォルトバージョンを固定する
複数バージョンをインストールしている場合、新しいシェルを開いたときに使われるバージョンをnvm alias default で固定できます。# デフォルトバージョンをv22に固定する $ nvm alias default 22 # 設定後の確認 $ nvm ls -> v22.15.0 default -> 22 (-> v22.15.0)
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
// 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
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 $
バージョンを複数管理する(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)
トラブルシュート:よくあるエラーと対処法
「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
# 手動で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なしで成功する
「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
本記事のまとめ
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 パッケージ名 |
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サーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます