WndowsPCの標準機能であるリモートデスクトップからUbuntu16.04LTSサーバに接続できるようにする設定です。前回記事のCentOSではyumコマンド一つと少々の設定でxrdpを導入できましたが、Ubuntu16.04LTSでは簡単には済みませんでした。試行錯誤の期間を入れると3日位悩んだ後の成果です。(後でわかったことですがUbuntu16.10以上なら標準のaptからインストールできるようです...)
目次
1.Desctop環境のインストール
前提はサーバ環境なのでデスクトップを導入します。xrdpに対応しているMATEデスクトップをインストールします。
1 |
$ sudo apt install -y ubuntu-mate-desktop mate-desktop-environment mate-desktop-environment-extra |
他のデスクトップとしては軽量のLXDEも対応しています。その場合はこちらです
1 |
$ sudo apt install -y lxde |
インストール後、リブートするとデスクトップに入れるようになります。
2.日本語キーボード対応
ログイン後のデスクトップで日本語対応が不足している場合は以下の設定を実施します。
Applications -> Sytem Tools -> MATE Terminal
Mate端末が起動しますので以下のコマンドを入力します。
1 |
$ ibus-setup |
ibus設定画面が表示されるので
「入力メソッド」タブの「追加」から「日本語-MOZAC」を選択
3.xrdpの導入
日本 xrdp ユーザ会の説明にある最新のxrdp導入手順ではうまくいかなかったのでこちらの記事を参考にソースをBuildしてパッケージを作成しインストールする手順をとります。
(1)Build用のPKG導入
Buildeに必要な関連パッケージをインストールします。
1 |
$ sudo apt-get install build-essential devscripts |
(2)Buildスクリプトソース取得
このライブラリを確認し、最新版のxrdpスクリプトソースをダウンロードします。 2017/4/22時点の最新(※1)は 「0.9.1-7build1」 2017/4/20版でした。以下の通りBuildディレクトリを作成しダウンロードします。
1 2 3 |
$ mkdir build $ cd build $ sudo dget -u https://launchpad.net/ubuntu/+archive/primary/+files/xrdp_0.9.1-7build1.dsc |
(3)Build準備
・ビルド用ディレクトリに移動しBuildに必要なPKGを事前にインストールします。
1 2 |
$ cd xrdp-0.9.1 $ vi debian/control |
「debian/control」ファイル内の依存関係PKGを調査し最新化及びインストールをします。
参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Build-Depends: autoconf (>= 2.59), ◆ automake (>= 1.6), debhelper (>= 10), ■ libfuse-dev [!hurd-any],■ libjpeg-dev, ■ libopus-dev, ■ libpam0g-dev, ■ libssl-dev, ■ libtool, libx11-dev, libxfixes-dev, ■ libxrandr-dev, ■ nasm [amd64 kfreebsd-amd64],■ openssl, pkg-config, systemd [linux-any], x11-utils, xserver-xorg-core, xserver-xorg-dev, libfuse-dev libpam0g-dev libssl-dev libtool libxfixes-dev libxrandr-dev ■ |
当方の環境では、■行はインストールが必要。◆行はアップデートが必要でした。
・必要なバージョンに届かないパッケージの要求バージョンを落とします。
1 2 3 4 |
-automake (>= 1.6), +automake (>= 1.1), -debhelper (>= 10), +debhelper (>= 9.2), |
上記差分を修正し、「debian/control」を上書きします。
(4)Build&インストール
「xrdp-0.9.1」ディレクトリで下記コマンドを実行しビルドします。環境にもよりますが30分位の時間を要します。
1 |
$ sdo dpkg-buildpackage -r -uc -b |
完了したら、Buildディレクトリに戻り.debを検索
1 2 3 |
$ ls -la *.deb -rw-r--r-- 1 root root 80512 4月 22 11:35 xorgxrdp_0.9.1-7build1_amd64.deb -rw-r--r-- 1 root root 437370 4月 22 11:35 xrdp_0.9.1-7build1_amd64.deb |
上記2つのPKGをインストールします
1 |
$ sudo dpkg -i xorgxrdp_0.9.1-7build1_amd64.deb xrdp_0.9.1-7build1_amd64.deb |
5.デスクトップセッションの設定
リモートデスクトップ接続時にxrdpが使用するセッション情報を作成します。これが無いとxrdpのログイン画面は表示されますが、ログイン後にデスクトップが落ちて何も表示されません。
(1)デスクトップにMateを導入している場合
端末を起動しホームディレクトリで以下をタイプします。
1 2 3 4 5 6 7 |
$ cat <<EOF > ~/.xsession export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus export XMODIFIERS="@im=ibus" ibus-daemon -rdx mate-session EOF |
(2)デスクトップにLXDEを導入している場合
端末を起動しホームディレクトリで以下のコマンドを入力します。
1 |
$ echo lxsession -s LXDE -e LXDE > ~/.xsession |
(3)デスクトップにUnityを導入してる場合
未確認ですが、こちらを参考にしてください。
Ubuntu 16.04: UnityにVNC/XRDPでリモート接続する
1 2 3 4 5 6 7 8 9 10 11 |
$ cat ~/.xsession /usr/lib/gnome-session/gnome-session-binary --session=ubuntu & /usr/lib/x86_64-linux-gnu/unity/unity-panel-service & /usr/lib/unity-settings-daemon/unity-settings-daemon & for indicator in /usr/lib/x86_64-linux-gnu/indicator-*; do basename=`basename ${indicator}` dirname=`dirname ${indicator}` service=${dirname}/${basename}/${basename}-service ${service} & done unity |
6.ログローテーション設定
ログロテーションファイルを用意し、ログが一定期間で切り捨てられるようにします(※2)。
1 2 3 4 5 6 7 8 9 10 |
$ sudo vi /etc/logrotate.d/xrdp /var/log/xrdp.log { copytruncate weekly rotate 7 delaycompress compress notifempty missingok } |
週に1度ロテートし、2世代前以降のログファイルは圧縮されるように設定しています。
7.RDP接続
ログインするとUbuntu Mateのデスクトップが表示されました。
8.参考にさせて頂いたサイト
Ubuntu 16.04 で最新の xrdp をビルドした
日本 xrdp ユーザ会
ありがとうございます。
9.追加情報
※1:2017/6/23時点でのxrdpスクリプトソースの最新は「0.9.1-9」2017-05-05版になっています。当方は未確認ですが最新を導入する際にはこのバージョンを使用してみてください。
※2:2017/10/21追記。var/log/xrdp.logが肥大化していたのでロテート設定を追加しました。PKGからインストールしていないのでロテート設定は自前で用意する必要がありました。
Ubuntu17.04 Serverへのxrdp導入記事はこちらです。