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

author Nemo <me@captnemo.in> 2018-02-18 5:04:09.0 +05:30:00
committer Nemo <me@captnemo.in> 2018-02-18 5:04:09.0 +05:30:00
commit
8bb05fec661170cf4db9feda85bb4f6de1759fd6 [patch]
tree
8285cb0d694c81e0b1a819ce37521cf9891f7d41
parent
937da3dec77e135e109b20e2509c8249c47a28ec
download
8bb05fec661170cf4db9feda85bb4f6de1759fd6.tar.gz

Airsonic is back



Diff

 main.tf                            | 13 ++++++++-----
 variables.tf                       |  1 +
 docker/airsonic.tf                 | 37 -------------------------------------
 docker/data.tf                     |  4 ----
 docker/images.tf                   |  5 -----
 media/airsonic.tf                  | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 media/variables.tf                 |  3 +++
 monitoring/prometheus.tf           |  2 +-
 media/conf/airsonic.properties.tpl | 41 +++++++++++++++++++++++++++++++++++++++++
 9 files changed, 120 insertions(+), 52 deletions(-)

diff --git a/main.tf b/main.tf
index 8cb4123..0a23e58 100644
--- a/main.tf
+++ a/main.tf
@@ -50,11 +50,14 @@
}

module "media" {

  source             = "media"
  domain             = "bb8.fun"
  links-emby         = "${module.docker.names-emby}"
  links-transmission = "${module.docker.names-transmission}"
  traefik-labels     = "${var.traefik-common-labels}"
  source                 = "media"
  domain                 = "bb8.fun"
  links-emby             = "${module.docker.names-emby}"
  links-transmission     = "${module.docker.names-transmission}"
  links-mariadb          = "${module.docker.names-mariadb}"
  traefik-labels         = "${var.traefik-common-labels}"
  airsonic-smtp-password = "${var.airsonic-smtp-password}"
  airsonic-db-password   = "${var.mysql_airsonic_password}"
}

module "monitoring" {

diff --git a/variables.tf b/variables.tf
index e10fad1..1a5b9bf 100644
--- a/variables.tf
+++ a/variables.tf
@@ -45,6 +45,7 @@
variable "gitea-internal-token" {}
variable "gitea-smtp-password" {}
variable "digitalocean-token" {}
variable "airsonic-smtp-password" {}

variable "traefik-common-labels" {

  type = "map"
diff --git a/docker/airsonic.tf b/docker/airsonic.tf
index 5b9ed33..8b13789 100644
--- a/docker/airsonic.tf
+++ a/docker/airsonic.tf
@@ -1,38 +1,1 @@
# 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",
#   ]
# }

diff --git a/docker/data.tf b/docker/data.tf
index 8a4e1a5..2e27ee8 100644
--- a/docker/data.tf
+++ a/docker/data.tf
@@ -20,10 +20,6 @@
  name = "traefik:cancoillotte-alpine"
}

data "docker_registry_image" "airsonic" {

  name = "linuxserver/airsonic:latest"
}

data "docker_registry_image" "wikijs" {

  name = "requarks/wiki:latest"
}
diff --git a/docker/images.tf b/docker/images.tf
index 0cc9e9f..9c7a260 100644
--- a/docker/images.tf
+++ a/docker/images.tf
@@ -18,11 +18,6 @@
  pull_triggers = ["${data.docker_registry_image.traefik.sha256_digest}"]
}

resource "docker_image" "airsonic" {

  name          = "${data.docker_registry_image.airsonic.name}"
  pull_triggers = ["${data.docker_registry_image.airsonic.sha256_digest}"]
}

resource "docker_image" "wikijs" {

  name          = "${data.docker_registry_image.wikijs.name}"
  pull_triggers = ["${data.docker_registry_image.wikijs.sha256_digest}"]
diff --git a/media/airsonic.tf b/media/airsonic.tf
new file mode 100644
index 0000000..37d5fee 100644
--- /dev/null
+++ a/media/airsonic.tf
@@ -1,0 +1,66 @@
resource "docker_container" "airsonic" {

  name                  = "airsonic"
  image                 = "${docker_image.airsonic.latest}"
  restart               = "unless-stopped"
  destroy_grace_seconds = 30
  must_run              = true

  upload {

    content = "${data.template_file.airsonic-properties-file.rendered}"
    file    = "/usr/lib/jvm/java-1.8-openjdk/jre/lib/airsonic.properties"
  }

  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",
  ]

  links = ["${var.links-mariadb}"]
}

resource "docker_image" "airsonic" {

  name          = "${data.docker_registry_image.airsonic.name}"
  pull_triggers = ["${data.docker_registry_image.airsonic.sha256_digest}"]
}

data "docker_registry_image" "airsonic" {

  name = "linuxserver/airsonic:latest"
}

data "template_file" "airsonic-properties-file" {

  template = "${file("${path.module}/conf/airsonic.properties.tpl")}"

  vars {

    smtp-password = "${var.airsonic-smtp-password}"
    db-password   = "${var.airsonic-db-password}"
  }
}
diff --git a/media/variables.tf b/media/variables.tf
index 641eb20..eb8eac9 100644
--- a/media/variables.tf
+++ a/media/variables.tf
@@ -1,9 +1,12 @@
variable "domain" {

  type = "string"
}

variable "links-emby" {}
variable "links-transmission" {}
variable "links-mariadb" {}
variable "airsonic-smtp-password" {}
variable "airsonic-db-password" {}

variable "traefik-labels" {

  type = "map"
diff --git a/monitoring/prometheus.tf b/monitoring/prometheus.tf
index c7fbd71..2ff8930 100644
--- a/monitoring/prometheus.tf
+++ a/monitoring/prometheus.tf
@@ -27,7 +27,7 @@
    "${docker_container.nodeexporter.name}",
    "${docker_container.cadvisor.name}",
    "${docker_container.transmission-exporter.name}",
    "${var.links-traefik}"
    "${var.links-traefik}",
  ]

  restart               = "unless-stopped"
diff --git a/media/conf/airsonic.properties.tpl b/media/conf/airsonic.properties.tpl
new file mode 100644
index 0000000..adbe0ec 100644
--- /dev/null
+++ a/media/conf/airsonic.properties.tpl
@@ -1,0 +1,41 @@
MediaLibraryStatistics=1512 4850 62662 486912890569 15485585
IndexString=A B C D E F G H I J K L M N O P Q R S T U V W X-Z(XYZ)
IgnoredArticles=The El La Los Las Le Les
Shortcuts=New Incoming Podcast
PlaylistFolder=/var/playlists
MusicFileTypes=mp3 ogg oga aac m4a flac wav wma aif aiff ape mpc shn
VideoFileTypes=flv avi mpg mpeg mp4 m4v mkv mov wmv ogv divx m2ts
CoverArtFileTypes2=cover.jpg cover.png cover.gif folder.jpg jpg jpeg gif png
SortAlbumsByYear=true
GettingStartedEnabled=false
WelcomeTitle=Airsonic
WelcomeSubtitle=
WelcomeMessage2=
LoginMessage=
Theme=default
LocaleLanguage=en
LocaleCountry=in
LocaleVariant=
IndexCreationInterval=3
IndexCreationHour=3
FastCacheEnabled=false
OrganizeByFolderStructure=true
DownloadBitrateLimit=0
UploadBitrateLimit=0
LdapEnabled=false
LdapUrl=ldap://host.domain.com:389/cn=Users,dc=domain,dc=com
LdapSearchFilter=(sAMAccountName={0})
LdapManagerDn=
LdapAutoShadowing=false
SmtpServer=smtp.mailgun.com
SmtpEncryption=SSL/TLS
SmtpPort=465
SmtpUser=airsonic@captnemo.in
SmtpFrom=airsonic@captnemo.in
SmtpPassword=${smtp-password}

DatabaseConfigType=embed
DatabaseConfigEmbedDriver=org.hsqldb.jdbcDriver
DatabaseConfigEmbedUrl=jdbc:mysql://mariadb:3306/airsonic
DatabaseConfigEmbedUsername=airsonic
DatabaseConfigEmbedPassword=${db-password}