ubuntu18.04を初期セットアップする話

# 前置き

最近，Ubuntuが重くなってきました．これを機にWSL2のUbuntuに移行しようかなと思ったのですが，SSHでリモートアクセスするようなワークステーションの場合まだいいかなと思うこの頃です．

ということで，Ubuntuをクリーンインストールする際のこれだけやっておけばひとまず大丈夫かなリストをメモっておきます．

# 実行環境

- OS: Ubuntu 18.04 LTS
- GPU: RTX 2070

# 手順

1. update & upgrade
2. SSHの設定
3. ファイアウォールの設定
4. pyenvのインストール
5. CUDA ToolKit & Nvidia Driverのインストール
6. dockerのインストール

## 1. update & upgrade

おなじみですね．終わったら再起動してください．

```{shell}
sudo apt update
sudo apt upgrade -y
```

## 2. SSHの設定

手順1. OpenSSHを使うことにします．次のコマンドでインストールしてください．

```{shell}
sudo apt install openssh-server
ssh -V
```

手順2. 公開鍵暗号方式を使うので鍵の生成をしておきます．パスフレーズを聞かれますが何も入力しなくても生成できますのでお好みでどうぞ．このコマンドの結果，/home/USER/.ssh に，秘密鍵「id_rsa」と公開鍵「id_rsa.pub」が生成されます．

```{shell}
ssh-keygen -t rsa
```

手順3. クライアントマシンからサーバマシンであるUbuntuにSSHで接続するので，クライアントマシンに秘密鍵を，Ubuntuに公開鍵を置きます．Ubuntuの場合，デフォルトの設定ではauthorized_keysというファイルに公開鍵をまとめておくようです．

```{shell}
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
chmod 600 authorized_keys # 所有者にだけ読み書きを許可
```

手順4. SSHの設定ファイルを変更します．

```{shell}
Port 4649                    # 接続ポートの設定
PermitRootLogin no           # rootログインを禁止
PasswordAuthentication no    # パスワードログイン禁止
PermitEmptyPasswords no       # パスワード無しのログインを禁止
```

手順5. SSHを有効にします．

```{shell}
sudo systemctl start sshd
```

手順6. クライアントマシンからUbuntuにSSH接続できるか確認

```{shell}
ssh -p 4649 {$USER}@{ipアドレス} -i {秘密鍵ファイル:id_rsa}
```

## 3. ファイアウォールの設定

手順1. ufwをインストールします．

```{shell}
sudo apt install ufw
```

手順2. ufwでファイアウォールを設定します．このとき，SSHで接続するためのポートを開放しておきましう．

```{shell}
sudo ufw logging on # ログ取得を有効化
sudo ufw allow 80   # HTTP通信に使用するポート
sudo ufw allow 443  # HTTPS通信に使用するポート
sudo ufw allow 4649 # SSH接続に使用するポート
sudo ufw default deny # 許可したポート以外の通信を遮断
```

手順3. 最後にファイアウォールを有効にします．

```{shell}
sudo ufw enable
sudo systemctl start ufw
```
## 4. pyenvのインストール

次の手順を参考にして，実行してください．

- [ubuntu 20.04 に pyenv をインストールする話【2020/07/18更新】](https://qiita.com/neruoneru/items/1107bcdca7fa43de673d)

## 5. CUDA ToolKit & Nvidia Driverのインストール

手順1. NVIDIA Driverとの衝突をさけるため，nouveauを無効化しておきます．まずは次の手順でインストールされているかを確認．

```{shell}
lsmod | grep -i nouveau
```

手順3. 表示されたらnouveauがインストールされているので，無効化してください．

```{shell}
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
```

次の内容を書き込んでください．

```{shell}
##### nouveau
blacklist nouveau
options nouveau modeset=0
```

次のコマンドを実行し，再起動してください．

```{shell}
sudo update-initramfs -u
```

手順4. 公式リポジトリから対象のCUDA Toolkitをダウンロードします．おすすめは手順が少ないrunファイルです．公式サイトにある通り，実行してください．

- [CUDA Toolkit 10.2 Download](https://developer.nvidia.com/cuda-10.2-download-archive)


## 6. dockerのインストール

手順1. aptコマンドでインストールすれば，完了です．

```{shell}
sudo apt install docker.io -y
sudo apt install docker-compose -y
```

手順2. sudoコマンドを利用しなくても，dockerコマンドが実行できるようにします．次のコマンドを実行した後ログアウトし，再度ログインしてください．

```{shell}
sudo groupadd docker # dockerグループの作成
sudo gpasswd -a $USER docker # 現行ユーザをdockerグループに所
sudo systemctl restart docker # dockerデーモンを再起動
```

手順3. hello worldをやってみます．

```{shell}
docker pull hello-world # docker imageのダウンロード
docker run hello-world
```

# おわりに

これだけやっておけば，ひとまず安心して運用できるかと思います．参考にさせていただいたみなさま，ありがとうございました．

- SSHの設定
    - [Ubuntu server 18.04SSH](http://yamamo10.jp/yamamoto/comp/home_server/WEB_server3/ssh/index.php)
    - [【 ssh 】コマンド――リモートマシンにログインしてコマンドを実行する](https://www.atmarkit.co.jp/ait/articles/1701/26/news015.html)
    - [chmod コマンド](https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95)
- ファイアウォールの設定
    - [ufwコマンドの使い方](https://qiita.com/hana_shin/items/a630871dce209cff04f3)
    - [ufwの基本操作](https://qiita.com/RyoMa_0923/items/681f86196997bea236f0)
- CUDA ToolKit & Nvidia Driverのインストール
    - [Ubuntu 16 / 18 に GTX 1080Ti / RTX2080 の ドライバとCUDAのインストール](https://qiita.com/sasayabaku/items/2323a2c501e58c0621b6)
- dockerのインストール
    - [Dockerコマンドをsudoなしで実行する方法](https://qiita.com/DQNEO/items/da5df074c48b012152ee)
- そのほか
    - [Ubuntu 20.04 LTS デスクトップでのfcitxとMozcの設定手順](https://hnakamur.github.io/blog/2020/06/11/setup-fcitx-mozc-on-ubuntu-20.04-desktop/)
    - [rmコマンドでゴミ箱へ移動するようにする](https://qiita.com/SUZUKI_Masaya/items/3148b5f1d9fa9fdb3b51)