Ubuntu Server install with full GUI

Coming from windows server/MacOS...

I've been researching for my first linux deployment and I have settled on Ubuntu/GlusterFS for a high performance file server.

I have a question about the resources needed by GUI. I understand this is a server and it should be bare bones for performance, but I have a situation where this server might be administered occasionally by a non-technical person that is not comfortable whatsoever with command-line. I don't want light versions of applications, if they get distracted and watch youtube videos, dropbox uploads, email or whatever they do while at the server that does not bother me whatsoever. What does bother me is getting a call because youtube/dropbox doesn't work on the server and they didn't want to leave the machine room.

In my research I've only seen absolutely negative things about the gui resource use. Some reports are as high as 50-60% resources used by gui alone. Is this applicable to a purpose built machine, something like 36 bay supermicro with top line dual processor/128GB/256GB RAM, or is this only relative to minimum spec boxes?

Also, is this happening when these heavy packages (mediaplayer/browser/etc) aren't open, or only when they need processing? If they don't use resources other than disk space, no big deal. Even if they use a bit, that's fine too, I would willingly give 4-8GB RAM overall, which is waaaay too much, but I really don't want that call. There will be sufficient headroom built into all aspects of resources.

Would it be beneficial at all to install ubuntu server and then the gui over the top, or is the full gui version of ubuntu fully capable as server OS, just bloated and prettier?

I am coming from no linux experience, so to see this sort of server with gui specific comment is very alarming.

Any help appreciated, thanks Y'all


Solution 1:

Ubuntu is Ubuntu. The server and desktop editions run on the same base and pull from the same repositories, they're just pre-configured differently out of the box. Since they point at the same repositories, it would be absolutely fine to do a sudo apt install ubuntu-desktop on a server system in order to get a GUI up and running.

GUIs do use system resources, but not much, especially when the DE is idling, and especially on a system with hundreds of GBs of RAM and a dual socket motherboard. If installing a GUI on your server would be beneficial and help your team be productive, then you won't hurt a thing by doing so. I personally don't like running GUIs on servers because they do use some RAM even when idling, but to each their own. In my synaptic I see 4 different options for GUIs that you can install without getting exotic and adding additional software sources:

  • ubuntu-desktop (Installs the default Ubuntu and Gnome Shell experience, which is what you get if you download regular desktop Ubuntu)
  • kubuntu-desktop (Installs the default Ubuntu and KDE experience, more Windows-esque)
  • lubuntu-desktop (Installs the default Ubuntu LXDE experience, LXDE is billed as being lightweight)
  • xubuntu-desktop (Installs the default Ubuntu XFCE experience, XFCE is billed as being lightweight)

So to install one of these just run sudo apt install packagename

Just be aware that those packages are what are known as "meta" packages, in that they don't contain anything themselves, they just point to a whole list of other packages that set up a predefined condition, such as a default Kubuntu desktop environment with all of the normal applications that would come with that. What that means is that when you install one of those, you might see it download a LOT of additional packages, and it may actually take a few minutes to set up. You may also see it brand your "server" as Kubuntu, Lubuntu, etc. Don't be alarmed, it's just a logo, :-)

Solution 2:

Since you ask for any help at all, I’ll chime in, hoping for no downvoted:) I know someone who installs GUI packages on such servers where a remote UI would be needed for troubleshooting. It’s useful for users that aren’t familiar with cli too much. So it does work. The GUI is just a package and it’s dependencies (so many packages) something like apt-get install ubuntu-desktop

The way I understand it is that the GUI uses X amount of resources. It won’t use more than it needs. So if your box has a lot more resources, it shouldn’t be detrimental.

Here the thing that you might want to use. If you install the GUI, don’t make it load by default. So the target shouldn’t be this interface. Rather you should configure your server to be a server and also have the ability to load the graphical interface with one command. This way the GUI won’t be running and most of these recourses won’t be used unless you need them.

Good luck and hope this helps!

edit: I missed one point. GUI version of Ubuntu is fully capable. The thing is, for example, you won’t have the webserver, because it comes by default with the packages designed for desktop use. But anyway even on the server version you’d need to install a webserver and also configure it, because you might be using various web servers, and Ubuntu team doesn’t know which one you want for sure. But for example the SSH stuff, Ubuntu desktop comes with the client not with ssh-server. However if you install the server version, it will have the ssh-server by default. Again even on a desktop, installing ssh server is trivial and is a one liner

Solution 3:

Since nobody has yet answered the question of resources usage, I’ll take a stab. Ubuntu server has the following system requirements:

  • 300 MHz x86 processor
  • 256 MiB of system memory (RAM)
  • 1.5 GB of disk space
  • Graphics card and monitor capable of 640x480

From here

Installing the Ubuntu-desktop package (which I assume is what you’re talking about when you say adding a GUI) makes the system essentially like you had installed the desktop version. The desktop version has the following requirements:

  • 2 GHz dual core processor
  • 2 GiB RAM (system memory)
  • 25 GB of hard-drive space
  • VGA capable of 1024x768 screen resolution

Also from here

Certainly more resources utilized, and approximately in line with the 50-60% number you quote, but really not a lot when you’re talking about server-class resources.

On to the second point: should you install the server edition, then add the Ubuntu-desktop meta package, or install the desktop edition directly? The functional differences between the two are small, and from an appearance perspective almost nonexistent. These two options will look almost identical, the difference will be in how you ‘expect’ to configure things like network interfaces, displays, hard disks, etc. The server edition will not come with the ‘convenience tools’ for easily configuring and managing these items (NetworkManager, Disks, etc.), and will instead assume that you want full manual control of the configuration and management of these things.

Small amount of resources aside, this choice comes down to who will be doing the configuration and management, and what skill level they have/amount of manual control they want.

Solution 4:

I have been running various versions of Ubuntu Server with a lightweight GUI for many years.

After the base install I add a minimal graphic environment via apt-get install xinit, and then I add fluxbox which is a window manager with a small footprint. Then I add audio support via apt-get install alsa-utils. Browsers nowadays expect pulseaudio to be present for audio to work, but there is an excellent tool named apulse that emulates pulseaudio good enough for e.g. youtube watching, without requiring pulseaudio itself to be installed (or you can of course install the full pulseaudio package if you prefer).

This is very bare-bones, and doesn't use more than a couple of hundred MB of virtual memory when no graphical applications are active.

Solution 5:

Aside from the performance/system spec issues recounted above, it's typically recommended not to run a gui on a dedicated server, for security reasons. The argument is, that a gui runs more services and processes than a bare-bones kernel and server apps, and each provides a potential route of attack on the system. I am far from expert on the magnitude of any additional risk, but depending on your environment you might want to check it out. Hopefully others here may be able to advise.