diff --git a/docker/airsonic.tf b/docker/airsonic.tf index 5b9ed33..8b13789 100644 --- a/docker/airsonic.tf +++ b/docker/airsonic.tf @@ -1,38 +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 +++ b/docker/data.tf @@ -20,10 +20,6 @@ data "docker_registry_image" "traefik" { 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 +++ b/docker/images.tf @@ -18,11 +18,6 @@ resource "docker_image" "traefik" { 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/main.tf b/main.tf index 8cb4123..0a23e58 100644 --- a/main.tf +++ b/main.tf @@ -50,11 +50,14 @@ module "tt-rss" { } 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/media/airsonic.tf b/media/airsonic.tf new file mode 100644 index 0000000..37d5fee --- /dev/null +++ b/media/airsonic.tf @@ -0,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/conf/airsonic.properties.tpl b/media/conf/airsonic.properties.tpl new file mode 100644 index 0000000..adbe0ec --- /dev/null +++ b/media/conf/airsonic.properties.tpl @@ -0,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} diff --git a/media/variables.tf b/media/variables.tf index 641eb20..eb8eac9 100644 --- a/media/variables.tf +++ b/media/variables.tf @@ -4,6 +4,9 @@ variable "domain" { 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 +++ b/monitoring/prometheus.tf @@ -27,7 +27,7 @@ resource docker_container "prometheus" { "${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/variables.tf b/variables.tf index e10fad1..1a5b9bf 100644 --- a/variables.tf +++ b/variables.tf @@ -45,6 +45,7 @@ variable "gitea-secret-key" {} variable "gitea-internal-token" {} variable "gitea-smtp-password" {} variable "digitalocean-token" {} +variable "airsonic-smtp-password" {} variable "traefik-common-labels" { type = "map"