🏡 index : github.com/captn3m0/nebula.git

author Nemo <commits@captnemo.in> 2022-12-26 12:47:30.0 +05:30:00
committer Nemo <commits@captnemo.in> 2022-12-26 12:47:48.0 +05:30:00
commit
587b6258bb70d53bc22426d5cddc7d0c614b3e98 [patch]
tree
9cd34afce581d18e272c0c7b617e4c8739995137
parent
da4fc888ef7034f57eea734bb202971d96de133a
download
587b6258bb70d53bc22426d5cddc7d0c614b3e98.tar.gz

Mastodon: Initial Configuration

This is missing some secrets, will commit those later

Diff

 secrets.tf           |  5 +++++
 mastodon/db.tf       | 18 ++++++++++++++++++
 mastodon/main.tf     | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 mastodon/network.tf  |  5 +++++
 mastodon/provider.tf | 10 ++++++++++
 mastodon/vars.tf     |  3 +++
 6 files changed, 135 insertions(+)

diff --git a/secrets.tf b/secrets.tf
index 90d0932..5bcb3ce 100644
--- a/secrets.tf
+++ a/secrets.tf
@@ -176,3 +176,8 @@
  path = "Nebula/navidrome-spotify-secret"
}



data "pass_password" "mastodon-db-password" {

  path = "Nebula/MASTODON_DB_PASSWORD"
}
diff --git a/mastodon/db.tf b/mastodon/db.tf
new file mode 100644
index 0000000..0b326e7 100644
--- /dev/null
+++ a/mastodon/db.tf
@@ -1,0 +1,18 @@
module "mastodon-redis" {

  name   = "mastodon-redis"
  source = "../modules/container"
  image  = "redis:alpine"
  networks   = ["mastodon"]
  keep_image = true

  resource = {

    memory      = 256
    memory_swap = 256
  }
}

module "mastodon-db" {

  source   = "../modules/postgres"
  name     = "mastodon"
  password = var.db-password
}
diff --git a/mastodon/main.tf b/mastodon/main.tf
new file mode 100644
index 0000000..35e2c86 100644
--- /dev/null
+++ a/mastodon/main.tf
@@ -1,0 +1,94 @@
module "mastodon-web" {

  name   = "mastodon-web"
  source = "../modules/container"
  image  = "tootsuite/mastodon:v4.0"

  networks = ["mastodon", "traefik", "external", "postgres"]

  env = concat(local.env,[

    "MAX_THREADS=4",
    "WEB_CONCURRENCY=5"
  ])

  command = [

    "bash",
    "-c",
    "rm -f /mastodon/tmp/pids/server.pid; bundle exec rake db:migrate; bundle exec rails s -p 3000"
  ]

  volumes = [{

    container_path = "/mastodon/public/system"
    host_path      = "/mnt/xwing/data/mastodon"
  }]

  web = {

    expose = "true"
    host = "tatooine.club"
    port = 3000
  }

  resource = {

    memory      = 1024
    memory_swap = 1024
  }
}


module "mastodon-streaming" {

  name   = "mastodon-streaming"
  source = "../modules/container"
  image  = "tootsuite/mastodon:v4.0"
  # 24 threads for Streaming
  env = concat(local.env,[

    "DB_POOL=8",
    "STREAMING_CLUSTER_NUM=4"
  ])

  networks = ["postgres", "external", "mastodon"]

  command = [

    "node",
    "./streaming"
  ]

  web = {

    expose = "false"
  }

  resource = {

    memory      = 1024
    memory_swap = 1024
  }
}


module "mastodon-sidekiq" {

  name   = "mastodon-sidekiq"
  source = "../modules/container"
  image  = "tootsuite/mastodon:v4.0"
  env = concat(local.env,[

    "DB_POOL=50"
  ])

   web = {

    expose = "false"
  }

  networks = ["postgres", "external", "mastodon"]

  command = [

    "bundle",
    "exec",
    "sidekiq"
  ]

  volumes =  [{

      container_path = "/mastodon/public/system"
      host_path      = "/mnt/xwing/data/mastodon"
    }]

  resource = {

    memory      = 1024
    memory_swap = 1024
  }
}
diff --git a/mastodon/network.tf b/mastodon/network.tf
new file mode 100644
index 0000000..be7dc01 100644
--- /dev/null
+++ a/mastodon/network.tf
@@ -1,0 +1,5 @@
resource "docker_network" "mastodon" {

  name   = "mastodon"
  driver = "bridge"
  internal = true
}
diff --git a/mastodon/provider.tf b/mastodon/provider.tf
new file mode 100644
index 0000000..b924f6c 100644
--- /dev/null
+++ a/mastodon/provider.tf
@@ -1,0 +1,10 @@
terraform {

  required_providers {

    postgresql = {

      source = "cyrilgdn/postgresql"
    }
    docker = {

      source = "kreuzwerker/docker"
    }
  }
}
diff --git a/mastodon/vars.tf b/mastodon/vars.tf
new file mode 100644
index 0000000..f47eb44 100644
--- /dev/null
+++ a/mastodon/vars.tf
@@ -1,0 +1,3 @@
variable "db-password" {

	type = string
}