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:
| Setting | Value |
|---|---|
| Name | wine |
| Image | ubuntu24.04 |
| Domain | remotewine.redu.cloud |
| Port | 8080 |
Steps:
- Enter instance name
- Select image
- Select SSH keypair
- Configure domain
- Allow port
8080 - Open Advanced Settings → Cloud-init
- Paste the configuration below

If you don’t have an SSH keypair:
2. Configure access
Guacamole runs on:
port 8080Make 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>&14. Optional changes
Before launching, you may want to update:
Password
ubuntu:test123Guacamole login
guacadmin
guacadminChange after first login.
5. Wait for setup
After instance becomes ACTIVE, wait a few minutes.
Check:
cloud-init statusExpected:
status: done
6. Open the remote desktop
https://your-domain/guacamole
7. Login
guacadmin
guacadminOpen:
Wine Desktop
8. Test Wine
winecfgor:
wine notepadTroubleshooting
Cannot access
- Check port
8080 - Verify domain
Still initializing
sudo cat /var/log/guacamole-bootstrap.logXRDP issues
sudo systemctl restart xrdpRelated
Last updated on