[備忘録]Ubuntu 20.04 LTS環境構築

# 概要

- Proxy環境下（大学・研究機関）で、Ubuntu 20.04 LTSの環境構築をしたのでメモ

# 1. Proxy設定
1. 「設定」の画面から、ネットワークのProxy設定に行く
1. httpとhttpsにプロキシのアドレスとポートを入力する

# 2. curlのProxy設定 
curlのProxyも設定しないと色々とエラーが出るので、設定する。 
```bash:curlのProxy設定 
# .bashrcを編集する
vi ~/.bashrc

# .bashrcの一番下に以下を追記
## ex) Proxy Address: xxx.xx.jp
## ex) Port No: 8080

export http_proxy=http://xxx.xx.jp:8080
export https_proxy=http://xxx.xx.jp:8080
```


# 3. ディレクトリ名を日本語→英語に変更
ディレクトリ名が日本語だと補完が効きにくく不便なので、英語名に変更した。
ダイアログが表示されるので、「Update Names」を選択する。
再起動すると「日本語に戻す？」的なダイアログが出るので、「Don't ask me this again」にチェックを入れつつ、「Keep Old Names」を選択。

```bash:ディレクトリ名を日本語→英語に変更
LANG=C xdg-user-dirs-gtk-update
```

# 4. aptのProxy設定
## 4.1. Proxy設定
```bash:aptのProxy設定
vi /etc/apt/apt.conf

# viの画面
## ex) Proxy Address: xxx.xx.jp
## ex) Port No.: 8080
Acquire::http::Proxy "http://xxx.xx.jp:8080";
Acquire::https::Proxy "http://xxx.xx.jp:8080";
```

## 4.2. aptの更新
```bash:aptの更新
sudo apt update
sudo apt upgrade
```

# 5. ドットファイル類編集

```bash:.vimrc
set number
```

```bash:.bashrc
# ファイルの一番下に追加
alias "less=less -iNM"
```

# 6. Caps-LockをControlとして使う

```bash:gnome-tweaksのインストール
sudo apt install gnome-tweaks
```
`gnome-tweaks`を使ってGUI上から設定する  
そもそも、なんであんなにCaps-Lockが大きいのか理解に苦しむ



# 7. Dockerのinstall
```
# aptからのinstall（簡単）
sudo apt install docker.io

# こっちのほうが最新版が入る（かも）
curl https://get.docker.com | sh

sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
```

# 8. nvidia-docker
```bash:cuda-driversパッケージをinstall
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda-repo-ubuntu2004-11-2-local_11.2.1-460.32.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-2-local_11.2.1-460.32.03-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-2-local/7fa2af80.pub
sudo apt-get update
sudo apt-get --no-install-recommends install cuda-drivers
```

```bash:GPUの認識確認
nvidia-smi
```

```bash:NVIDIA&#x20;Container&#x20;Toolkit（nvidia-docker2）をinstall
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get --no-install-recommends install nvidia-docker2
sudo systemctl restart docker
```

# 9. Nextflowのinstall

```bash:Nextflowのinstall
# Java Runtime Environment (JRE) install
sudo apt install default-jre

# Java Development Kit (JDK) install
sudo apt install default-dk

# javaのバージョン確認
java -version

# Nextflowのinstall
curl -s https://get.nextflow.io | bash
sudo mv nextflow /usr/local/bin/
```
# 10. 22番ポートのアクセス制限をかいくぐってgithubにアクセスするための設定
プロキシアドレスがhttp://gw.xxx.xxx.xx.jp:8080 の場合↓
```zsh:.ssh/config
Host github.com
  User git
  Hostname ssh.github.com
  Port 443
  IdentityFile ~/.ssh/id_rsa
  UserKeychain yes
  ProxyCommand ncat --proxy-type http --proxy gw.xxx.xxx.xx.jp:8080 %h %p
  #WSLなど、windowsから使用している場合はこちら↓
  #ProxyCommand nc -X connect -x gw.xxx.xxx.xx.jp:8080 %h %p

```
# 11. Rstudio server

```zsh: GPUサーバ上
# Rstudio serverダウンロード & インストール
sudo apt install gdebi-core
wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2022.07.1-554-amd64.deb
sudo gdebi rstudio-server-2022.07.1-554-amd64.deb
```

```zsh: 
# Server立ち上げ
sudo systemctl start rstudio-server

# Server終了時は以下のコマンド
sudo systemctl stop rstudio-server
```

# 12. 踏み台サーバを使った多段ssh設定 
## 12.1. 踏み台サーバに公開鍵登録 
```zsh:
# 公開鍵作成
ssh-keygen -t ed25519 -f ~/.ssh/your_sshkey

# 公開鍵登録 
# ex) 踏み台サーバのアドレスが172.xx.xx.xxxの場合
ssh-copy-id -i ~/.ssh/your_sshkey your_user_name@172.xx.xx.xxx
```
## 12.2. ~/.ssh/config編集
```zsh:.ssh/config
# 環境によってはUseKeycahinが使えないのでコメントアウトしている
# 必要な箇所を適宜変更すること 
Host fumidai_server
  User your_user_name
  AddKeysToAgent yes
  IdentityFile ~/.ssh/your_sshkey
  #UseKeychain yes
  Hostname 172.xx.xx.xxx
  ForwardAgent yes

Host mokuteki_server
  User your_user_name
  AddKeysToAgent yes
  IdentityFile ~/.ssh/your_sshkey
  #UseKeychain yes
  Hostname your_host_name
  ProxyCommand ssh -CW %h:%p fumidai_server
```
## 12.3. 接続確認 
```zsh:
ssh mokuteki_server
```