diff --git a/src/main/resources/static/analytics-dashboard.html b/src/main/resources/static/analytics-dashboard.html
index 33524b1..dd4b718 100644
--- a/src/main/resources/static/analytics-dashboard.html
+++ b/src/main/resources/static/analytics-dashboard.html
@@ -32,6 +32,22 @@
     <div id="config-error-alert" class="alert-danger alert-trim" role="alert" style="display: none;">
         Something went wrong while creating Dashboard configuration.
     </div>
+    <br><br>
+    <input type="button" class="btn btn-primary" value="Start dashboard" onClick="dashboardService('up')"/>
+    <input type="button" class="btn btn-primary" value="Stop dashboard" onClick="dashboardService('down')"/>
+    <br><br>
+    <div id="up-ok-alert" class="alert alert-success alert-trim" role="alert" style="display: none;">
+        Dashboard started successfully.
+    </div>
+    <div id="down-ok-alert" class="alert alert-success alert-trim" role="alert" style="display: none;">
+        Dashboard stopped successfully.
+    </div>
+    <div id="up-error-alert" class="alert-danger alert-trim" role="alert" style="display: none;">
+        Error starting the dashboard.
+    </div>
+    <div id="down-error-alert" class="alert-danger alert-trim" role="alert" style="display: none;">
+        Error stopping the dashboard.
+    </div>
 </div>
 
 <!--div.container end -->
diff --git a/src/main/resources/static/js/analyticswizard.js b/src/main/resources/static/js/analyticswizard.js
index d8b2caf..0b0cc79 100644
--- a/src/main/resources/static/js/analyticswizard.js
+++ b/src/main/resources/static/js/analyticswizard.js
@@ -1,3 +1,17 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 var handle201 = function(data, textStatus, jqXHR) {
     $("#config-error-alert").hide();
     $("#config-created-alert").show();
@@ -31,6 +45,36 @@
     });
 }
 
+var handle201Status = function(command) {
+  $("#up-error-alert").hide();
+  $("#down-error-alert").hide();
+  $("#up-ok-alert").hide();
+  $("#down-ok-alert").hide();
+  $("#" + command + "-ok-alert").show();
+};
+
+function dashboardService(command) {
+    var projectName = $("#input-project-name").val();
+    $.ajax({
+      type : "POST",
+      url : `/a/projects/${projectName}/analytics-wizard~server`,
+      dataType: 'application/json',
+      // Initially project-dashboard is a 1 to 1 relationship
+      data: "{'action': '" + command + "'}",
+      contentType:"application/json; charset=utf-8",
+      // Need to catch the status code since Gerrit doesn't return
+      // a well formed JSON, hence Ajax treats it as an error
+      statusCode: {
+        201: handle201Status(command)
+      },
+      error: function(jqXHR, textStatus, errorThrown) {
+        if(jqXHR.status != 201) {
+          handleError()
+        }
+      }
+    });
+}
+
 function showConfigDetails() {
     var projectName = $("#input-project-name").val();
     $.ajax({
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetup.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetup.scala
index 2b0209d..aec2268 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetup.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetup.scala
@@ -34,21 +34,37 @@
     s"""
        |version: '3'
        |services:
+       |
+       |  dashboard-importer:
+       |    image: gerritforge/analytics-dashboard-importer:latest
+       |    networks:
+       |      - ek
+       |    links:
+       |      - elasticsearch
+       |      - kibana
+       |
        |  kibana:
        |    image: gerritforge/analytics-kibana:latest
        |    container_name: "kibana-for-${name}-project"
-       |    environment:
-       |      SERVER_BASEPATH: "/kibana"
+       |    networks:
+       |      - ek
        |    depends_on:
        |      - elasticsearch
+       |    ports:
+       |      - "5601:5601"
+       |
        |  elasticsearch:
        |    image: gerritforge/analytics-elasticsearch:latest
        |    container_name: "es-for-${name}-project"
+       |    networks:
+       |      - ek
        |    environment:
        |      - ES_JAVA_OPTS=-Xmx4g -Xms4g
        |      - http.host=0.0.0.0
-       |    volumes:
-       |      - es-indexes:/usr/share/elasticsearch/data
+       |
+       |networks:
+       |  ek:
+       |    driver: bridge
      """.stripMargin
   }
 
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticsWizardActions.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticsWizardActions.scala
index f0f6632..44a5512 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticsWizardActions.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticsWizardActions.scala
@@ -13,18 +13,21 @@
 // limitations under the License.
 package com.googlesource.gerrit.plugins.analytics.wizard
 
+import java.nio.charset.StandardCharsets.UTF_8
+
+import com.google.common.io.ByteStreams
 import com.google.gerrit.extensions.restapi.{
   Response,
+  RestApiException,
   RestModifyView,
   RestReadView
 }
 import com.google.gerrit.server.project.ProjectResource
 import com.google.inject.Inject
+import AnalyticDashboardSetup.writer
 
 import scala.io.Source
 
-import AnalyticDashboardSetup.writer
-
 class GetAnalyticsStack @Inject()() extends RestReadView[ProjectResource] {
   override def apply(
       resource: ProjectResource): Response[AnalyticDashboardSetup] = {
@@ -53,3 +56,32 @@
     Response.created(s"Dashboard configuration created for $projectName!")
   }
 }
+
+class DockerComposeCommand(var action: String)
+class PostAnalyticsStack @Inject()()
+    extends RestModifyView[ProjectResource, DockerComposeCommand] {
+  override def apply(resource: ProjectResource,
+                     input: DockerComposeCommand): Response[String] = {
+
+    val projectName = resource.getControl.getProject.getName
+    val pb = new ProcessBuilder(
+      "docker-compose",
+      "-f",
+      s"/tmp/docker-compose.${projectName}.yaml",
+      input.action.toLowerCase) // XXX validate command!
+    pb.redirectErrorStream(true)
+
+    val ps: Process = pb.start
+    ps.getOutputStream.close
+    val output = new String(ByteStreams.toByteArray(ps.getInputStream), UTF_8)
+    ps.waitFor
+
+    ps.exitValue match {
+      case 0 => Response.created(output)
+      case _ =>
+        throw new RestApiException(
+          s"Failed with exit code: ${ps.exitValue} - $output")
+    }
+
+  }
+}
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/Module.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/Module.scala
index 9c77724..c9e1021 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/Module.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/wizard/Module.scala
@@ -13,9 +13,7 @@
 // limitations under the License.
 package com.googlesource.gerrit.plugins.analytics.wizard
 
-import com.google.gerrit.extensions.registration.DynamicSet
 import com.google.gerrit.extensions.restapi.RestApiModule
-import com.google.gerrit.httpd.AllRequestFilter
 import com.google.gerrit.server.project.ProjectResource.PROJECT_KIND
 import com.google.inject.AbstractModule
 
@@ -27,6 +25,8 @@
         get(PROJECT_KIND, "stack").to(classOf[GetAnalyticsStack])
 
         put(PROJECT_KIND, "stack").to(classOf[PutAnalyticsStack])
+
+        post(PROJECT_KIND, "server").to(classOf[PostAnalyticsStack])
       }
     })
   }
