粗筋
最近、mini PCにサーバーを建てたのだが、用途よりもリソースが大きいのでこれを活用したい。自宅LANにはMacとWindowsはあるので、久しぶりにFreeBSDのデスクトップ環境を構築してみる。サーバーそのものの環境は弄りたくないので、Jailの上に作成する。
ハードウエア
Minisforum UM690Sに2G SSDを登載し、メモリは64Gにしてある。用途はファイル管理とgitのローカルホスティング、たまにAIを動かす程度でリソースは十分以上にある。
ソフトウエア
FreeBSD 14.3-RELEASEをインストールしてある。デスクトップ環境はJailの上に構築するので、管理アプリとしてAppJailを使用する。
AppJail-makejails/xrdpの導入
AppJailではxrdpのmakejailsが存在するので、これを利用する。最新版のイメージは13.5-RELEASEと14.3-RELEASEである。
xrdpイメージの動作確認
AppJail-makejails/xrdpにサンプルがあるので、これに基づいてxrdpイメージの動作確認する。ホストとゲストのOSは統一したいので、Makejailファイルにタグ(xrdp_tag=14.3)を設定する。options/network.makejailとfiles/xrdp.confはそのまま使用する。
INCLUDE options/network.makejail
INCLUDE gh+AppJail-makejails/xrdp
ARG xrdp_tag=14.3
OPTION expose=3389
OPTION template=files/xrdp.conf
CMD pw useradd -n op -m
CMD passwd op
makejailコマンドでJailを作成する。以下のコマンドでxrdpのイメージがダウンロードされ、xrdpと名付けられたJailが起動する。最後に作成ユーザー(op)のパスワード設定プロンプトが出るので、パスワードを二度入力する。
appjail makejail -j xrdp
LAN側のMac/WindowsからサーバーのIPと3389ポートを指定し、リモートデスクトップへ繋ぐ。xtermが表示されたら成功だ。
Makejailのカスタマイズ
構築しただけではxtermしか使用できないので、普段の利用に困らない程度の環境を構築する。Jail内部でpkgインストールすれば良いが、再現性を重視したいのでMakefileをカスタマイズする。MakefileのInstructionsを元に追記していく。試行錯誤の末、最終的に以下を設定した。
INCLUDE options/network.makejail
INCLUDE gh+AppJail-makejails/xrdp
ARG xrdp_tag=14.3
ARG startwm_file=files/startwm.sh
OPTION expose=3389
OPTION template=files/xrdp.conf
SYSRC dbus_enable="YES"
PKG enlightenment
PKG ja-font-ipa
PKG ja-font-ipaex
PKG fcitx5
PKG fcitx5-qt5
PKG fcitx5-configtool-qt5
PKG ja-fcitx5-anthy
PKG firefox
PKG ja-libreoffice
PKG rxvt-unicode
PKG vim
SERVICE dbus start
COPY ${startwm_file} /usr/local/etc/xrdp/startwm.sh
CMD pw useradd -n foo -c "bar" -s tcsh -m
CMD passwd foo
OPTION virtualnet=:<random> default
OPTION nat
#!/bin/sh
#exec xterm
export XMODIFIERS='@im=fcitx'
export GTK_IM_MODULE=fcitx/xim
export QT_IM_MODULE=fcitx
exec enlightenment_start
設定が完了したら、動作確認する。手順は、既存Jailの停止、既存Jailの破毀、新規Jailの作成となる。手間ならMakejailにOPTION overwrite=forceを指定すると、作成前に停止と破毀が自動で動作する(未確認)。
appjail stop xrdp
appjail jail destroy -f xrdp
appjail makejail -j xrdp
Jailの設定
Jail内をローカル時刻に設定する。MakefileのCMDでやる方がスマートかも知れない。
appjail login xrdp
tzsetup
logout
動作確認と同じくLAN側のMac/Windowsからアクセスすると。Enlightenmentのセットアップが起動するので好みに設定する。fcitx5を手動起動すればFirefoxで日本語入力も可能だ。ただし、LibreOfficeでの日本語入力は動作しない。設定を詰めれば解決できるが、ビュワーとして利用はできるので放置する。
デスクトップ環境のバックアップ
環境設定まで終了したら、一度Jailを停止してイメージをエクスポートする。これで環境のバックアップとする。
appjail stop xrdp
appjail image export -t desktop_base -c zstd xrdp
appjail start xrdp
課題
一旦、普段利用の環境は構築できたが、課題がいくつか解決してない。
- Chromium等のインストール
- キーバインドの調整
- fcitx5の自動起動設定
- fcitx5-cskkの導入
- LibreOfficeの日本語入力
ブラウザとしてwww/chromiumが利用できれば、GoogleのAI絡みサービスを含めて全てがFreeBSDデスクトップで完結するのだが、現在のところPR 289709の影響でpkgインストールができない。
キーバインドはMacのSpotlight起動と日本語入力が被る問題で、FreeBSDではなくMac側の設定を詰めて修正したい。
あとは日本語入力の改善となるが、ブラウザとrxvtでの利用は困らないのでそのままで良いかもしれない。
まとめ
FreeBSD上にJailを使用したデスクトップ環境を構築してみた。xrdpでクライアント選びに困らず、動作も速くて快適な環境が完成した。Jailで構築したので破毀や再構築も容易だ。ただし、環境には課題があるし、Makejailの設定についてはまだまだ詰められるところはあるので、いつかは改善したい。ともあれ目的は達成したので、作業としてはここで終了とする。
御精讀、ありがたうございました。
追記
今週になつてchromiumのpkgが復活した。Jailを作り直しても良いが、構築はそれなりに時間がかかるので、ホスト側から追加した。
appjail pkg jail xrdp update
appjail pkg jail xrdp upgrade
appjail pkg jail xrdp install chromium
他にもvscodeやGEMINI-cliを同樣にインストールしてあるので、AI補助を活用した開發環境が完成した。もしJailの作成からやり直したい場合は、Makejailのパッケージインストールの部分に以下を追記すると良い。
PKG chromium