Michael Crosby

Infrastructure - Part 1


Running your own infrastructure is awesome, if your a hacker like me. If your a square and you don't want to mess with your own hardware you have two choices if you are going to host your website or services online. If you don't feel like spending $1k a year you will probably have a VPS or EC2 instance with less than 1GB of RAM.

You can get a shared hosting provider and use what they give you. Basically PHP and Mysql. I run a heavy Python stack and Postgesql. PHP is not an option for me. Also 1GB of ram is not enough. I have to run a Minecraft server for myself and a few friends and I need at least 3-4GB of RAM just for Minecraft. ( This is also a test of how robust my setup is because if Minecraft would go down my friend my hurt himself. ) I also like running other services like jenkins as a build server. You still have to spend some money on things like a battery backup or upgrade your internet connection.

The trick to running your website on your own hardware and internet connection is to host all your content, images, js, css, etc.. on a CDN and only have your servers render the HTML and do database operations. Leave any content on S3. I run my websites on my own server and have S3 host all the images and content. You cannot tell the difference loading my page.

This is the first post of all the shit I have running. I'll try to give a high level overview and for some posts I will go into detail on the setup and settings. Keep an eye out for some of my shell scripts and other cool downloads.


Admin Console


Ajenti is an easy to install Python app that provides information about services running on your server. It also provides a nice UI for reading logs, managing cron jobs and users, and many other tasks.

On the main dashboard I can see the load and memory usage for my main node and the build server.


Ajenti has a nice plugin system. I have not dug into developing a plugin but it looks fairly straight forward. The default selection is great and plugins are fast and easy to install.


The charts that you are seeing are from Munin. It is a system monitoring application that can monitory local and remote systems. You need one computer as the server and then install munin-node on each computer (including the server) that you want to monitor. Munin is in apt and you only have a few lines to modify in the munin configs after install to get it up and running. You will have to have a HTTP server to serve the munin graphs so that ajenti can read them into the dashboard.

Check out the rest of these screenshots and view the links at the bottom of the page.

Logs Logs

Users Users

Health Health


comments powered by Disqus