I'm primarily a developer, but as part of this I'm running an Ubuntu server for a client where he has several small to medium sized websites. Although my main development environment has generally been Windows I'm reasonably familiar with Linux (I run Ubuntu on one of my two main workstations) and command line unix (admin'ing Oracle on HP-UX in the late 90's)

So although I do feel fairly competent on the command line, I'm still a little rusty and generally prefer a GUI. I know I could install a desktop on Ubuntu server, but I'm uncertain if I should, so my questions are

  1. Is there any particular risk or reason why I should not install a desktop on Ubuntu server? In particular any security or performance issues? Or should I just grit my teeth and get completely back up to speed on the command line?

  2. If installing a desktop is a reasonable option which one should I choose? I really don't need the bloat of Gnome or KDE - just an environment where I have access to the basic GUI facilities and maybe a browser to make downloading scripts and the like more straightforward. Would XFCE be suitable?

This is very much an ease-of-use centred question - I'm not after a complete command line replacement, just something to make moving around the system and performing basic tasks run a little more smoothly for someone who is not going to be a dedicated Linux admin.


The only difference between Ubuntu Server and Ubuntu Desktop, are the Desktop packages which you can install with apt-get.

I can see several reasons why I wouldn't use it on a remote server:

  1. ssh is much faster, X11 over ssh would be slower.
  2. It's a load on the server that it doesn't need. I prefer a server to be lean and mean, with minimal packages. It's also easier for the updates.
  3. wget is very simple for downloading. I usually copy URLs from Firefox and type wget, then paste the URL
  4. No need for a dedicated Linux admin, but the basic commands are quite straightforward.
  5. To manage files and file transfer between the server and your PC, you could use SCP, WinSCP is a nice windows version. (SCP does its magic through ssh).
  6. rsync is also a very useful command to synchronize data (one-way), you can also use Unison for two-way sync.
  7. learn to use an editor, I like joe, pico, and emacs, but there are many other nice editors.

I almost whole-heartedly support the command line, but I think it depends on what you need to do. Which basic tasks do you need to make easier?

If you're looking to manage the files on the server in a more graphical manner and don't want to use something like midnight commander (see a screenshot here) then you could set it all up so that you can mount some directories from the server on your development machine using nfs or sshfs - you'd get your access, but without the performance and disk overhead of having a full desktop environment.

Update:
Here's a quick tutorial on setting up sshfs, and here's one for nfs.
I've never actually used sshfs yet, but from the look of the tutorial it's a bit easier than nfs, especially if you've already got ssh and things set up.

I believe that the NFS version should be quicker in terms of file transfer speed, since it won't do any encryption.


Another option is to run a local X-Server on your machine and then use SSH with X port forwarding turned on. See How can I enable X11 forwarding to a Debian server box?

this will let you open up X apps locally on your machine without creating too much overhead on the server.


I don't know how much value enabling a GUI will actually give you. Most of the things that you need to do to manage a server you are going to have to do in a terminal anyway. The things that a GUI might help you with are probably things you are going to have to learn anyway to deal with services that don't have any GUI tools for managing them.

If installing a desktop is a reasonable option which one should I choose?

I like XFCE, it is light, if you are just looking for a file-browser this may be help you some. But I think it doesn't matter what you choose, most of the desktop environments aren't really aimed at managing a server.

If you do decide you actually need to do this, I suggest that you disable GDM/KDM. So the X server isn't left running when you don't need it. Instead, just fire it up by logging into the console and running startx.

Is there any particular risk or reason why I should not install a desktop on Ubuntu server? In particular any security or performance issues?

The more stuff you install on a system the more likely it is that something has a bug that can be exploited. OTOH, a minimal windowing environment that isn't left running shouldn't result in any significant increase in security exposure or performance problems.


Byobu (formerly known as screen-profiles) is a set of scripts that work with GNU screen which will provide some of the benefits of a windowing system - you have a window list at the bottom of the terminal, along with a selection of indicators (time, cpu load, whether updates are required ...). There is a menu based on the F keys. See this article by the author, and this article from ars technica.

However it is not mouse driven, it will not provide a graphical file manager, you cannot run graphical applications using it.

So I don't know whether it would meet your needs exactly, but it might well do in combination with sshfs, as suggested in another answer.