diff options
Diffstat (limited to 'app/im/deploy/im.hcl')
-rw-r--r-- | app/im/deploy/im.hcl | 111 |
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 } } } |