New site hosted by a BeagleBoard-xM with Dynamic DNS!

For over five years I have been shelling out almost $100 a year for web and hosting services I hardly even use. From a beginner’s standpoint, or someone not tech savvy (like I used to be), hosting and creating a website is a daunting task, and the intimidation level is pretty high. How do I know what to do? What services do I need? What is MySQL and do I need it?

All of these questions are pretty valid if you are new, and I get that. However, after finally getting in the work force and learning how to stand up a basic web host, I found that managing it was pretty easy. So I asked myself, “Why on Earth am I paying like $100 a year for something I can do myself?” I can get rid of the middle man, as I already had a hard enough time with the hosting company I chose before, and with my new knowledge I decided to embark on my own project: Buying and configuring a site and server all by myself. I cancelled my services (still retaining my domain name), and got to work.

Through my prior experience and some of the tools I had available to me at the workplace, I decided to buy a BeagleBoard-xM. They are about $150, and this board has a full blown OS installed on it right out of the box. I decided to install Ubuntu Quantal Server on the board, and from there I needed to get a basic LAMP Stack set up and I was going to be good to go. Here are some pictures of the board in actual use right now:

DSC01453
Box open

This is where my BeagleBoard Server lies, in a tiny little box in a corner of my room. All you need once it is fully functioning is the ethernet cord and the power supply, and that’s it!

DSC01455
Closed, sitting in the corner of my room

Obviously you need a keyboard and some kind of HDMI cord and display when you are initially setting everything up, but once that is done you can remove them. I chose to configure ssh and a static IP Address, so I can work on the board without having to actually be physically messing with it.

Back on topic, LAMP stands for Linux, Apache, MySQL, and PHP, and the latter three is all you need to install on your linux box to get things up and running. I am pretty pleased with WordPress lately, so I chose that as the framework to base my site around. My needs don’t really fit with Drupal and I could always write my own php/html/flash/whatever, but I wanted something nice that is pretty low maintenance, so WordPress it is.

So I have the board working with a website being displayed locally, and I have a domain name, but I have no way to link my website address with the board! This is where Dynamic DNS comes in. I chose to use changeip.com, and it was really pretty simple. Their services cost under $15 a year, and will translate my domain name to an IP Address I configure with them.

Easy enough, I just had my domain nameservers configuration (done through who I bought the domain from) to point to changeip’s name servers. After that, you need to configure the ‘resolution’ part to then point to my local network’s public facing IP Address. The translation happens as follows when someone visits my site:

www.madisonbahmer.com -> Domain Nameserver pointer -> ChangeIP’s Nameserver translator -> My public facing IP Address

Then, all I needed to do was set up a Port 80 (regular incoming http traffic) forwarder in my router to send all traffic onto the static IP Beagleboard I set up. The last thing I needed to do was make sure my BeagleBoard talks with the nameserver translators, because if my home IP Address changes (like restarting your router) you need to have the translator point to the correct new IP Address of my router. If you can make it all the way through that, the you’re done! The final routing is:

www.madisonbahmer.com -> Domain Nameserver pointer -> ChangeIP’s Nameserver translator -> My public facing IP Address -> My home router -> BeagleBoard

It’s a pretty cool setup, and in the long run its going to be way cheaper too. In total I am paying at max $30 a year for my domain name and DDNS services, which is drastically cheaper than what I was paying before. What is also cool about this setup is that the BeagleBoard is a pretty powerful machine, capable of streaming video, remote file storage/backups, game server, basically anything I want it to be, and its all 100% under my control. I have no middle man to go through, and I can literally install/configure whatever I want on the board because it’s under my control.

This setup in total probably cost me $180 total for a BeagleBoard, domain, and DDNS; and another $20 because I didn’t have a USB Keyboard or the power cord for the board. Otherwise you just need an HDMI Cord and a monitor to get the board up and running to your specifications.

The only downside to this setup is that it can obviously not handle a huge traffic volume. I dont really think I have to worry about that too much… but if my site or future sites get that big that I have to worry about traffic issues then I guess it’s worth it.