Florida State University

Virtual Lab Project

Jose Rodriguez


Technology is always evolving, and it is important that a professional in the IT industry is always finding ways to stay on top of the changing technological landscape. A favorite method for IT professionals to accomplish this is by building their own personal lab computers. This presents an opportunity to test new software and hardware, and provides the ability to create a technology model of a business environment. The purpose of this project was to create a lab system to design and build technology models that mimic these environments in order to learn, demo, and find ways to benefit from these solutions.

The scope of this project was to build and establish a server with several different virtual machines (VM) and to establish some basic services to test and use. The server was custom built from individually purchased hardware components. It was set up with a type I hypervisor (software that allowed the computer to run virtual machines) on which we installed Windows Server 2012 and a Linux distribution hosts. Our primary goal was to establish services using a web, email, and private cloud storage server.

The Physical Server

Part of our plan for building the server was picking individual PC components and then assembling it. We ordered the following components:

  • Intel Xeon E3-1246 server processor
  • Supermicro mbd-x10sll server motherboard
  • Crucial 16gb ECC SDRAM unbuffered memory
  • Supermicro CSE-741i-300b server case
  • Samsung 850 evo 120gb SSD
  • Western Digital 500gb black HDD

The parts we ordered from Newegg and Amazon arrived on time. The Western Digital hard drive came from a pre-existing inventory of spare parts and was repurposed for this project. Assembly went smoothly and the server worked immediately on boot up.

Virtual Machines

Initially, there was an issue with getting the network interface card (NIC) to recognize the network through the hypervisor, but it was just a case of making sure the right NIC was connected out of the three available. After completing the hypervisor installation, we proceeded to install VM hosts of Windows Server 2012 and Linux. Both installed without issue with Windows being installed on the SSD with a 40gb partition, and Linux was installed on the HDD with a 30gb partition. Windows Server was used as a domain controller, and it is always a good idea to have a backup so a second Windows VM was also set up for that purpose on the HDD. We established admin control on Linux, and set up Active Directory on Windows.

After setting up Linux with user accounts with admin rights, we needed to establish a domain for the VM server. We already had a domain available from a prior project at Namecheap.com, and it offered dynamic dns services for the domain. We were able to enable that feature so that we could assign a subdomain name to the server and still be able to access it even if the IP changed. The server was being hosted through a residential cable internet service provided by Comcast. With a subdomain name established and opening the appropriate ports in the firewall, we were finally ready to access the services from the VM hosts.


After establishing the server, developing the services was our last major objective for this project. Our goal was to have email, web, and cloud storage services. We thought about potentially setting up more services, but these alone would take a fair share of our time. We thought these three services would provide the most value, and provide us with a better understanding of those technologies.

Web Hosting

Web hosting was installed on both Windows Server 2012 and Linux. For Windows Server we installed the Internet Information Service to be able to host. Linux uses Apache which is provided as an option when Unbuntu is installed. We used the web hosts to run the Microsoft Exchange Outlook Web Application, the OwnCloud web storage service, and this web site. Both operating systems make setting up a web server relatively painless, and they establish a lot of the necessary compents necessary to operate a web site. Linux required a little more work since it required that we change the default file system permission in order for visitors to access the website pages, but it is a minor configuration.

Email Hosting

The most challenging service to get installed was email. There were a lot of different components to getting this to work, and even with getting those pieces in place, we were not able to get email to work over the internet. We were only able to establish intranet email only. The biggest hurdle for getting email to work was the fact that it is more strictly managed by internet service providers. The SMTP ports required for email are now regularly blocked because of abuse from email spammers. Organizations have also started to actively track and blacklist domains that have their email servers hosted on dynamic internet IPs since this is a typical attribute of email spammers. This resulted in the “jrodprojects.com” domain being added to a few of those lists with just a few test emails. Discovering this problem effectively terminated any more attempts in getting this completed as it is our goal to one day have functional email using that domain. Emails that end up on blacklists required petitioning the owners of the blacklists for removal, which puts us in a vulnerable position.

Cloud Storage

As a cloud storage solution, we used ownCloud. Owncloud will allow us to sync and replicate our files from our laptop and mobile phone like services from Dropbox or OneDrive. It was an attractive solution because it was free and open source which would allow us to customize it should we later choose to do so. Setting up the server on Linux was relatively straight forward. The client software installation was straight forward as well, and we were able to setup a folder on our laptop so that it would sync with our private ownCloud server. This allowed us to use the service to collaborate on the project with the benefit of controlling our own storage limits while maintaining complete privacy.


Overall, the project ran smoothly and efficiently. As a team we worked really well together. We established google docs for all of our deliverables, and we were able to stay on top of the project at all times. We communicated really well together, and were always on the same page. We built a virtual machine server which is what we set out to do. We established three services within the server, those being web, cloud storage services, and email services being the only service that was not fully realized. We've created user profiles for each of us, and have been able to interact with each other on the server using these services.

The biggest challenges presented were version conflicts between Windows Server 2012 and Exchange 2010. After some research, it was discovered that Exchange would only work if upgraded with at least service pack 3. Another challenge was configuring our private DNS server so that email records would properly route to the email server. With the lab system being hosted on a dynamic internet IP, we couldn't configure the dns records to a static IP. We had access to a service called FreeDNS from the domain registrar “Namecheap” that allowed us to establish a URL with dynamic IP updating enabled in case the server’s internet IP changed. We did this in an effort to use the URL as part of the MX records. Namecheap also offers a DNS that we tried to use to establish MX records for email delivery. The problem is that our private and Namecheap DNS servers would not be in sync because of the dynamic IP issue, and if we had gotten internet email working, this would have been a long term challenge.

While we didn’t fully achieve our email goals, we did establish the infrastructure required for email along with a website using Outlook Web App (OWA) to access it. While we can’t send emails over the internet, it does work between users on an intranet. If at any point in the future a static internet IP can be established like those acquired through business internet accounts, it might be possible to actually establish internet email on the Exchange server. At a minimum it made us aware of the current atmosphere in email configuration and security because of all the challenges.

In its current state, the server has many applications for future use. With its current virtual machines, other services can be established like FTP, Remote Apps, VPN. While they are not necessarily needed, they would be good exercises in system management. Since Jose has an interest in database and application development, he has a platform to setup a web development platform using either ASP, JSP, or PHP while being able to also integrate an RDBMS like Microsoft SQL or mySQL.

The most obvious use of the server is its ability to create new virtual machines. It can be used to test the latest operating systems in a safe environment that won’t affect other systems. Since virtualization has been established a valuable technology, it is the perfect platform to learn how to manage its resources as new virtual machines are being created.