diff --git a/lib/configuration.js b/lib/configuration.js
index 0e231f386e6587a68e8abf9ff94e83d8ae44bab7..acb6f0a43a90ffe8b1b56362549ccde98f139300 100644
--- a/lib/configuration.js
+++ b/lib/configuration.js
@@ -47,15 +47,20 @@ postprocess = require('postprocess'),
 path = require('path'),
 urlparse = require('urlparse'),
 secrets = require('./secrets'),
-temp = require('temp');
+temp = require('temp'),
+semver = require('semver'),
+fs = require('fs');
 
 // verify the proper version of node.js is in use
 try {
-  var m = /^v0.6.(\d+)$/.exec(process.version);
-  if (!m) throw process.version + " version not supported";
-  if (!(parseInt(m[1], 10) >= 3)) throw "0.6." + m[1] + " not supported" ;
+  var required = 'unknown';
+  // extract required node version from package.json
+  required = JSON.parse(fs.readFileSync(path.join(__dirname, "..", "package.json"))).engines.node;
+  if (!semver.satisfies(process.version, required)) throw false;
 } catch (e) {
-  process.stderr.write("node 0.6.3 required" + (e ? (" (" + e.toString() + ")") : "") + "\n");
+  process.stderr.write("update node! verision " + process.version +
+                       " is not " + required +
+                       (e ? " (" + e + ")" : "") + "\n");
   process.exit(1);
 }
 
@@ -133,7 +138,6 @@ g_configs.test_mysql.database = {
 };
 
 if (undefined !== process.env['NODE_EXTRA_CONFIG']) {
-  var fs = require('fs');
   eval(fs.readFileSync(process.env['NODE_EXTRA_CONFIG']) + '');
 }
 
diff --git a/package.json b/package.json
index ae77cc5124e6027fd2cf93ba3995eef53f26a734..71860467163b3cb2726c95630796735f5f3267c1 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
     , "uglifycss": "0.0.4"
     , "node-statsd": "https://github.com/mojodna/node-statsd/tarball/2584c08fad"
     , "connect-logger-statsd": "0.0.1"
+    , "semver": "1.0.12"
   }
   , "scripts": {
     "postinstall": "./scripts/generate_ephemeral_keys.sh",