Azuracast: Raspberry Pi 3 (Raspbian) Docker Support

Created on 13 Dec 2017  ·  45Comments  ·  Source: AzuraCast/AzuraCast

I tried to install on a Raspberry Pi 3 running raspbian, but I get the following error when running ./docker-install.sh

Pulling influxdb (influxdb:alpine)...
alpine: Pulling from library/influxdb
ERROR: no matching manifest for linux/arm in the manifest list entries
Creating network "azuracast_default" with the default driver
Creating volume "azuracast_db_data" with default driver
Creating volume "azuracast_influx_data" with default driver
Creating volume "azuracast_tmp_data" with default driver
Creating volume "azuracast_station_data" with default driver
Pulling influxdb (influxdb:alpine)...
alpine: Pulling from library/influxdb
ERROR: no matching manifest for linux/arm in the manifest list entries
Pulling influxdb (influxdb:alpine)...
alpine: Pulling from library/influxdb
ERROR: no matching manifest for linux/arm in the manifest list entries

Does anyone know how to solve it?

enhancement

Most helpful comment

Our installation instructions have been updated with specific ARM64/RPi 3+ installation instructions. We will update this page once we can confirm that there is a viable Docker installation path as well.

All 45 comments

@HiseEiichi The Docker installation isn't currently supported for ARM-based computers, because it depends on building certain radio software from source that isn't supported on that architecture.

The traditional installation should still work, however.

@SlvrEagle23 Does the traditional installation support Raspbian (Debian)? Thank you for your support. I will try to perform the traditional installation.

@SlvrEagle23 I installed Ubuntu 16.04 Server and now I have the following error while performing the traditional installation.

I get the following error when running ./install.sh

totermw_2017-12-13_01-00-02

Note¹: I typed apt-get install -f manually and restarted the traditional installation, the error persists.

@HiseEiichi Just pushed up a small fix that may help with this. Try it now.

@SlvrEagle23 Nginx was installed, now have a new error.

Failed to start nginx

TASK [services : Enable and restart all core services] ******************************
changed: [localhost] => (item=influxdb)
changed: [localhost] => (item=mysql)
changed: [localhost] => (item=php7.1-fpm)
failed: [localhost] (item=nginx) => {"changed": false, "item": "nginx", "msg": "Unable to start service nginx: Job for nginx.service failed because the control process exited with error code. See \"systemctl status nginx.service\" and \"journalctl -xe\" for details.\n"}
changed: [localhost] => (item=redis)

Running systemctl status, it returns this

root@ubuntu:/var/azuracast/www# systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2017-12-13 14:35:41 UTC; 23min ago
Docs: man:nginx(8)
Process: 20628 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=203/EXEC)
Dec 13 14:35:41 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 13 14:35:41 ubuntu systemd[1]: nginx.service: Control process exited, code=exited status=203
Dec 13 14:35:41 ubuntu systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Dec 13 14:35:41 ubuntu systemd[1]: nginx.service: Unit entered failed state.
Dec 13 14:35:41 ubuntu systemd[1]: nginx.service: Failed with result 'exit-code'.

I found this error using journalctl-xe

root@ubuntu:/var/azuracast/www# journalctl -xe
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z 'network' registered for diagnostics monitoring service=monitor
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z 'system' registered for diagnostics monitoring service=monitor
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Starting precreation service with check interval of 10m0s, advance period of 30m0s se
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Starting snapshot service service=snapshot
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Starting continuous query service service=continuous_querier
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Starting HTTP service service=httpd
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Authentication enabled:false service=httpd
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Listening on HTTP:[::]:8086 service=httpd
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Starting retention policy enforcement service with check interval of 30m0s service=re
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Listening for signals
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Storing statistics in database '_internal' retention policy 'monitor', at interval 10
Dec 13 15:49:11 ubuntu influxd[25939]: [I] 2017-12-13T15:49:11Z Sending usage statistics to usage.influxdata.com
Dec 13 15:55:09 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
-- Subject: Unit nginx.service has begun start-up
-- Defined-By: systemd

-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

-- Unit nginx.service has begun starting up.
Dec 13 15:55:09 ubuntu systemd[26441]: nginx.service: Failed at step EXEC spawning /usr/sbin/nginx: No such file or directory
-- Subject: Process /usr/sbin/nginx could not be executed
-- Defined-By: systemd

-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

-- The process /usr/sbin/nginx could not be executed and failed.

-- The error number returned by this process is 2.
Dec 13 15:55:09 ubuntu systemd[1]: nginx.service: Control process exited, code=exited status=203
Dec 13 15:55:09 ubuntu systemd[1]: Failed to start A high performance web server and a reverse proxy server.
-- Subject: Unit nginx.service has failed
-- Defined-By: systemd

-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

-- Unit nginx.service has failed.

-- The result is failed.
Dec 13 15:55:09 ubuntu systemd[1]: nginx.service: Unit entered failed state.
Dec 13 15:55:09 ubuntu systemd[1]: nginx.service: Failed with result 'exit-code'.

Typing NGINX in the terminal, he returns this

root@ubuntu:/usr/sbin# nginx
nginx: [emerg] unknown directive "nchan_publisher" in /etc/nginx/sites-enabled/00-azuracast:7

@HiseEiichi It seems nchan, the service that AzuraCast uses to push out live now-playing and other updates, is having some trouble with compatibility with the ARM architecture.

I'm not sure that there's an easy solution to that, actually. I would normally go the initial route you went and say "just go with Docker", but then there's the issue of Influx not being built for ARM on there.

Bit of a rock and a hard place situation here. I'll keep looking into it.

@SlvrEagle23 Thank you for everything.

Apparently, the InfluxDB wouldn't be the only one with problems on ARM architecture, Mariadb is also incompatible with ARM. Do you think it would be possible to solve this problem of the incompatibility of architecture, using other images as the InfluxDB made by Hypriot?

Here are the two images modified for ARM

hypriot/rpi-influxdb - https://hub.docker.com/r/hypriot/rpi-influxdb/
jsurf/rpi-mariadb - https://hub.docker.com/r/jsurf/rpi-mariadb/

Reclassing this as an enhancement at this point, since it hinges on package distributors building the packages in an ARMHF-friendly format, in particular nginx and nchan. While we can operate without nchan and revert back to API polling, having two separate implementations in the system is too much maintenance and potential for error in my opinion.

After removing nchan as a limiter for this issue, the current limitation is the fact that MariaDB 10.1 and 10.2 aren't built for the ARMHF version of Ubuntu. These newer versions of MariaDB are necessary for AzuraCast to run properly, because of improvements they've made to handling of UTF8MB4 string length in these newer versions.

Once this is addressed, we can revisit ARM compatibility again.

I am grateful that you are still looking at this problem even though you have to solve many others.

I will do some testing this weekend using some of the modified MariaDB images as I submitted in the last reply. I need to test compatibility with InfluxDB after so many updates.

Hey @SlvrEagle23 , how are you? I hope you're well

After a long time, I came back with good and bad news about installing on a Raspberry pi 3 B running Ubuntu Bionic LTS

This time the installation went much further than the previous one, making it possible to login to the panel using the existing demo account. Unfortunately it generates several errors of tables saying that they are nonexistent. I've tried to recreate them but only the icecast turns on, Liquidsoap does not start.

I leave below error print and error that happens.

totermw_2018-06-08_19-12-50

(Log removed by @SlvrEagle23 for ease of reading the issue)

Would you have some more direct means of contact? If it's of interest, I can make my Raspberry available to you for testing.

Setup is released, but there is table error. I'll wait for an answer.

2018-06-08_20-12-53

Looking better at the above error, I found something in common at the beginning that would be "max key length is 767 bytes". Nothing more.

The station_media field has a VARCHAR(500) field type, which needs 1560 bytes.
Long story short, and as previously stated by @SlvrEagle23, it's a limit which would seemingly not work with Azuracast.

It has to do with the InnoDB table regarding UTF8mb4.
This thread on SO will explain deeper.

The maximum in older versions would be

  • VARCHAR(191) for UTF8mb4 (4 bytes per char),
  • and VARCHAR(255) for UTF8 (3 bytes per char)

Searching a little more, I discovered that the problem is the version of MariaDB that would be 10.1.12 and does not allow a key of that size. You would need a version 10.2 that is not available for arm7l to accept a larger key.

@HiseEiichi Yep, I should've probably been more clear in my earlier post, but it's the fact that MariaDB 10.2 isn't built for the RasPi that is keeping us from being able to use it currently. MariaDB 10.2 introduced support for longer VARCHAR columns with the UTF8MB4 encoding, and this is necessary for us to store the needed length of information in a number of fields.

Once we have an update about 10.2 being deployed for RasPi's, we can revisit this issue, and it's likely that AzuraCast will install without any problems.

Unfortunately, it doesn't seem to be much of a priority for the MariaDB team, as ARMHF is a fairly small slice of market segment.

Enjoying the moment. I tried installing from Docker, but I get the following error.

[FATAL tini (7)] exec dockerize failed: Exec format error

totermw_2018-06-09_03-15-07

Which installer script does work on the OVH SYS Armv7 server and which os to choose ?

@amitx11 As I said before in the previous issue, AzuraCast does not currently support ARMv7, ARM, ARMHF, etc. due to an issue with MariaDB 10.2 not being packaged for that platform yet. I'm continuing to monitor progress on that front and when the situation changes, I will update the AzuraCast code accordingly. For now, however, your platform is not supported.

Will this not work with azuracast ?

https://github.com/459below/docker-mariadb-armv7

Any possibility to support another free DB backend for Raspberry pi to make this work? Even sqlite?

@softcoder That's a pretty huge ask of our developer team, adding support for an entirely different database engine just so we can support Raspberry Pi hardware, which can already _only just barely_ run the necessary components to run AzuraCast.

This is already a very low priority for us for exactly that reason, that almost all of the available ARM/ARMHF hardware out there is only marginally powerful enough to run a broadcasting radio station complete with a web application, web server, Redis cache, InfluxDB for statistics, and MariaDB.

@SlvrEagle23 if having AzuraCast on Raspberry Pi is a tough order, I don't really know how to respond, considering that many types of NAS uses ARM (which is also a good option for AzuraCast).
The idea of using Raspberry Pis for this is to create simple projects without the need to code Liquidsoap by hand. e.g. A "Number Station" that plays a special code every day at a certain time, and plays a musical playlist at a random order like a normal radio station.
It is best to treat AzuraCast for Raspberry Pi as a "fun and niche" type situation, not a task heavy one.

Also @surihost @softcoder rejoice for https://www.worksonarm.com/explore/mariadb/ it looks like 10.3 will start to support ARM

@DonaldTsang Currently the official MariaDB Docker image supports the ARMv8 architecture. The older Raspberry Pi versions use the ARMv7 architecture so without having tested it I think the Raspberry Pi 3 could be able to run the current AzuraCast stack.

I actually have a RP 3 that currently has nothing to do so I'll probably test if my assumption is correct next weekend or so.

@Vaalyn thanks for the help, we need to get this up and running
Also when I was trying to install AzuraCast it can't handle docker-compose due to some cffi error.

Azuracast on rpi would be great to have!

@DonaldTsang Currently the official MariaDB Docker image supports the ARMv8 architecture. The older Raspberry Pi versions use the ARMv7 architecture so without having tested it I think the Raspberry Pi 3 could be able to run the current AzuraCast stack.

I actually have a RP 3 that currently has nothing to do so I'll probably test if my assumption is correct next weekend or so.

Would love to know if there are any updates here, and whether any special/extra steps were required to get it working.

Would love to know if there are any updates here, and whether any special/extra steps were required to get it working.

Sadly I couldn't try it out yet. The Pi I've looked at is actually not a RP 3 so still has an ARMv6 CPU. I've bought a RP 3 and I'm currently waiting for it to arrive.

@Vaalyn the newly released RPi4 is ARMv8 so it should work, but please test RPi3 just to be safe.

To be clear which RP 3 I'm going to test, I've bought the Pi 3 Model B+.

Revisiting this issue, I've spun up a Scaleway ARM server and attempted to install AzuraCast with the Ansible installation, only to discover that it's now completely successful due to improvements in the last few months/years with how MariaDB and others supply their custom repositories.

I need to test again on an actual Raspberry Pi (that's next) but I can confirm that AzuraCast will work with ARM processors using the Ansible installation method.

While we don't officially support the Ansible installation method for new installations, this is a unique situation, and in the interest of getting ARM/RPi support back up as soon as possible, I've removed the x86_64 limitation for Ansible installations and will be pursuing this as the recommended installation method for ARM/RPi devices for the moment.

Note: It's _strongly_ recommended to use Ubuntu 18.04 (bionic) and not 16.04, because 16.04 Ansible installations have to build Liquidsoap's underlying language (ocaml) from source, which takes 20 minutes even on a good computer.

@SlvrEagle23 thanks for paving the way for software that is way useful and entertaining. After the update is done, be sure to update the manuals and ReadMEs because DIY projects relies heavily on documentation.

Our installation instructions have been updated with specific ARM64/RPi 3+ installation instructions. We will update this page once we can confirm that there is a viable Docker installation path as well.

My tests with Raspbian Buster (_who names anything Buster anyway?_) and its built-in Docker and Docker Compose have yielded a ton of errors that are internal to Docker and that I don't have any idea where to begin with fixing.

I can confirm, however, that the Ansible installation I've tested with is working beautifully both on my own local Raspberry Pi 3B and on my Scaleway ARM64 instance. Provided we have at least one way to install AzuraCast on these affordable devices, I'm rather content with that solution for now.

Some updates from my tests with the Raspberry Pi 3b+:

I got Docker and Docker-Compose running with these steps:

Install wget

sudo apt-get install wget

Install docker

sudo apt-get install 'docker-ce=18.06.*'
(needs a slightly older version because of a bug on the newer version)

Install pip3

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && sudo python3 get-pip.py

Install docker-compose

sudo pip3 install docker-compose
(has to be installed via pip3 because the version on the raspbian repos is too old for the 2.2 compose format)


But then I ran into some issues with the Docker images.

  1. The azuracast_web_v2 image is based on phusion/baseimage which does offer an ARM build with the tags latest-arm and latest-arm64
  2. The azuracast_db image is based on mariadb:10.2 which does not offer an ARM build

    • I've found a pretty popular mariadb image that is build on top of raspbian called jsurf/rpi-mariadb

    • We'd also need to build images based on separate tags for this

  3. The images that azuracast_influxdb, azuracast_redis and azuracast_stations are based on all offer ARM builds

    • We'd need to add additional build targets for these images for them to work on ARM

The big problem that @SlvrEagle23 identified with this is that the build process from DockerHub can only build x86_64 images automatically. It is possible to get a working build process for ARM64 but this needs some crude hacks in the build process which is not something that we currently want to do.

That means we are currently not able to offer support for AzuraCast ARM Docker images until we get a build server that is based on ARM that we could use to automatically build ARM images and push them to DockerHub.

any chance you will be supporting the pi4 ? i have my fingers crossed

@greyhatnewman AzuraCast should install on a Raspberry Pi using the Ansible installation method today without any problems. There are "upstream" issues preventing us from building our Docker infrastructure for ARM64 processors, and these might not be resolved in the immediate future.

thank you so much for such a fast response

you maybe wish to adjust the install by adding before sudo chmod a+x
install.shi am sure 99% of users know this this is for the odd one like me
:)

cd AzuraCast

also i will be cheeky as i am not yet a patron or anything
but how about making it so that port and listener number can be excluded
from admin level as a option that only super-administer can set?
and also now airtime as gone west adding a system for schedules for
different lists so you can set shows once again txs for your help

joe

On Tue, Aug 20, 2019 at 8:23 PM SlvrEagle23 notifications@github.com
wrote:

@greyhatnewman https://github.com/greyhatnewman AzuraCast should
install on a Raspberry Pi using the Ansible installation method today
without any problems. There are "upstream" issues preventing us from
building our Docker infrastructure for ARM64 processors, and these might
not be resolved in the immediate future.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AzuraCast/AzuraCast/issues/332?email_source=notifications&email_token=ACTG3R6QKQAKWGMFGRPJKODQFRADNA5CNFSM4EH7ORR2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4XMNIY#issuecomment-523159203,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACTG3RZ5DEMN4ASTJ5OUYF3QFRADNANCNFSM4EH7ORRQ
.

i would like to install a number of php files that are accessible from a browser alongside azuracast where would i put them it is install using Ansible

Any possibility of `docker build'ing the stack for now? I don't (yet) have a Pi to test this with, but would that not fix the problem?

@tcikoritys If the images were inherited from images that themselves had arm64 versions, then yeah that would be possible, but some of the "upstream" images aren't built against arm64 at the moment.

Why was this closed if the issue wasn't solved? Is there no expectation that it will?

@luandro it was partially solved, just needed some touchups.

AzuraCast should install on a Raspberry Pi using the Ansible installation method

Thanks @DonaldTsang.

The Ansible method is a bit of a pain because I'll need to run Ubuntu instead or regular Raspbian. Docker would be so much better. Lemme know is help is needed with the touchups.

@luandro

There are "upstream" issues preventing us from building our Docker infrastructure for ARM64 processors, and these might not be resolved in the immediate future.

Was this page helpful?
0 / 5 - 0 ratings