diff --git a/scripts/bus-daemon-upstart.conf b/scripts/bus-daemon-upstart.conf
new file mode 100644
index 0000000000000000000000000000000000000000..386a7100626aba554fe3912481f9c98d6c7802c2
--- /dev/null
+++ b/scripts/bus-daemon-upstart.conf
@@ -0,0 +1,16 @@
+description "maps.unl.edu bus location proxy"
+author "mfairchild365@gmail.com"
+# used to be: start on startup
+# until we found some mounts weren't ready yet while booting:
+start on runlevel [2345]
+stop on runlevel [06]
+# Automatically Respawn:
+respawn
+respawn limit 15 5
+script
+#configure the path
+exec php /var/www/html/scripts/bus-daemon.php >> /var/log/bus_daemon.log 2>&1
+end script
+post-start script
+# Optionally put a script here that will notify you node has (re)started
+end script
\ No newline at end of file
diff --git a/scripts/bus-daemon.php b/scripts/bus-daemon.php
new file mode 100644
index 0000000000000000000000000000000000000000..729d4d1108e71aacfeaa18d293eb040cb590e1c7
--- /dev/null
+++ b/scripts/bus-daemon.php
@@ -0,0 +1,14 @@
+<?php
+/**
+ * This daemon runs the bus proxy script every second to generate the json file.
+ * This is helpful for when the server is under heavy load to ensure that the script is only ever ran once every second.
+ * 
+ * If you use this daemon, be sure that busproxy.php is aliased in apache to serve bus.json.
+ */
+
+$project_root = dirname(__DIR__);
+
+while(true) {
+    $result = shell_exec("php $project_root/www/busproxy.php");
+    sleep(1);
+}
diff --git a/www/busproxy.php b/www/busproxy.php
index f85a525e957ec55ddfe69aa6d35e5b0d82581785..7d73909613d6bf940c9425ec92bcf9b24c11c393 100644
--- a/www/busproxy.php
+++ b/www/busproxy.php
@@ -1,7 +1,7 @@
 <?php
 
 $url = 'http://getonboard.lincoln.ne.gov/packet/json/vehicle?routes=138,139&lastVehicleHttpRequestTime=0';
-$file = 'bus.json';
+$file = __DIR__ . '/bus.json';
 $seconds_to_cache = 1;
 
 if (!file_exists($file) || time() - $seconds_to_cache >= filemtime($file)) {