Sign inSign up

retali8/ubuntu-xrdp

By retali8

•Updated over 4 years ago

Image
0

768

retali8/ubuntu-xrdp repository overview

⁠Ubuntu 20.04 Multi User Remote Desktop Server

Fully implemented Multi User xrdp with xorgxrdp and pulseaudio on Ubuntu 20.04. Copy/Paste and sound is working. Users can re-login in the same session. Xfce4, Firefox are pre installed. Docker inside Docker support.

⁠Tags

retalieight/ubuntu-xrdp:latest

⁠Usage

Start the rdp server (WARNING: use the --shm-size 1g or firefox/chrome will crash)

⁠Standard installation

docker run -d --name uxrdp --hostname terminalserver --shm-size 1g -p 3389:3389 -p 2222:22 retalieight/ubuntu-xrdp:latest

*note if you already use a rdp server on 3389 change -p :3389 -p 2222:22 is for ssh access ( ssh -p 2222 ubuntu@ )

Connect with your remote desktop client to the docker server. Use the Xorg session (leave as it is), user and pass.

⁠Docker-inside-Docker

docker run -d --name uxrdp --hostname terminalserver -v /var/run/docker.sock:/var/run/docker.sock --shm-size 1g -p 3389:3389 -p 2222:22 retali8/ubuntu-xrdp:latest

⁠Creation of users

To automate the creation of users, supply a file users.list in the /etc directory of the container. The format is as follows:

id username password-hash list-of-supplemental-groups

The provided users.list file will create a sample user with sudo rights

Username: ubuntu Password: ubuntu

To generate the password hash use the following line

openssl passwd -1 'newpassword'

Run the xrdp container with your file

docker run -d -v $PWD/users.list:/etc/users.list

You can change your password in the rdp session in a terminal

passwd

⁠Add new users

No configuration is needed for new users just do

docker exec -ti uxrdp adduser mynewuser

After this the new user can login

⁠Add new services

To make sure all processes are working supervisor is installed. The location for services to start is /etc/supervisor/conf.d

Example: Add mysql as a service

apt-get -yy install mysql-server
echo "[program:mysqld] \
command= /usr/sbin/mysqld \
user=mysql \
autorestart=true \
priority=100" > /etc/supervisor/conf.d/mysql.conf
supervisorctl update

⁠Volumes

This image uses two volumes:

  1. /etc/ssh/ holds the sshd host keys and config
  2. /home/ holds the ubuntu/ default user home directory

When bind-mounting /home/, make sure it contains a folder ubuntu/ with proper permission, otherwise no login will be possible.

mkdir -p ubuntu
chown 1000:1000 ubuntu

⁠Installing additional packages during build

The Dockerfile has support for the build argument ADDITIONAL_PACKAGES to install additional packages during build. Either pass it with --build-arg during docker build or add it as args in your docker-compose.override.yml and run docker-compose build.

⁠To run with docker-compose

git clone https://github.com/retalieight/ubuntu-xrdp.git
cd ubuntu-xrdp/
vi docker-compose.override.yml # if you want to override any default value
docker-compose up -d

Tag summary

Content type

Image

Digest

Size

713.6 MB

Last updated

over 4 years ago

docker pull retali8/ubuntu-xrdp