Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ubuntu Virtual Desktop in a Docker Container (with RDP Access)

Featured Replies

Thanks jonp, for an amateur enthusiast it's fascinating reading development stuff like this.

 

Might be a daft question but what's wrong with using the guacamole docker to access the container.  It's already present and working, you need docker to run this planned container anyway, so just solve the docker access problem by using a docker?

 

Or have I got completely the wrong end of the stick?  ???

  • Replies 118
  • Views 64.2k
  • Created
  • Last Reply

Thanks jonp, for an amateur enthusiast it's fascinating reading development stuff like this.

 

Might be a daft question but what's wrong with using the guacamole docker to access the container.  It's already present and working, you need docker to run this planned container anyway, so just solve the docker access problem by using a docker?

 

Or have I got completely the wrong end of the stick?  ???

And this container already has OpenJDK, so it should be a no brainer to integrate.

  • Author

Thanks jonp, for an amateur enthusiast it's fascinating reading development stuff like this.

 

Might be a daft question but what's wrong with using the guacamole docker to access the container.  It's already present and working, you need docker to run this planned container anyway, so just solve the docker access problem by using a docker?

 

Or have I got completely the wrong end of the stick?  ???

And this container already has OpenJDK, so it should be a no brainer to integrate.

 

Well there's multiple ways to address this, but one method we do NOT want to consider is requiring the presence of a container in order to connect remotely to another container.  Either A) the mechanism for connecting needs to be individually baked into each container [or a common base image] or B) the mechanism for connecting needs to be baked into the base OS.  I think we're leaning more towards option A at this point, but open to hearing input on this.

  • Author

Got wsgate compiled. Now time to package and test.

 

Woo hoo!!  Awesome work!!  I'll keep fingers crossed for your test!

I have a question about the cpu% used by ubuntu rdp that I'm testing. I notice that it's the only process that's consistently above 14% at any given time and it doesn't go below that and at times peaks to 25%. I have 10 plugins and 3 docker apps running all the time and none of them come close the constant 14%+ of this app. I presume this is not normal?

 

 

  • Author

I have a question about the cpu% used by ubuntu rdp that I'm testing. I notice that it's the only process that's consistently above 14% at any given time and it doesn't go below that and at times peaks to 25%. I have 10 plugins and 3 docker apps running all the time and none of them come close the constant 14%+ of this app. I presume this is not normal?

 

That actually doesn't seem out of line for me at all.  You have to realize that what this container is doing is it's creating a GPU out of nothing.  It's using your CPU to create a virtual frame buffer, which is actually quite taxing on a CPU.  Factors that can impact your utilization also would include the resolution.  For example, in my video, I was actually connected at 4K resolution, so that was pushing the CPU much more probably than your setup (unless you too were in a 4K session).

 

This is one of the primary reasons that web-based applications are better less taxing on a server, as they use the graphics processing power of the client device to render the interface, as opposed to desktop GUI applications which need the server to render the graphics for the interface, then use a remote graphics protocol to export those graphics to a capable client (browser, VNCviewer, etc.)

Okay I get it now. I completely disregarded the GPU process. Makes more sense when you put it that way.

 

LOL, I do have one more noob question tho. Correct me if I'm wrong but don't Intel and AMD cpu's come HD (gpu's) built into the processor, and perhaps use the full capability of those GPU's by coding the image in that way? I think the XEON's and maybe Opteron's don't have that capability but cpus (apu's) like the Intel i5 and i7 and AMD A and FX series do. Possible?

  • Author

Okay I get it now. I completely disregarded the GPU process. Makes more sense when you put it that way.

 

LOL, I do have one more noob question tho. Correct me if I'm wrong but don't Intel and AMD cpu's come HD (gpu's) built into the processor, and perhaps use the full capability of those GPU's by coding the image in that way?

 

There are projects that intend to help with this capability I think in the future, but not right now and probably not with Docker.  Integrated graphics devices are somewhat unique from other types in how they utilize system RAM and CPU resources to generate graphics.  In addition, passing through devices with Docker would require that we supply drivers for them in our kernel, which isn't really a good idea for the sake of system stability.  To put it more simply, if a driver issue occurred in our host kernel, there is a probability that it could cause host instability and even a crash.  But with VMs and IOMMU, we can use a generic virtual driver (VFIO) and assign the graphics device to a VM while isolating it's memory access.  Docker doesn't have a mechanism to utilize IOMMU (that I know of) but virtual machines do.

Just watched the video on the OP and this is pretty slick! It gave me an idea (sorry if someone posted this on the other 6 pages, no time to read them all  :P). Would it be possible to connect to this ubuntu RDP docker once unRAID boots up in its command line screen? It would then be possible to manage the unRAID GUI from unRAID itself! It would be really helpful for those of us who are only running VM's as our main desktop now because if I need to add another harddrive to my server I need to stop unRAID which shutdowns my VM's. I then have to pull out my old laptop to access the unRAID GUI. How awesome would it be to not have to do that?!?!?!?  ;D

  • Author

Just watched the video on the OP and this is pretty slick! It gave me an idea (sorry if someone posted this on the other 6 pages, no time to read them all  [emoji14]). Would it be possible to connect to this ubuntu RDP docker once unRAID boots up in its command line screen? It would then be possible to manage the unRAID gui from unRAID itself! It would be really helpful for those of us who are only running VM's as our main desktop now because if I need to add another harddrive to my server I need to stop unRAID which shutdowns my VM's. I then have to pull out my old laptop to access the unRAID GUI. How awesome would it be to not have to do that?!?!?!?  ;D

Good idea, but I don't think this would work. Not without needing us to add a ton of packages to unraid OS. There is a possible solution with VMs for this in the near term. Stay tuned.

Just watched the video on the OP and this is pretty slick! It gave me an idea (sorry if someone posted this on the other 6 pages, no time to read them all  [emoji14]). Would it be possible to connect to this ubuntu RDP docker once unRAID boots up in its command line screen? It would then be possible to manage the unRAID gui from unRAID itself! It would be really helpful for those of us who are only running VM's as our main desktop now because if I need to add another harddrive to my server I need to stop unRAID which shutdowns my VM's. I then have to pull out my old laptop to access the unRAID GUI. How awesome would it be to not have to do that?!?!?!?  ;D

Good idea, but I don't think this would work. Not without needing us to add a ton of packages to unraid OS. There is a possible solution with VMs for this in the near term. Stay tuned.

 

 

I won't wander off down that path again in this thread, lol.

Good idea, but I don't think this would work. Not without needing us to add a ton of packages to unraid OS. There is a possible solution with VMs for this in the near term. Stay tuned.

I'm so excited!

Had another mess about with a desktop image, this time with openoffice and trying for persistant data.

 

Thus far i've been able to set a wallpaper on the desktop, totally remove the container and then pull it from dockerhub again via a template in my private repo, and the wallpaper is still set.

I've set a name in the wizard that opens when you first openoffice and that's persisted along with the wallpaper as above.

I've set a name in the wizard that opens when you first openoffice and that's persisted along with the wallpaper as above.

 

Reverted back to libreoffice, didn't like openoffice at all.

 

also set the openoffice default save location to unraid volume by swapping in a config file.

  • Author

I've set a name in the wizard that opens when you first openoffice and that's persisted along with the wallpaper as above.

 

Reverted back to libreoffice, didn't like openoffice at all.

 

also set the openoffice default save location to unraid volume by swapping in a config file.

Nice!  I never really cared for open office myself compared to MS office, but libre office is new to me, so I'm excited to try it out!!

that should read set the libreoffice save default folder.

 

 

the container is in my beta repo.

 

 

A new finding: we have to reconfigure the timezone upon startup:

 

if [[ $(cat /etc/timezone) != $TZ ]] ; then
  echo "$TZ" > /etc/timezone
  dpkg-reconfigure -f noninteractive tzdata
fi

 

Just put this in my test-container of libreoffice, clocks changed this morning and the thing is an hour out now.

A new finding: we have to reconfigure the timezone upon startup:

 

if [[ $(cat /etc/timezone) != $TZ ]] ; then
  echo "$TZ" > /etc/timezone
  dpkg-reconfigure -f noninteractive tzdata
fi

 

Just put this in my test-container of libreoffice, clocks changed this morning and the thing is an hour out now.

 

That's quite right if you moved from a timezone to another, since the TZ will remain "hardcoded" in the container's configuration. You have to recreate the container to set a new value.

put that block at the top of my firstrun.sh

 

#!/bin/bash

if [[ $(cat /etc/timezone) != $TZ ]] ; then
  echo "$TZ" > /etc/timezone
  dpkg-reconfigure -f noninteractive tzdata
fi

mkdir -p /home/ubuntu/unraid
mkdir -p /home/ubuntu/.config/libreoffice/4/user

if [ -d "/home/ubuntu/unraid/wallpapers" ]; then
echo "using existing wallpapers etc..."
else
mkdir -p /home/ubuntu/unraid/wallpapers
cp /root/wallpapers/* /home/ubuntu/unraid/wallpapers/
fi

if [ -f "/home/ubuntu/.config/libreoffice/4/user/registrymodifications.xcu" ]; then
echo "using existing libreoffice settings file"
else
cp /root/registrymodifications.xcu /home/ubuntu/.config/libreoffice/4/user/
chown -R ubuntu:users /home/ubuntu/
chmod -R 755 /home/ubuntu/.config/libreoffice
chmod 600 /home/ubuntu/.config/libreoffice/4/user/registrymodifications.xcu
fi

mkdir  /var/run/sshd
mkdir  /root/.vnc
/usr/bin/supervisord -c /root/supervisord.conf
while [ 1 ]; do
/bin/bash
done

 

so hopefully should sort itself out on any stop/start of the container ?

 

another thing, is this good, bad or dangerous ?

setting user ubuntu to same uid and guid as unraids.

 

 

# create ubuntu user
useradd --create-home --shell /bin/bash --user-group --groups adm,sudo ubuntu && \
echo "ubuntu:PASSWD" | chpasswd && \

# set user ubuntu to same uid and guid as nobody:users in unraid
usermod -u 99 ubuntu && \
usermod -g 100 ubuntu && \

 

if it's ok, i'm thinking about a global umask perhaps too, but that permissions crap gives me a headache, what umask do i need to best approxiamate unraid defaults ?

Another video, lol.

 

no sound at all on this one.

 

 

Like the lime desktop ?

Good job mate.  I'm very impressed!

  • 2 weeks later...

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.