Entrada

Configuración de XRDP en Ubuntu Docker en Synology NAS

Si compró un Synology NAS de nivel básico que admite la función VMM (Virtual Machine Manager), es posible que le haya gustado instalar Windows o Ubuntu en el VMM. Sin embargo, es posible que se sienta decepcionado por el largo tiempo de instalación y el bajo rendimiento.

Para esas personas, instalar XRDP en Ubuntu Docker puede ser la mejor opción para habilitar el sistema operativo con una interfaz GUI.

Explicaré dos métodos. Una es instalar XRDP en Docker de la máquina virtual de Ubuntu y la otra es crear un contenedor de Ubuntu en la aplicación Docker de Synology NAS y configurarlo para que sea accesible externamente a través de XRDP.

Contenedor acoplable XRDP en Ubuntu VM

Cree una imagen de Docker y ejecute el contenedor

Crearemos una imagen de Docker basada en la siguiente información. Creemos Dockerfile con el contenido a continuación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
FROM ubuntu:20.04

RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -y lubuntu-desktop

RUN rm /run/reboot-required*

RUN useradd -m testuser -p $(openssl passwd 1234)
RUN usermod -aG sudo testuser

RUN apt install -y xrdp
RUN adduser xrdp ssl-cert

RUN sed -i '3 a echo "\
export GNOME_SHELL_SESSION_MODE=Lubuntu\n\
export XDG_SESSION_TYPE=x11\n\
export XDG_CURRENT_DESKTOP=LXQt\n\
export XDG_CONFIG_DIRS=/etc/xdg/xdg-Lubuntu:/etc/xdg\n\
" > ~/.xsessionrc' /etc/xrdp/startwm.sh

EXPOSE 3389

CMD service xrdp start ; bash

Luego, crearemos una imagen de Docker basada en el Dockerfile creado. Luego, crearemos y ejecutaremos un contenedor con la imagen creada.

1
2
3
4
5
6
7
8
9
# change permission of docker.sock if there is permission error when docker build
sudo chmod 666 /var/run/docker.sock;sudo chown -R ${USER}:users /var/run/docker.sock

# build docker image from Dockerfile
docker build -f Dockerfile -t img-xrdp-lubuntu .

# create docker container from image 
docker run -d -it --name cond-xrdp-lubuntu -p 3389:3389 img-xrdp-lubuntu

Configuración de reenvío de puertos en VirtualBox

Si desea acceder a XRDP desde fuera de la máquina virtual al contenedor Docker de la VM de Ubuntu, debe configurar el reenvío de puertos en la VM de Ubuntu. Cuando intenta conectarse al puerto 43389 usando el protocolo RDP, esto se asigna al puerto 3389 dentro de la VM de Ubuntu.

Configuración de reenvío de puertos de VirtualBox para conexión XRDP Configuración de reenvío de puertos de VirtualBox para conexión XRDP

Acceso remoto XRDP

Luego, conéctese a la dirección 127.0.0.1:43389 a través de una conexión de escritorio remoto.

Conexión de escritorio remoto Conexión de escritorio remoto

Luego, se abrirá la ventana de inicio de sesión de XRDP, ingrese el “nombre de usuario” y la “contraseña” a continuación.

Pantalla de inicio de sesión de Ubuntu XRDP Pantalla de inicio de sesión de Ubuntu XRDP

  • username : testuser
  • password : 1234

Contenedor Docker XRDP en Synology NAS

Instalación del paquete Docker y configuración del puerto del contenedor

Acceda a la GUI de Synology NAS. Luego busque Docker en el Centro de paquetes e instálelo.

GUI de Synology NAS - Centro de paquetes - Docker GUI de Synology NAS - Centro de paquetes - Docker

Descargué la imagen de Docker ubuntu:20.04 y creé un contenedor basado en esa imagen. Y en la configuración del puerto del contenedor, se abrieron el puerto 422 para ssh y el puerto 43389 para XRDP.

GUI de Synology NAS - Contenedor Ubuntu - Configuración de puertos GUI de Synology NAS - Contenedor Ubuntu - Configuración de puertos

Instalar paquetes ubuntu SSH y XRDP

Instale openssh-server siguiendo el siguiente comando. ssh será útil más adelante cuando acceda de forma remota al contenedor acoplable de Ubuntu.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apt update
apt install openssh-server
apt install -y net-tools
apt install -y vim

vim /etc/ssh/sshd_config
# ----------------------------------------------
# enable `PermitRootLogin` and set it to `yes`
PermitRootLogin yes
# ----------------------------------------------

passwd root 
# ----------------------------------------------
# it will be ssh login password, i have set it as `0000`
0000
# ----------------------------------------------

service ssh start

Luego, instale los paquetes para XRDP siguiendo el siguiente comando. Probablemente verá muchos mensajes de error al instalar XRDP siguiendo el siguiente comando. Este es un error relacionado con dependencias de hardware como sonido y USB, etc., al instalar “lubuntu-desktop”. Ignore el mensaje de error y continúe.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apt update && DEBIAN_FRONTEND=noninteractive apt install -y lubuntu-desktop
rm /run/reboot-required*
useradd -m testuser -p $(openssl passwd 1234)
usermod -aG sudo testuser
apt install -y xrdp
adduser xrdp ssl-cert

sed -i '3 a echo "\
export GNOME_SHELL_SESSION_MODE=Lubuntu\n\
export XDG_SESSION_TYPE=x11\n\
export XDG_CURRENT_DESKTOP=LXQt\n\
export XDG_CONFIG_DIRS=/etc/xdg/xdg-Lubuntu:/etc/xdg\n\
" > ~/.xsessionrc' /etc/xrdp/startwm.sh

service xrdp start

Acceso remoto XRDP

Conéctese a XRDP utilizando la dirección IP asignada a su Synology NAS y conéctese al puerto 43389 configurado anteriormente.

MobaXterm - Sesión RDP MobaXterm - Sesión RDP

Luego, se abrirá la ventana de inicio de sesión de XRDP, ingrese el “nombre de usuario” y la “contraseña” a continuación.

Pantalla de inicio de sesión de Ubuntu XRDP Pantalla de inicio de sesión de Ubuntu XRDP

  • username : testuser
  • password : 1234

Si el contenedor Docker se detiene y reinicia, los servicios ssh y xrdp se deben ejecutar nuevamente.

No sé el motivo exacto, pero una vez que se inició el servicio xrdp, tuvo que reiniciarse después de un retraso para que xrdp funcionara normalmente. Y desde la segunda conexión xrdp, la barra de menú inferior se mostró en la GUI. Puede guardar y utilizar el contenido siguiente como un script bash.

1
2
3
4
5
6
7
8
9
10
11
echo "start ssh.."
service ssh start

echo "start xrdp.."
rm /var/run/xrdp/xrdp-sesman.pid
service xrdp start
echo "sleep 10 sec.. "
sleep 10
echo "restart xrdp"
service xrdp restart

Referencia

  • https://youtu.be/0rl5145aEMk?si=aoO3eZyDLPnmCfr

Esta entrada está licenciada bajo CC BY 4.0 por el autor.