Geeks With Blogs
Jeremy Morgan Ramblings of a Polyglot coder

Like many geeks of the time I spent the 90s and 2000s with at least 2 or 3 old computers in a closet, connected by a switch running various operating systems with various services running on them. Giant, loud, clunky machines whirring away.

Jeremy Morgan, about 2003 or so

This very website was hosted for years on an old Pentium Machine running FreeBSD connected to my DSL line in my bedroom. It was just the way you did things then.

I had stacks of hard drives with labels on them. Ebay specials I'd purchased for the sole purpose of putting different operating systems on them. Everything from Redhat, Gentoo, FreeBSD or various versions of Windows, I would just swap the drive and go.

For years I lived in a condo that had a coat closet near the front door with an electrical outlet in it. I ran Ethernet through the ceiling and filled it to the top with machines. All for development, file servers, and web hosting purposes. It all seems a little silly now.

2018 is a little different...

These days I have an Azure Account, AWS, and Digital Ocean. Virtualization has made progress even the most die hard geeks didn't expect. Even development itself is a bit abstracted from the bare metal these days, at least for most people. Things like Docker will make the OS and it's configuration almost irrelevant.

Yet I still have a server in my house, and I want to show you guys the setup.

HP xv8600 Xeon Server

This is an old HP Xeon Workstation I picked up that was going to use for course production, but even with 2 Xeons and 32 gig of RAM it fails to outperform my Mac Mini for video and audio rendering. So I decided to use it for some remote virtualization stuff, and stuffed it in a corner of our daylight basement.

Why do I need this?

Lately I've been doing a lot of random software development and building courses online. For those courses I need a fresh operating system and development environment. Obviously I could record some of these things on my desktop, but with the frequent configuration changes and software installs I could mess up the accuracy of my courses. So I want a machine with a dedicated operating system for each course. That motivated me to set this up.

Getting the server setup

To start this out, I originally had Windows 10 on this server. It ran well, the performance was not too bad. But if I were to use this as only a Virtualization machine, the overhead wasn't that great.

Window 10 Memory Usage

This is with the machine "at an idle". I was using up 2 gigs of memory just loading up a desktop with nothing else. Surely I could do better than that.

It should come as a surprise to nobody I decided to go with Linux base, and I installed Debian 9 on it. Why Debian? It's the same OS that powers jeremymorgan.com and I like it because it's lean, simple and well supported. It doesn't have the bleeding edge packages (I use Arch on the Desktop for that) but it's stable. Incredibly stable. I wanted something I could install and forget about. So Debian was my choice.

I went with a barebones Linux installation, custom kernel and no window manager, and found that the idle was significantly better:

Linux Memory Usage

This gives me a little more headroom and CPU cycles to work with.

I ended up installing LXDE because it's easier to configure and manage VMs with a window system. But I needed to set my server to boot to just a console, that way I can start and stop the windowing environment when I wanted to.

To do that, I had to set my runlevel, which is a little different these days than in the past. If you want your server/desktop to boot to a prompt, do this:

systemctl get-default

In my case, it said

graphical.target

Which is not what I want. So I then type in:

systemctl set-default multi-user.target

that way I can just fire up the server at a prompt and not have to have the windowing system loaded in memory. Yep, it's that easy.

Default Runlevel Target for Debian

So now I had a nice lean and stable OS base to start with.

Then I installed LXDE and then used xrdp to set up a remote desktop so I never have to walk over to the server to do anything. I just remote in from my office.

Setting up virtual machines

For the Virtualization, I chose Virtual Box. I've worked with Hyper-V and VMWare in the past and they each have their merits, but for this application this works best for me. I originally attempted to setup Hyper-V server but my machine was too old and didn't support it fully. So this worked out.

Virtual Box Setup

Now one thing about Virtual Box that's awesome is you can virtual machines "headless" from the command line. This is a great feature if you want to spin up a bunch of them. I can run 3 to 4 servers at a time without a blip in performance (ok 32 gigs of RAM and Xeons help with that).

Installing the machines is super easy. You can choose to allocate as much hardware as you'd like, or don't like to the mix:

Virtual Box Memory

And CPU usage is handled nicely:

Virtual Box CPU Setup

For networking, I set up one bridged adapter to communicate with the outside world, and another adapter for an internal network to communicate with other servers:

Bridged Network Adapter VirtualBox

It can't be beat. So now I have several VMs set up and ready to go.

Running the Virtual Machines

So now I have my server booted at just a prompt, and I can list all my available virtual machines:

VBoxManage list vms

Virtual Box List VMs

This is pretty handy. I can start them up here, then RDP into them from my office machine. Virtualbox uses VRDP to provide the headless interface to the outside world. I've used it extensively the last few weeks with zero problems.

I can start up a VM with the following command:

	VBoxManage startvm "<VM NAME>" --type headless

I even have some shell scripts to start up clusters or sets of machines at once.

Then, I can just check to see the machine are running:

	VBoxManage list runningvms

Show running VMs in Virtual Box Command line headless

And it's that easy!

Here's one thing that's not so easy... finding an IP address. The only real reliable way to get it is by going into my router and looking for them. Some machines I have statically assigned an IP for ease of use. If you don't do that though, you can always just show the VM from the Windowing interface:

Show Desktop Virtual Box

And then type in ipconfig, ifconfig, ip a, etc to get the IP.

I can RDP into any of these machines, do development, record courses, whatever I need.

RDP into Debian Virtual Machine

It works out great. Since it's on my local network it feels and performs like I'm on the desktop.

Conclusion

So I just wanted to show my setup and how I've been running things lately. This works really well for course production, because I can RDP in, full screen it on one window and record it as I go through the steps. I can also develop stuff and run/test it out. I've put in a replica of this website in, with the identical configuration for testing/development.

It works great. I'll probably find a better way to do it, or you may know a better way, feel free to leave it in the comments, or yell at me on Twitter. Thanks!

About the Author

Jeremy Morgan is a software engineer with over a decade of experience as a polyglot coder, dabbling in both LAMP and .Net worlds equally. He enjoys creating tutorials for new programmers in the hopes it will encourage more people to join this exciting hobby. Check out his programming blog here or say hi on Google+ sometime.

Posted on Tuesday, February 20, 2018 3:56 PM Development , Docker , Linux Server , Virtualization , Virtual Box , Linux | Back to top


Comments on this post: My Latest Virtualization Setup

# re: My Latest Virtualization Setup
Requesting Gravatar...
That is quite the setup you have there! Reminds me of my days in college, had a similar machine.

buy upc codes
Left by Product Barcodes on Feb 22, 2018 8:59 PM

# re: My Latest Virtualization Setup
Requesting Gravatar...
i need post www.geekswithblogs.net

i am wait....................
Left by arida naz on Feb 25, 2018 11:22 PM

# re: My Latest Virtualization Setup
Requesting Gravatar...
This is the kind of manual that needs to be given and not the random misinformation that's at the other blogs.
cool math games
Left by Anna Shetty on Mar 06, 2018 6:44 PM

# re: My Latest Virtualization Setup
Requesting Gravatar...
You should have used Proxmox which is a Debian with an nice webUI optimised for virtualisation with KVM/Qemu. I use it for more than 5 years now and it works perfect with everything included.
Left by Kaai24 on Mar 09, 2018 4:21 AM

# re: My Latest Virtualization Setup
Requesting Gravatar...
Thank for share. it's interesting to hear. I'm also planning to see all the movies that went to theaters. I think I will start with a review of the movies I watched
- slope
Left by slope on Apr 11, 2018 2:05 AM

# re: My Latest Virtualization Setup
Requesting Gravatar...
It’s a tricky question and you have done a great job providing information regarding Virtualization Setup. The detailed explanation to each and every topic give a better idea about everything to be considered in coding. I would really be happy to contribute any information if I can. for more information
Left by Taylor Shaw on Apr 13, 2018 12:26 AM

# re: My Latest Virtualization Setup
Requesting Gravatar...
Remarkable! Its truly remarkable paragraph, I have got much clear idea concerning from this paragraph.ps4 games free
Left by Hertogtog on May 18, 2018 10:05 AM

Your comment:
 (will show your gravatar)


Copyright © Jeremy Morgan | Powered by: GeeksWithBlogs.net