IndigoのUbuntuでWINEを動かすまで。

# 目標
Windows向けのアプリをサーバーで常時起動させておきたい。でも、Windowsサーバーは比較的高いから、Linuxサーバーを作りたい。そんな、あなたへ。

とっても安いVPIである[Indigo](https://web.arena.ne.jp/indigo/)を使ってWindowsアプリ（本稿ではSteam）を、起動させておくサーバーを作ります。

**注：一応、ないとは思いますが、この記事を参考にしてなにか問題がおきたとしても自己責任でお願いします。**

# 環境等々
- ホスト：Ubuntu20.04
- サーバ：IndigoのUbuntu20.04
- SSHに使うアプリ：Remmina

# [Indigo](https://web.arena.ne.jp/indigo/)でサーバーを立てる

## Indigoへログイン
Indigoでの登録、契約、等々は省きます。それらをおえてコントロールパネルにログインし、Indigoを開いてください。するとこんな画面になると思います。

![Screenshot from 2021-07-04 08-39-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/cd05cb4b-1474-18a9-de63-96fdd5ef9130.png)

もちろん、みなさんの場合では、ここに出されている数字は全部0になっていると思います。

## SSHキーの作成

後に作成するサーバへ、公開鍵暗号を用いてSSHでログインできるよう、Indigoに公開鍵を登録します。

近年では、鍵の種類に楕円曲線暗号を利用することが推奨されてますが、Indigoでは楕円曲線暗号だと拒否されますので、**初めは**RSAを使います。

RSAの鍵は次のように作成します。パスフレーズを求められるので適宜設定してください。

```bash
ssh-keygen -t rsa -f key-name-1
```

これで「key-name-1」と「key-name-1.pub」の２つのファイルが現在いるフォルダに作成されます。前者が秘密鍵で、後者が公開鍵です。秘密鍵はなくしたり流出させないように慎重に管理しましょう。

では、戻りまして、Indigoです。左のメニューから、「インスタンスの管理 -> SSH鍵」を開きます。こののページのインポートから公開鍵を登録します。

![Screenshot from 2021-07-04 08-51-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/0bec7b00-9a4d-035e-c55b-a2ce64334478.png)

インポートのボタンを押すと、公開鍵を入力するための入力ボックスが現れますので、そこに作成した公開鍵の内容を書き込みます。書き込み方は簡単。公開鍵をメモ帳で開いて内容をコピペするだけ。

実は、「SSH鍵の作成」でIndigoに鍵を作ってもらい、その秘密鍵をダウンロードしそれを用いる。ということもできます。その場合は、「SSH鍵の作成」を押してください。

## サーバの作成
サーバの作成は左メニューの「インスタンス管理 -> インスタンス」から行います。このページの「インスタンスの作成」を押して、OS（ここではUbuntu20.04）、サーバの性能、SSH鍵の選択（これは先程作ったものを使う）、インスタンス名を設定して作成して終わりです。

無事に作成できたら、次のようになっていると思います。IPアドレスはテキトウに書き換えてあります。

![Screenshot from 2021-07-04 10-10-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/4adb7aea-7778-6550-1055-2acd92794306.png)

ここで、サーバを起動する前に、スナップショットを取っておきます。スナップショットとは、全体のバックアップとか、Windowsの修復ポイントみたいなものです。なぜ、この状態でするかと言うと、[IndigoにはOSの再インストールや初期化といった機能がない](https://help.arena.ne.jp/hc/ja/articles/360044230834-%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9-VPS-%E3%81%AEOS%E3%81%AE%E5%86%8D%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%84%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%AE%E6%96%B9%E6%B3%95%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%9F%E3%81%84-Indigo-)からです。この機能は[有料](https://web.arena.ne.jp/indigo/price/)ですので計画的に使いましょう。

スナップショットは、「操作 -> アクセス」からインスタンスのページを開き、その中の「スナップショット」から行います。

![Screenshot from 2021-07-04 10-22-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/251bd1ca-e501-4a15-5b12-760be49aae70.png)

あとは、「インスタンスの起動」を押してサーバを始動させてください。

# SSH接続
「インスタンスの起動」を押したら1分ほど待ってサーバが立ち上がるのを待ちます。この間に、Remminaを入れてなければ、インストールしておきましょう。RemminaはUbuntuでSSHやリモートデスクトップ、VNC接続を行うことをサポートするアプリです。

```bash
sudo apt install remmina
```

remminaを起動したらこんな感じです。

![Screenshot from 2021-07-04 10-30-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/913e9e12-8ff0-6278-4f6b-deb1f4a83f51.png)

SSHの接続には、まず、左上にある四角にプラスがついてるボタンを押します。（New connection profile）

すると、次のようなウィンドウが現れると思います。現れましたら、Nameをわかりやすい任意のものに決め、Protocolを「SSH」に、ServerをインスタンスのIPアドレス、Usernameを「ubuntu」、AuthenticationTypeを「SSH identity file」、IdentityFileで作成した秘密鍵を指定します。

UserPasswordは空でも「ubuntu」でも大丈夫です。

![Screenshot from 2021-07-04 10-35-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/2777db0e-dcbb-1e61-dddc-a06691d2e8ed.png)

あとは「Save and Connect」を押して、SSH接続を行います。

# 最低限のセキュリティー
SSHで接続できたら、最低限のセキュリティーを施しましょう。


## ファイアーウォール
まずは、ファイアーウォールです。


```bash
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
```

これは本当に最低限の設定ですので、適宜、色々調べてより良いものにしてください。また、再起動するとこの設定は消えてしまいますので、iptables-persistentを使って永続化しましょう。

```bash
sudo apt install iptables-persistent
```

iptables-persistentをインストールするときに、設定されているファイアーウォールの情報を永続化するか聞かれるので、そこでYesを選べば永続化できます。

もし、変更を加えて改めて永続化したいときには次のコマンドを実行します。

```bash
sudo bash -c "iptables-save > /etc/iptables/rule.v4"
```

## ubuntuユーザの消去

次に、新しいユーザを作成し、そこにSSHログインできるようにします。そしてubuntuユーザは消去します。

```bash
sudo adduser ユーザ名 # ユーザの作成
sudo adduser ユーザ名 sudo # ユーザをsudoグループに入れてsudoを使えるようにする。
sudo cp -r /home/ubuntu/.ssh /home/ユーザ名 # SSHの設定をコピー

# 所有権等の変更
sudo chown -R ユーザ名:ユーザ名 /home/ユーザ名/.ssh
```

そしたら、ここでサーバでの処理から離れ（サーバからログアウトはしないでね）、SSHの鍵を再設定します。次のようにして、目の前のパソコン内に楕円曲線暗号のキーを作成してください。

```bash
ssh-keygen -t ed25519 -f key-name-2
```

作成しましたら、サーバ上で作成したユーザにログインし、`.ssh/authorized_keys`に公開鍵（ここではkey-name-2.pub）の内容を書き込みます。

```bash
su ユーザ名
echo 公開鍵の内容 > /home/ユーザ名/.ssh/authorized_keys
```

あとは「exit」と「reboot」して、サーバから抜けます。

サーバからログアウトしたら、改めてSSH接続をします。このとき、Remminaの設定を変更（作成したプロファイルを、右クリック->Edit）します。変更内容はUsernameを作成したユーザ名にし、IdentityFileを先程作成した秘密鍵にします。

もし、上手く行かずどうにもならなさそうなら、スナップショットを使って初期状態にリストアしましょう。

上手くログインできたら、最後に、ubuntuユーザの消去を行いましょう。

```bash
sudo userdel -r ubuntu
```

# Remote Desktop(RDP)をする
## 準備
デスクトップ環境が必要なので、サーバーに軽量であるLXDEをインストールし、リモートデスクトップに必要なxrdpもいれます。

```bash
sudo apt install lxde xrdp
```

lxdeのインストール中に、ログインするときに使うプログラムをどれにするか聞かれます。
![Screenshot from 2021-07-09 18-47-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/960b17ec-bff6-1e4d-f18b-b48174bf1194.png)

「gdm3」はUbuntu20.04で馴染みのあるログイン画面となり、「lightdm」だとlubuntuで見かけるものになります。

インストールが終わりましたら、Remminaを使ってリモートデスクトップをしていきます。

# Remminaのプロファイル設定
Remminaで、SSHの設定をしたときのように、「New connection profile」（左上のボタン）を押します。

そして次はRDPの設定をしていきます。

![Screenshot from 2021-07-09 19-17-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/b74de079-83cc-79c9-c50b-3e46c86e4e53.png)
![Screenshot from 2021-07-10 20-10-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/b724639d-2153-3d25-25c4-9c802283471b.png)

安全のため、RDPはSSHを通して行う方針で進めます。そのためSSH Tunnelで「Enable SSH Tunnel」を押します。

SSHに使っているポート番号を変更しているのであれば、「Same server at port 22」から「Custom」に変更し「IPアドレス:PORT番号」を入力してください。

次のようになっていたら成功です。
![Screenshot from 2021-07-09 19-24-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/52b82f03-1628-3d8b-2974-1b113d408d72.png)

このダイアログは「テキストとして、クリップボードの履歴を保存する機能があるけど使うかい？もし繊細なデータを取り扱うならリスクになるから気をつけてね。」といってるので、自分の用途に合わせてYes/Noを選択してください。


# PlayOnLinuxのインストール
LinuxではWindowsアプリをそのまま動かすことはできません。そこでWINEと呼ばれるものが使われるのですが、ここではバージョンごとにWINEを使い分けることができるPlayOnLinuxを用います。

「Byobu Terminal」や「LXTerminal」、もしくはSSH接続など、お好きな方法からターミナルを開き、次のように実行してください。

```bash
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install wine32
sudo apt install playonlinux
```

ここで注意しないといけないのは**i386を有効化して、wine32をインストールすること**です。

これなしで、すぐにplayonlinuxをインストールした場合、、、

```
[POL_Config_PrefixWrite] Message: Prefix config write: ARCH x86
[POL_Config_PrefixWrite] Message: Prefix config write: VERSION 6.11
[POL_Wine] Message: Running wine-6.11 --version (Working directory : /usr/share/playonlinux/python)
[POL_Wine] Message: Notice: PlayOnLinux deliberately disables winemenubuilder. See http://www.playonlinux.com/fr/page-26-Winemenubuilder.html
/usr/share/playonlinux/lib/wine.lib: line 564: /home/ユーザ名/.PlayOnLinux//wine/linux-x86/6.11/bin/wine: No such file or directory
[POL_Wine] Error: Wine seems to have crashed

If your program is running, just ignore this message
[POL_Wine] Message: Wine return: 127
```

と、いうエラーが頻発し、にっちもさっちもいかなくなります。ここからでも間に合うので「wine32」をいれましょう。

# Windowsアプリのインストール

さて、PlayOnLinuxを起動して、Steamをインストールして行きましょう。起動はターミナルから「playonlinux」と実行するだけです。

## Wineのインストール

起動するとこのようになってると思います。

![Screenshot from 2021-07-16 09-26-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/3be1d8b9-9431-9611-4cf5-059aa793c0b4.png)

こうなっていたら「Tools -> Manage Wine versions」で、WINEをインストールします。

![Screenshot from 2021-07-16 09-27-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/6ccc9f86-842c-bc2a-d894-0844fa8e2637.png)

バージョンによってWindowsアプリを起動できる、できない、があるためバージョンは考えて選ぶ必要があります。とりあえず、私は**x86の6.11**を選びます。

インストール方法は、「Available Wine versions」のリストからインストールしたいバージョンを選択し、ウィンドウ中心にある「＞」を押し、質問に沿って「Next」を押していきます。

## Virtual Driveの作成
PlayOnLinuxでは、WINEをバージョンごとに管理することができます。これはWINEの入ったVirtual Driveと呼ばれるものを作り、これを使い分けることで達成しています。

Virtual Driveの作成のために、「Configure」を押してください。歯車のアイコンのついているボタンです。

開きましたら、左下の「New」を押し、WineのバージョンとVirtual Drive名を決めていきます。

![Screenshot from 2021-07-16 09-55-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/1145bcb5-8ff8-bd52-b12d-dce49a11e720.png)

## Windowsアプリ（Steam）のダウンロードとインストール

Virtual Driveが作成できたら、アプリをこの中にインストールしていきます。

まずは、アプリのダウンロード。

```bash
wget -O steam-setup.exe "https://cdn.akamai.steamstatic.com/client/installer/SteamSetup.exe"
```

次にインストール。インストールでは、作成したVirtual Deviceを選択し、「Miscellaneous -> "Run a .exe file in this virtual drive"」を押します。

![Screenshot from 2021-07-20 22-02-56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/f6f13dd9-7119-21f6-d941-4f4f43cc8026.png)

そして開かれたダイアログから、実行したいインストーラー（ここではsteam-setup.exe）を選択します。

すると、普通にSteamのインストーラーが実行されますので、指示に沿って進めてください。ただし、最後の「Run Steam」からチェックは外してください。

## ショートカットの作成

インストールしたアプリのショートカットは、Virtual Driveの「General -> "Make a new shortcut from this virtual drive"」から作成します。

![Screenshot from 2021-07-20 22-26-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665043/081a784e-3ef6-1ecb-f16b-2b78b3ab99dd.png)

（先に動作確認として、Kindleを入れて様子を見たので、Kindleが写っていますが、本来は入っていません。なくても不安にならないでくださいね。）

これにて、サーバーの用意とWINEの導入は終わりです。

あまり需要のない内容と思いますが、誰かの役に立てたら幸いです。

**注意：設定からスクリーンセーバーを切っておくのが吉です。**

# おまけ；不要なアプリの消去
不要そうなアプリを消去しましょう。ここらへんは消しても（2021/10/4の段階では）問題ないです。（実体験）

```bash
sudo apt remove deluge firefox galculator mousepad pulseaudio system-config-printer xscreensaver
sudo apt autoremove
```