# Windows and a graphical desktop on GPU and Arm64 servers

> Run Windows or a Linux desktop on a GPU or Arm64 server: connect over Remote Desktop, let sessions use the GPU and set up Xfce with xrdp on Ubuntu or Debian.

Difficulty: Beginner

**GPU VPS**, **GPU VDS**, **GPU dedicated servers** and **Arm64 VPS and VDS** run **Linux or Windows**, and a Linux server can also run a **graphical desktop**. This guide shows how to connect to a Windows server, let Remote Desktop sessions use the GPU, and set up a Linux desktop that you open with the same Remote Desktop app.

## Before you start

- The operating system you want: choose it in the order form, or reinstall the server with another image from the client area. Reinstalling erases the server's disk, so take a backup first.
- Your server's IP address and login details from the welcome email.
- A Remote Desktop app: **Remote Desktop Connection** (`mstsc`) on Windows, **Windows App** on macOS, or an RDP client such as Remmina on Linux.

## Windows: connect and use the GPU

### Step 1: Connect over Remote Desktop

Connect with your Remote Desktop app to the server's IP address and sign in as Administrator: [first steps on a Windows server over RDP](/guides/windows-server-first-steps-rdp).

### Step 2: Check the GPU (GPU servers)

Open **Task Manager** › **Performance**. The GPU appears in the list with its name. If it does not, or **Device Manager** shows it with a warning sign, follow [GPU servers: getting started](/guides/gpu-servers-getting-started) for the driver your GPU type needs.

### Step 3: Let Remote Desktop sessions use the GPU

Remote Desktop sessions render on the CPU until you enable the GPU for them. Open the Local Group Policy Editor (`gpedit.msc`) and go to **Computer Configuration** › **Administrative Templates** › **Windows Components** › **Remote Desktop Services** › **Remote Desktop Session Host** › **Remote Session Environment**. Set these policies to **Enabled**:

| Policy | What it does |
|---|---|
| **Use hardware graphics adapters for all Remote Desktop Services sessions** | Sessions render on the GPU instead of the CPU |
| **Prioritize H.264/AVC 444 graphics mode for Remote Desktop Connections** | Sharper image for text and fine detail |
| **Configure H.264/AVC hardware encoding for Remote Desktop Connections** | The GPU encodes the picture sent to you |

Apply the policies, then sign out and connect again:

```powershell
gpupdate /force
```

**Verify:** start a 3D or video program in the session. **Task Manager** › **Performance** › **GPU** shows activity.

### Windows on Arm64 servers

Windows on Arm runs programs built for **Arm64** natively. Many **x64** and **x86** programs also run, through emulation built into Windows, but more slowly. Drivers cannot be emulated: a driver must be built for Arm64. Choose the Arm64 download of a program where the vendor offers one.

## Linux: a desktop with Xfce and xrdp

Xfce is a light desktop and **xrdp** lets you open it with any Remote Desktop app. The steps are the same on x86 and Arm64, on Ubuntu and Debian.

### Step 1: Install the desktop and xrdp

```bash
sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp
sudo adduser xrdp ssl-cert
sudo systemctl enable --now xrdp
```

### Step 2: Create a desktop user

Sign in to the desktop with a normal user, not root. Create one and start Xfce for it:

```bash
sudo adduser desk
echo xfce4-session | sudo tee /home/desk/.xsession
sudo chown desk:desk /home/desk/.xsession
```

### Step 3: Keep port 3389 private

Do not leave the Remote Desktop port open to the whole internet. Choose one way:

**Allow only your IP address**

With the ufw firewall, allow port 3389 only from your own address (replace `203.0.113.10`):

```bash
sudo ufw allow from 203.0.113.10 to any port 3389 proto tcp
```
**Use an SSH tunnel**

Leave port 3389 closed in the firewall and forward it over SSH from your computer, then connect your Remote Desktop app to `localhost`:

```bash
ssh -L 3389:localhost:3389 desk@SERVER_IP
```

### Step 4: Connect

Connect your Remote Desktop app to the server's IP address (or to `localhost` with the tunnel), choose the **Xorg** session if xrdp asks, and sign in as `desk`.

**Verify:** the Xfce desktop opens with its panel.

On a GPU server, programs that compute on the GPU, such as CUDA, ROCm or oneAPI applications, use it as usual from the desktop's terminal. The desktop itself is drawn by the CPU.

## Troubleshooting

**xrdp shows a black screen after login, or the session closes at once.** The same user is still signed in to a local console session, or `.xsession` is missing. Sign out of the other session, check `~/.xsession`, and read `~/.xsession-errors` and `/var/log/xrdp-sesman.log`.

**Remote Desktop cannot connect.** Check the firewall rule, the IP address and the port: [Remote Desktop connection problems](/guides/rdp-connection-problems).

**The GPU is not used in a Windows session.** The policies are not applied yet: run `gpupdate /force`, then sign out and connect again.

**The GPU shows Code 43 in Device Manager.** The driver does not match the GPU type: see [GPU troubleshooting](/guides/gpu-troubleshooting).

## Next steps

- Change the Remote Desktop port on Windows: [change the RDP port](/guides/change-rdp-port).
- Software for Arm64 servers: [Arm64 VPS and VDS: getting started](/guides/arm64-servers-getting-started).

## Frequently asked questions

### Which operating systems can I choose?

The images your package offers, listed in the order form and in the client area when you reinstall: Linux distributions and Windows, on GPU servers and on Arm64 servers.

### Do I need a desktop on a Linux server?

Only for graphical programs. AI models, containers and command-line tools run without one, and a desktop uses memory and CPU of its own.

### Does a remote desktop use the GPU?

On Windows, after you enable the GPU policies in this guide. On Linux, xrdp draws the desktop with the CPU, while programs that compute on the GPU use it as usual.

### Do x64 programs run on Windows on Arm?

Many do, through the emulation built into Windows on Arm. Programs built for Arm64 run natively and faster, and drivers must always be built for Arm64.

---

Source: <https://hyperdc.com/guides/products/gpu-arm64-windows-desktop>\
Updated: 2026-10-23
