🖥️

Ubuntu Desktop 24.04.3 LTS でのリモートデスクトップ環境セットアップメモ

に公開

Ubuntu 24 Desktop インストール

リモートでログインしてWeb開発ができるUbuntu環境が欲しかったので、Ubuntu Desktopで作ってみた。
LTS版からインストール用メディアを作ってインストールした。
https://ubuntu.com/download/desktop

以下、設定したもののざっくりメモ

IPアドレス固定

netplan の設定

$ sudo vim /etc/netplan/01-network-manager-all.yaml

IPアドレスを 192.168.100.100 に設定する場合

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp4s0:
      addresses: [192.168.100.100/24]
      routes:
        - to: 0.0.0.0/0
          via: 192.168.100.1
      nameservers:
        addresses: [192.168.100.1]

ロケール設定

システムメッセージが全部日本語になってて変な感じがするので、ロケールを en_US.UTF-8 に設定

$ sudo locale-gen en_US.UTF-8
$ sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
$ source /etc/default/locale

リモートデスクトップ設定

標準のリモートログイン機能

とりあえず標準のRemote Login機能を使ってみた。
動作も快適で問題なく使えそうだと思ったが、VSCode や Slack を起動すると接続が切れてしまう問題があった。
Wayland対応周りで問題があるらしく、このままではまともに開発作業ができなさそうだった。

xrdp インストール

代替として xrdp をインストールして使ってみる。

$ sudo apt install xrdp
$ sudo systemctl enable xrdp
$ sudo systemctl start xrdp

ポート開放

$ sudo ufw allow from 192.168.100.0/24 to any port 3389

パフォーマンスが悪い問題

この時点でWindows 11のリモートデスクトップ接続から接続はできたが、GUIの動作が異常にカクついている。

以下Redditを見て tcp_send_buffer_bytesnet.core.wmem_max を変更してみたが、特に変化なさそう。
https://www.reddit.com/r/Ubuntu/comments/1ceun0e/xrdp_extremely_slow/?tl=ja

どうしたものか……。

ちょっと改善

apt経由だとバージョンが古かったので、ソースコードから最新版をビルドする

古いバージョン↓

$ xrdp -v
xrdp 0.9.24
  A Remote Desktop Protocol Server.
  Copyright (C) 2004-2020 Jay Sorg, Neutrino Labs, and all contributors.
  See https://github.com/neutrinolabs/xrdp for more information.

  Configure options:
      --enable-ipv6
      --enable-jpeg
      --enable-fuse
      --enable-rfxcodec
      --enable-opus
      --enable-painter
      --enable-vsock
      --build=x86_64-linux-gnu
      --prefix=/usr
      --includedir=${prefix}/include
      --mandir=${prefix}/share/man
      --infodir=${prefix}/share/info
      --sysconfdir=/etc
      --localstatedir=/var
      --disable-silent-rules
      --libdir=${prefix}/lib/x86_64-linux-gnu
      --libexecdir=${prefix}/lib/x86_64-linux-gnu
      --disable-maintainer-mode
      --disable-dependency-tracking
      --with-socketdir=/run/xrdp/sockdir
      build_alias=x86_64-linux-gnu
      CFLAGS=-g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/build/xrdp-Fn5kxo/xrdp-0.9.24=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-se
curity -fcf-protection -fdebug-prefix-map=/build/xrdp-Fn5kxo/xrdp-0.9.24=/usr/src/xrdp-0.9.24-4                                                                                                                                            LDFLAGS=-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,-z,now -Wl,--as-needed
      CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=3
      PKG_CONFIG_PATH=/build/xrdp-Fn5kxo/xrdp-0.9.24/pkgconfig

  Compiled with OpenSSL 3.0.13 30 Jan 2024

以下に従って最新版の xrdp と、そのバックグラウンドサービスとして xorgxrdp をインストール
https://github.com/neutrinolabs/xrdp/wiki/Building-on-Debian--(or-Ubuntu,-etc)

$ xrdp -v
xrdp 0.10.3
  A Remote Desktop Protocol Server.
  Copyright (C) 2004-2025 Jay Sorg, Neutrino Labs, and all contributors.
  See https://github.com/neutrinolabs/xrdp for more information.

  Configure options:
      --with-systemdsystemunitdir=/usr/lib/systemd/system
      --enable-ibus
      --enable-ipv6
      --enable-jpeg
      --enable-fuse
      --enable-mp3lame
      --enable-fdkaac
      --enable-opus
      --enable-rfxcodec
      --enable-painter
      --enable-pixman
      --enable-utmp
      -with-imlib2
      --with-freetype2
      --enable-tests
      --enable-x264
      --enable-openh264
      --enable-vsock

  Compiled with OpenSSL 3.0.13 30 Jan 2024

Wikiの手順だけだと systemctl enable したときにserviceファイルが作成されなかったため、自前で作成。

$ sudo vim /etc/systemd/system/xrdp.service
[Unit]
Description=xrdp daemon
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/xrdp
PIDFile=/var/run/xrdp.pid

[Install]
WantedBy=multi-user.target
$ sudo vim /etc/systemd/system/xrdp-sesman.service
[Unit]
Description=xrdp session manager
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/xrdp-sesman
PIDFile=/var/run/xrdp-sesman.pid

[Install]
WantedBy=multi-user.target

更新後に再度 /etc/xrdp/xrdp.ini を編集

......
tcp_send_buffer_bytes=8388608
......

これでかなり動作感が改善した。

Samba 設定

Samba インストール

$ sudo apt install samba
$ sudo systemctl enable smbd

共有ディスクのマウント設定

ディレクトリ /srv/samba/share にマウントした /dev/sdb を共有し、
ユーザー alpha でアクセスできるようにする。

マウントするディスクの確認

$ sudo fdisk -l

Disk /dev/sdb: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
...
Disk identifier: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE

マウント時、この Disk identifier を使用する。

マウント先ディレクトリ作成

$ sudo mkdir -p /srv/samba/share

自動マウント設定編集

$ sudo vim /etc/fstab

/etc/fstab に以下追記

UUID=AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE       /srv/samba/share      ext4    nofail  0       0

UUID に、先程の Disp identifier を指定する。

Sambaの共有設定

ディレクトリ権限設定

$ sudo chown -R root:sambashare /srv/samba
$ sudo chmod -R 2770 /srv/samba
$ sudo setfacl -d -m g:sambashare:rwx /srv/samba

UbuntuユーザーをSamba用グループに追加

$ sudo usermod -aG sambashare alpha

Samba用ユーザーを追加

$ sudo pdbedit -a alpha

Samba用port開放

$ sudo ufw allow samba

Samba設定ファイル編集

$ sudo vim /etc/samba/smb.conf

/etc/samba/smb.conf に以下追記

[Share]
    path = /srv/samba/share
    writable = yes
    browseable=no
    validusers=@sambashare
    forcegroup=sambashare
    createmask=0770
    directorymask=0770
    forcecreatemode=0770
    forcedirectorymask=0770
    inheritacls=yes

Discussion