目標
Windows向けのアプリをサーバーで常時起動させておきたい。でも、Windowsサーバーは比較的高いから、Linuxサーバーを作りたい。そんな、あなたへ。
とっても安いVPIであるIndigoを使ってWindowsアプリ(本稿ではSteam)を、起動させておくサーバーを作ります。
注:一応、ないとは思いますが、この記事を参考にしてなにか問題がおきたとしても自己責任でお願いします。
環境等々
- ホスト:Ubuntu20.04
- サーバ:IndigoのUbuntu20.04
- SSHに使うアプリ:Remmina
Indigoでサーバーを立てる
Indigoへログイン
Indigoでの登録、契約、等々は省きます。それらをおえてコントロールパネルにログインし、Indigoを開いてください。するとこんな画面になると思います。
もちろん、みなさんの場合では、ここに出されている数字は全部0になっていると思います。
SSHキーの作成
後に作成するサーバへ、公開鍵暗号を用いてSSHでログインできるよう、Indigoに公開鍵を登録します。
近年では、鍵の種類に楕円曲線暗号を利用することが推奨されてますが、Indigoでは楕円曲線暗号だと拒否されますので、初めはRSAを使います。
RSAの鍵は次のように作成します。パスフレーズを求められるので適宜設定してください。
ssh-keygen -t rsa -f key-name-1
これで「key-name-1」と「key-name-1.pub」の2つのファイルが現在いるフォルダに作成されます。前者が秘密鍵で、後者が公開鍵です。秘密鍵はなくしたり流出させないように慎重に管理しましょう。
では、戻りまして、Indigoです。左のメニューから、「インスタンスの管理 -> SSH鍵」を開きます。こののページのインポートから公開鍵を登録します。
インポートのボタンを押すと、公開鍵を入力するための入力ボックスが現れますので、そこに作成した公開鍵の内容を書き込みます。書き込み方は簡単。公開鍵をメモ帳で開いて内容をコピペするだけ。
実は、「SSH鍵の作成」でIndigoに鍵を作ってもらい、その秘密鍵をダウンロードしそれを用いる。ということもできます。その場合は、「SSH鍵の作成」を押してください。
サーバの作成
サーバの作成は左メニューの「インスタンス管理 -> インスタンス」から行います。このページの「インスタンスの作成」を押して、OS(ここではUbuntu20.04)、サーバの性能、SSH鍵の選択(これは先程作ったものを使う)、インスタンス名を設定して作成して終わりです。
無事に作成できたら、次のようになっていると思います。IPアドレスはテキトウに書き換えてあります。
ここで、サーバを起動する前に、スナップショットを取っておきます。スナップショットとは、全体のバックアップとか、Windowsの修復ポイントみたいなものです。なぜ、この状態でするかと言うと、IndigoにはOSの再インストールや初期化といった機能がないからです。この機能は有料ですので計画的に使いましょう。
スナップショットは、「操作 -> アクセス」からインスタンスのページを開き、その中の「スナップショット」から行います。
あとは、「インスタンスの起動」を押してサーバを始動させてください。
SSH接続
「インスタンスの起動」を押したら1分ほど待ってサーバが立ち上がるのを待ちます。この間に、Remminaを入れてなければ、インストールしておきましょう。RemminaはUbuntuでSSHやリモートデスクトップ、VNC接続を行うことをサポートするアプリです。
sudo apt install remmina
remminaを起動したらこんな感じです。
SSHの接続には、まず、左上にある四角にプラスがついてるボタンを押します。(New connection profile)
すると、次のようなウィンドウが現れると思います。現れましたら、Nameをわかりやすい任意のものに決め、Protocolを「SSH」に、ServerをインスタンスのIPアドレス、Usernameを「ubuntu」、AuthenticationTypeを「SSH identity file」、IdentityFileで作成した秘密鍵を指定します。
UserPasswordは空でも「ubuntu」でも大丈夫です。
あとは「Save and Connect」を押して、SSH接続を行います。
最低限のセキュリティー
SSHで接続できたら、最低限のセキュリティーを施しましょう。
ファイアーウォール
まずは、ファイアーウォールです。
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を使って永続化しましょう。
sudo apt install iptables-persistent
iptables-persistentをインストールするときに、設定されているファイアーウォールの情報を永続化するか聞かれるので、そこでYesを選べば永続化できます。
もし、変更を加えて改めて永続化したいときには次のコマンドを実行します。
sudo bash -c "iptables-save > /etc/iptables/rule.v4"
ubuntuユーザの消去
次に、新しいユーザを作成し、そこにSSHログインできるようにします。そしてubuntuユーザは消去します。
sudo adduser ユーザ名 # ユーザの作成
sudo adduser ユーザ名 sudo # ユーザをsudoグループに入れてsudoを使えるようにする。
sudo cp -r /home/ubuntu/.ssh /home/ユーザ名 # SSHの設定をコピー
# 所有権等の変更
sudo chown -R ユーザ名:ユーザ名 /home/ユーザ名/.ssh
そしたら、ここでサーバでの処理から離れ(サーバからログアウトはしないでね)、SSHの鍵を再設定します。次のようにして、目の前のパソコン内に楕円曲線暗号のキーを作成してください。
ssh-keygen -t ed25519 -f key-name-2
作成しましたら、サーバ上で作成したユーザにログインし、.ssh/authorized_keys
に公開鍵(ここではkey-name-2.pub)の内容を書き込みます。
su ユーザ名
echo 公開鍵の内容 > /home/ユーザ名/.ssh/authorized_keys
あとは「exit」と「reboot」して、サーバから抜けます。
サーバからログアウトしたら、改めてSSH接続をします。このとき、Remminaの設定を変更(作成したプロファイルを、右クリック->Edit)します。変更内容はUsernameを作成したユーザ名にし、IdentityFileを先程作成した秘密鍵にします。
もし、上手く行かずどうにもならなさそうなら、スナップショットを使って初期状態にリストアしましょう。
上手くログインできたら、最後に、ubuntuユーザの消去を行いましょう。
sudo userdel -r ubuntu
Remote Desktop(RDP)をする
準備
デスクトップ環境が必要なので、サーバーに軽量であるLXDEをインストールし、リモートデスクトップに必要なxrdpもいれます。
sudo apt install lxde xrdp
lxdeのインストール中に、ログインするときに使うプログラムをどれにするか聞かれます。
「gdm3」はUbuntu20.04で馴染みのあるログイン画面となり、「lightdm」だとlubuntuで見かけるものになります。
インストールが終わりましたら、Remminaを使ってリモートデスクトップをしていきます。
Remminaのプロファイル設定
Remminaで、SSHの設定をしたときのように、「New connection profile」(左上のボタン)を押します。
そして次はRDPの設定をしていきます。
安全のため、RDPはSSHを通して行う方針で進めます。そのためSSH Tunnelで「Enable SSH Tunnel」を押します。
SSHに使っているポート番号を変更しているのであれば、「Same server at port 22」から「Custom」に変更し「IPアドレス:PORT番号」を入力してください。
このダイアログは「テキストとして、クリップボードの履歴を保存する機能があるけど使うかい?もし繊細なデータを取り扱うならリスクになるから気をつけてね。」といってるので、自分の用途に合わせてYes/Noを選択してください。
PlayOnLinuxのインストール
LinuxではWindowsアプリをそのまま動かすことはできません。そこでWINEと呼ばれるものが使われるのですが、ここではバージョンごとにWINEを使い分けることができるPlayOnLinuxを用います。
「Byobu Terminal」や「LXTerminal」、もしくはSSH接続など、お好きな方法からターミナルを開き、次のように実行してください。
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のインストール
起動するとこのようになってると思います。
こうなっていたら「Tools -> Manage Wine versions」で、WINEをインストールします。
バージョンによってWindowsアプリを起動できる、できない、があるためバージョンは考えて選ぶ必要があります。とりあえず、私はx86の6.11を選びます。
インストール方法は、「Available Wine versions」のリストからインストールしたいバージョンを選択し、ウィンドウ中心にある「>」を押し、質問に沿って「Next」を押していきます。
Virtual Driveの作成
PlayOnLinuxでは、WINEをバージョンごとに管理することができます。これはWINEの入ったVirtual Driveと呼ばれるものを作り、これを使い分けることで達成しています。
Virtual Driveの作成のために、「Configure」を押してください。歯車のアイコンのついているボタンです。
開きましたら、左下の「New」を押し、WineのバージョンとVirtual Drive名を決めていきます。
Windowsアプリ(Steam)のダウンロードとインストール
Virtual Driveが作成できたら、アプリをこの中にインストールしていきます。
まずは、アプリのダウンロード。
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"」を押します。
そして開かれたダイアログから、実行したいインストーラー(ここではsteam-setup.exe)を選択します。
すると、普通にSteamのインストーラーが実行されますので、指示に沿って進めてください。ただし、最後の「Run Steam」からチェックは外してください。
ショートカットの作成
インストールしたアプリのショートカットは、Virtual Driveの「General -> "Make a new shortcut from this virtual drive"」から作成します。
(先に動作確認として、Kindleを入れて様子を見たので、Kindleが写っていますが、本来は入っていません。なくても不安にならないでくださいね。)
これにて、サーバーの用意とWINEの導入は終わりです。
あまり需要のない内容と思いますが、誰かの役に立てたら幸いです。
注意:設定からスクリーンセーバーを切っておくのが吉です。
おまけ;不要なアプリの消去
不要そうなアプリを消去しましょう。ここらへんは消しても(2021/10/4の段階では)問題ないです。(実体験)
sudo apt remove deluge firefox galculator mousepad pulseaudio system-config-printer xscreensaver
sudo apt autoremove