Pogoplug Web Server Tips

I’ve been running my Pogoplug as web server for probably about 5 or 6 months. Through research and experimentation I’ve been able to surmize what it’s primarily capable of doing. So I’ll just go ahead and break it down with some guidelines.

  • Given the Pogoplug’s limited RAM (128MB) you SHOULD NOT use Apache even if you have a swap partition. It’s always better to go with an alternative like Cherokee, Lighttpd, Nginx. Benchmarks have shown that all the latter actually do out-perform Apache.
  • Unless you have a Pogoplug dedicated for running a database engine, DO NOT try and MySQL on it. The system barely has the resources required to run MySQL, and it’s only proved problematic for me. However, I don’t know how well Postgres fares on it. My recommendation is to use Sqlite whenever possible. You get basic database functionality and you won’t have to worry about a database engine taking up resources because the database is read as a straight up file. However, if you absolutely need a database engine I’d recommend trying Firebird, which has far more features than MySQL and is more likely to be less resource intensive.
  • AVOID running PHP CMS frameworks like Drupal, Joomla, and WordPress on the Pogoplug. Unfortunately, applications like these are fairly bloated and will perform poorly on the Pogoplug.
  • Mono MVC performs OKAY. The problem with running Mono MVC on the Pogoplug is that views take upwards of 10 seconds to compile (that’s per-view). Once the views are compiled, Mono MVC performs really well on the Pogoplug but unless you can possibly pre-compile the views using ASP.NET MVC 3 or something I’d recommend against it for now.
  • The Pogoplug IS GREAT for serving static-files (HTML, images, whatever…). Once again if you’re just going to serve static files I’d recommend using Nginx because no other program does it faster and consumes hardly any resources.
  • The best configuration I’ve found for serving dynamic web-content on the Pogoplug is to use the Python-powered Django framework. It’s super simple to use and has the benefits of bytecode compilation to speed up execution time.
  • If you’re going to run Django I recommend using a combination of Nginx (for serving static files and as a reverse proxy), uWSGI (to run the Django application), and Memcached (to cache some dynamic content into memory). These three together have given me amazing performance.