From 0592b6ad03d2fad264c8321d803af52e70f4438d Mon Sep 17 00:00:00 2001 From: Thomas Rijpstra Date: Thu, 23 Jul 2026 15:48:44 +0200 Subject: [PATCH] feat(kosync): add Terraform module for KOReader sync server --- quadlets/modules/kosync/main.tf | 61 +++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 quadlets/modules/kosync/main.tf diff --git a/quadlets/modules/kosync/main.tf b/quadlets/modules/kosync/main.tf new file mode 100644 index 0000000..661b593 --- /dev/null +++ b/quadlets/modules/kosync/main.tf @@ -0,0 +1,61 @@ +variable "wait_on" { + type = any + description = "Resources to wait on" + default = true +} + +variable "server_ip" { + type = string +} + +variable "ssh_private_key_path" { + type = string +} + +variable "server_domain" { + type = string +} + +module "kosync" { + source = "../quadlet-app" + wait_on = var.wait_on + + server_ip = var.server_ip + ssh_private_key_path = var.ssh_private_key_path + + app_name = "kosync" + image = "docker.io/koreader/kosync:latest" + ports = ["17200:17200"] + volumes = [ + "/opt/storage/data/kosync/logs/app:/app/koreader-sync-server/logs:Z", + "/opt/storage/data/kosync/logs/redis:/var/log/redis:Z", + "/opt/storage/data/kosync/data/redis:/var/lib/redis:Z", + ] + + environment = { + ENABLE_USER_REGISTRATION = "true" + GIN_ENV = "production" + } + + # Healthcheck over plain HTTP (port 17200) since HAProxy handles TLS + healthcmd = "curl -sf -H \"Accept: application/vnd.koreader.v1+json\" http://127.0.0.1:17200/healthcheck | grep -q '\"state\":\"OK\"'" + + haproxy_services = [ + { + name = "kosync" + domain = "kosync.${var.server_domain}" + port = "17200" + host = "127.0.0.1" + tls = false + }, + ] +} + +output "app_urls" { + value = module.kosync.app_urls +} + +output "installed" { + value = true + depends_on = [module.kosync.installed] +}