Install LibreTime in Border Radio.
LibreTime is the successor of AirTime and we have some know-how about it (the same is not true with Autoradio).
valerio.bozzolan | |
Oct 28 2020, 00:23 |
F1451482: image.png | |
Nov 27 2020, 03:10 |
F1451480: image.png | |
Nov 27 2020, 03:10 |
F1449257: image.png | |
Nov 21 2020, 03:06 |
F1448783: image.png | |
Nov 19 2020, 00:57 |
F1448732: image.png | |
Nov 18 2020, 18:50 |
F1448730: image.png | |
Nov 18 2020, 18:49 |
F1448554: Screenshot_border-libretime_2020-11-17_23:49:41.png | |
Nov 17 2020, 23:50 |
Install LibreTime in Border Radio.
LibreTime is the successor of AirTime and we have some know-how about it (the same is not true with Autoradio).
This is becoming super-important but even more difficult because it's not supported for Ubuntu 20.20.
Tried to start the installer:
$ git clone https://github.com/LibreTime/libretime.git $ cd libretime $ sudo ./install -fiap .____ ._____. ___________.__ | | |__\_ |_________ ___\__ ___/|__| _____ ____ | | | || __ \_ __ \_/ __ \| | | |/ \_/ __ \ | |___| || \_\ \ | \/\ ___/| | | | Y Y \ ___/ |_______ \__||___ /__| \___ >____| |__|__|_| /\___ > \/ \/ \/ \/ \/ Detecting distribution and release ... Detected distribution id: ubuntu Detected distribution release id: 20.04 Detected distribution description: Ubuntu 20.04 LTS ERROR: Distribution "Ubuntu 20.04 LTS" is not supported with "ubuntu-20.04"!
It seems Ubuntu 20.20 is not supported.
Tried to overcome this:
diff --git a/install b/install index ae2b8a870..f35db209d 100755 --- a/install +++ b/install @@ -630,7 +630,7 @@ code="${code:-$VERSION_ID}" code="${code,,}" verbose "Validating dist-code: ${dist}-${code}" case "${dist}-${code}" in - ubuntu-18.04) + ubuntu-18.04|ubuntu-20.04) code="bionic" is_ubuntu_dist=true is_ubuntu_bionic=true
Then re-executed the installer with that patch, obtaining new errors:
$ sudo ./install -fiap E: Package 'libapache2-mod-php7.2' has no installation candidate E: Package 'liquidsoap-plugin-alsa' has no installation candidate E: Package 'liquidsoap-plugin-ao' has no installation candidate E: Package 'liquidsoap-plugin-faad' has no installation candidate E: Package 'liquidsoap-plugin-flac' has no installation candidate E: Package 'liquidsoap-plugin-icecast' has no installation candidate E: Package 'liquidsoap-plugin-lame' has no installation candidate E: Package 'liquidsoap-plugin-mad' has no installation candidate E: Package 'liquidsoap-plugin-ogg' has no installation candidate E: Package 'liquidsoap-plugin-portaudio' has no installation candidate E: Package 'liquidsoap-plugin-pulseaudio' has no installation candidate E: Package 'liquidsoap-plugin-taglib' has no installation candidate E: Package 'liquidsoap-plugin-voaacenc' has no installation candidate E: Package 'liquidsoap-plugin-vorbis' has no installation candidate E: Unable to locate package php7.2-curl E: Couldn't find any package by glob 'php7.2-curl' E: Couldn't find any package by regex 'php7.2-curl' E: Unable to locate package php7.2-gd E: Couldn't find any package by glob 'php7.2-gd' E: Couldn't find any package by regex 'php7.2-gd' E: Unable to locate package php7.2-pgsql E: Couldn't find any package by glob 'php7.2-pgsql' E: Couldn't find any package by regex 'php7.2-pgsql'
Tried to fix some dependencies:
apt install libapache2-mod-php php-gd php-curl php-pgsql
It seems that Liquid Soap is not present in Ubuntu anymore.
Finding the package from their website:
https://github.com/savonet/liquidsoap/releases
Downloading and installing the most recent one:
$ wget https://github.com/savonet/liquidsoap/releases/download/v1.4.3/liquidsoap-v1.4.3_1.4.3-ubuntu-focal-amd64-1_amd64.deb $ sudo dpkg -i liquidsoap-v1.4.3_1.4.3-ubuntu-focal-amd64-1_amd64.deb Selecting previously unselected package liquidsoap-v1.4.3. (Reading database ... 257944 files and directories currently installed.) Preparing to unpack liquidsoap-v1.4.3_1.4.3-ubuntu-focal-amd64-1_amd64.deb ... Unpacking liquidsoap-v1.4.3 (1:1.4.3-ubuntu-focal-amd64-1) ... dpkg: dependency problems prevent configuration of liquidsoap-v1.4.3: liquidsoap-v1.4.3 depends on libavdevice58 (>= 7:4.0); however: Package libavdevice58 is not installed. liquidsoap-v1.4.3 depends on libfdk-aac1 (>= 0.1.4); however: Package libfdk-aac1 is not installed. liquidsoap-v1.4.3 depends on libgavl1 (>= 1.1.0); however: Package libgavl1 is not installed. liquidsoap-v1.4.3 depends on liblo7 (>= 0.26~repack); however: Package liblo7 is not installed. liquidsoap-v1.4.3 depends on libsdl-mixer1.2; however: Package libsdl-mixer1.2 is not installed. liquidsoap-v1.4.3 depends on libsdl-ttf2.0-0; however: Package libsdl-ttf2.0-0 is not installed. dpkg: error processing package liquidsoap-v1.4.3 (--install): dependency problems - leaving unconfigured Processing triggers for systemd (245.4-4ubuntu3) ... Processing triggers for doc-base (0.10.9) ... Processing 1 added doc-base file... Error in `/usr/share/doc-base/liquidsoap', line 9: all `Format' sections are invalid. Note: `install-docs --verbose --check file_name' may give more details about the above error. Processing triggers for man-db (2.9.1-1) ... Errors were encountered while processing: liquidsoap-v1.4.3
We miss some dependencies. Fix them:
$ sudo apt-get install -f Reading package lists... Done Building dependency tree Reading state information... Done Correcting dependencies... Done The following packages were automatically installed and are no longer required: docutils-common fprintd gir1.2-rb-3.0 libcortado-java libdmapsharing-3.0-2 libfprint-2-2 libfprint-2-tod1 libgpod-common libgpod4 libpam-fprintd librhythmbox-core10 libsgutils2-2 media-player-info python3-configobj python3-docutils python3-magic python3-mako python3-markupsafe python3-mutagen python3-pygments python3-roman rhythmbox-data sqlite3 Use 'apt autoremove' to remove them. The following additional packages will be installed: libavdevice58 libfdk-aac1 libgavl1 liblo7 libmikmod3 libsdl-mixer1.2 libsdl-ttf2.0-0 Suggested packages: liblo-dev The following NEW packages will be installed: libavdevice58 libfdk-aac1 libgavl1 liblo7 libmikmod3 libsdl-mixer1.2 libsdl-ttf2.0-0 0 upgraded, 7 newly installed, 0 to remove and 293 not upgraded. 1 not fully installed or removed. Need to get 4,037 kB of archives. After this operation, 8,483 kB of additional disk space will be used. Do you want to continue? [Y/n] $ Y Get:1 http://it.archive.ubuntu.com/ubuntu focal-updates/universe amd64 libavdevice58 amd64 7:4.2.4-1ubuntu0.1 [74.3 kB] Get:2 http://it.archive.ubuntu.com/ubuntu focal/multiverse amd64 libfdk-aac1 amd64 0.1.6-1 [366 kB] Get:3 http://it.archive.ubuntu.com/ubuntu focal/universe amd64 libgavl1 amd64 1.4.0-5 [3,363 kB] Get:4 http://it.archive.ubuntu.com/ubuntu focal/universe amd64 liblo7 amd64 0.30-3 [32.3 kB] Get:5 http://it.archive.ubuntu.com/ubuntu focal/universe amd64 libmikmod3 amd64 3.3.11.1-4 [113 kB] Get:6 http://it.archive.ubuntu.com/ubuntu focal/universe amd64 libsdl-mixer1.2 amd64 1.2.12-16build1 [72.9 kB] Get:7 http://it.archive.ubuntu.com/ubuntu focal/universe amd64 libsdl-ttf2.0-0 amd64 2.0.11-6 [15.1 kB] Fetched 4,037 kB in 1s (2,855 kB/s) Selecting previously unselected package libavdevice58:amd64. (Reading database ... 259027 files and directories currently installed.) Preparing to unpack .../0-libavdevice58_7%3a4.2.4-1ubuntu0.1_amd64.deb ... Unpacking libavdevice58:amd64 (7:4.2.4-1ubuntu0.1) ... Selecting previously unselected package libfdk-aac1:amd64. Preparing to unpack .../1-libfdk-aac1_0.1.6-1_amd64.deb ... Unpacking libfdk-aac1:amd64 (0.1.6-1) ... Selecting previously unselected package libgavl1:amd64. Preparing to unpack .../2-libgavl1_1.4.0-5_amd64.deb ... Unpacking libgavl1:amd64 (1.4.0-5) ... Selecting previously unselected package liblo7:amd64. Preparing to unpack .../3-liblo7_0.30-3_amd64.deb ... Unpacking liblo7:amd64 (0.30-3) ... Selecting previously unselected package libmikmod3:amd64. Preparing to unpack .../4-libmikmod3_3.3.11.1-4_amd64.deb ... Unpacking libmikmod3:amd64 (3.3.11.1-4) ... Selecting previously unselected package libsdl-mixer1.2:amd64. Preparing to unpack .../5-libsdl-mixer1.2_1.2.12-16build1_amd64.deb ... Unpacking libsdl-mixer1.2:amd64 (1.2.12-16build1) ... Selecting previously unselected package libsdl-ttf2.0-0:amd64. Preparing to unpack .../6-libsdl-ttf2.0-0_2.0.11-6_amd64.deb ... Unpacking libsdl-ttf2.0-0:amd64 (2.0.11-6) ... Setting up libgavl1:amd64 (1.4.0-5) ... Setting up libmikmod3:amd64 (3.3.11.1-4) ... Setting up libsdl-mixer1.2:amd64 (1.2.12-16build1) ... Setting up libavdevice58:amd64 (7:4.2.4-1ubuntu0.1) ... Setting up liblo7:amd64 (0.30-3) ... Setting up libfdk-aac1:amd64 (0.1.6-1) ... Setting up libsdl-ttf2.0-0:amd64 (2.0.11-6) ... Setting up liquidsoap-v1.4.3 (1:1.4.3-ubuntu-focal-amd64-1) ... Adding group `liquidsoap' (GID 137) ... Done. Warning: The home dir /usr/share/liquidsoap you specified already exists. Adding system user `liquidsoap' (UID 128) ... Adding new user `liquidsoap' (UID 128) with group `liquidsoap' ... The home directory `/usr/share/liquidsoap' already exists. Not copying from `/etc/skel'. adduser: Warning: The home directory `/usr/share/liquidsoap' does not belong to the user you are currently creating. Processing triggers for libc-bin (2.31-0ubuntu9) ...
Run again the installer:
$ sudo ./install -fiap ... Problem 1 - php-amqplib/php-amqplib is locked to version v2.6.3 and an update of this package was not requested. - php-amqplib/php-amqplib v2.6.3 requires ext-bcmath * -> it is missing from your system. Install or enable PHP's bcmath extension. Problem 2 - php-amqplib/php-amqplib v2.6.3 requires ext-bcmath * -> it is missing from your system. Install or enable PHP's bcmath extension. - massivescale/celery-php dev-master requires videlalvaro/php-amqplib >=2.4.0 -> satisfiable by php-amqplib/php-amqplib[v2.6.3]. - massivescale/celery-php is locked to version dev-master and an update of this package was not requested. To enable extensions, verify that they are enabled in your .ini files: - /etc/php/7.4/cli/php.ini - /etc/php/7.4/cli/conf.d/10-opcache.ini - /etc/php/7.4/cli/conf.d/10-pdo.ini - /etc/php/7.4/cli/conf.d/20-calendar.ini - /etc/php/7.4/cli/conf.d/20-ctype.ini - /etc/php/7.4/cli/conf.d/20-curl.ini - /etc/php/7.4/cli/conf.d/20-exif.ini - /etc/php/7.4/cli/conf.d/20-ffi.ini - /etc/php/7.4/cli/conf.d/20-fileinfo.ini - /etc/php/7.4/cli/conf.d/20-ftp.ini - /etc/php/7.4/cli/conf.d/20-gd.ini - /etc/php/7.4/cli/conf.d/20-gettext.ini - /etc/php/7.4/cli/conf.d/20-iconv.ini - /etc/php/7.4/cli/conf.d/20-json.ini - /etc/php/7.4/cli/conf.d/20-pdo_pgsql.ini - /etc/php/7.4/cli/conf.d/20-pgsql.ini - /etc/php/7.4/cli/conf.d/20-phar.ini - /etc/php/7.4/cli/conf.d/20-posix.ini - /etc/php/7.4/cli/conf.d/20-readline.ini - /etc/php/7.4/cli/conf.d/20-shmop.ini - /etc/php/7.4/cli/conf.d/20-sockets.ini - /etc/php/7.4/cli/conf.d/20-sysvmsg.ini - /etc/php/7.4/cli/conf.d/20-sysvsem.ini - /etc/php/7.4/cli/conf.d/20-sysvshm.ini - /etc/php/7.4/cli/conf.d/20-tokenizer.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Tried to install missing packages:
$ sudo apt install php-amqplib php-bcmath
Run again the installer:
$ sudo ./install -fiap Installing dependencies from lock file Verifying lock file contents can be installed on current platform. Package operations: 44 installs, 0 updates, 0 removals - Downloading symfony/event-dispatcher (v2.7.4) - Downloading guzzle/guzzle (v3.9.3) - Downloading aws/aws-sdk-php (2.7.9) - Downloading composer/semver (1.4.2) - Downloading ise/php-soundcloud (3.0.1) - Syncing james-heinrich/getid3 (dev-master 0723b77) into cache - Downloading php-amqplib/php-amqplib (v2.6.3) - Downloading predis/predis (v1.0.3) - Syncing massivescale/celery-php (dev-master 609720a) into cache - Downloading phing/phing (2.12.0) - Downloading propel/propel1 (1.7.0) - Downloading raven/raven (0.12.0) - Syncing simplepie/simplepie (dev-master eb6dd2d) into cache - Downloading zf1s/zend-exception (1.12.20) - Downloading zf1s/zend-acl (1.12.20) - Downloading zf1s/zend-xml (1.12.20) - Downloading zf1s/zend-registry (1.12.20) - Syncing zf1s/zend-cache (dev-master 3284983) into cache - Downloading zf1s/zend-locale (1.12.20) - Syncing zf1s/zend-loader (dev-master 549a24e) into cache - Downloading zf1s/zend-controller (1.12.20) - Syncing zf1s/zend-view (dev-master 89acaef) into cache - Syncing zf1s/zend-validate (dev-master 424607a) into cache - Downloading zf1s/zend-uri (1.12.20) - Downloading zf1s/zend-config (1.12.20) - Downloading zf1s/zend-application (1.12.20) - Downloading zf1s/zend-auth (1.12.20) - Downloading zf1s/zend-crypt (1.12.20) - Downloading zf1s/zend-date (1.12.20) - Downloading zf1s/zend-db (1.12.20) - Downloading zf1s/zend-file (1.12.20) - Downloading zf1s/zend-file-transfer (1.12.20) - Downloading zf1s/zend-filter (1.12.20) - Downloading zf1s/zend-form (1.12.20) - Downloading zf1s/zend-server (1.12.20) - Downloading zf1s/zend-json (1.12.20) - Downloading zf1s/zend-layout (1.12.20) - Downloading zf1s/zend-log (1.12.20) - Downloading zf1s/zend-navigation (1.12.20) - Downloading zf1s/zend-http (1.12.20) - Downloading zf1s/zend-service (1.12.20) - Syncing zf1s/zend-rest (dev-master f676341) into cache - Downloading zf1s/zend-session (1.12.20) - Downloading zf1s/zend-version (1.12.20) - Installing symfony/event-dispatcher (v2.7.4): Extracting archive - Installing guzzle/guzzle (v3.9.3): Extracting archive - Installing aws/aws-sdk-php (2.7.9): Extracting archivesudo ./install -fiap - Installing composer/semver (1.4.2): Extracting archive - Installing ise/php-soundcloud (3.0.1): Extracting archive - Installing james-heinrich/getid3 (dev-master 0723b77): Cloning 0723b77caf from cache - Installing php-amqplib/php-amqplib (v2.6.3): Extracting archive - Installing predis/predis (v1.0.3): Extracting archive - Installing massivescale/celery-php (dev-master 609720a): Cloning 609720abe0 from cache - Installing phing/phing (2.12.0): Extracting archive - Installing propel/propel1 (1.7.0): Extracting archive - Installing raven/raven (0.12.0): Extracting archive - Installing simplepie/simplepie (dev-master eb6dd2d): Cloning eb6dd2d578 from cache - Installing zf1s/zend-exception (1.12.20): Extracting archive - Installing zf1s/zend-acl (1.12.20): Extracting archive - Installing zf1s/zend-xml (1.12.20): Extracting archive - Installing zf1s/zend-registry (1.12.20): Extracting archive - Installing zf1s/zend-cache (dev-master 3284983): Cloning 3284983138 from cache - Installing zf1s/zend-locale (1.12.20): Extracting archive - Installing zf1s/zend-loader (dev-master 549a24e): Cloning 549a24e1a2 from cache - Installing zf1s/zend-controller (1.12.20): Extracting archive - Installing zf1s/zend-view (dev-master 89acaef): Cloning 89acaef8c2 from cache - Installing zf1s/zend-validate (dev-master 424607a): Cloning 424607a115 from cache - Installing zf1s/zend-uri (1.12.20): Extracting archive - Installing zf1s/zend-config (1.12.20): Extracting archive - Installing zf1s/zend-application (1.12.20): Extracting archive - Installing zf1s/zend-auth (1.12.20): Extracting archive - Installing zf1s/zend-crypt (1.12.20): Extracting archive - Installing zf1s/zend-date (1.12.20): Extracting archive - Installing zf1s/zend-db (1.12.20): Extracting archive - Installing zf1s/zend-file (1.12.20): Extracting archive - Installing zf1s/zend-file-transfer (1.12.20): Extracting archive - Installing zf1s/zend-filter (1.12.20): Extracting archive - Installing zf1s/zend-form (1.12.20): Extracting archive - Installing zf1s/zend-server (1.12.20): Extracting archive - Installing zf1s/zend-json (1.12.20): Extracting archive - Installing zf1s/zend-layout (1.12.20): Extracting archive - Installing zf1s/zend-log (1.12.20): Extracting archive - Installing zf1s/zend-navigation (1.12.20): Extracting archive - Installing zf1s/zend-http (1.12.20): Extracting archive - Installing zf1s/zend-service (1.12.20): Extracting archive - Installing zf1s/zend-rest (dev-master f676341): Cloning f676341089 from cache - Installing zf1s/zend-session (1.12.20): Extracting archive - Installing zf1s/zend-version (1.12.20): Extracting archive Package guzzle/guzzle is abandoned, you should avoid using it. Use guzzlehttp/guzzle instead. Package raven/raven is abandoned, you should avoid using it. Use sentry/sentry instead. Package phpunit/dbunit is abandoned, you should avoid using it. No replacement was suggested. Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested. Generating autoload files * Building from Git * Version from tag: * Overriding empty version with sha1 commit-ish: 2003e685b ----------------------------------------------------- * Configuring Apache * ----------------------------------------------------- Site 000-default disabled. To activate the new configuration, you need to run: systemctl reload apache2 Enabling site airtime. To activate the new configuration, you need to run: systemctl reload apache2 ----------------------------------------------------- * Configuring Icecast * ----------------------------------------------------- sed: can't read /etc/default/icecast2: No such file or directory
Install Icecast:
sudo apt install icecast2
Then executed again but obtained new error:
sudo ./install -fiap ... ----------------------------------------------------- * Configuring Apache * ----------------------------------------------------- ----------------------------------------------------- * Configuring Icecast * ----------------------------------------------------- New install detected setting icecast password to random value. ./install: line 942: xmlstarlet: command not found
Tried to fix the missing dependency:
$ sudo apt install xmlstarlet
Then executed again but with another error:
$ sudo ./install -fiap ... ./install: line 115: pip3: command not found
Tried to fix dependency:
$ sudo apt install python3-pip
Then executed again but lot of more actions but ending with another error:
$ sudo ./install -fiap ERROR: launchpadlib 1.10.13 requires testresources, which is not installed. ... Installing collected packages: setuptools Attempting uninstall: setuptools Found existing installation: setuptools 45.2.0 Not uninstalling setuptools at /usr/lib/python3/dist-packages, outside environment /usr Can't uninstall 'setuptools'. No files were found to uninstall. Successfully installed setuptools-50.3.2 ... (really lot of stuff) ... ----------------------------------------------------- * Configuring PHP in Apache * ----------------------------------------------------- ERROR: PHP Apache configuration folder does not exist or is in an unknown location!
Then, patched again the installation script to update the PHP version:
diff --git a/install b/install index ae2b8a870..89741f49d 100755 --- a/install +++ b/install @@ -1025,6 +1025,7 @@ loud " * Configuring PHP in Apache * " loud "-----------------------------------------------------" # Test common locations for php conf directory php_conf_dirs=( + "/etc/php/7.4/apache2/conf.d" # Ubuntu Focal "/etc/php/7.3/apache2/conf.d" # Debian Buster "/etc/php/7.2/apache2/conf.d" # Ubuntu Bionic "/etc/php/7.0/apache2/conf.d" # Ubuntu Xenial
And run again installation script:
$ sudo ./install -fiap ... ERROR: Module php7.2 does not exist! To activate the new configuration, you need to run: systemctl restart apache2
Holy fucking shit this is really time-consuming.
Created an upstream issue here:
https://github.com/LibreTime/libretime/issues/1109
Let's fork here:
The issues with 20.04 are listed here: #1024. The biggest problem is PHP 7.4 in 20.04, which Propel (which we use for database stuff) doesn't support. We need to migrate to Propel v2 to fix that
In short, as workaround we have to create a virtual machine or put hour hands inside LibreTime.
I'm preparing a fucking virtual machine with QEMU/KVM with an Ubuntu server 18.04 LTS hoping to see this damn software operative.
Uh, their "new" installer is cute:
At the end we installed this fucking stuff with a docker image partially borked because of some missing services and some CORS issues but now it works.
docker run -p 80:80 -p 8000:8000 -p 8001:8001 --name=libretime odclive/libretime-docker:latest
Added a comment here about the missing services:
https://github.com/kessibi/libretime-docker/issues/20
The CORS-related issue was fixed with a temporary PHP hot-patch in the formal validation of allowed hosts. Then, with a configuration change from the backend.
2020-11-21T02:58:20+00:00 ERR (3): localhost [ErrorController.php:26 - errorAction()] - Forbidden 2020-11-21T02:58:20+00:00 ERR (3): localhost [ErrorController.php:27 - errorAction()] - #0 /usr/share/airtime/php/airtime_mvc/application/controllers/LoginController.php(27): CORSHelper::enableCrossOriginRequests(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
In short we temporary commented this damn line to be allowed to access the backend and declare https://director.border-radio.it/ as allowed host:
Thanks to @0iras0r we were able to fix all the damn issues related to this Docker image an now everything is up and running. Yeeeh!
Everything works, also the widgets on the websites and the player metadata:
Marking as resolved.