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,
fusemust be enabled in the LXC container's options. Navigate toLXC container > Options > Featuresand checkFuse.
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-userAdd 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/xdgRestart 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-8Then, 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 --allRestart 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 cleanStep 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