白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

自宅のサーバをWindowsからLinuxに乗り換えるよ

こんにちは。
WBCが始まりましたね。
普段野球見ないけどこういうのだけ見るタイプの人間です。
お祭りだから許して。

さて、以前から自宅にWindowsのミニPCを常時起動させてNAS+バッチサーバ+Webサーバとして使っているのですが、WindowsUpdateに振り回されたり、OS自体が結構リソースを使っていることが気になっていたので、Linuxにお引越しをすることにしました。
最近はOS入りの省電力なPCが1万円台とか普通に買えてしまって良い時代だなと思います。

ちなみに詳しい解説ではなく、こんなことをしたというメモ程度なのでご了承を。
今回はOSのインストールと簡単な初期設定まで。

今回引っ越すもの

NTFSフォーマットされた外付けHDDをNASとして利用しているもの
MySQL
.NET FrameworkC#)で動いているバッチ処理(タスクスケジューラで定期実行)
ASP.NET Core(C#)で動いているWeb画面(サービス化してスタートアップに登録)
Apache HTTP Serverの静的ページ

ついでにできたらいいなと思っていること

JavaPythonやNode.jsなどを動かす環境
・cronじゃないジョブ管理システムの導入
・LAN外からのVPN接続(外出先からのNASアクセス等)

OSを入れ替える

PCはこれを買いました。

Windows11Proで8GB+256GBで1万円台。どうなってるんだ。すぐ壊れたりして。

OSはUbuntuにしてみようかと思います。
インストール手順はこちらのページなどを参考にさせてもらいました。
color-code.net

ページの途中にある通り、Windows10以降だとOSからUSBブートにできるのでとりあえずセットアップ。
ついでに言うとメインのPCがまだWindows10なのでWindows11をちょっと触ってみようかなと思って。
でも普通にBIOSから起動したほうが手早いと思います。さようなら私の初めてのWindows11。

ざっくり
Ubuntuをダウンロード
・起動用のUSBを作る
・USBから起動してインストール
ですね。

Ubuntuは結構UIがちゃんとしてるので、ポチポチしやすくてよい感じです。
デスクトップ画面とかもかっこいい。(でも多分ほとんどCUIしか使わなくなるんだろうな)

SSH接続できるようにする

ここからUbuntu上のターミナルで作業します。
UbuntuDebian系なのでパッケージマネージャはaptですね。

$ sudo apt update
$ sudo apt install openssh-server
$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-03-09 23:47:54 JST; 14h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 818 (sshd)
      Tasks: 1 (limit: 9254)
     Memory: 6.3M
        CPU: 909ms
     CGroup: /system.slice/ssh.service
             mq818 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
~略~

ファイアウォールの設定

今のところLAN内で利用するだけなんですが、一応ファイアウォールを有効にしておきます。
SSHのポートだけは開けておかないと外から何もできないのでとりあえず追加。
ほんとはIP制限とかしたほうがいいかも。

$ sudo ufw status
状態: 非アクティブ
$ sudo ufw allow 22
ルールを追加しました
ルールを追加しました (v6)
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
$ sudo ufw status
状態: アクティブ
To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)

(なんか微妙に英語と日本が混ざるのが気になる…)
はい、これでSSH接続できるようになったので、普段使っているPCからTeraTermとかでアクセス操作ができます。
ほんとはIP制限とかしたほうがいいかもしれないし、IPv6も気にしたほうがいいのかもしれない。

メモ

ちなみにhostnameコマンドでホスト名とかIPアドレスとかがわかるので、メモしておくとよいかも。
(その前にIPアドレス固定しておけという説もある)

$ hostname
ubuntu-server
$ hostname -i
127.0.1.1
$ hostname -I
192.168.11.17 172.18.0.1 ...(いっぱい出る)

そして忘れそうなのでufwコマンドメモ。
とりあえずこれだけ覚えればなんとかなる気がする。

# ファイアウォールの状態を確認
sudo ufw status
# ファイアウォールの詳細状態を確認(削除の際はこの番号を見る)
sudo ufw status numbered
# 特定のポートを許可
sudo ufw allow 22
# TCP/UDPのみポートを許可
sudo ufw allow 22/tcp
# IPを指定してポート許可
sudo ufw allow from 192.168.0.0/16 to any port 22
# アプリケーション指定でポート許可
sudo ufw allow OpenSSH
# ルールの削除
sudo ufw delete 1

次回はNASとして使うためにSambaの設定をします。