大学の時に使っていたDELLのノートPCが、Windows 10のまま眠っていた。
メモリは8GB。Windows 11にしても重くなるだけだし、かといって捨てるのはもったいない。
だったら Ubuntu Serverを入れて、自宅のバックエンド実験サーバーにしてしまおう、というのがこの記事の話。
メインのMacに開発ツールやDBを全部入れると、環境がぐちゃぐちゃになる。
それを避けるために、古いPCをLinuxサーバー化して「壊してもいい箱」として運用する。
VPN(Tailscale)で外からも安全に触れるようにして、Docker上にPostgreSQLなどの実験環境を立てるところまでをまとめた。
なぜWindows → Ubuntu Server なのか
サーバー用途で旧PCを再利用するなら、Ubuntu Serverが合理的な選択肢になる。
- 軽い:GUIがないぶんリソース消費が小さく、8GB RAMでも余裕で動く
- アップデートを自分で制御できる:Windowsの強制アップデートによる事故がない
- リモート管理が前提の設計:SSHで完結する
- バックエンドとの相性が良い:PostgreSQL、Python、Dockerなどが自然に動く
ブータブルUSBの作成
インストールにはUSBメモリ(8GB以上)が必要。
- ubuntu.com から Ubuntu Server 24.04 LTS のISOをダウンロード
- balenaEtcher(etcher.balena.io)でISOをUSBに書き込む
- USBの中身は上書きされるので、必要なデータは事前にバックアップ
BIOS設定の変更
DELLの場合、起動時に F2連打 でBIOSに入れる。
- Secure Boot →
Audit Mode(実質Disabled)に変更 - Boot Order → USBを最優先に設定
- 保存して再起動
インストール時の設定ポイント
| 項目 | 設定値 |
|---|---|
| 言語 | English(Server版は日本語を選べない) |
| ストレージ | Use an entire disk |
| LVM | 有効 |
| 暗号化(LUKS) | 無効 |
| Ubuntu Pro | Skip |
| OpenSSH Server | インストール必須 |
サーバー名とユーザー名は任意のものを設定する。
インストール完了後、「Reboot Now」でUSBを抜いて再起動。
ネットワーク設定:最初の「鶏と卵」問題
Ubuntu Serverをインストールした直後、Wi-Fiを使うには wpasupplicant が必要だが、そのインストールにはネット接続が要るという問題にぶつかる。
解決策はシンプルで、まず有線LANでルーターに直結する。
① 有線LANをnetplanで有効化
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
enp1s0: # ← デバイス名は `ip a` で確認
dhcp4: true
dhcp6: false
sudo chmod 600 /etc/netplan/01-netcfg.yaml
sudo netplan apply
ip a でIPv4アドレスが取得できていればOK。
② wpasupplicantをインストールしてWi-Fiを設定
sudo apt update && sudo apt install -y wpasupplicant
同じnetplanファイルにWi-Fiの設定を追加する。
wifis:
wlo1: # ← デバイス名は `ip a` で確認
dhcp4: true
access-points:
"<SSID名>":
password: "<パスワード>"
sudo netplan apply
Wi-FiでIPが取れたら、有線を抜いても大丈夫。
注意:netplanのYAMLはインデントに厳しい。スペースがずれるとエラーになる。また、設定ファイルは
chmod 600でパーミッションを絞っておくこと。
SSH接続と鍵認証
サーバーのIPが分かったら、別のPC(Macなど)からSSHで入る。
ssh <ユーザー名>@<サーバーのローカルIP>
毎回パスワードを打つのは面倒なので、鍵認証に切り替える。
# クライアント側で鍵を生成
ssh-keygen -t ed25519 -C "my-server"
# 公開鍵をサーバーに送る
ssh-copy-id <ユーザー名>@<サーバーのローカルIP>
Macの場合はキーチェーンに登録しておくと便利。
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
ノートPCサーバーの落とし穴:蓋を閉じるとスリープする
ノートPCをサーバー転用すると、蓋を閉じた瞬間にスリープして接続が切れる。
/etc/systemd/logind.conf を編集して無効化する。
sudo nano /etc/systemd/logind.conf
以下の行のコメントを外して ignore に変更:
HandleLidSwitch=ignore
sudo systemctl restart systemd-logind
これでサーバーは蓋を閉じたまま稼働し続ける。