A Simple Small Buisness/ Home Office Server

As I’ve said before, one of the hats I wear is that of an entrepreneur. Part of the mission for my company is finding ways to deliver smart solutions for wired office spaces for start-up budgets. Clearly, when you’re on that kind of a mission, the Free Open Source Software (FOSS) movement is a great place to start.

I just built a small in-office file sharing server using some spare parts I had from other retired machines. I’m sufficiently pleased with it that I thought I might post an overview of what I did with it and what it does.

The hardware is a modest dual-core AMD machine with 2GB of RAM, an internal 128Gb SSD hard disk driver and an external 64Gb USB/3 SSD HDD. The only moving parts in the machine, in fact, are the two cooling fans. It’s in a simple black case with a light-duty power supply, and it’s plugged into a uninteruptable power supply (UPS) battery unit that gives the machine 5 to 10 minutes more run-time when the lights go out without warning.

It’s running the Linux CentOS 6.4 operating system. This means that there are no license fees for the operating system.

The install process is pretty well documented on many websites, so I’ll just say that I downloaded the “Net Install” CD and went that route. I essentially installed with defaults, save that when it came to selecting what kind of server it was that I wanted to build, I left all the options blank.

My reasoning is that I don’t want anything on that machine that I don’t actually -need- to do it’s job. So it’s just easier to manually install packages later, rather than hoping that “Small Office Server” does what I want and has the settings I want.

I started out the install with the USB external HDD unplugged and set aside. That way, it wouldn’t be part of the “native” configuration, or be included as a place for the swap disk or what ever.

Once the machine was installed, the first thing I did was install the “Samba” file sharing software. Essentially, it allows your Linux server to impersonate a Windows NT or Windows 2008 server on your network. Support includes things like printer sharing, remote profiles and even Domain Controller functions. Since it’s FOSS, there is no license fee.

Once the required user accounts were set up on the server and within the Samba system, I copied the office’s shared files to the server and set up sharing permissions as required.

I then hooked up the USB external HD and formated it to be a standard “Windows friendly” format. From there, I installed TrueCrypt. TrueCrypt is a FOSS disk encryption system for Windows 7/Vista/XP, Mac OS X, and Linux. It’s biggest use is for creating a bank-level secured virtual encrypted disk within a file and mounts it as a real disk.

Following the instructions, I installed TrueCrypt, created a secure key and then created a virtual secured hard-disk on the USB HDD. I set this up to mount on my server and then wrote an RSYNC shell script to keep the contents of the encrypted virtual HDD identical to the Samba-shared file directories.

That means that in the event that we have a problem with the server itself, the external HDD is a perfect duplicate of the important company files, such as the accounting and customer data. Disaster recovery starts with your data back-up plan. No plan might very well mean no recovery.

On the other hand, if that drive walks out the door somehow, I don’t want the data on it to be in the hands of a competitor or something. So, the TrueCrypt system means that if you don’t have the decryption pass key, there is nothing you can do with that drive but reformat it. So, I have a reasonably secure back-up of my important data.

The next thing I did was install a smart little script application called “Watcher“. Essentially, Watcher stares at a directory tree looking for files and directories in it that change. When it sees a change, it does whatever action you want it to do.

So, in this case, Watcher watches the office fileshare directory for changes. When it sees a change of any kind, it runs the RSYNC script I described above. That means that the internal HDD and the external HDD are always a perfect match, within a tenth of a second or so.

Every time I press “Save” on a word processor document, or a spreadsheet, or create a new folder for a new client, it’s pretty much instantly echoed to the external drive. It’s pretty cool to watch 🙂 Again, it’s FOSS, so no licensing fees.

My connection to the Internet is via a 3G cellular link provided by Rogers Communications. It’s a pretty slick system that gives me plenty of bandwidth for what I need at the office, including a static IP address.

However, the downside is that I only get so many gigabytes of data per month “included” before I start paying over-run fees. They aren’t horrid, but really, why pay them if I don’t need to.

So, the last thing I installed on the server is a small and fast caching web proxy called Polipo.

Proxy servers are a great way to cut down on redundant web requests to sites that are commonly used by a group of people using the same network connection. Why download the Facebook banner 10 times, when instead you can download it to the proxy once, and then serve it locally when someone else goes to the page?

Polipo is a bit quirky to set up, and it takes a bit of getting used to how it “feels” to use, but all in all I like it. It makes a noticable difference for some busy websites. Again, it’s FOSS, so no licensing fees.

Total cost for the project? $100 for the internal SSD HDD. That’s it. All the rest of the project was either hardware I had on hand, or FOSS. It’s a great addition to the office, and easy to use. The office PC and my Macbook Pro use it equally well, and it’s been 100% stable since I set it up, about a month ago. No downtime; no muss, no fuss, it works.

If you have any questions about any of the setup, please feel free to leave them in the comments. If you’re doing something similar at your office, let me know! I’d love to hear from you.