Skip to Content
Use CasesWine Remote Desktop

Wine Remote Desktop

Deploy a browser-based remote desktop using Apache Guacamole, XRDP, and Wine.

This setup gives you a cloud workstation accessible from your browser, with support for running Windows applications via Wine.


1. Create an instance

Go to:

Menu → Compute → Virtual Machines → Create Instance

Example configuration:

SettingValue
Namewine
Imageubuntu24.04
Domainremotewine.redu.cloud
Port8080

Steps:

  1. Enter instance name
  2. Select image
  3. Select SSH keypair
  4. Configure domain
  5. Allow port 8080
  6. Open Advanced Settings → Cloud-init
  7. Paste the configuration below
Instance creation

If you don’t have an SSH keypair:

👉 Keypairs Guide


2. Configure access

Guacamole runs on:

port 8080

Make sure your Security Group allows port 8080.


3. Cloud-init configuration

Paste this into the Cloud-init field:

#cloud-config package_update: true package_upgrade: true packages: - podman - podman-compose - uidmap - curl - xfce4 - xfce4-goodies - xrdp - xorgxrdp - dbus-x11 - wine64 - winbind - winetricks - xvfb chpasswd: list: | ubuntu:test123 expire: false write_files: - path: /opt/guacamole/podman-compose.yml permissions: "0644" owner: root:root content: | version: "3.8" services: guacdb: image: docker.io/library/mariadb:11 container_name: guac-db restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: rootpass MARIADB_DATABASE: guacamole_db MARIADB_USER: guacamole_user MARIADB_PASSWORD: guacpass volumes: - guac_db_data:/var/lib/mysql guacd: image: docker.io/guacamole/guacd:latest container_name: guacd restart: unless-stopped guacamole: image: docker.io/guacamole/guacamole:latest container_name: guacamole restart: unless-stopped depends_on: - guacdb - guacd ports: - "8080:8080" environment: GUACD_HOSTNAME: guacd MYSQL_HOSTNAME: guacdb MYSQL_PORT: 3306 MYSQL_DATABASE: guacamole_db MYSQL_USERNAME: guacamole_user MYSQL_PASSWORD: guacpass volumes: guac_db_data: - path: /usr/local/bin/guacamole_bootstrap.sh permissions: "0755" owner: root:root content: | #!/usr/bin/env bash set -euo pipefail cd /opt/guacamole dpkg --add-architecture i386 || true apt-get update -y DEBIAN_FRONTEND=noninteractive apt-get install -y wine32 cat > /etc/xrdp/startwm.sh <<'EOF' #!/bin/sh unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR exec startxfce4 EOF chmod +x /etc/xrdp/startwm.sh echo startxfce4 > /home/ubuntu/.xsession chown ubuntu:ubuntu /home/ubuntu/.xsession systemctl enable xrdp systemctl restart xrdp /usr/bin/podman-compose -f /opt/guacamole/podman-compose.yml up -d runcmd: - /usr/local/bin/guacamole_bootstrap.sh > /var/log/guacamole-bootstrap.log 2>&1

4. Optional changes

Before launching, you may want to update:

Password

ubuntu:test123

Guacamole login

guacadmin guacadmin

Change after first login.


5. Wait for setup

After instance becomes ACTIVE, wait a few minutes.

Check:

cloud-init status

Expected:

status: done
SSH access

6. Open the remote desktop

https://your-domain/guacamole
Guacamole login

7. Login

guacadmin guacadmin

Open:

Wine Desktop
Dashboard

8. Test Wine

winecfg

or:

wine notepad

Troubleshooting

Cannot access

  • Check port 8080
  • Verify domain

Still initializing

sudo cat /var/log/guacamole-bootstrap.log

XRDP issues

sudo systemctl restart xrdp

Last updated on