aboutsummaryrefslogtreecommitdiff
path: root/app/im/deploy
diff options
context:
space:
mode:
Diffstat (limited to 'app/im/deploy')
-rw-r--r--app/im/deploy/im.hcl111
1 files changed, 98 insertions, 13 deletions
diff --git a/app/im/deploy/im.hcl b/app/im/deploy/im.hcl
index 09d840b..734669a 100644
--- a/app/im/deploy/im.hcl
+++ b/app/im/deploy/im.hcl
@@ -17,31 +17,116 @@ job "im" {
}
}
+ ephemeral_disk {
+ size = 1000
+ }
+
+ task "restore-db" {
+ lifecycle {
+ hook = "prestart"
+ sidecar = false
+ }
+
+ driver = "docker"
+ config {
+ image = "litestream/litestream"
+ args = [
+ "restore", "-config", "/etc/litestream.yml", "/ephemeral/homeserver.db"
+ ]
+ volumes = [
+ "../alloc/data:/ephemeral",
+ "secrets/litestream.yml:/etc/litestream.yml"
+ ]
+ }
+
+ template {
+ data = file("../config/litestream.yml")
+ destination = "secrets/litestream.yml"
+ }
+
+ resources {
+ memory = 1000
+ cpu = 1000
+ }
+ }
+
task "synapse" {
driver = "docker"
config {
image = "matrixdotorg/synapse:v1.48.0"
ports = [ "http" ]
+
+ entrypoint = [ "/usr/local/bin/python" ]
+ args = [
+ "-m", "synapse.app.homeserver",
+ "-n",
+ "-c", "/etc/matrix-synapse/homeserver.yaml"
+ ]
+
volumes = [
+ "secrets:/etc/matrix-synapse",
+ "../alloc/data:/ephemeral",
"/mnt/ssd/synapse:/data",
]
}
+
+ template {
+ data = file("../config/homeserver.yaml")
+ destination = "secrets/homeserver.yaml"
+ }
+
+ template {
+ data = "{{ key \"secrets/synapse/signing_key\" }}"
+ destination = "secrets/signing_key"
+ }
+
+ resources {
+ memory = 1500
+ cpu = 1000
+ }
+
+ restart {
+ attempts = 3
+ delay = "30s"
+ }
+
+ service {
+ port = "http"
+ tags = [
+ "tricot matrix.home.adnab.me 100",
+ "tricot matrix.home.adnab.me:443 100",
+ "tricot-add-header Access-Control-Allow-Origin *",
+ ]
+ check {
+ type = "http"
+ path = "/"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
}
+ task "replicate-db" {
+ driver = "docker"
+ config {
+ image = "litestream/litestream"
+ args = [
+ "replicate", "-config", "/etc/litestream.yml"
+ ]
+ volumes = [
+ "../alloc/data:/ephemeral",
+ "secrets/litestream.yml:/etc/litestream.yml"
+ ]
+ }
+
+ template {
+ data = file("../config/litestream.yml")
+ destination = "secrets/litestream.yml"
+ }
- service {
- port = "http"
- tags = [
- "tricot matrix.home.adnab.me 100",
- "tricot matrix.home.adnab.me:443 100",
- "tricot matrix.home.adnab.me:8448 100",
- "tricot-add-header Access-Control-Allow-Origin *",
- ]
- check {
- type = "http"
- path = "/"
- interval = "10s"
- timeout = "2s"
+ resources {
+ memory = 500
+ cpu = 100
}
}
}