> For the complete documentation index, see [llms.txt](https://book.konstantinsecurity.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.konstantinsecurity.com/readme/architect/docker/ubuntu-rdp-container.md).

# Ubuntu RDP container

## Ubuntu RDP container

<https://hub.docker.com/r/rattydave/docker-ubuntu-xrdp-mate-custom/>

Pulls

1M+

[Overview](https://hub.docker.com/r/rattydave/docker-ubuntu-xrdp-mate-custom/)[Tags](https://hub.docker.com/r/rattydave/docker-ubuntu-xrdp-mate-custom/tags)

Use <https://github.com/RattyDAVE/docker-ubuntu-xrdp-mate-custom/issues> to send feedback, issues, comments and general chat.

#### Quick Start

Run the following to get started.

```
echo "user:pass:N" > CREATEUSERS.TXT
docker run --name RattyDAVE \
           --privileged=true \
           -p 3389:3389 \
           -e TZ="Europe/London" \
           -v ${PWD}/CREATEUSERS.TXT:/root/createusers.txt \
           -dit --restart unless-stopped \
           rattydave/docker-ubuntu-xrdp-mate-custom

```

Then on a windows machine type

```
mstsc

```

Then put in the IP address of the docker host.

Login using the username `user` and the password `pass`

A virtual desktop docker container with persistent user information.

This image is automatically rebuilt when updates are released for Ubuntu.

## Ubuntu 22.04 with XRDP and MATE. (latest)

Contents:

* Ubuntu 22.04
* Mate Desktop (ubuntu repo)
* XRDP (ubuntu repo)
* XRPDXORG (ubuntu repo)
* tightvncserver (ubuntu repo)
* Epiphany web browser (ubuntu repo)
* Custom xrdp.ini script
* Default UK Keyboard layout (Can be changed)
* Default UK Timezone (Can be changed)
* You are now able to set the time zone with the TZ variable
* Ability to run a script on container startup. This is useful for installing packages that are needed.
* Local Drive mapping (require elevated rights with this parameter `-privileged=true`)
* Clipboard Sharing (require elevated rights with this parameter `-privileged=true`)

```
docker run --name RattyDAVE \
           --privileged=true \
           -p 3389:3389 \
           -e TZ="Europe/London" \
           -v %LOCAL_PATH_TO_CREATEUSERS.TXT_FILE%:/root/createusers.txt \
           -v %LOCAL_PATH_TO_STARTUP.SH_FILE%:/root/startup.sh \
           -v %LOCAL_PATH_TO_HOME_DIRECTORY%:/home \
           -dit --restart unless-stopped \
           rattydave/docker-ubuntu-xrdp-mate-custom

```

* Replace %LOCAL\_PATH\_TO\_CREATEUSERS.TXT\_FILE% with the local filename of the createusers file.
* Replace %LOCAL\_PATH\_TO\_STARTUP.SH\_FILE% with the local filename of the startup.sh script. This is run after the user creation and before the service start.
* Replace %LOCAL\_PATH\_TO\_HOME\_DIRECTORY% with the local directory of the /home directory.

This file contains 3 fields (username:password:is\_sudo). Where username is the login id. Password is the password. is\_sudo does the user have sudo access(only Y is recognised). It also needs a "newline" at the end of the line.

Example of a CREATEUSERS.TXT file

```
mickey:mouse:N
daisy:duke:Y
dog:flash:n
morty:rick:wubba

```

In this example 4 users will be created and only daisy will have sudo rights. At every reboot it will check this file and ADD any new users.

Example of a STARTUP.SH file to change locale.

```
apt-get update
apt-get -y install language-pack-de language-pack-gnome-de
locale-gen de_DE.UTF-8
update-locale LANG=de_DE.UTF-8

```

### To Connect

Please note some clients need an extra parameter set glyph-cache. xfreerdp, remmina and others need this set.

Linux example of how to connect:

```
xfreerdp /size:1920x1140 /kbd:0x00000809 /v:%IP_ADDRESS% /gdi:hw /drive:home,$HOME +clipboard /sound:sys:alsa +glyph-cache

```

Windows example:

Open a command prompt and type

```
mstsc

```

Then put in the ip address of the docker host.

### Auto Update

To automatically update I recommend using watchtower.

```
docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower

```

### rattydave/docker-ubuntu-xrdp-mate-custom:20.04-tools

I doubt most people would want this version but I have made available. This release contains development tools.

* x3270
* filezilla
* netbeans
* dia
* geany
* putty
* mysql-workbench
* remmina
* openjdk-11-jre
* libreoffice
* pasmo
* BlueJ
* Rocket2014 (A RC2014 Z80 emulator - <https://github.com/trcwm/rocket2014> - ROMs located in /opt/rocket2014/examples)

Screen sharing: On the master user connect using the Xvnc option and login as normal. On the desktop there is a file called session\_info.txt this will contain the display number and password.

```
       On the other clients connect using the Reconnect option.
       Using the information in the session_info file:
            PORT = 5900 + display number. (So if display is 11 then the port would be 5911)
            USERNAME = Username of the master account.
            PASSWORD = the password in the Session_info.txt file. (e.g. 1a2b3c4d)

```

Example of a working command line.

```
docker run --name RattyDAVE20.04-tools \
           --privileged=true \
           -p 3389:3389 \
           -e TZ="Europe/London" \
           -v %LOCAL_PATH_TO_CREATEUSERS.TXT_FILE%:/root/createusers.txt \
           -v %LOCAL_PATH_TO_STARTUP.SH_FILE%:/root/startup.sh \
           -v %LOCAL_PATH_TO_HOME_DIRECTORY%:/home \
           -dit --restart unless-stopped \
           rattydave/docker-ubuntu-xrdp-mate-custom:20.04-tools

```

Please note some clients need an extra parameter set glyph-cache. xfreerdp, remmina and others need this set.

Linux example of how to connect `xfreerdp /v:xxx.xxx.xxx.xxx /drive:home,/home/xxxx +clipboard +glyph-cache`
