This guide shows how to set up an ultra-lightweight Alpine Linux container on Proxmox with a minimal desktop, browser, and RDP access. Perfect for low-resource environments and quick web access.
To debug AdGuard effectively, I needed a clean browser environment separate from my Windows system. Running a lightweight browser in a minimal Linux container prevents unrelated web traffic and cached data from mixing into the logs, enabling precise filtering analysis. I’d also been wanting to experiment with Alpine Linux for a while, and this project was the perfect chance to gain some hands-on experience with it.

Why Alpine
- Very small footprint (under 300 MB with browser and RDP)
- Low idle RAM usage (~70 MB without browser)
- Ideal for multiple lightweight containers on a single Proxmox host
Prerequisites
- Proxmox VE with internet access
- Alpine Linux LXC template (latest version)
- LXC with
nesting=1
enabled
Note: Enable
nesting=1
for this container in Proxmox. Without nesting, Proxmox may block certain bind mounts and syscalls required by graphical applications, which can cause issues such as Chromium failing to start or XRDP sessions terminating immediately.
Steps
Create LXC
- Template:
alpine-3.x-default_*.tar.gz
- Unprivileged: Yes
- Features: Enable Nesting
- Allocate
- 1 CPU
- 1–2 GB RAM
- 2–4 GB disk
Install and enable SSH
To enable SSH access, do the following inside your Alpine container:
apk add openssh
rc-update add sshd default
sed -i '/^#*PermitRootLogin/c\PermitRootLogin yes' /etc/ssh/sshd_config
rc-service sshd start
Make sure port 22 is open in your firewall. Connect using:
ssh user@<container-ip>
Replace user
and <container-ip>
accordingly.
Update Alpine
apk update
apk upgrade
Install Xorg, Openbox, Browser
apk add xorg-server xf86-video-vesa
xf86-video-dummyxf86-input-evdev openbox xterm chromium
Note: When running Xorg sessions over XRDP, there is no physical display device. Instead, XRDP uses a virtual framebuffer. This requires the
xf86-video-dummy
driver; without it, Xorg will fail to start with errors like “no screens found”.
Install XRDP
apk add xrdp
rc-update add xrdp default
rc-update add xrdp-sesman default
rc-service xrdp start
rc-service xrdp-sesman start
Configure Openbox
# Set system-wide Xsession
echo "openbox-session" > /etc/X11/xinit/Xsession
chmod +x /etc/X11/xinit/Xsession
# Set system-wide Openbox autostart
mkdir -p /etc/xdg/openbox
echo "/usr/bin/chromium --no-first-run --noerrdialogs --start-fullscreen &" > /etc/xdg/openbox/autostart
chmod 644 /etc/xdg/openbox/autostart
This will:
- Make
XRDP
always start Openbox for all users. - Load the system-wide Openbox autostart file so Chromium starts automatically.
- Avoid the need for per-user
.xsession
orautostart
files.
Create a dedicated user
Xrdp sessions cannot be started with the root
account. Please create a dedicated non-root user and use that for graphical login.
For example:
adduser ella.vator
You can now log in via Xrdp with the username ella.vator
and the password you set.
Automatically Close XRDP Sessions on Disconnect
To free resources and avoid lingering sessions, configure XRDP to automatically kill disconnected sessions after a timeout.
Run these commands as root to enable this:
bashKopierenBearbeitensed -i 's/^;KillDisconnected=.*/KillDisconnected=true/' /etc/xrdp/sesman.ini || echo 'KillDisconnected=true' >> /etc/xrdp/sesman.ini
sed -i 's/^;DisconnectedTimeLimit=.*/DisconnectedTimeLimit=5/' /etc/xrdp/sesman.ini || echo 'DisconnectedTimeLimit=5' >> /etc/xrdp/sesman.ini
service xrdp restart
This sets XRDP to kill sessions 5 minutes after disconnect automatically.
Connect via RDP
Open port 3389 in the Proxmox firewall if needed and connect using any RDP client to the container’s IP.
Performance
- Idle without browser: ~70 MB RAM
- Browser with 1–2 tabs: ~350–400 MB RAM
- CPU idle: near 0%, active browsing depends on site content
Restart XRDP and Kill All Sessions Without Reboot
To apply configuration changes immediately without rebooting your Alpine Linux container, you can restart XRDP services and kill all active sessions with these commands:
# Restart XRDP services
service xrdp restart
service xrdp-sesman restart
Conclusion
Using Alpine Linux for a browser-accessible RDP container on Proxmox offers a compact, efficient, and fast environment. This setup is ideal for quick web tasks, admin tools, or lightweight kiosks without heavy desktop environments.