From e1428f89002450f2d51b7d1eab9b6cfe2964d824 Mon Sep 17 00:00:00 2001 From: Luigi Oliveira Date: Mon, 18 Nov 2024 17:21:48 -0300 Subject: [PATCH] Kavita deploy --- terraform/main.tf | 8 +++ terraform/modules/caddy/conf/Caddyfile | 11 +++++ terraform/modules/kavita/conf/kavita.hcl | 63 ++++++++++++++++++++++++ terraform/modules/kavita/job.tf | 5 ++ terraform/modules/kavita/providers.tf | 9 ++++ terraform/modules/postgreeSQL/job.tf | 1 - 6 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 terraform/modules/kavita/conf/kavita.hcl create mode 100644 terraform/modules/kavita/job.tf create mode 100644 terraform/modules/kavita/providers.tf diff --git a/terraform/main.tf b/terraform/main.tf index 84857f7..c6ffa70 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -52,6 +52,14 @@ module "twitchminer" { discord_webhook = var.discord_webhook twitch_username = var.twitch_username twitch_password = var.twitch_password + providers = { + nomad = nomad + } +} + +module "kavita" { + source = "./modules/kavita" + providers = { nomad = nomad } diff --git a/terraform/modules/caddy/conf/Caddyfile b/terraform/modules/caddy/conf/Caddyfile index 44f6584..5ed6618 100644 --- a/terraform/modules/caddy/conf/Caddyfile +++ b/terraform/modules/caddy/conf/Caddyfile @@ -56,3 +56,14 @@ keycloak.lab.marioverde.com.br { } } +kavita.lab.marioverde.com.br { + encode gzip + reverse_proxy "${endpoint}:5002" { + header_up X-Forwarded-Host {host}:5002 + header_up -Origin + header_up -Referer + } + tls { + dns cloudflare "${cloudflare_api_token}" + } +} \ No newline at end of file diff --git a/terraform/modules/kavita/conf/kavita.hcl b/terraform/modules/kavita/conf/kavita.hcl new file mode 100644 index 0000000..b7081a0 --- /dev/null +++ b/terraform/modules/kavita/conf/kavita.hcl @@ -0,0 +1,63 @@ +job "kavita" { + datacenters = ["dc"] + type = "service" + + group "kavita" { + count = 1 + + network { + port "kavita" { + static = 5002 + to = 5000 + } + } + + restart { + attempts = 2 + interval = "5m" + delay = "30s" + mode = "delay" + } + + task "kavita" { + driver = "docker" + + config { + image = "jvmilazz0/kavita:latest" + ports = ["kavita"] + volumes = [ + "${NOMAD_ALLOC_DIR}/kavita/manga:/manga", + "${NOMAD_ALLOC_DIR}/kavita/comics:/comics", + "${NOMAD_ALLOC_DIR}/kavita/books:/books", + "${NOMAD_ALLOC_DIR}/kavita/config:/kavita/config" + ] + } + + env { + TZ = "America/Sao_Paulo" + } + + resources { + cpu = 500 + memory = 512 + } + + service { + name = "kavita" + port = "kavita" + provider = "nomad" + check { + type = "http" + path = "/" + interval = "10s" + timeout = "2s" + } + } + + logs { + max_files = 5 + max_file_size = 15 + } + } + } +} \ No newline at end of file diff --git a/terraform/modules/kavita/job.tf b/terraform/modules/kavita/job.tf new file mode 100644 index 0000000..fd6316e --- /dev/null +++ b/terraform/modules/kavita/job.tf @@ -0,0 +1,5 @@ +resource "nomad_job" "kavita" { + jobspec = templatefile("${path.module}/conf/kavita.hcl", { + NOMAD_ALLOC_DIR = "/alloc" + }) +} \ No newline at end of file diff --git a/terraform/modules/kavita/providers.tf b/terraform/modules/kavita/providers.tf new file mode 100644 index 0000000..587f01f --- /dev/null +++ b/terraform/modules/kavita/providers.tf @@ -0,0 +1,9 @@ +terraform { + required_providers { + nomad = { + source = "hashicorp/nomad" + version = "2.0.0-rc.1" + } + } + required_version = ">= 0.14" +} diff --git a/terraform/modules/postgreeSQL/job.tf b/terraform/modules/postgreeSQL/job.tf index aa68d9f..e028579 100644 --- a/terraform/modules/postgreeSQL/job.tf +++ b/terraform/modules/postgreeSQL/job.tf @@ -5,7 +5,6 @@ resource "nomad_job" "app_postgree" { POSTGREE_PASSWORD = var.postgree_password }) } - resource "nomad_job" "app_pgadmin" { jobspec = templatefile("${path.module}/conf/pgadmin.hcl", { NOMAD_ALLOC_DIR = "/alloc"