このご時世なのに、自宅にLinuxサーバを立ててみる。使い方は後で考える。

## 今年のゴールデンウィークを如何に過ごすか？
2020年春は新型コロナの影響でGWでも外出も儘ならない状況になりました。
この状況を利用しようと思い考えていました。
　例えば、
　AWSを使う？放置していずれ課金される・管理しないといけないのは嫌。
　Pythonのプログラム開発は？となるのと、ネタを考えないといけません。
　Raspberry Pi買って組込みの基礎でも学ぼうか……小遣い少ないのに無理！
そこで、家庭の中を見渡してみると、子供に与えていたノートPCが使われなくなっていることを発見。大分と古いノートPCですがサーバ用途なら問題ないかもしれないと思い、自宅サーバで使うことにしました。
## 自宅サーバの良いところ。悪いところ。
良いところ・・・

   1. 自由に構築・変更できる。
   2. 電気代以外の課金はない。回線は既存利用。
   3. 今後、家庭内でIot関係を始めてみる時のサーバにしてみる。
   4. セキュリティを注意すれば外部ネットワークからでも自宅サーバを使用できる。
   5. PythonやDBやWebサイトもいじってみたいので自由にできる。

悪いところ・・・
    1. サーバ構築を自分で全て行わないといけない。
    2. 電気代が掛かる。(ノートPCの待機状態だと何十Whもかからないとは思うが)
    3. セキュリティ対策を実施する必要がある。

## 自宅サーバをノートPCで構築する
・ノートPCでサーバを構築するとバッテリーが正常なら多少の停電対策になる。
　最近は停電があまり発生していないので気にする事も少なくなりましたけど念の為。
・ノートPCが省電力設計である。(ただし、古いノートPCでは関係ないかもしれない)
また、この手の情報は既に多く語られているのでこの後の詳細は、私が参考にしたサイトをリンクいたします。(私の構築時の備忘録になりますのでご了承ください。)
構築時の手順などで参考にしていただければと思います。
また、私の間違いや設定の不備などにお気づき頂かれた際は、コメントいただけると幸いです。
### 使用するノートPCについて
FMV BIBLO NF/D50 2009年製
　CPU:Core 2 Duo P8700 2.53GHz/2コア
　元windows Vista を Windows10にして使用。
　HDDをSSD128Gbyteに変更済み。
　メモリー ４Mbyte
　DVDドライブ＋LANポート1個＋Wifi付
### サーバ構築前準備
　インストールするLinuxは Ubuntu18.04 Desktop版としました。
ほかにもCentOSの選択肢はありますが、日ごろ業務で使用するので違うものがいいなぁとおもったのとノートPCにはUbuntuが良かったとの昔の記憶から選定した。
　ノートPCは子供が使用していたデータを新しいノートPCへ移行後削除してもらっています。

#### Windowsの不要ファイルの削除
　ノートPCのCドライブは 約100Gbyte の容量があり、windows10ともろもろのデータが残っていた。空き領域は約60Gbyte程度。
Windows自体は削除したくないので(後日動作不良等で再びwindows10のインストールをインストールするのも嫌なので)、まず不要なファイルを削除します。
　方法はCドライブをプロパティで「ディスクのクリーンアップ」を実行し不要ファイルを削除します。1GByte程度ですがファイルが削除されました。

#### インストールメディアの取得とDVDの作成
　Ubuntu18.04はUbuntu公式サイトからダウンロードします。
　（ここから https://jp.ubuntu.com/download ）
　（最新版は 20.04版ですが、あえて一つ前のLTSを選択します。＝安全第一）
　（新しい機能を試したい場合は自分のPCで仮想環境上で試したいと思います。）
　（今更なので詳細の説明は省きます。）
 Windows10上でISOをダウンロード後、ISOのDVDへの焼き付けはエクスプローラ標準機能でできました。（以前の様に専用アプリをダウンロードすることもなくなりました。）
ダウンロードしたISOを削除し、windowsをシャットダウンします。
　USBにブートメディアを作成する方法もあるのですが、肝心のUSBが手元になかったので今回は見送りました。

#### Ubuntuのインストール領域の確保
 DVDからPCが軌道するようにBIOS設定を変更する。
 FMVの場合は、電源ON後「F2」を連打するとBIOSモードにて起動します。その後の操作はメーカーマニュアルを確認してください。

 再起動しDVDから起動すると、インストールするかLiveDVDを使用するかの選択になるので、今回は「LiveDVD」をクリックして起動終了するのを待ちます。（5分ぐらいはかかります）

 Gpartを起動してwindows10の領域(約110Gbyte)のNTFSのサイズを50Gbyteに縮小します。
DISK領域の縮小は場合によっては失敗しますので正常に終了することを待ちます。
正常に終了したとのメッセージが出た後は、一旦Ubuntuを終了しWindowsを起動します。
　正常にWindowsが起動しログインできることを確認しする。
問題なければ、Windowsを終了し再びDVDから起動します。

#### Ubuntuのインストール
　DVDを起動すると再び、インストールするかLiveDVDを使用するかの選択になるので、今回はインストールを選択する。インストールの中の選択はデフォルトで進めます。
詳細は既に多くのサイトで掲載されているので参考までに確認しておきます。
インストール後、Ubuntu18.04で起動し、初期作成ユーザーでログインできることを確認します。

### Ubuntu Desktop の設定を変更する。
問題なくOSのインストールが終了したので簡単な設定をして、仮サーバとして使える状態に変更します。
#### ネットワークの設定
　IPアドレスは家庭のルータによって変わるので、ブラウザでルータの管理画面に接続して確認をしておきます。

　Ubuntu Desktopインストール時はネットワークの設定をWifiでSSIDとパスワードを入力していました。
　このままでは、サーバのIPアドレスが固定されていないため、停電やルーター再起動の時にIPアドレスが変わってしまうことがあります。
　WifiのIPアドレスは「設定」から変更し、自動で取得から、手動設定にします。
　LANポートも同様に自動で取得から、手動設定にします。
　IPv6についてはそのままにしておきます。(何時か触る)ことでしょう）

#### Vimのインストール
　私は設定変更するのに使用するエディタはvimを使用します。
以下のコマンドでvimをインストールしておきます。

    # apt install vim 

#### 液晶ディスプレイを閉じるとサスペンドする。
　Ubuntu DesktopをインストールしたノートPCでは、液晶ディスプレイを閉じるとOSがサスペンド状態に移行する設定になっている。
　通常ウィンドウの「設定」画面からは変更できない設定になっている様で以下のサイトを参考にサスペンドしない設定に変更した。
参考：[【Ubuntu 20.04/18.04 LTS Server】ノートPCで蓋を閉じてもサスペンドを防止](https://www.yokoweb.net/2018/05/11/ubuntu18-notepc-suspend-ignore/)
操作概要：
　/etc/systemd/logind.conf を編集します。
>　　#HandleLidSwitch=suspend　の行をコピーしてその下に貼り付けし
>　　HandleLidSwitch=ignore　　に変更します。

　サービスを再起動します。

    # systemctl restart systemd-logind
実際に液晶ディスプレイを閉じサスペンドしないことを確認する。(その間食事休憩)

#### sshの設定をする。(その1)
　windowsの端末からログインする為にssh環境の設定をします。
1回目は設定変更用に接続するためにログイン認証はパスワードにします。
外部から接続して使用する時は ssh鍵認証を設定してより厳重に設定します。

sshのインストールは

    # apt -y install openssh-server 
Ubuntu の OpenSSH サーバーはデフォルトでパスワード認証方式でのログインは可能ですが、rootユーザーはパスワードでのログインは禁止になっています。ここでは更にsshでrootユーザがログインできないように、sshのログイン設定を変更します。

    # vi /etc/ssh/sshd_config
    # 32行 PermitRootLogin prohibit-password を no に変更
    PermitRootLogin no
sshのサービスを再起動する。

    # systemctl restart ssh 
windows10 バージョン1803以降は sshクライアントが存在するので、コマンドプロンプトを起動する。

    C:\******> ssh ユーザ名@サーバーのIPアドレス
    ユーザー名@サーバーのIPアドレス's password:  
 
と表示されて、パスワードを入力するとログインできました。

#### ネットワーク用コマンドをインストールする
　Ubuntu18.04 Desktop版では net-tool系コマンド（ifconfig や netstat など）のコマンドが入っていません。が、iproute2系コマンド（ip, tc, ss など）は使えます。
自分がnet-tool系コマンドに慣れているので追加でインストールします。

    # apt install net-tools
尚、ネットワークコマンドについては以下を参考にしました。
[net-tools は使われなくなり iproute2 が標準的になるかも](https://qiita.com/miyu/items/0cac69b6810dbbc56a9b)

#### ここまでが自宅内用サーバの設定です。
　自宅内のみの使用については、上記設定をすればまずは使用可能になったと思う。
今後は不足分のパッケージを必要に応じてインストールすることで色々と使える状態。
　ここまでの経過時間としては、ノートPCを準備して自宅内用サーバとして設定するまでで半日程度あれば終了する。
　（構築時の記録とQiitaに投稿するのに3日掛かっていることが大きな問題でした。）

## 今後の予定
　自宅外から使用するにはセキュリティがあまりにも設定されていないので以下を予定
　　・iptablesの設定
　　・できるならIDSも設定したい。
　　・sshの鍵認証設定
　　・自宅ルータのDMZ設定
　　・外部ネットワークから自宅サーバにアクセス
　　・Webサーバの設定

上記ができ次第順次更新していきます。