Ubuntuのサーバーを作成したあとやるべきこと


以下は、Ubuntuサーバーを立ち上げて「さあ、これから使うぞ！」となったときに、技術者的にもエンジニア的にも（？）まずはやっておきたい初期設定＋快適化のまとめです。  
ちょっとしたヒューモアを交えつつ、しっかり押さえるところは押さえていきます。  
「引っ越ししたらまず冷蔵庫にビール入れておきたい派」の人も、「歯ブラシはもちろん、Wi-Fiと布団があればOKだろ」という人も、ぜひ参考にどうぞ

---

## 1. 新しいユーザーを作成する
> **ゴール**: `root` でログインせずに安全＆快適に作業できるようにする

```shell
adduser user_name
```
- `user_name` はあなた好みの名前に置き換えてください。  
- ここで要注意なのが `adduser` と `useradd` の違い。  
  - `adduser` → ユーザー作成ウィザード的なもので、いろいろお膳立てしてくれる（ホームディレクトリ作成など）。  
  - `useradd` → 最低限の設定しかやってくれない上級向けコマンド。使い方を誤ると「ん？ホームディレクトリは？」みたいなことになりがち。  
- パスワードやフルネームの入力画面が出ます。入力ミスに注意しながら設定しましょう。

---

## 2. 新しいユーザーに `sudo` 権限を付与する
> **ゴール**: 新しいユーザーに「偉い権限（管理者権限）」を授ける

```shell
gpasswd -a user_name sudo
```
- 1で作った `user_name` を指定しましょう。これで晴れてあなたのユーザーは“偉い人”仲間入り。  
- `sudo` なしで何かしようとしたら「そのコマンド実行するには偉くならないとダメだよ」と怒られがちです。ここで堂々と偉くなっておきましょう。

---

## 3. SSH のパスワード認証を許可する (必要なら)
> **ゴール**: パスワードでSSHログイン可能にする  
> **注意**: 本番運用なら鍵認証がおすすめだけど、学習・実験環境ならパスワードでもアリ

```shell
sudo vim /etc/ssh/sshd_config
```
- 設定ファイルの中で、`PasswordAuthentication no` を `yes` に変更します。  
- 保存したら後述の“sshd 再起動”をお忘れなく。  
- パスワード認証は鍵認証より安全性が落ちるので、**強いパスワード** を設定するか、もしくは開発環境で試すだけにしておくのがおすすめです。

---

## 4. SSHセッションが自動的に切断されないように設定
> **ゴール**: 「あ、ちょっとコーヒー取ってくるわ→戻ってきたらセッション切断…」を回避する

```shell
sudo vim /etc/ssh/sshd_config
```
- `ClientAliveInterval 120`  
- `ClientAliveCountMax 3`  

この2行を入れる（あるいは既存の設定値を編集する）ことで、SSH接続が「何も操作してない…ゴニョゴニョ…」と見なされる時間をちょっと緩めます。  
120秒ごとに「まだ生きてる？」とクライアントに ping を飛ばし、それを3回まで繰り返すイメージ。結果として最大約6分は放置しても大丈夫になります。  

「もうちょい伸ばしたい」「逆に厳しくしたい」という場合は値を増減させて調整を。

---

## 5. シェルを `bash` に変更する
> **ゴール**: `sh` から抜け出して、みんな大好き（？） `bash` や他のシェルに切り替える

```shell
chsh -s /bin/bash user_name
```
- なぜか Ubuntu でログインしてみたら `sh` だった…というケースがあるので、慣れ親しんだ `bash` に変更します。  
- もちろん `zsh` や `fish` を使う選択肢もあり。「俺は Oh My Zsh とか oh-my-fish でド派手にいきたいぜ！」という人はそちらをどうぞ。

---

## 6. `sshd` を再起動する
> **ゴール**: SSH の設定変更を有効にする  
> **注意**: このステップを忘れると設定変更が反映されません

```shell
sudo systemctl restart sshd
```
- 「変更したはずなのにログイン設定が全然反映されてなくて、もう一度設定ファイルを見直す羽目に…」という悲劇を回避するためにもお忘れなく。

---

## 7. 現在のグローバルIPをチェック
> **ゴール**: 「俺のサーバー、今どこから見えるのか？」を知る

```shell
curl inet-ip.info
```
- ぽん、と自分のグローバルIPアドレスが表示されます。  
- 「接続先は合ってるのか？」「やっぱり家庭のWi-Fi経由か？」などの確認に便利。  
- 他にも `curl ifconfig.me` や `curl icanhazip.com` など似たようなサービスは多々あります。

---

## 8. `apt` のアップグレードをしておく
> **ゴール**: システムを最新に保つ＆セキュリティホールなどの早期修正

```shell
sudo apt update
sudo apt upgrade
```
- 基本的には `sudo apt update && sudo apt upgrade` とセットで走らせるのが定番。  
- 長らく放置されたサーバーだとものすごい数のアップデートが溜まってるかもしれません。  
- 依存関係の問題などでエラーが出た場合は焦らず一つひとつ解決していきましょう。`sudo apt --fix-broken install` や `apt dist-upgrade` が必要になるケースも。

---

## おまけ: 防御力を高めたいなら
> **ゴール**: セキュリティをより盤石にしたい

- **UFW（Uncomplicated Firewall）** を使って簡単にポート制限をかける。  
  ```shell
  sudo ufw allow ssh
  sudo ufw enable
  ```
  - これだけでも大分安心感が増します。  
- **Fail2Ban** を導入して、パスワードクラックを試みる怪しいIPからのアクセスをブロックする。  
  ```shell
  sudo apt install fail2ban
  ```
  - 設定は `/etc/fail2ban/jail.conf` で行えます。

---

## まとめ
ここまでの設定を済ませれば、最低限の“歯ブラシ＆トイレットペーパー＆ネット環境”は整いました。  
あとは必要な開発ツールを入れて、自分好みの設定でガンガンカスタマイズしちゃってください。  
Ubuntuサーバーライフ、どうぞ存分にお楽しみを！

- **最後にひとこと**: コマンド一発の打ち間違いは「床にコーヒーをこぼした」どころか「キーボードにビールをぶちまけた」並みの惨事を引き起こすこともあります。落ち着いて実行あるのみ！  

サーバーいじりは、やればやるほどディレクトリのどこかから新たな発見があるもの。がんばっていきましょう。