- 画面のない LXC コンテナで xfce4 のデスクトップ環境を構築する
- WSL2 や Docker コンテナでも同じ要領でできるはず
LXCコンテナでGUIが使いたい
我が家の自宅サーバは LXC コンテナで運用している。ホスト計算機はヘッドレスなので、GUI環境はインストールしていない。基本的には SSH で十分だし、そもそもヘッドレスということは作業マシンが別にあるわけで、コンテナに GUI 環境は必要ない。
ただ、出先から自宅にリモートログインした場合に、ちょっとした GUI アプリを使いたい場合など、まれにコンテナに GUI があったらな、と思うこともある。
そこで、必要なときにだけ起動する GUI を含んだ LXCコンテナを作ることにした。
検証環境
手順
デスクトップ環境の導入
好みのデスクトップ環境を選ぶ。個人的には、サーバは非力というわけでもない*1し、それなりに使いやすいものがいいので、xfce4 を選ぶ。
$ sudo apt install xfce4 xfce4-goodies $ echo "xfce4-session" > ~/.xsession
日本語入力環境も整えるが、普段使いするわけでもない、リモートから必要なときにだけ使うものなので、チューニングに時間はかけずにサクッと導入できるものを選ぶ。
$ sudo apt install task-japanese task-japanese-desktop ibus-kkc locales-all $ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
これはおまけ。ファイラーから、ファイルサーバの samba につなげるようにしたいので、GVFS も入れておく。
$ sudo apt install gvfs-backends
xrdp の導入
LXC コンテナは画面を持たないので、もちろんフレームバッファもない。そのため、リモートフレームバッファを作る。自分は外出時には GPD Pocket 2 を使うので、VNC より Windows リモートデスクトップ で繋ぎたい。そのため、xrdp を導入し、xvnc セッションに RDP 接続できるようにする。
xvnc 含めて、必要なパッケージは依存関係で入るので、導入はシンプル。
$ sudo apt install xrdp
コンテナを再起動。
$ sudo reboot
リモートデスクトップ接続
適当な Windows マシンから RDP 接続する。後は言語切り替え*2や、キーボード配列*3などを好みの通り修正すれば完了。
まとめ
- ホストもゲストも画面を持たない、LXCコンテナに xfce4 の GUI 環境を構築した
- LXC コンテナ特有の操作はないため、WSL2 や Docker、systemd-nspawn など、他のヘッドレス環境でも同じ手順で構築できる・・・かもしれない。