132 lines
2.7 KiB
HCL
132 lines
2.7 KiB
HCL
job "im" {
|
|
datacenters = ["neptune"]
|
|
type = "service"
|
|
|
|
group "synapse" {
|
|
count = 1
|
|
|
|
network {
|
|
port "http" {
|
|
to = 8008
|
|
}
|
|
}
|
|
|
|
ephemeral_disk {
|
|
size = 1000
|
|
}
|
|
|
|
task "restore-db" {
|
|
lifecycle {
|
|
hook = "prestart"
|
|
sidecar = false
|
|
}
|
|
|
|
driver = "docker"
|
|
config {
|
|
image = "litestream/litestream:0.3.7"
|
|
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/garage-staging/synapse-data:/data",
|
|
]
|
|
}
|
|
|
|
template {
|
|
data = file("../config/homeserver.yaml")
|
|
destination = "secrets/homeserver.yaml"
|
|
}
|
|
|
|
template {
|
|
data = file("../config/synapse.log.config.yaml")
|
|
destination = "secrets/synapse.log.config.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:0.3.7"
|
|
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"
|
|
}
|
|
|
|
resources {
|
|
memory = 500
|
|
cpu = 100
|
|
}
|
|
}
|
|
}
|
|
}
|