9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

使わなくなったノート PC をサーバーにしてみた

Last updated at Posted at 2024-07-03

まえがき

ネットワークまわりの勉強を『マスタリング TCP/IP』でしたばかりの私です。
結局 ssh とか telnet とか http 通信とかどうなってるんだ、と思い、自分で遊べる環境を作りたい...
最近は AWS とか、クラウド環境が人気?だけどどうやったらいいかわからない。
そこで、今は使ってないノートパソコンをいっそサーバーにしていろいろいじってみようと思って、やってみました。
なお、日記のようなものなので、サーバー化の解説を望んでいる人は他をあたるとたぶんいい。余計な説明が多すぎるので。

はじめる前の筆者のスペック

  • ある程度勉強はしているつもりだけど全く手を動かしたことはない
  • TCP の 3way ハンドシェイクとかは分かるし、HTTP の GET とかも知っているつもり、というレベル
  • Linux コマンドは cd ls rm mkdir cat くらいしか知らない(あとで出てきますが chmod echo は始める前ではよく知らない)
  • コーディングも学校の授業程度(最近ちょっと Go で競プロをやりはじめた)

こんな程度なので、たぶん完全アマチュアです。いま必死にいろいろやって追いつこうと頑張ってます、たぶん

今回の環境

今回使った 使わなくなったノートPC のスペックはつぎの通り

製品
Panasonic Let's note CF-SX4
もともとの OS
Windows 10 Pro
CPU
Intel Core i5-5300U
メモリ
4 GB
ディスク容量
たぶん SSD で 512 GB くらいあった気がする(Linux での確認の仕方がわからなくてもう見れない)

もともとパパ上が会社で使っていたノート PC を譲り受けた。ので、Pro になっている。また、BIOS の設定もかかっていて、いちいち会社用のログインパスワード入れないといけなかったが、解除できると知ってこれは早々に解除した記憶がある(中学生高校生くらいの話)。で確かもともとついてた HDD を SSD に差し替えた記憶がある。ノート PC だけど無理やりできたんだと思う。大学生になって今のノート PC を入手したので、ここ 3 年くらいは引き出しのこやしだった。そんな君には私のおもちゃになってもらおう、ということである。

こんな感じ。今は使ってないけど高校物理の公式を散りばめてたわりとお気に入りだったデスクトップがチラ見えしている。

サーバー化をするためにやったこと

今回はなんかサーバーにするなら Linux がいいと調べていてわかって、Linux もいっぱいあるけど Ubuntu って聞いたことあるし、自分の Windows PC にも入っている(wsl)からこれにしよう。なので、Ubuntu Server を使います。現時点の最新は「 Ubuntu Server 24.04 LTS 」でした。

ここから順を追ってやったことを記していきます。

(1) イメージファイルの入手

Linux を「サーバーに変身する子」(サーバー PC と今後呼ぶ)にインストールしないとならない。まず、自分の普段使っている PC(ノート PC と呼ぶ)に 公式サイト から「 Ubuntu Server 24.04 LTS 」の iso ファイルをダウンロードした。

「 ubuntu-24.04-live-server-amd64.iso 」というファイルが手に入った。で、どうやらこれを DVD か USB に落としてこれをサーバー PC にぶち挿してそこから OS をインストールするらしい。

今回は USB を使いました(DVD がないし、USB のが便利だと思ったし、持ってる)。しかし、ただその iso ファイルを USB に入れるんじゃダメらしく、OS のインストールができるようにしないといけないらしい。

そこで「 Rufus 」というソフトを使った(無料)。OS の USB 用ドライブを作るのによく使われるらしい。これをインストールすると普通に実行ファイルを GET できる(インストーラーじゃない)。

準備が整ったのでノート PC に USB をぶち挿して、Rufus を起動。「デバイス」に挿した USB、「ブートの種類」に「選択」からさっきの iso ファイルを選び、ほかは特になにもいじらず(なんだかよくわからないので触らない)「スタート」。このとき、もともと USB にあったデータは消えてなくなるので、バックアップか、空の USB、もうどうでもいいものを使おう。また、「スタート」を押したら「 ISOHybrid イメージの検出」というポップアップが出てきたけど、特に気にしないで OK を押した。その後データ消えちゃうよ~の警告があってそれも OK。

完了すると、USB の中身がこんな感じになる。これが OS のインストーラーになる。すごい。

ここまで出来たらつぎはいよいよ OS のインストール

(2) サーバー PC に Linux をインストールする

Windows 10 が入っていてしかも中身も結構残っていたサーバー PC にさよならして、Linux を導入します。データに関しては今のノート PC へ替えた際に移行しているので消えてもよいものです。

まず、サーバー PC にさっき OS のインストーラーを入れた USB を挿して電源を入れる。そしてこのとき F2 キーを連打して BIOS の画面を開く。これは HDD から起動をすると、Windows が起動してしまうので USB から起動するように設定を変えるためである。お使いのデバイスで設定をしてください。

この端末だと起動オプション優先度で USB と書いてあるものを上位にすれば出来た。キーとハードディスクと光学ドライブの違いはわからん。

BIOS の設定をして再度起動すると、こんな感じでめちゃめちゃ文字が流れていく。

しばらくすると画面上端に赤い帯と言語のリストが表示される(写真ないです)。日本語は残念ながらなかったので English を選択した。
なお、ここからのインストールは以下の 2 つのサイトを参考に進めているのでそちらも参照してください。

Ubuntu Server OS を新規にインストールする
Ubuntu Server 20.04 LTSをインストールする。

なんかいろいろ設定をしていく。keyboad はどちらも Japanese にした。

これは minimized にした。どう違うのかわかんないけど。とりあえずよくわからないのは上のサイトの通りにやった。ネットワークらへんは特に何もいじってない。プロキシのところもスルーした。

追記

まず、minimized はマジで最小限のパッケージのみという意味で、後述する vim less など各種コマンドがない、ので不便。そのため、なんか Linux とかあんまよく知らないくらいだったら minimized はやめた方がいいかも(1 敗)

また、ネットワークの設定はここではスルーしているが記事最後の「PS 的ななにか」で書いてるとおり、ここで Wi-Fi の設定ができるので有線 LAN がない場合はするとよい(1 敗)

でなんやかんや進めていると Profile Configuration に来る。

ここは重要で、今後のこのサーバー君のお名前になる。

Your name
特に関係ない。username にあわせる
Your servers name
サーバーの名前になる。他の端末で叩くときとかのお名前になるので分かりやすくつけよう
Pick a username
いわゆるユーザーネーム、ユーザー ID。再起動してログインするときとかに入力が必要。Windows だとログイン時に出てくる名前とかに近い?これがユーザーディレクトリの名前になるので長すぎるとめんどうになるかも
Choose a password
OS にログインするときのパスワード

これでまたなんやかんや進めるとインストールが始まる。OpenSSH のインストールはしておこう!他の端末からログインするために必要だぞ!

インストールが完了すると下の方に Reboot Now が出てくる。
しかし、これを押す前に USB を取り外しておく。
そうしないとまたインストーラーが起動しちゃう(のかな)。私も危うく忘れていて危なかった。

再起動するとまた画面が文字でバババッて流れたあとログインを要求される。

先ほど設定したユーザーネームとパスワードでログインすると無事に Ubuntu Server がインストールできた!!!!!!
cd とか ls とか叩いてしばらく感動にふけっていました。一応、今の Windows ノート PC に wsl は学校の授業で入れていたので Linux の操作はほんの少しはやっている私である。

ひとまず、インストールはできた。
で、、、、ここからが大変だった、、、、さあ地獄のネットワーク設定へ

(3) Wi-Fi の設定

Linux もインストールできたしバンザイ!とりあえず、ノート PC からこのサーバー PC に SSH でつなげてみるところまではやってみよう!
そうのんきに思っていた私だったが、あれ、どうやってネットにつなぐの?という疑問に当たる。
いや、単純明快だ、有線LAN を接続すればいいじょのいこと思うが、これは少しめんどうなのだ。詳しいことは書かないけどわが家のネットワーク配線はだるいことになっていて、有線を引くのが骨が折れる(いやでもサーバー PC は言ってもラップトップなんだからルーターの眼の前にもってこればいいんだけど...)。
まあ、有線はちょっとだけめんどうだから Wi-Fi でつなげてみよう。絶対方法あるでしょ、と思い調べたらありそう!それはやってみよう!
実はこれがかなり大変なのであった。まあでも Linux コマンドのいい勉強にはなったのでよしとする。

参考にしたサイトは次のとおり
[Raspberry Pi] CUIコマンドで Ubuntu Server の Wifi 設定をする
【Ubuntu Server 22.04.1】ターミナル上でWiFi接続


まず、ip a というコマンドを打つと自分の NIC と MAC アドレスや IP アドレスが一覧で表示されるらしい。

このサーバー PC には Wi-Fi と有線 LAN ポートが 1 つある。よってループバックと合わせて 3 つ表示されている(MAC アドレスは隠している)。ネットに繋がっていれば、たとえば有線を挿していれば enp0s25 のとこに IP アドレスが書かれることになる。けど、なにもないのでつながっていない。
ちなみに enp025 が有線のポートで wlp2s0 が Wi-Fi の名前?なんか識別名みたいなやつ。これ、使うので覚えとく。

さてどうやってネットにつなげればいいのか。いろいろ調べていたら /etc/netplan というディレクトリにその設定ファイルがあるらしい。起動時にはホームディレクトリにいるのでそこに動いてみる。

すると 50-cloud-init.yaml というファイルがあり、これを見てみると

50-cloud-init.yaml
# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s25:
            dhcp4: true
    version: 2
    wifis: {}

こんなんになっていた。調べた結果によると、ここの wifis: の後ろの部分を編集すればいいらしい。ちなみにこうする。

50-cloud-init.yaml
network:
    ethernets:
        enp0s25:
            dhcp4: true
    version: 2
    wifis:
        wlp2s0:
            dhcp4: true
            optional: true
            access-points:
                [SSID]:
                    password: "[セキュリティキー]"

[SSID] などは [ ] をまるごと含めて設定した Wi-Fi の SSID、セキュリティキーに置き換える。空白の数とかはこの通り合わせるらしい。optional がなんなのかはよくわかってないが、とりあえず調べたらこうすればいいと分かった。なお、wifis: のすぐ後にはさっき見た Wi-Fi の識別子みたいなやつを書く。今回は wlp2s0(ここが自分の機器によって変わるのに気付けなくてネットに書いてあるのをコピペしていたら全く動かなくてしばらく悩んでいたのは内緒。どうやら記事の wlan0 はラズパイのものみたい。これに苦戦させられたぜ全く)。


よし、やれば良いことは分かった。このファイルを編集すればいいんだな!よし編集編集~えーと編集するのってどうやるんだっけ。お、vi っていうコマンドがあるのかなるほどなるほど。えいっ

え、コマンドがない!?!?そんな....
はい、ここで大変なことに気づく。なぜか、たぶん標準で使えるべきはずのコマンドに使えないものがあるのだ。
vi less ping などは使えなかった。touch echo curl cat chmod sed とかは使えた。

どうやってこの yaml ファイルを編集したものか...いろいろ試行錯誤をしてみる。すると echo コマンドを使えば文末に付け足しすることができるんだな、早速使ってみよう
すると、なぜか使えない。あ許可がされてない、そっか sudo を忘れちゃいけないね。あれ、sudo でも使えない。

困った。困った。本当に困った。これを解決するのにすごい時間がかかった。
結論から言うと権限を編集しなくてはならなかった。書き込みが制限されていてできなかったのだ!
権限を編集するコマンドは chmod これの使い方は調べてください。777 で指定すると最強になるということだけ書いとく。
これで編集もできるようになった。ちなみに sed コマンドなども駆使して頑張って編集した。もう昨日のことなのであんまり覚えてない。てか今やったら sed はもしかしたら使えたかも?まあとりあえず、しっかり wifis: の項目を書いて次のコマンドで設定の適応をすると

~$ sudo netplan apply

無事にネットに繋がった!!!!!!まさか権限を編集しないと編集できなかったとは...直近に学校の授業でこんな話を聞いていて、覚えていたから良かったかもしれない。知らなかったら一生つまづいていたかも。

ちゃんと 192.168. が割り当てられてる!!ここまで来るのに本当にめちゃめちゃ試行錯誤したのでめっちゃ達成感があって嬉しかった。

(4) SSH でつなげてみるまで

無事にネットに繋ぐことが出来たのでさっきゅうにパッケージのアップデートなどをした。また、使えなかったコマンドなどはインストールした。

いよいよ SSH 接続をしてみるが、実はもうできる。OS インストール時に OpenSSH をインストールしているので SSH デーモンは既にあり、TCP/22 番も空いている模様。
何が問題かといえば、今はまだ動的 IP になっている。よって固定化してみよう!

でももうこっちのノート PC で操作したくてうずうずしているので固定化は SSH つなげてこっちでやってみることにした。

以下が参考
[ubuntu]Wifi接続でIPアドレスを固定化する

SSH のつなげ方

まず、つなげたい方(サーバー PC)の IP アドレスを確認する。サーバー PC の方で ip a コマンドを打つ。

さっきと同じ写真だけど IP アドレスが 192.168.1.12 だと分かる。これはネットに再接続とか再起動しない限りは動的でも変わらないので一旦これを覚えてメイン PC へ移動。

メイン PC でコマンドプロンプトを起動する。ちなみにメイン PC は Windows 11 である。ここで

> ssh gj5752@192.168.1.12

のように サーバー PC のユーザ名 @ IPアドレス の形で ssh コマンドを打つ。するとなんか yes を求められる(たぶん初回は)ので yes するとパスワードを入れろと言われる。サーバー PC のパスワードを入れるとログインが出来た!

これで好きなようにいじれる。たのしい。ファイルとか作ってみるとちゃんと同期してるあたりまえだけど。たのしい。

固定 IP 化

固定 IP 化をするぞーー!おーー!これはさっき Wi-Fi のときにいじってた yaml ファイルに追記をする。
まず、このネットワークのデフォルトゲートウェイとネームサーバーが何かを確認する。サーバー PC で ip a してもいいし、Windows で ipconfig -all でもよい。

これを見るとデフォルトゲートウェイ(ルータの内部ネットワーク側 IP)が 192.168.1.1 で、DNS サーバーも 192.168.1.1 と分かる。これをもとに、yaml ファイルを次のように書き換える。

50-cloud-init.yaml
network:
    ethernets:
        enp0s25:
            dhcp4: true
    version: 2
    wifis:
        wlp2s0:
            dhcp4: false
            optional: true
            addresses:
                - 192.168.1.50/24
            nameservers:
                addresses: [192.168.1.1]
            access-points:
                [SSID]:
                    password: "[セキュリティキー]"

dhcp4false にして、ネームサーバーを置く。addresses には自分が固定化したい IP を入れる。今回は .50 にしてみた。
これを編集して sudo netplan apply で適用させる(このとき警告が出るけどよくわからない、動いてるので OK!)。
そして ip a で IP アドレスを確認してみると確かに 192.168.1.50 になっている!

これで固定化ができた。ためしに再起動などしてみても同じ IP になっていると思う。
晴れて固定 IP で SSH 接続ができるようになった!これにてひとまず完了!!!!!!!!!!!!!!!!!!!!

このあとやりたいこと

とりあえずサーバーを立てる!ということはできた。でもまだ、リモート接続ができるだけ。この子を Web サーバーとかファイルサーバーとかいろんなことを実験できるようにいろいろしていきたい。
ゆくゆくはインターネッツからもアクセスできるようになるといいな。

追記:SSH つなぐとき、公開鍵とかなんもやってないな―と思って調べたら、SSH にはパスワード認証と鍵認証の 2 種類があるみたい。今回やったのはパスワード認証です。

ひとまずはこれで終了です。ふー

PS 的ななにか

まだ何もしてないからもう一回インストールをし直してみようと思ったらどうやら Ubuntu Server のインストールの段階で Wi-Fi の設定はできたみたい。また、minimized じゃなくて普通のにしたら普通に vim とか使えた。

Network Configuration というところで、普通に設定できました。これから有線なしで Wi-Fi で Ubuntu Server を入れようと思っているあなたはここで設定しようね!

最初は上の画像の eth のように not connected になっているので、その部分を選択すると Wi-Fi ルータの SSID やパスワードを入れるポップアップが出てくる。入力して SAVE すると、DHCPv4 って書いてあるところに IP アドレスが出現する。バカ簡単やんけ!!

ちなみに DHCPv4 のとこを選択すればこんな感じで IP の固定化とかもできちゃう。Method:Manual にしていろいろ入れていく。だいたい yaml 編集したときと同じだけど、サブネットのとこはだいたい /24 だと思うので、デフォルトゲートウェイを調べたときなどの IP アドレスの /24 まで書いて、最後の部分は .0 でよい。

これで Wi-Fi と固定 IP の設定は OK。こんなかんたんだったとは... とほほ

更新履歴

2024/07/04 公開
2024/07/05 追記(minimized と ssh パスワード認証、PS 的ななにか)

9
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?