Move docker containers to own files
- Will be easier to refactor later
This commit is contained in:
parent
b4345810f5
commit
6275e7773d
|
@ -0,0 +1,44 @@
|
||||||
|
# resource "docker_container" "airsonic" {
|
||||||
|
# name = "airsonic"
|
||||||
|
# image = "${docker_image.airsonic.latest}"
|
||||||
|
|
||||||
|
# restart = "unless-stopped"
|
||||||
|
# destroy_grace_seconds = 30
|
||||||
|
# must_run = true
|
||||||
|
# memory = 800
|
||||||
|
|
||||||
|
# volumes {
|
||||||
|
# host_path = "/mnt/xwing/config/airsonic/data"
|
||||||
|
# container_path = "/config"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# volumes {
|
||||||
|
# host_path = "/mnt/xwing/media/Music"
|
||||||
|
# container_path = "/music"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# volumes {
|
||||||
|
# host_path = "/mnt/xwing/config/airsonic/playlists"
|
||||||
|
# container_path = "/playlists"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# volumes {
|
||||||
|
# host_path = "/mnt/xwing/config/airsonic/podcasts"
|
||||||
|
# container_path = "/podcasts"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# labels {
|
||||||
|
# "traefik.enable" = "true"
|
||||||
|
# "traefik.port" = "4040"
|
||||||
|
# "traefik.frontend.rule" = "Host:airsonic.in.${var.domain},airsonic.${var.domain}"
|
||||||
|
# "traefik.frontend.passHostHeader" = "true"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# # lounge:tatooine
|
||||||
|
# env = [
|
||||||
|
# "PUID=1004",
|
||||||
|
# "PGID=1003",
|
||||||
|
# "TZ=Asia/Kolkata",
|
||||||
|
# "CONTEXT_PATH=https://airsonic.bb8.fun",
|
||||||
|
# ]
|
||||||
|
# }
|
|
@ -4,7 +4,7 @@
|
||||||
Twitter: @captn3m0
|
Twitter: @captn3m0
|
||||||
|
|
||||||
/* SITE */
|
/* SITE */
|
||||||
Last update: Jan 2018
|
Last update: Feb 2018
|
||||||
Language: English
|
Language: English
|
||||||
IDE: Sublime Text, Vim
|
IDE: Sublime Text, Vim
|
||||||
Runs-On: Docker
|
Runs-On: Docker
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
resource "docker_container" "couchpotato" {
|
||||||
|
name = "couchpotato"
|
||||||
|
image = "${docker_image.couchpotato.latest}"
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/config/couchpotato"
|
||||||
|
container_path = "/config"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/DL"
|
||||||
|
container_path = "/downloads"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/Movies"
|
||||||
|
container_path = "/movies"
|
||||||
|
}
|
||||||
|
|
||||||
|
labels = "${merge(
|
||||||
|
local.traefik_common_labels,
|
||||||
|
map(
|
||||||
|
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
||||||
|
"traefik.port", 5050,
|
||||||
|
))}"
|
||||||
|
|
||||||
|
memory = 256
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 10
|
||||||
|
must_run = true
|
||||||
|
|
||||||
|
# Running as lounge:tatooine
|
||||||
|
env = [
|
||||||
|
"PUID=1004",
|
||||||
|
"PGID=1003",
|
||||||
|
"TZ=Asia/Kolkata",
|
||||||
|
]
|
||||||
|
|
||||||
|
links = ["{docker_container.transmission.name}"]
|
||||||
|
}
|
|
@ -8,8 +8,6 @@ data "docker_registry_image" "mongorocks" {
|
||||||
name = "jadsonlourenco/mongo-rocks:latest"
|
name = "jadsonlourenco/mongo-rocks:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Leave all other apps at latesst
|
|
||||||
|
|
||||||
data "docker_registry_image" "emby" {
|
data "docker_registry_image" "emby" {
|
||||||
name = "emby/embyserver:latest"
|
name = "emby/embyserver:latest"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
resource "docker_container" "headerdebug" {
|
||||||
|
name = "headerdebug"
|
||||||
|
image = "${docker_image.headerdebug.latest}"
|
||||||
|
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 30
|
||||||
|
must_run = true
|
||||||
|
|
||||||
|
memory = 16
|
||||||
|
|
||||||
|
labels = "${merge(
|
||||||
|
local.traefik_common_labels,
|
||||||
|
map(
|
||||||
|
"traefik.frontend.rule", "Host:debug.in.${var.domain},debug.${var.domain}",
|
||||||
|
"traefik.port", 8080,
|
||||||
|
"traefik.enable", "true",
|
||||||
|
))}"
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
resource "docker_container" "emby" {
|
||||||
|
name = "emby"
|
||||||
|
image = "${docker_image.emby.latest}"
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/config/emby"
|
||||||
|
container_path = "/config"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media"
|
||||||
|
container_path = "/media"
|
||||||
|
}
|
||||||
|
|
||||||
|
labels = "${merge(
|
||||||
|
local.traefik_common_labels,
|
||||||
|
map(
|
||||||
|
"traefik.frontend.rule", "Host:emby.in.${var.domain},emby.${var.domain}",
|
||||||
|
"traefik.frontend.passHostHeader", "true",
|
||||||
|
"traefik.port", 8096,
|
||||||
|
))}"
|
||||||
|
|
||||||
|
memory = 2048
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 10
|
||||||
|
must_run = true
|
||||||
|
|
||||||
|
# Running as lounge:tatooine
|
||||||
|
env = [
|
||||||
|
"APP_USER=lounge",
|
||||||
|
"APP_UID=1004",
|
||||||
|
"APP_GID=1003",
|
||||||
|
"APP_CONFIG=/mnt/xwing/config",
|
||||||
|
"TZ=Asia/Kolkata",
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
resource "docker_container" "headphones" {
|
||||||
|
name = "headphones"
|
||||||
|
image = "${docker_image.headphones.latest}"
|
||||||
|
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 10
|
||||||
|
must_run = true
|
||||||
|
memory = 128
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/config/headphones"
|
||||||
|
container_path = "/config"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/DL"
|
||||||
|
container_path = "/downloads"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/Music"
|
||||||
|
container_path = "/music"
|
||||||
|
}
|
||||||
|
|
||||||
|
upload {
|
||||||
|
content = "${file("${path.module}/conf/headphones.ini")}"
|
||||||
|
file = "/config/config.ini"
|
||||||
|
}
|
||||||
|
|
||||||
|
labels = "${merge(
|
||||||
|
local.traefik_common_labels,
|
||||||
|
map(
|
||||||
|
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
||||||
|
"traefik.port", 8181,
|
||||||
|
))}"
|
||||||
|
|
||||||
|
# lounge:tatooine
|
||||||
|
env = [
|
||||||
|
"PUID=1004",
|
||||||
|
"PGID=1003",
|
||||||
|
"TZ=Asia/Kolkata",
|
||||||
|
]
|
||||||
|
}
|
|
@ -21,19 +21,11 @@ resource "docker_container" "lychee" {
|
||||||
file = "/config/lychee/user.ini"
|
file = "/config/lychee/user.ini"
|
||||||
}
|
}
|
||||||
|
|
||||||
labels {
|
labels = "${merge(
|
||||||
"traefik.port" = 80
|
locals.traefik_common_labels, map(
|
||||||
"traefik.frontend.passHostHeader" = "false"
|
"traefik.port", 80,
|
||||||
"traefik.enable" = "true"
|
"traefik.frontend.rule","Host:pics.${var.domain},pics.in.${var.domain}"
|
||||||
"traefik.frontend.headers.SSLTemporaryRedirect" = "true"
|
))}"
|
||||||
"traefik.frontend.headers.STSIncludeSubdomains" = "false"
|
|
||||||
"traefik.frontend.headers.contentTypeNosniff" = "true"
|
|
||||||
"traefik.frontend.headers.browserXSSFilter" = "true"
|
|
||||||
"traefik.frontend.headers.STSSeconds" = "2592000"
|
|
||||||
"traefik.frontend.headers.customFrameOptionsValue" = "${var.xfo_allow}"
|
|
||||||
"traefik.frontend.headers.customResponseHeaders" = "${var.xpoweredby}"
|
|
||||||
"traefik.frontend.rule" = "Host:pics.${var.domain},pics.in.${var.domain}"
|
|
||||||
}
|
|
||||||
|
|
||||||
env = [
|
env = [
|
||||||
"PUID=986",
|
"PUID=986",
|
||||||
|
|
379
docker/main.tf
379
docker/main.tf
|
@ -1,379 +0,0 @@
|
||||||
resource docker_container "transmission" {
|
|
||||||
name = "transmission"
|
|
||||||
image = "${docker_image.transmission.latest}"
|
|
||||||
|
|
||||||
labels = "${merge(
|
|
||||||
local.traefik_common_labels,
|
|
||||||
map(
|
|
||||||
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
|
||||||
"traefik.port", 9091,
|
|
||||||
))}"
|
|
||||||
|
|
||||||
ports {
|
|
||||||
internal = 51413
|
|
||||||
external = 51413
|
|
||||||
ip = "${var.ips["eth0"]}"
|
|
||||||
protocol = "udp"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/config/transmission"
|
|
||||||
container_path = "/config"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/DL"
|
|
||||||
container_path = "/downloads"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/data/watch/transmission"
|
|
||||||
container_path = "/watch"
|
|
||||||
}
|
|
||||||
|
|
||||||
upload {
|
|
||||||
content = "${file("${path.module}/conf/transmission.json")}"
|
|
||||||
file = "/config/settings.json"
|
|
||||||
}
|
|
||||||
|
|
||||||
env = [
|
|
||||||
"PGID=1003",
|
|
||||||
"PUID=1000",
|
|
||||||
"TZ=Asia/Kolkata",
|
|
||||||
]
|
|
||||||
|
|
||||||
memory = 1024
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 10
|
|
||||||
must_run = true
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_container" "emby" {
|
|
||||||
name = "emby"
|
|
||||||
image = "${docker_image.emby.latest}"
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/config/emby"
|
|
||||||
container_path = "/config"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media"
|
|
||||||
container_path = "/media"
|
|
||||||
}
|
|
||||||
|
|
||||||
labels = "${merge(
|
|
||||||
local.traefik_common_labels,
|
|
||||||
map(
|
|
||||||
"traefik.frontend.rule", "Host:emby.in.${var.domain},emby.${var.domain}",
|
|
||||||
"traefik.frontend.passHostHeader", "true",
|
|
||||||
"traefik.port", 8096,
|
|
||||||
))}"
|
|
||||||
|
|
||||||
memory = 2048
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 10
|
|
||||||
must_run = true
|
|
||||||
|
|
||||||
# Running as lounge:tatooine
|
|
||||||
env = [
|
|
||||||
"APP_USER=lounge",
|
|
||||||
"APP_UID=1004",
|
|
||||||
"APP_GID=1003",
|
|
||||||
"APP_CONFIG=/mnt/xwing/config",
|
|
||||||
"TZ=Asia/Kolkata",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_container" "couchpotato" {
|
|
||||||
name = "couchpotato"
|
|
||||||
image = "${docker_image.couchpotato.latest}"
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/config/couchpotato"
|
|
||||||
container_path = "/config"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/DL"
|
|
||||||
container_path = "/downloads"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/Movies"
|
|
||||||
container_path = "/movies"
|
|
||||||
}
|
|
||||||
|
|
||||||
labels = "${merge(
|
|
||||||
local.traefik_common_labels,
|
|
||||||
map(
|
|
||||||
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
|
||||||
"traefik.port", 5050,
|
|
||||||
))}"
|
|
||||||
|
|
||||||
memory = 256
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 10
|
|
||||||
must_run = true
|
|
||||||
|
|
||||||
# Running as lounge:tatooine
|
|
||||||
env = [
|
|
||||||
"PUID=1004",
|
|
||||||
"PGID=1003",
|
|
||||||
"TZ=Asia/Kolkata",
|
|
||||||
]
|
|
||||||
|
|
||||||
links = ["{docker_container.transmission.name}"]
|
|
||||||
}
|
|
||||||
|
|
||||||
# resource "docker_container" "airsonic" {
|
|
||||||
# name = "airsonic"
|
|
||||||
# image = "${docker_image.airsonic.latest}"
|
|
||||||
|
|
||||||
# restart = "unless-stopped"
|
|
||||||
# destroy_grace_seconds = 30
|
|
||||||
# must_run = true
|
|
||||||
# memory = 800
|
|
||||||
|
|
||||||
# volumes {
|
|
||||||
# host_path = "/mnt/xwing/config/airsonic/data"
|
|
||||||
# container_path = "/config"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# volumes {
|
|
||||||
# host_path = "/mnt/xwing/media/Music"
|
|
||||||
# container_path = "/music"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# volumes {
|
|
||||||
# host_path = "/mnt/xwing/config/airsonic/playlists"
|
|
||||||
# container_path = "/playlists"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# volumes {
|
|
||||||
# host_path = "/mnt/xwing/config/airsonic/podcasts"
|
|
||||||
# container_path = "/podcasts"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# labels {
|
|
||||||
# "traefik.enable" = "true"
|
|
||||||
# "traefik.port" = "4040"
|
|
||||||
# "traefik.frontend.rule" = "Host:airsonic.in.${var.domain},airsonic.${var.domain}"
|
|
||||||
# "traefik.frontend.passHostHeader" = "true"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# # lounge:tatooine
|
|
||||||
# env = [
|
|
||||||
# "PUID=1004",
|
|
||||||
# "PGID=1003",
|
|
||||||
# "TZ=Asia/Kolkata",
|
|
||||||
# "CONTEXT_PATH=https://airsonic.bb8.fun",
|
|
||||||
# ]
|
|
||||||
# }
|
|
||||||
|
|
||||||
resource "docker_container" "headerdebug" {
|
|
||||||
name = "headerdebug"
|
|
||||||
image = "${docker_image.headerdebug.latest}"
|
|
||||||
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 30
|
|
||||||
must_run = true
|
|
||||||
|
|
||||||
memory = 16
|
|
||||||
|
|
||||||
labels = "${merge(
|
|
||||||
local.traefik_common_labels,
|
|
||||||
map(
|
|
||||||
"traefik.frontend.rule", "Host:debug.in.${var.domain},debug.${var.domain}",
|
|
||||||
"traefik.port", 8080,
|
|
||||||
"traefik.enable", "true",
|
|
||||||
))}"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_container" "headphones" {
|
|
||||||
name = "headphones"
|
|
||||||
image = "${docker_image.headphones.latest}"
|
|
||||||
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 10
|
|
||||||
must_run = true
|
|
||||||
memory = 128
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/config/headphones"
|
|
||||||
container_path = "/config"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/DL"
|
|
||||||
container_path = "/downloads"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/Music"
|
|
||||||
container_path = "/music"
|
|
||||||
}
|
|
||||||
|
|
||||||
upload {
|
|
||||||
content = "${file("${path.module}/conf/headphones.ini")}"
|
|
||||||
file = "/config/config.ini"
|
|
||||||
}
|
|
||||||
|
|
||||||
labels = "${merge(
|
|
||||||
local.traefik_common_labels,
|
|
||||||
map(
|
|
||||||
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
|
||||||
"traefik.port", 8181,
|
|
||||||
))}"
|
|
||||||
|
|
||||||
# lounge:tatooine
|
|
||||||
env = [
|
|
||||||
"PUID=1004",
|
|
||||||
"PGID=1003",
|
|
||||||
"TZ=Asia/Kolkata",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_container" "ubooquity" {
|
|
||||||
name = "ubooquity"
|
|
||||||
image = "${docker_image.ubooquity.latest}"
|
|
||||||
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 30
|
|
||||||
must_run = true
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/config/ubooquity"
|
|
||||||
container_path = "/config"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/EBooks"
|
|
||||||
container_path = "/books"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/EBooks"
|
|
||||||
container_path = "/files"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/media/EBooks/Comics"
|
|
||||||
container_path = "/comics"
|
|
||||||
}
|
|
||||||
|
|
||||||
labels {
|
|
||||||
"traefik.enable" = "true"
|
|
||||||
|
|
||||||
"traefik.admin.port" = 2203
|
|
||||||
"traefik.admin.frontend.rule" = "Host:library.${var.domain}"
|
|
||||||
"traefik.admin.frontend.auth.basic" = "${var.basic_auth}"
|
|
||||||
|
|
||||||
"traefik.read.port" = 2202
|
|
||||||
"traefik.read.frontend.rule" = "Host:read.${var.domain}"
|
|
||||||
|
|
||||||
"traefik.read.frontend.headers.SSLTemporaryRedirect" = "true"
|
|
||||||
"traefik.read.frontend.headers.STSSeconds" = "2592000"
|
|
||||||
"traefik.read.frontend.headers.STSIncludeSubdomains" = "false"
|
|
||||||
"traefik.read.frontend.headers.contentTypeNosniff" = "true"
|
|
||||||
"traefik.read.frontend.headers.browserXSSFilter" = "true"
|
|
||||||
"traefik.read.frontend.headers.customResponseHeaders" = "${var.xpoweredby}"
|
|
||||||
"traefik.frontend.headers.customFrameOptionsValue" = "${var.xfo_allow}"
|
|
||||||
}
|
|
||||||
|
|
||||||
upload {
|
|
||||||
content = "${file("${path.module}/conf/ubooquity.json")}"
|
|
||||||
file = "/config/preferences.json"
|
|
||||||
}
|
|
||||||
|
|
||||||
# lounge:tatooine
|
|
||||||
env = [
|
|
||||||
"PUID=1004",
|
|
||||||
"PGID=1003",
|
|
||||||
"MAXMEM=800",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_container" "wiki" {
|
|
||||||
name = "wiki"
|
|
||||||
image = "${docker_image.wikijs.latest}"
|
|
||||||
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 30
|
|
||||||
must_run = true
|
|
||||||
memory = 300
|
|
||||||
|
|
||||||
upload {
|
|
||||||
content = "${file("${path.module}/conf/wiki.yml")}"
|
|
||||||
file = "/var/wiki/config.yml"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/logs/wiki"
|
|
||||||
container_path = "/logs"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/data/wiki/repo"
|
|
||||||
container_path = "/repo"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/data/wiki/data"
|
|
||||||
container_path = "/data"
|
|
||||||
}
|
|
||||||
|
|
||||||
upload {
|
|
||||||
content = "${file("${path.module}/conf/humans.txt")}"
|
|
||||||
file = "/var/wiki/assets/humans.txt"
|
|
||||||
}
|
|
||||||
|
|
||||||
// The last header is a workaround for double header traefik bug
|
|
||||||
// This might be actually breaking iframe till the 1.5 Final release.
|
|
||||||
|
|
||||||
labels = "${merge(
|
|
||||||
local.traefik_common_labels,
|
|
||||||
map(
|
|
||||||
"traefik.frontend.rule", "Host:wiki.${var.domain}",
|
|
||||||
"traefik.frontend.passHostHeader", "true",
|
|
||||||
"traefik.port", 9999,
|
|
||||||
"traefik.frontend.headers.customResponseHeaders", "${var.xpoweredby}||Referrer-Policy:${var.refpolicy}||X-Frame-Options:${var.xfo_allow}",
|
|
||||||
))}"
|
|
||||||
links = ["${docker_container.mongorocks.name}"]
|
|
||||||
env = [
|
|
||||||
"WIKI_ADMIN_EMAIL=me@captnemo.in",
|
|
||||||
"SESSION_SECRET=${var.wiki_session_secret}",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_container" "muximux" {
|
|
||||||
name = "muximux"
|
|
||||||
image = "${docker_image.muximux.latest}"
|
|
||||||
memory = 64
|
|
||||||
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 10
|
|
||||||
must_run = true
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
host_path = "/mnt/xwing/config/muximux"
|
|
||||||
container_path = "/config"
|
|
||||||
}
|
|
||||||
|
|
||||||
labels = "${merge(
|
|
||||||
local.traefik_common_labels,
|
|
||||||
map(
|
|
||||||
"traefik.port", 80,
|
|
||||||
"traefik.frontend.headers.frameDeny", "true",
|
|
||||||
"traefik.frontend.passHostHeader", "false",
|
|
||||||
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
|
||||||
"traefik.frontend.rule", "Host:home.in.${var.domain},home.${var.domain}",
|
|
||||||
))}"
|
|
||||||
|
|
||||||
# lounge:tatooine
|
|
||||||
env = [
|
|
||||||
"PUID=1004",
|
|
||||||
"PGID=1003",
|
|
||||||
"TZ=Asia/Kolkata",
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
resource "docker_container" "muximux" {
|
||||||
|
name = "muximux"
|
||||||
|
image = "${docker_image.muximux.latest}"
|
||||||
|
memory = 64
|
||||||
|
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 10
|
||||||
|
must_run = true
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/config/muximux"
|
||||||
|
container_path = "/config"
|
||||||
|
}
|
||||||
|
|
||||||
|
labels = "${merge(
|
||||||
|
local.traefik_common_labels,
|
||||||
|
map(
|
||||||
|
"traefik.port", 80,
|
||||||
|
"traefik.frontend.headers.frameDeny", "true",
|
||||||
|
"traefik.frontend.passHostHeader", "false",
|
||||||
|
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
||||||
|
"traefik.frontend.rule", "Host:home.in.${var.domain},home.${var.domain}",
|
||||||
|
))}"
|
||||||
|
|
||||||
|
# lounge:tatooine
|
||||||
|
env = [
|
||||||
|
"PUID=1004",
|
||||||
|
"PGID=1003",
|
||||||
|
"TZ=Asia/Kolkata",
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
resource docker_container "transmission" {
|
||||||
|
name = "transmission"
|
||||||
|
image = "${docker_image.transmission.latest}"
|
||||||
|
|
||||||
|
labels = "${merge(
|
||||||
|
local.traefik_common_labels,
|
||||||
|
map(
|
||||||
|
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
||||||
|
"traefik.port", 9091,
|
||||||
|
))}"
|
||||||
|
|
||||||
|
ports {
|
||||||
|
internal = 51413
|
||||||
|
external = 51413
|
||||||
|
ip = "${var.ips["eth0"]}"
|
||||||
|
protocol = "udp"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/config/transmission"
|
||||||
|
container_path = "/config"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/DL"
|
||||||
|
container_path = "/downloads"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/data/watch/transmission"
|
||||||
|
container_path = "/watch"
|
||||||
|
}
|
||||||
|
|
||||||
|
upload {
|
||||||
|
content = "${file("${path.module}/conf/transmission.json")}"
|
||||||
|
file = "/config/settings.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"PGID=1003",
|
||||||
|
"PUID=1000",
|
||||||
|
"TZ=Asia/Kolkata",
|
||||||
|
]
|
||||||
|
|
||||||
|
memory = 1024
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 10
|
||||||
|
must_run = true
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
resource "docker_container" "ubooquity" {
|
||||||
|
name = "ubooquity"
|
||||||
|
image = "${docker_image.ubooquity.latest}"
|
||||||
|
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 30
|
||||||
|
must_run = true
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/config/ubooquity"
|
||||||
|
container_path = "/config"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/EBooks"
|
||||||
|
container_path = "/books"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/EBooks"
|
||||||
|
container_path = "/files"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/media/EBooks/Comics"
|
||||||
|
container_path = "/comics"
|
||||||
|
}
|
||||||
|
|
||||||
|
labels {
|
||||||
|
"traefik.enable" = "true"
|
||||||
|
|
||||||
|
"traefik.admin.port" = 2203
|
||||||
|
"traefik.admin.frontend.rule" = "Host:library.${var.domain}"
|
||||||
|
"traefik.admin.frontend.auth.basic" = "${var.basic_auth}"
|
||||||
|
|
||||||
|
"traefik.read.port" = 2202
|
||||||
|
"traefik.read.frontend.rule" = "Host:read.${var.domain}"
|
||||||
|
|
||||||
|
"traefik.read.frontend.headers.SSLTemporaryRedirect" = "true"
|
||||||
|
"traefik.read.frontend.headers.STSSeconds" = "2592000"
|
||||||
|
"traefik.read.frontend.headers.STSIncludeSubdomains" = "false"
|
||||||
|
"traefik.read.frontend.headers.contentTypeNosniff" = "true"
|
||||||
|
"traefik.read.frontend.headers.browserXSSFilter" = "true"
|
||||||
|
"traefik.read.frontend.headers.customResponseHeaders" = "${var.xpoweredby}"
|
||||||
|
"traefik.frontend.headers.customFrameOptionsValue" = "${var.xfo_allow}"
|
||||||
|
}
|
||||||
|
|
||||||
|
upload {
|
||||||
|
content = "${file("${path.module}/conf/ubooquity.json")}"
|
||||||
|
file = "/config/preferences.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
# lounge:tatooine
|
||||||
|
env = [
|
||||||
|
"PUID=1004",
|
||||||
|
"PGID=1003",
|
||||||
|
"MAXMEM=800",
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
resource "docker_container" "wiki" {
|
||||||
|
name = "wiki"
|
||||||
|
image = "${docker_image.wikijs.latest}"
|
||||||
|
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 30
|
||||||
|
must_run = true
|
||||||
|
memory = 300
|
||||||
|
|
||||||
|
upload {
|
||||||
|
content = "${file("${path.module}/conf/wiki.yml")}"
|
||||||
|
file = "/var/wiki/config.yml"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/logs/wiki"
|
||||||
|
container_path = "/logs"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/data/wiki/repo"
|
||||||
|
container_path = "/repo"
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
host_path = "/mnt/xwing/data/wiki/data"
|
||||||
|
container_path = "/data"
|
||||||
|
}
|
||||||
|
|
||||||
|
upload {
|
||||||
|
content = "${file("${path.module}/conf/humans.txt")}"
|
||||||
|
file = "/var/wiki/assets/humans.txt"
|
||||||
|
}
|
||||||
|
|
||||||
|
// The last header is a workaround for double header traefik bug
|
||||||
|
// This might be actually breaking iframe till the 1.5 Final release.
|
||||||
|
|
||||||
|
labels = "${merge(
|
||||||
|
local.traefik_common_labels,
|
||||||
|
map(
|
||||||
|
"traefik.frontend.rule", "Host:wiki.${var.domain}",
|
||||||
|
"traefik.frontend.passHostHeader", "true",
|
||||||
|
"traefik.port", 9999,
|
||||||
|
"traefik.frontend.headers.customResponseHeaders", "${var.xpoweredby}||Referrer-Policy:${var.refpolicy}||X-Frame-Options:${var.xfo_allow}",
|
||||||
|
))}"
|
||||||
|
|
||||||
|
links = ["${docker_container.mongorocks.name}"]
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"WIKI_ADMIN_EMAIL=me@captnemo.in",
|
||||||
|
"SESSION_SECRET=${var.wiki_session_secret}",
|
||||||
|
]
|
||||||
|
}
|
1
main.tf
1
main.tf
|
@ -62,6 +62,7 @@ module "monitoring" {
|
||||||
gf-security-admin-password = "${var.gf-security-admin-password}"
|
gf-security-admin-password = "${var.gf-security-admin-password}"
|
||||||
domain = "bb8.fun"
|
domain = "bb8.fun"
|
||||||
transmission = "${module.docker.names-transmission}"
|
transmission = "${module.docker.names-transmission}"
|
||||||
|
traefik-labels = "${var.traefik-common-labels}"
|
||||||
}
|
}
|
||||||
|
|
||||||
module "digitalocean" {
|
module "digitalocean" {
|
||||||
|
|
|
@ -36,17 +36,10 @@ resource "docker_container" "cadvisor" {
|
||||||
container_path = "/var/run"
|
container_path = "/var/run"
|
||||||
}
|
}
|
||||||
|
|
||||||
labels {
|
labels = "${merge(
|
||||||
"traefik.frontend.auth.basic" = "${var.basic_auth}"
|
var.traefik-labels, map(
|
||||||
"traefik.port" = 8080
|
"traefik.port", 8080,
|
||||||
"traefik.enable" = "true"
|
"traefik.frontend.rule","Host:cadvisor.${var.domain}",
|
||||||
"traefik.frontend.headers.SSLTemporaryRedirect" = "true"
|
"traefik.frontend.auth.basic", "${var.basic_auth}"
|
||||||
"traefik.frontend.headers.STSSeconds" = "2592000"
|
))}"
|
||||||
"traefik.frontend.headers.STSIncludeSubdomains" = "false"
|
|
||||||
"traefik.frontend.headers.contentTypeNosniff" = "true"
|
|
||||||
"traefik.frontend.headers.browserXSSFilter" = "true"
|
|
||||||
"traefik.frontend.passHostHeader" = "true"
|
|
||||||
"traefik.frontend.headers.customFrameOptionsValue" = "ALLOW-FROM https://home.bb8.fun/"
|
|
||||||
"traefik.frontend.headers.customResponseHeaders" = "X-Powered-By:Allomancy||X-Server:Blackbox"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,11 @@ resource docker_container "grafana" {
|
||||||
name = "grafana"
|
name = "grafana"
|
||||||
image = "${docker_image.grafana.latest}"
|
image = "${docker_image.grafana.latest}"
|
||||||
|
|
||||||
labels {
|
labels = "${merge(
|
||||||
# "traefik.frontend.auth.basic" = "${var.basic_auth}"
|
var.traefik-labels, map(
|
||||||
"traefik.port" = 3000
|
"traefik.port", 3000,
|
||||||
"traefik.enable" = "true"
|
"traefik.frontend.rule","Host:grafana.${var.domain}"
|
||||||
"traefik.frontend.headers.SSLTemporaryRedirect" = "true"
|
))}"
|
||||||
"traefik.frontend.headers.STSSeconds" = "2592000"
|
|
||||||
"traefik.frontend.headers.STSIncludeSubdomains" = "false"
|
|
||||||
"traefik.frontend.headers.contentTypeNosniff" = "true"
|
|
||||||
"traefik.frontend.headers.browserXSSFilter" = "true"
|
|
||||||
|
|
||||||
# "traefik.frontend.headers.customResponseHeaders" = "${var.xpoweredby}"
|
|
||||||
# "traefik.frontend.headers.customFrameOptionsValue" = "${var.xfo_allow}"
|
|
||||||
}
|
|
||||||
|
|
||||||
volumes {
|
volumes {
|
||||||
host_path = "/mnt/xwing/data/grafana"
|
host_path = "/mnt/xwing/data/grafana"
|
||||||
|
|
|
@ -25,3 +25,7 @@ variable "alert-slack-incoming-webhook" {
|
||||||
variable "basic_auth" {
|
variable "basic_auth" {
|
||||||
default = "tatooine:$2y$05$iPbatint3Gulbs6kUtyALO9Yq5sBJ..aiF82bcIziH4ytz9nFoPr6"
|
default = "tatooine:$2y$05$iPbatint3Gulbs6kUtyALO9Yq5sBJ..aiF82bcIziH4ytz9nFoPr6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "traefik-labels" {
|
||||||
|
type = "map"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue