Raja's Exocortex

Ubuntu GNOME Kiosk

Setting up a GNOME desktop for web browsing or remote development using Ubuntu 25.04 with Proxmox LXC system containers.

Ubuntu 25.04 with the GNOME desktop environment and Google Chrome uses under 2GB of RAM and 4GB of disk.

Step 1: Create Proxmox LXC

Create a new LXC container using the ubuntu-25.04-standard template. Provide a max of 4GB RAM and 5GB disk.

Note: The GNOME desktop attempts to install snap packages like firefox within the container. For this to work, fuse must be enabled in the LXC container's options. Navigate to LXC container > Options > Features and check Fuse.

Without it, errors like the following may occur during installation.

Errors were encountered while processing:
/tmp/apt-dpkg-install-txJC9E/17-firefox_1%3a1snap1-0ubuntu7_amd64.deb
Error: Sub-process /usr/bin/dpkg returned an error code (1)

Step 2: Install GNOME and XRDP

In the Ubuntu container run the following commands to install gnome and xrdp.

apt update; apt -y upgrade
apt install ubuntu-desktop xrdp gnome-session gnome-session-bin dbus-x11 -y
apt clean
adduser xrdp ssl-cert

# Create a limited user account for accessing the desktop
adduser rdp-user

Add the following to /etc/xrdp/startwm.sh before the line exec /bin/sh /etc/X11/Xsession.

export DESKTOP_SESSION=ubuntu
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg

Restart the LXC container to apply changes.

Step 3: Configure GNOME Session

For GNOME Terminal to work correctly, a locale must be configured.

# Uncomment en_US.UTF-8 locale and generate it
sed -i '/^# *en_US.UTF-8 UTF-8/s/^#//' /etc/locale.gen
locale-gen
localectl set-locale LANG=en_US.UTF-8

Then, add this line to /etc/xrdp/startwm.sh before the exec /bin/sh /etc/X11/Xsession line to ensure D-Bus works correctly.

dbus-update-activation-environment --all

Restart xrdp to apply the changes: systemctl restart xrdp.

Step 4: Connect to GNOME Desktop

From a remote desktop client, connect to the Ubuntu instance using its IP address and the rdp-user credentials created earlier.

Step 5: Install Google Chrome

wget -O - https://dl.google.com/linux/linux_signing_key.pub |  gpg --dearmor | tee /usr/share/keyrings/google-chrome.gpg >> /dev/null

echo deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main |  tee /etc/apt/sources.list.d/google-chrome.list

apt update; apt install google-chrome-stable; apt clean

Step 6: Disabling Copy/Paste over RDP

To disable copy/paste over RDP, in /etc/xrdp/xrdp.ini set allow_channels=false. This will disable all RDP channels like clipboard sync, device redirection, etc.

References

Debian Browser Kiosk debian-browser-kiosk

Apalrd's Adventures (for Debian setup)