variable "base_hostname" { type = string description = "Base hostname to serve content from" default = "dev.homelab" } variable "nextcloud_db" { type = string default = "nextcloud" } variable "nextcloud_user" { type = string default = "nextcloud" } variable "nextcloud_pass" { type = string default = "nextcloud" } job "nextcloud" { datacenters = ["dc1"] type = "service" group "nextcloud" { count = 1 network { mode = "bridge" port "web" { host_network = "loopback" to = 80 } } service { port = "web" connect { sidecar_service { proxy { local_service_port = 80 upstreams { destination_name = "mysql-server" local_bind_port = 6060 } config { protocol = "tcp" } } } sidecar_task { resources { cpu = 50 memory = 50 } } } tags = [ "traefik.enable=true", "traefik.http.routers.nextcloud.entrypoints=web,websecure", "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${var.base_hostname}`)", "traefik.http.routers.nextcloud.tls=true", ] } task "main" { driver = "docker" config { image = "nextcloud" ports = ["web"] } env = { "MYSQL_HOST" = "${NOMAD_UPSTREAM_ADDR_mysql_server}" "MYSQL_DATABASE" = "${var.nextcloud_db}" "MYSQL_USER" = "${var.nextcloud_user}" "MYSQL_PASSWORD" = "${var.nextcloud_pass}" } resources { cpu = 50 memory = 250 } } } }