VultrとAnyDeskによるリモートデスクトップ環境でWindowsアプリを動かす(1)

#おことわり
VPS(Virtual Private Server)を使用する目的は様々だと思います。この記事は、筆者のやりたいことに特化した方法を、後から個人的に再現できるように記録したものです。この記事を真似して実行した結果、生じた障害、損失については、筆者は一切の責任を負いません。

#やりたいこと
* WindowsアプリであるMetaTrader(MT4, MT5)をVPS上で動かし、そのアプリ上で自動売買ソフト(EA)を動かす。
* VPSは、EAが取引を行う可能性のある期間（週５日以下）だけ利用できればよい。
* EAの動作状況は、必要に応じてWindowsPC、スマホなどからモニターできるようにする。
* コスパを重視する。

#Vultrを選んだわけ
VPSをやっている業者は国内外にたくさんあります。Vultrはアメリカの業者でウェブサイトとか英語なのですが、慣れるとシンプルでいいです。

ウェブサイトはこちら。https://www.vultr.com/

Vultrを選んだ決め手は以下の通り、個人的な理由です。

* VPSが週５日だけ利用でき、使わないときは課金されない。（ただし、VPSを毎週削除しなくてはいけませんが。）
* VPSは削除しても、スナップショットが無料で作れるので、元の環境にすぐに戻せる。
* 支払いはクレジットカード、PayPalなどに対応していて、米ドル建てである。（PayPalに米ドル口座をもっているので、為替の手数料がかからない。）
* 月４ドルくらいでやりたいことができてしまう。

#VultrでVPSを作る
Vultrで具体的にVPSを作る手順です。

##Create account
多くのWebサービスと同様に、まずはアカウントを作ります。最初にメールアドレスとパスワードを送信すると、アカウント作成の手順がメールで送られてくる、というよくあるやつです。あとは個人情報として氏名を登録するくらいで、割とお手軽にアカウント作成できます。

##Billing
アカウント作成してログインすると、Billingというメニューから、VPS使用料をデポジットします。クレジットカードやPayPalが使えます。最低\$10のデポジットが必要で、無料でお試しができないのが難点です。\$10寄付してもいい人しかお勧めできません。

##Deploy New Server
どのページにも右上に「＋」のアイコンがあり、それをクリックすると、新しいサーバーを作成するメニューに移ります。

###Choose Server
サーバーのモデルを選びます。いくつかありますが、エントリーの場合、Cloud Computeか、High Frequency のどちらかでしょう。

ログインしたページだと、サーバーの比較ができないので、あらかじめログインする前のウェブサイトでサーバーのパフォーマンスを確認しておくとよいでしょう。
https://www.vultr.com/products/cloud-compute/
これを見ると、Cloud Computeと、High Frequencyとで、1CPU メモリ1024MBという同じエントリーモデルがあります。
![cloud.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131169/441dfb0e-4ad0-6477-578b-2662442064ca.png)
![high.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131169/8fb358e3-e328-3d11-9aa4-62e33d44d823.png)
上がCloud Computeで、下がHigh Frequencyです。使用料は、月\$5と\$6で、High Frequencyの方がちょっと高いのですが、パフォーマンスは倍くらい違います。またSSDの容量も若干多いので、個人的にはHigh Frequencyの方をお勧めします。

###Server Location
サーバーの場所を選びます。MT4, MT5で自動売買させるのであれば、業者のサーバーに近い方がいいでしょうが、特になければ、Tokyoを選べばよいでしょう。

###Server Type
OSの種類を選択します。Windowsも選べますが、コスパが悪いのでLinuxのなかから選びます。種類は好みの問題なので、ここでは、個人的に慣れているUbuntu 18.04を選びます。

###Server Size
サーバーサイズの種類は、最初に選んだサーバーモデルによりますが、High Frequencyの場合、３種類しかありません。SSDの容量は32GBあれば十分なので、月\$6という一番安いサイズを選びます。

###Additional Features 
その他、追加で設定可能な項目がありますが、ここでは何も指定しません。実際毎週サーバーを新規にDeployするのであれば、余計な設定は極力ない方が都合がいいからです。

これで「Deploy Now」のボタンをクリックすると、数分でサーバーが作成されます。

#サーバーの初期設定
作成されたサーバーは、Productのメニューに表示されます。ここで、Cloud Instanceをクリックすると、Server Informationとしてサーバーを管理する画面となります。右上に次のようなアイコンが表示されます。
![servericon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131169/5fd50e21-406c-5246-a08e-fc53123c9267.png)
##ログイン
とりあえず、一番左のアイコン(View Console)をクリックすると、コンソール画面が表示されます。「vultr login:」と表示されていればちゃんと起動しています。

ここで、username、passwordはサーバー管理画面の左下あたりに表示されているので、これを入力すればログインできます。が、初期パスワードは記号が混ざっている上に、このコンソール画面では、日本語キーボードからうまく入力できない記号があったりして、ログインできないことがあります。

その場合、このコンソールでのログインは諦めて、teratermやWindows Subsystem for Linuxからsshでログインします。

##ユーザーアカウントの作成
rootでログインするのは最初だけにして、通常の利用のために、個人のユーザーアカウントを作っておきます。例えば、「user1」というアカウントを作ってroot権限を与える場合、以下のようにします。

```
$ adduser user1
$ gpasswd -a user1 sudo
```

一旦ログアウトして、このアカウントでログインできることを確認したら、安全のため、sshではrootでログインできないようにしておきます。

```
$ sudo vi /etc/ssh/sshd_config
```
でsshdの設定ファイルを開いて

```
PermitRootLogin yes
```
を

```
PermitRootLogin no
```
に変えておきます。なお、viは、昔の人向けのエディタで、今の人だとvimとかnanoとかでしょうか。

```
$ sudo systemctl restart sshd
```
で、sshdを再起動すると、sshではrootでログインできなくなっているはずです。

##アップデート
とりあえず、最新の状態にアップデートしておきます。

```
$ sudo apt update
$ sudo apt upgrade
```

#サーバーの削除
初期設定だけして、続きの設定はまた今度ということでしたら、課金されないようにサーバーを削除しましょう。ただし、そのまま削除してしまうと、今行った設定はなくなってしまうので、スナップショットを取ってから削除します。

##Server Stop
スナップショットを取る前に、念のためにサーバーを止めておきます。先ほどのアイコンの左から２番目をクリックすると、サーバーが停止します。

##Snapshots
スナップショットは、
![menu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131169/1d99a690-8cc2-b2be-8a98-0a7df1520c77.png)
のメニューのSnapshotsから行います。

あとでわかるように「Label」に説明を書いて、「Take Snapshot」のボタンを押すとスナップショットの作成が始まります。作成時間はSSDのサイズによっても変わりますが、32GBだと10分前後です。statusがAvailableになれば、作成完了です。

##Server Destroy
スナップショットができれば、サーバーは削除しても構いません。一番右のアイコンをクリックすると、サーバーを削除することができます。ここまでの作業が１時間以内であれば、課金は\$0.01、１円程度です。

これで課金はされなくなったので、一旦休憩して、続きは次の記事で。↓

[VultrとAnyDeskによるリモートデスクトップ環境でWindowsアプリを動かす(2)](https://qiita.com/toyolab/items/13cb1d9bc53101f29b1a)