- ① SSH、ユーザー追加
- ② IPv4/IPv6追加、netplan、ufw
- ③ Apache2
- ④ Let's Encrypt
- ⑤ PHP
- ⑥ MariaDB
- ⑦ WordPress
- ⑧ Dovecot、Postfix
- ⑨ Vsftpd
- ⑩ Python
- ⑪ llama.cpp、ChromaDB
- ⑫ Anaconda、Keras、TensorFlow
- ⑬ Node.js
- ⑭ MongoDB
- ⑮ Mosquitto
- ⑯ RabbitMQ
- ⑰ Supervisor
01nvmとNode.jsのインストール
旧サーバーのnode -v(v24.16.0)と同じバージョンで揃えた。
02node_modulesはコピーせず作り直す
開発ディレクトリ一式はscpでコピー済みだったが、node_modulesだけは削除して新サーバー上で入れ直した。
package.jsonを確認すると@tensorflow/tfjs-node・sharpという、どちらもネイティブアドオン(コンパイル済みバイナリを含む)のパッケージが使われており、
旧サーバーのOS・CPU向けにビルドされたものをそのまま持ち込むと、動作しない・原因不明のクラッシュにつながるリスクがあったため。
npm warn install-scripts(tfjs-node・sharpがインストール時にスクリプトを実行する旨の通知)や「〇 packages are looking for funding」が表示されたが、これはエラーではなく単なる情報表示。近年npmがinstallスクリプト持ちパッケージを可視化するようになった仕様で、正当な理由(バイナリ取得・ビルド確認)で使われている場合は問題ない。
03parcelをdevDependenciesへ明示的に追加
旧サーバーではparcelをグローバルインストールし、実行はnpx parcelだったが、package.jsonのどちらのファイルにも記録がなかった。
「動いてはいたが記録されていない」状態はバージョン管理上望ましくないため、この機会にプロジェクトの依存関係として明示することにした。
これでnpx parcelはローカルのものを優先的に使うようになり、バージョンも固定される。
04棚卸しで見つかったレガシー依存(対応は次回以降)
| パッケージ | 状況 |
|---|---|
| http / https | Node.js組み込みモジュール。npm依存として書く必要は本来ない |
| request | 開発元により公式に非推奨化。将来的にfetch等への置き換えを検討 |
| jsdom-no-contextify | vmモジュールが未成熟だった時代のjsdomフォーク。Node.js 24では素のjsdomで足りるはず |
| mathjax-node | mathjax v3以降でNode.js対応が本体に統合され非推奨。実際にrequire('mathjax-node')で使用中と確認 |
今回のインストールをブロックするものではないため、対応は後日まわしとした。
05動作確認
06ここまでの状態
- nvm経由でNode.js v24.16.0を導入、旧サーバーとバージョンを一致
- node_modulesはコピーせず新サーバー上で再インストール(ネイティブアドオン対策)
- parcelをdevDependenciesへ明示的に追加
- tfjs-node・sharpの動作を直接確認済み
- 非推奨・不要と思われる依存(request、jsdom-no-contextify等)を洗い出し、対応は次回以降に持ち越し