{"id":4225,"date":"2020-12-18T16:20:44","date_gmt":"2020-12-18T16:20:44","guid":{"rendered":"https:\/\/puvox.software\/blog\/?p=4225"},"modified":"2024-08-25T20:49:53","modified_gmt":"2024-08-25T20:49:53","slug":"add-plugin-for-liquidsoap-in-azuracast","status":"publish","type":"post","link":"https:\/\/puvox.software\/blog\/add-plugin-for-liquidsoap-in-azuracast\/","title":{"rendered":"Add plugin for LiquidSoap in AzuraCast"},"content":{"rendered":"<div class=\"default-content-clss content_4225 type_post \">\r\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"618\" height=\"325\" class=\"wp-image-4226\" src=\"https:\/\/puvox.software\/blog\/wp-content\/uploads\/sites\/2\/2020\/12\/liquidsoap-azuracast.png\" alt=\"\" srcset=\"https:\/\/puvox.software\/blog\/wp-content\/uploads\/sites\/2\/2020\/12\/liquidsoap-azuracast.png 618w, https:\/\/puvox.software\/blog\/wp-content\/uploads\/sites\/2\/2020\/12\/liquidsoap-azuracast-300x158.png 300w, https:\/\/puvox.software\/blog\/wp-content\/uploads\/sites\/2\/2020\/12\/liquidsoap-azuracast-400x210.png 400w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><span style=\"color: #ff0000; font-size: 24pt;\">EDIT: this article is now outdated.<\/span> <br \/>You should edit docker-compose to point to custom dockerfile, and add the plugin in <code>\/util\/docker\/stations\/setup\/liquidsoap.sh<\/code><span style=\"font-family: arial, helvetica, sans-serif;\"> after that you build the docker image. however, soundtouch plugin seems now to be included.<\/span><\/p>\r\n<p>&nbsp;<\/p>\r\n<p><strong>Old Content<\/strong>:<\/p>\r\n<p>As you know, <a style=\"color: gray;\" href=\"https:\/\/www.azuracast.com\/\">AzuraCast<\/a> comes with pre-built <a style=\"color: gray;\" href=\"http:\/\/liquidsoap.info\">liquidsoap<\/a> config. In order to enable any plugin, according to its authors, you will need to manually re-build the docker image, and use it as replacement for original container. <br \/>As I am not familiar much with <a style=\"color: gray;\" href=\"http:\/\/docker.com\">Docker<\/a>, I&#8217;ve overgone a dirty way to enable specific plugin, called <code>soundtouch<\/code> in my `Ubuntu &amp; Docker` Azuracast installation ( So, there might be easier way, if so, please comment it)<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Put the contents of <code><a href=\"https:\/\/github.com\/AzuraCast\/docker-azuracast-radio\">this repo<\/a><\/code> into a new folder, i.e.: <code>\/var\/azuracast\/my-radio-image<\/code><\/li>\r\n\r\n\r\n\r\n<li>In its <code>Dockerfile<\/code> , where it says <code><em>opam_packages .... liquidsoap<\/em><\/code> , before liquidsoap, add <code>soundtouch <\/code>in the list.<\/li>\r\n\r\n\r\n\r\n<li>In the end of file: <code>build\/setup\/liquidsoap.sh<\/code> in the end of the plugins list, add <code>libsoundtouch-dev<\/code><\/li>\r\n\r\n\r\n\r\n<li>then open up a terminal and run:<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<pre id=\"block-d0641636-c266-48bc-bf92-ffd446b744ac\" class=\"wp-block-preformatted\">cd \/var\/azuracast &amp;&amp; docker build -t my_custom_station .\/my-radio-image<\/pre>\r\n\r\n\r\n\r\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\r\n<p class=\"wp-block-paragraph\"><em>After several minutes needed, it will complete process, and note that it shouldn&#8217;t produced error. To confirm that, run <code>docker images<\/code> and in the list you should see the latest image named <code>my_custom_station<\/code> . If not, you should correct the build error.<\/em><\/p>\r\n<\/blockquote>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>then in <code>\/var\/azuracast<\/code> create <code>docker-compose.override.yml<\/code> and insert:<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\">version: '2.2'\r\nservices:\r\n stations:\r\n     image: \"my_custom_station:latest\" <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Then run the command:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\">docker-compose up -d<\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">After that, added function in liquidsoap configuration, restarted liquidsoap (wait several seconds in between) and it was working.<\/p>\r\n\r\n\r\n\r\n<p><span style=\"color: #ff0000;\"><strong>NOTE:\u00a0 On every update of official <a href=\"https:\/\/hub.docker.com\/r\/azuracast\/azuracast_radio\">AzuraCast-Radio<\/a> package, you might need to do this process again, to adopt the new azura-stations image.<\/strong><\/span><\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\"><em>References<\/em><\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/hub.docker.com\/r\/stephanel\/liquidsoap\/dockerfile\">https:\/\/hub.docker.com\/r\/stephanel\/liquidsoap\/dockerfile<\/a><br \/><a href=\"https:\/\/github.com\/AzuraCast\/AzuraCast\/issues\/1943\">https:\/\/github.com\/AzuraCast\/AzuraCast\/issues\/1943<\/a><br \/><a href=\"https:\/\/github.com\/AzuraCast\/AzuraCast\/issues\/3530\">https:\/\/github.com\/AzuraCast\/AzuraCast\/issues\/3530<\/a><br \/><a href=\"https:\/\/github.com\/AzuraCast\/AzuraCast\/issues\/3540\">https:\/\/github.com\/AzuraCast\/AzuraCast\/issues\/3540<\/a><\/p>\r\n<\/div>","protected":false},"excerpt":{"rendered":"<div class=\"default-content-clss excerpt_4225 type_post \"><p>EDIT: this article is now outdated. You should edit docker-compose to point to custom dockerfile, and add the plugin in \/util\/docker\/stations\/setup\/liquidsoap.sh after that you build the docker image. however, soundtouch<a class=\"excerpt-read-more\" href=\"https:\/\/puvox.software\/blog\/add-plugin-for-liquidsoap-in-azuracast\/\">(Continue Reading)<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":4226,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[13],"tags":[],"class_list":["post-4225","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-website"],"_links":{"self":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts\/4225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/comments?post=4225"}],"version-history":[{"count":3,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts\/4225\/revisions"}],"predecessor-version":[{"id":5744,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts\/4225\/revisions\/5744"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/media\/4226"}],"wp:attachment":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/media?parent=4225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/categories?post=4225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/tags?post=4225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}