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 aec2268..1c07435 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
@@ -14,20 +14,20 @@
 package com.googlesource.gerrit.plugins.analytics.wizard
 
 import java.io.PrintWriter
+import java.nio.charset.{Charset, StandardCharsets}
+import java.nio.file.{Files, Path}
 
 trait ConfigWriter {
-  def write(filename: String, out: String)
+  def write(outputPath: Path, out: String)
 }
 
 class ConfigWriterImpl extends ConfigWriter {
-  def write(filename: String, out: String) = {
-    val p = new PrintWriter(filename)
-    p.write(out)
-    p.close()
+  def write(outputPath: Path, out: String) {
+    Files.write(outputPath, out.getBytes(StandardCharsets.UTF_8))
   }
 }
 
-case class AnalyticDashboardSetup(name: String, config: Option[String] = None)(
+case class AnalyticDashboardSetup(name: String, dockerComposeYamlPath: Path)(
     implicit val writer: ConfigWriter) {
 
   private val dockerComposeTemplate = { (name: String) =>
@@ -68,9 +68,8 @@
      """.stripMargin
   }
 
-  val configFileName = s"/tmp/docker-compose.${name}.yaml"
   def createDashboardSetupFile(): Unit = {
-    writer.write(configFileName, dockerComposeTemplate(name))
+    writer.write(dockerComposeYamlPath, dockerComposeTemplate(name))
   }
 
 }
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 44a5512..f63447c 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
@@ -14,6 +14,7 @@
 package com.googlesource.gerrit.plugins.analytics.wizard
 
 import java.nio.charset.StandardCharsets.UTF_8
+import java.nio.file.Path
 
 import com.google.common.io.ByteStreams
 import com.google.gerrit.extensions.restapi.{
@@ -25,10 +26,11 @@
 import com.google.gerrit.server.project.ProjectResource
 import com.google.inject.Inject
 import AnalyticDashboardSetup.writer
+import com.google.gerrit.extensions.annotations.PluginData
 
 import scala.io.Source
 
-class GetAnalyticsStack @Inject()() extends RestReadView[ProjectResource] {
+class GetAnalyticsStack @Inject()(@PluginData val dataPath: Path) extends RestReadView[ProjectResource] {
   override def apply(
       resource: ProjectResource): Response[AnalyticDashboardSetup] = {
 
@@ -36,29 +38,25 @@
     Response.ok(
       AnalyticDashboardSetup(
         projectName,
-        Some(
-          Source
-            .fromFile(s"/tmp/docker-compose.${projectName}.yaml")
-            .getLines
-            .mkString)))
+        dataPath.resolve(s"docker-compose.${projectName}.yaml")))
   }
 }
 
 class Input(var dashboardName: String)
 
-class PutAnalyticsStack @Inject()()
+class PutAnalyticsStack @Inject()(@PluginData val dataPath: Path)
     extends RestModifyView[ProjectResource, Input] {
   override def apply(resource: ProjectResource,
                      input: Input): Response[String] = {
 
     val projectName = resource.getControl.getProject.getName
-    AnalyticDashboardSetup(projectName).createDashboardSetupFile()
+    AnalyticDashboardSetup(projectName, dataPath.resolve(s"docker-compose.${projectName}.yaml")).createDashboardSetupFile()
     Response.created(s"Dashboard configuration created for $projectName!")
   }
 }
 
 class DockerComposeCommand(var action: String)
-class PostAnalyticsStack @Inject()()
+class PostAnalyticsStack @Inject()(@PluginData val dataPath: Path)
     extends RestModifyView[ProjectResource, DockerComposeCommand] {
   override def apply(resource: ProjectResource,
                      input: DockerComposeCommand): Response[String] = {
@@ -67,8 +65,8 @@
     val pb = new ProcessBuilder(
       "docker-compose",
       "-f",
-      s"/tmp/docker-compose.${projectName}.yaml",
-      input.action.toLowerCase) // XXX validate command!
+      s"${dataPath.toFile.getAbsolutePath}/docker-compose.${projectName}.yaml",
+      input.action.toLowerCase)
     pb.redirectErrorStream(true)
 
     val ps: Process = pb.start
diff --git a/src/test/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetupSpec.scala b/src/test/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetupSpec.scala
index 717d213..c7e0519 100644
--- a/src/test/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetupSpec.scala
+++ b/src/test/scala/com/googlesource/gerrit/plugins/analytics/wizard/AnalyticDashboardSetupSpec.scala
@@ -1,21 +1,25 @@
 package com.googlesource.gerrit.plugins.analytics.wizard
 
+import java.io.File
+import java.nio.file.Path
+
 import org.scalatest.{FlatSpec, Matchers}
 
 class AnalyticDashboardSetupSpec extends FlatSpec with Matchers {
   behavior of "AnalyticDashboardSetup"
 
   it should "create a config file with correct name" in {
-    var gotFilename: Option[String] = None
+    var gotFilename: Option[Path] = None
     class MockWriter extends ConfigWriter {
-      override def write(filename: String, out: String): Unit = {
+      override def write(filename: Path, out: String): Unit = {
         gotFilename = Some(filename)
       }
     }
     implicit val writer = new MockWriter()
 
-    val ads = AnalyticDashboardSetup("aProject")
+    val composeYamlFile = File.createTempFile(getClass.getName, ".yaml").toPath
+    val ads = AnalyticDashboardSetup("aProject", composeYamlFile)
     ads.createDashboardSetupFile()
-    gotFilename shouldBe Some(ads.configFileName)
+    gotFilename shouldBe Some(composeYamlFile)
   }
 }
