コース一覧
    Node.js認証・本番運用
    サーバーで常駐させる

    Node.js認証・本番運用

    認証、認可、フロントエンド連携、本番運用を学び、Node.jsで保守可能なサービスを完成させられるようにします。

    1
    認証のきほん
    01. 認証と認可15分
    02. パスワードハッシュ15分
    03. ログインとトークン15分
    04. 保護ルート15分
    05. 本人のものだけ15分
    06. つくる:認証完備20分
    07. 第7章クイズ10分
    2
    総合制作
    01. fleama API完成20分
    02. Reactと接続する20分
    03. サーバーで常駐させる20分
    04. 自由拡張20分
    05. 完成と次のステップ15分

    サーバーで常駐させる

    手元で動くのと、公開するのは別

    npm run dev で動いているサーバーは、あなたが端末を閉じた瞬間に止まります。公開するには、閉じても動き続ける形にする必要があります。

    これを常駐と呼びます。サーバー構築入門で学んだ systemd の出番です。

    設定を書く

    プレーンテキスト

    [Unit]
    Description=fleama API
    
    [Service]
    WorkingDirectory=/var/www/fleama
    ExecStart=/usr/bin/node app.js
    Restart=always
    Environment=PORT=3000
    
    [Install]
    WantedBy=multi-user.target

    Restart=always が大切です。何かの理由で落ちても、自動で起動し直してくれます。落ちない仕組みではなく、落ちても戻る仕組みを用意しておくのが実務の考え方です。

    開発用の起動を使わない

    本番では node --watch を使いません。ファイルを見張る必要が無いうえ、勝手に再起動されると困るからです。

    第1章で start と dev を分けて登録したのは、この日のためでした。

    JSON

    {
      "scripts": {
        "start": "node app.js",
        "dev": "node --watch app.js"
      }
    }

    環境ごとに変わるものをコードに書かない

    第3章で process.env.PORT を扱いました。同じ考え方で、環境によって変わる値はすべて外から渡します。

    JavaScript

    const port = process.env.PORT || 3000;
    const allowedOrigin = process.env.ALLOWED_ORIGIN || "http://localhost:5173";

    公開したら ALLOWED_ORIGIN は本番のアドレスになります。コードは同じまま、設定だけが変わる形にしておきます。

    秘密の値は特に外へ出す

    パスワードやトークンの元になる値を、コードに直接書いてはいけません。

    JavaScript

    const secret = "my-secret-key"; // 絶対に避ける

    コードは共有され、履歴にも残ります。一度書いたものは、後から消しても履歴から読めます。秘密は環境変数で渡す、と覚えてください。

    手を動かす

    演習では、環境変数から設定を組み立てる関数を書きます。無いときの既定値と、秘密の扱いに気を配ってください。

    要件

    1. port は PORT を数値に直したもの(無い・数値にならないなら 3000)
    2. allowedOrigin は ALLOWED_ORIGIN(無ければ http://localhost:5173)
    3. hasSecret は SECRET_KEY が空でなければ true。値そのものは返さない

    ヒント

    `port` の求め方は、第3章の「開発の回し方」で書いたものと同じです

    `allowedOrigin` は `||` で既定値に落とせます

    `hasSecret` は `Boolean(...)` に通せば、空文字や未指定が `false` になります

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/10

    関連レッスン

    • 自由拡張

      欲しいAPIを設計から実装し、自分で機能を足せるようになります。

    • 完成と次のステップ

      作ったAPIの全体像を振り返り、フルスタックの流れを語れるようになります。

    • Reactと接続する

      モックを自作APIへ差し替え、フロントとバックをつなげられるようになります。

    • fleama API完成

      第4章で作った一覧表と突き合わせ、仕様を満たし切れるようになります。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
    • パスワードDBが漏洩しても元のパスワードがわからないようにするため。
    • トークンLLM が扱う最小の文字単位
    • 環境変数JWT_SECRET など秘匿値を渡す手段
    • 変数データに名前をつけて参照する仕組み
    • 関数処理に名前を付けて再利用できる単位
    main.js
    エディタを読み込んでいます

    メモ

    サーバーで常駐させる

    ⌘S で保存