Ubuntu 20.04 Desktop setup

# 本記事の概要
自宅のマシンにUbuntu を導入した際の環境構築手順を記載しています。
今後は必要なアプリケーションはDockerコンテナを立てて行く予定なので、パッケージはそんなに入れていません。
といっても、基本的にはできる方々が公開してくださった手順通りに実施しているだけですが、自分が躓いた（調べた結果に実行した）ことを記載したので、誰かの役に立てれば幸いです。
各手順ごとに「参考サイト」→「実施作業」の順番で記載しています。

# インストール・更新パッケージ
## インストール時の参考サイト
[Ubuntu 20.04 LTSインストールガイド【スクリーンショットつき解説】 ](https://linuxfan.info/ubuntu-20-04-install-guide)

## 実施作業
Ubuntu 20.04 LTS Desktop をインストール。
上記参考サイトの 3. ライブUSBでインストーラを起動する ～ 11. 初期設定 を実施。

# 初期設定
## vi の設定
デフォルト状態だと矢印キーを押すとABCDと出ることがあるため、vi コマンドの設定を実施。
### 参考サイト

- [viエディタの調子がおかしい](https://sites.google.com/site/sakuravpsdebian/vieditano-diao-zigaokashii)
- [【備忘録】ラズパイでviしたら方向キーやバックスペースがおかしい](https://gametech.vatchlog.com/2019/02/07/raspi-vim/)
- [viコマンドの初期設定](http://atomiyama.com/douji/page/setting-of-vim-1/)
- [vi エディタ](http://www14.plala.or.jp/campus-note/vine_linux/operation/vi.html#:~:text=%E2%96%A0,-vi%20%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%81%AE&text=vi%EF%BC%88vim%EF%BC%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB,%2Fvimrc%E3%80%8D%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%BE%E3%81%99%E3%80%82) 内の vi エディタのカスタマイズ

### 実施作業
最初はホームディレクトリ以下に .vimrc を作り、設定したが、/etc 以下などホームディレクトリ以外のファイルを編集する際にその設定が反映されない現象が起きたため、vim のインストール、および .vimrc がない場合に読み込まれる「/etc/vim/vimrc」を編集。

```terminal:terminal
$ sudo apt install vim # vim インストール
$ sudo cp /etc/vim/vimrc /etc/vim/vimrc_20210306.bak # vimrc のバックアップ
$ sudo vi /etc/vim/vimrc 
```
最終行に以下を追記。

```
"コマンドを画面の最下行に表示する。
set showcmd
"閉じ括弧が入力されたとき、対応する開き括弧にわずかの間ジャンプする。
set showmatch
"検索時、大文字／小文字を区別しない。
set ignorecase
"検索パターンに大文字が含まれている場合は区別して検索する。
set smartcase
"インクリメンタルサーチを行う
set incsearch
"ファイルの保存をしていなくても、べつのファイルを開けるようにする
set hidden
"マウスの入力を受け付ける。
set mouse=a
"行番号を表示
set number
"オートインデント有効
set autoindent
"ターミナルウィンドウにタイトル表示
set title
"文脈によって解釈が異なる全角文字の幅を、2に固定する
set ambiwidth=double
"Tab幅を4文字にする
set tabstop=4
"Tabを半角スペースで挿入する
set expandtab
"vimが自動で生成する（読み込み時など）tab幅をスペース4つ文に>する
set shiftwidth=4
"改行時に自動でインデントを設定する
set smartindent
"空白文字の可視化
set list
"コマンドラインの履歴を50件保存する
set history=50
"文字のないところにカーソル移動できるようにする
set virtualedit=block
"カーソルの回り込みができるようになる
set whichwrap=b,s,[,],<,>
"バックスペースを、空白、行末、行頭でも使えるようにする
set backspace=indent,eol,start
"補完リストの表示
set wildmenu
"上記TABリストの補完動作
set wildmode=longest,full
```
## 日本語の表示に関する3つの問題を回避する
私はデスクトップ環境は日本語を使用しますが、もともとバグがあるようなのでそれを回避します。
### 参考サイト
[日本語の表示に関する3つの問題を回避する](https://qiita.com/outou_hakutou/items/ce06cb3c8c355d5fd87c#%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B3%E3%81%A4%E3%81%AE%E5%95%8F%E9%A1%8C%E3%82%92%E5%9B%9E%E9%81%BF%E3%81%99%E3%82%8B)
### 実施事項

```terminal:terminal
$ wget https://launchpad.net/~sicklylife/+archive/ubuntu/fonts-ja/+files/fonts-nt-ui-jp_2_all.deb
$ sudo apt install ./fonts-nt-ui-jp_2_all.deb
$ rm fonts-nt-ui-jp_2_all.deb
```

## Dock にゴミ箱を表示する
デスクトップにゴミ箱があって欲しいので表示します。
### 参考サイト
[Dock にゴミ箱を表示する](https://qiita.com/outou_hakutou/items/ce06cb3c8c355d5fd87c#dock-%E3%81%AB%E3%82%B4%E3%83%9F%E7%AE%B1%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B)
### 実施事項

```terminal:terminal
$ gsettings set org.gnome.shell.extensions.dash-to-dock show-trash true 
```

## ディレクトリの英語化
環境は日本語がいいですが、ディレクトリが日本語だとCUIで操作しづらいので、ディレクトリを英語化します。
```terminal:terminal
$ LANG=C xdg-user-dirs-gtk-update
```
## HDDのマウント
Ubuntu をインストールしたPCはM.2 SSD（256GB）とHDD（1TB）が内蔵されており、Ubuntu はSSDの方にインストールした。
インストール直後はHDDがマウントできていなかったため、HDDをマウントする。
### 参考サイト
[HDDをフォーマットする - Ubuntu 20.04編](https://sicklylife.jp/ubuntu/2004/hdd_format.html)
### 実施内容
参考サイトの[パーティションを作成してフォーマットする](https://sicklylife.jp/ubuntu/2004/hdd_format.html#format)、[パーティションをシステム起動時にマウントする](https://sicklylife.jp/ubuntu/2004/hdd_format.html#auto-mount)を順番に実施。

# リモート接続設定
メインPCはWindows なので、そこからリモート接続できる環境を整える。

## wifi のipアドレス固定
家庭の事情により、ubuntu PC が有線で接続できないため、無線でIPを固定化する。
### 参考サイト
[Ubuntu 20.04 LTSで固定IPアドレスを設定する方法【デスクトップ編】](https://linuxfan.info/ubuntu-2004-desktop-static-ip-address) 

### 実施作業
上記参考サイトの 無線（Wi-Fi）でネットワーク接続している場合 を実施。

## ssh 接続設定
ssh 接続するための環境設定。
セキュリティを高めるために、ポート番号の変更も行う。
### 参考サイト
[Ubuntu 20.04 LTS に SSH Server（openssh-server）を導入しよう](https://kuroreport.com/2020/05/15/ubuntu-ssh-install/)
### 実施事項
openssh-server のインストール。

```terminal:terminal
$ sudo apt install openssh-server
```

セキュリティを高めるため、デフォルトのポート22から任意のポートに変更。
49152-65535の間で任意のポート番号を割り当て。

```terminal:terminal
$ sudo vi /etc/ssh/sshd_config

#       $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
︙
#Port 22 # ココの # を取り、任意のポート番号を設定
︙
#PermitRootLogin prohibit-password
PermitRootLogin no # 追記
#StrictModes yes
```
## リモートデスクトップ接続設定
基本的にはssh 接続しCUI 操作をする予定だが、GUIで実施したいことも多い。
（というか、まだCUI に精通していないってだけです。。。）
そのため、リモートデスクトップできる環境を整える。
### 参考サイト
- [Windows → Ubuntuにリモート接続](https://www.ted027.com/post/windows-ubuntu-remote/#windows-ubuntu%E3%81%AB%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E6%8E%A5%E7%B6%9A)
- [Windows10からのRDP接続（ubuntu20.04 LTS）](https://qiita.com/hitobb/items/b44e87e04133dc845265)

### 実施事項
xrdp および lxde のインストール

```terminal:terminal
$ sudo apt install xrdp lxde
# .xsessionファイルを作成
$ echo lxsession -s LXDE -e LXDE > ~/.xsession
# 再起動後にも起動するよう設定
$ sudo systemctl enable xrdp
# XRDP接続ポート変更
$ sudo vi /etc/xrdp/xrdp.ini
```
ポート番号を3389から別のポートに変更。

```terminal:terminal
; ports to listen on, number alone means listen on all interfaces
︙
;   port=tcp6://{<any ipv6 format addr>}:3389   {FC00:0:0:0:0:0:0:1}:3389
;   port=vsock://<cid>:<port>
port=3389 ←ここの数値を任意のポートに変更

; 'port' above should be connected to with vsock instead of tcp
︙
```
xrdp 再起動

```terminal:terminal
service xrdp restart
```
リモートディスクトップ接続する場合は、以下のルールに従ってIPアドレスを指定。

- IPアドレス:変更後のポート番号
- 例えば、192.168.2.1に対するRDPの接続ポートを13389に変更した場合は、以下を指定
    - 192.168.2.1:13389

### 注意事項
Ubuntu PC上で作業しているときにリモートデスクトップでUbuntu にログインすると、Ubuntu PC上で音がでなくなる。
再起動すれば解決するが、起動中に解決する術は今のところ不明。





## ファイアウォールの設定
VPS（Virtual Private Server：仮想専用サーバー）ではないが、念の為ファイアウォールを設定。
（外部公開しない場合は、ここまで実施する必要はないと思います）
### 参考サイト
- [Ubuntu Server 20.04LTSのファイアーウォールを設定しよう](https://lifework-blog.com/ubuntu-server-firewall/)

### 実施事項
ファイアウォールの設定とssh接続/リモートデスクトップ接続の許可。

```terminal:terminal
$ sudo ufw status
状態: 非アクティブ
$ sudo ufw default deny
# ssh 接続できるように22番ポートを開放
$ sudo ufw allow 22/tcp
$ sudo ufw enable
$ sudo ufw status
状態: アクティブ
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6) 
```





# 各アプリのインストール
## Google chrome のインストール
### 参考サイト
[Google Chromeインストール](https://ohmyenter.com/things-to-do-after-ubuntu-20-04-installation/#Google_Chrome%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
### 実施事項
公式から .deb ファイルをダウンロード。
ダウンロードしたディレクトリに移動し、下記コマンド実行。

```terminal:terminal
$ cd Downloads/
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
$ rm google-chrome-stable_current_amd64.deb
```

## docker インストール
### 参考サイト
[Ubuntu 20.04 で docker をインストールする](https://qiita.com/m-tmatma/items/06eb40514306e09142c4)

### 実施事項

```terminal:terminal
$ sudo apt install -y docker.io docker-compose
# sudoなしで実行できるようにdocker グループにユーザを追加
$ sudo usermod -a -G docker $USER # $USER には自分のユーザ名
$ sudo reboot # 上記設定を反映させるため再起動
$ docker run hello-world # Hello from Docker! が表示されることを確認
```
## fish インストール
fish が便利だというので、入れてみる。
設定は terminator というアプリでするといいらしいので、それも入れる。
### 参考サイト
[fishシェルのインストール](https://ohmyenter.com/things-to-do-after-ubuntu-20-04-installation/#fish%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
### 実施事項

```terminal:terminal
$ sudo apt install fish
$ sudo apt install terminator
```
ターミナル内で右クリックして[設定]。

名前無しプロファイルの色で背景（transparent background）を適度な透過に。
名前無しプロファイルのコマンドで「SHELL の代わりにカスタム・コマンドを実行する」にチェックを入れて「/usr/bin/fish」を入力。