Skip to content

Releases: libretime/libretime

3.0.0-beta.1

23 Sep 11:52
Compare
Choose a tag to compare
3.0.0-beta.1 Pre-release
Pre-release

💖 Contributors

The LibreTime project wants to thank the following contributors for authoring PRs to this release:

🚀 Features

  • legacy: disable services check when missing systemctl (#2160)
  • legacy: invalidate cached assets using md5sum (#2161)
  • use libretime/icecast container image (#2165)

🐛 Bug fixes

  • legacy: number of tracks displayed initially (#2168)
  • legacy: rebuild favicon (#2167)
  • worker: configure celery timezone (#2169)
  • legacy: update or remove broken links
  • legacy: prepend file id in tmp upload filename (#2173)
  • legacy: fail when uploading wma files (#2172)

3.0.0-beta.0

16 Sep 14:51
Compare
Choose a tag to compare
3.0.0-beta.0 Pre-release
Pre-release

💖 Contributors

The LibreTime project wants to thank the following contributors for authoring PRs to this release:

🚀 Features

  • playout: use liquidsoap version functions
  • playout: replace pytz with zoneinfo (#1969)
  • installer: remove allow-restart flag (#1970)
  • rename AirtimeApiClient to ApiClient
  • playout: use single clients instance (#1980)
  • api: don't use trailing slashes (#1982)
  • api: cast StreamSetting raw_value to value (#1991)
  • worker: load callback details from config (#1994)
  • analyzer: load callback details from config and file_id (#1993)
  • api-client: rewrite api-client v2
  • playout: integrate api-client v2 calls
  • api: don't use hyperlinked serializers (#1984)
  • shared: load env config using jsonschema
  • installer: use ed for config update (#2013)
  • move off_air_meta stream setting to pref table (#2023)
  • move stream liquisoap status to pref table
  • move stream stats status to pref table
  • analyzer: override paths using env variables
  • playout: rewrite stats collector (#2028)
  • legacy: setup config schema validation
  • legacy: add config dot notation access
  • shared: pass config data via init (#2042)
  • playout: create liquidsoap client
  • playout: integrate new liquisoap client
  • worker: rename service and package to libretime-worker (#2065)
  • playout: improve generate_*_events (#2088)
  • api: remove set passwords command
  • remove cc_stream_setting models
  • installer: deploy stream config
  • legacy: read stream config from file
  • api: add /info and /stream/* endpoints
  • shared: create stream config models
  • playout: build liquidsoap entrypoint with stream config
  • playout: stats collector using stream config
  • playout: allow updating message_offline value
  • playout: remove stream_setting update handler
  • playout: liquidsoap bootstrap using new api endpoints
  • playout: allow liquidsoap listen address configuration
  • api: move /api-auth to /api/browser (#2094)
  • add container setup
  • move timezone preference to config file (#2096)
  • playout: move message handling to main thread

🐛 Bug fixes

  • api-client: get status_code from response
  • analyzer: remove outdated urllib3 workaround
  • api-client: fix base_url joining for client v2 (#1998)
  • api: update set_icecast_passwords StreamSetting fields (#2001)
  • legacy: get local logo file (#1999)
  • installer: clean legacy files before copying (#2002)
  • legacy: sanitize track_type_id when updating file (#2003)
  • shared: validator value type can be wrong
  • shared: remove unused field from rabbitmq config (#2012)
  • playout: replace deprecated harbor.bind_addr (#2025)
  • legacy: do not rely on undefined SERVER_NAME (#2031)
  • api-client: remove unused v1 methods
  • playout: use stream download when fetching files (#2048)
  • playout: add thread names (#2056)
  • legacy: args comma syntax error
  • legacy: 404 on listeners stats
  • deps: update dependency mdx-mermaid to v1.3.0 [security]
  • playout: py36 compatibility broken typings
  • playout: py39 compatibility zoneinfo import
  • api: install gunicorn from pip for bionic
  • installer: only upgrade pip packages if needed
  • installer: fix compatibility with bionic
  • legacy: look in /legacy for a VERSION file
  • playout: missing live show events (#2087)
  • legacy: config default values are not sanitized
  • installer: add liquidsoap config section
  • installer: move non reusable fields from default output
  • legacy: consistent with docs in outputs public_url generation
  • playout: also shutdown on SIGTERM (#2104)
  • installer: simplify distro support notice (#2106)
  • shared: install tzdata distributions package (#2105)
  • installer: config dir should be read only
  • installer: config should not be world readable
  • legacy: track_type_id should cast to int not text (#2112)
  • worker: rewrite podcast download task
  • shared: load env from oneOf union schema
  • deps: update dependency friendsofphp/php-cs-fixer to <3.11.1
  • nginx depends on legacy in docker-compose (#2147)
  • playout: remove shutdown_handler

🔥 Deprecation and removal

Ubuntu Bionic support deprecation

Support for Ubuntu Bionic is being deprecated, and will be removed in LibreTime v3.1.0. Maintenance only versions (3.0.x) for Ubuntu Bionic will be provided until the distribution release reaches its end of life. Please see the supported distributions release policy for details.

Along with the Ubuntu Bionic deprecation, the following dependencies versions are also being deprecated:

Debian Buster support deprecation

Support for Debian Buster is being deprecated, and will be removed in LibreTime v3.1.0. Maintenance only versions (3.0.x) for Debian Buster will be provided until the distribution release reaches its end of life. Please see the supported distributions release policy for details.

Along with the Debian Buster deprecation, the following dependencies versions are also being deprecated:

⬆️ Before upgrading

:::caution

Please follow this before the upgrade procedure!

:::

File based stream configuration

The stream configuration moved from the database to the configuration file. A configuration sample can be found in the project folder under installer/config.yml. Make sure to save your existing stream config to the configuration file.

:::info

To prevent accidental data loss during upgrade, the stream configuration data will only be removed from the database in future releases. You can view the data using the following commands:

sudo -u libretime libretime-api dbshell --command="
    SELECT *
    FROM cc_stream_setting
    ORDER BY keyname;"

sudo -u libretime libretime-api dbshell --command="
    SELECT *
    FROM cc_pref
    WHERE keystr IN (
        'default_icecast_password',
        'default_stream_mount_point',
        'live_dj_connection_url_override',
        'live_dj_source_connection_url',
        'master_dj_connection_url_override',
        'master_dj_source_connection_url'
    )
    ORDER BY keystr;"

:::

Timezone configuration

The timezone preference moved from the database to the configuration file. Make sure to save your existing timezone preference to the configuration file.

:::info

To prevent accidental data loss during upgrade, the timezone preference will only be removed from the database in future releases. You can view the data using the following commands:

sudo -u libretime libretime-api dbshell --command="SELECT * FROM cc_pref WHERE keystr = 'timezone'";

:::

Worker python package and service

The libretime-celery python package and service was renamed to libretime-worker. Make sure to remove the old python package and service using the following command:

sudo pip3 uninstall libretime-celery

sudo rm -f \
    /etc/systemd/system/libretime-celery.service \
    /usr/lib/systemd/system/libretime-celery.service

3.0.0-alpha.13

15 Jul 11:28
Compare
Choose a tag to compare
3.0.0-alpha.13 Pre-release
Pre-release

💖 Contributors

The LibreTime project wants to thank the following contributors for authoring PRs to this release:

🚀 Features

  • remove unused python3-venv package (#1728)
  • api: split api into multiple apps (#1626)
  • improve apache configuration (#1784)
  • api: replace uwsgi with gunicorn (#1785)
  • replace exploded base_* with public_url
  • shared: compress logs with gz (#1827)
  • shared: remove unused abstract app (#1828)
  • replace click envar with auto_envvar_prefix (#1829)
  • shared: allow to disable log rotate/retention
  • legacy: change logrotate config deploy path
  • rotate logs using libretime user
  • legacy: improve rabbitmq check (#1839)
  • worker: don't run with a dedicated user
  • playout: remove unused liquidsoap_prepare_terminate.py (#1854)
  • legacy: check services using systemctl (#1856)
  • change config file format to yaml
  • change config filename to config.yml
  • change config dir path to /etc/libretime
  • installer: rewrite install script
  • replace php migration with django migration
  • drop cc_locale table
  • api: create set_icecast_passwords command
  • installer: post install setup instructions
  • add systemd libretime.target
  • move allowed cors url to configuration file
  • remove php web installer
  • move storage path setting to configuration file
  • installer: rename shared files path to /usr/share/libretime
  • shared: add config trailing slash sanitizer (#1870)
  • rename default stream mount point to main
  • api: rename user model fields (#1902)
  • remove unused cc_sess table (#1907)
  • remove unused cc_perms table (#1909)
  • api: rename podcasts models fields (#1910)
  • analyzer: move compute_md5 to shared library
  • api: create bulk_import command
  • legacy: compute md5 during early upload
  • api: rename track type to library
  • legacy: add Ukrainian language
  • legacy: don't guess cors url from server
  • installer: load .env file to persistent install config
  • use dedicated 'libretime' user
  • replace apache2 with nginx + php-fpm
  • api: listen on unix socket with gunicorn
  • api: use uvicorn as asgi server with gunicorn
  • set default locale to en_US
  • remove unused cc_country table

🐛 Bug fixes

  • add gettext for legacy locale generation (#1720)
  • installer: install software-properties-common when required
  • installer: always install fresh packages
  • api: prevent timing attacke on api key (#1771)
  • legacy: load vendors during config init
  • legacy: bypass config validation during django migration
  • legacy: the ini config parser requires a .conf ext
  • playout: disable playout-notify log rotation
  • don't set log folder permissions recursively
  • shared: allow list settings (#1837)
  • legacy: station url always has a trailing slash (#1838)
  • legacy: check if libretime-api is running (#1841)
  • don't add track types only on migration
  • correct cc_file.artwork column size
  • legacy: remove not null constraint when using default
  • api: missing build-essential to build psycopg2
  • drop unused sequences
  • api: allow updating default_icecast_password (#1872)
  • deps: update dependency @cmfcmf/docusaurus-search-local to ^0.11.0 (#1873)
  • legacy: remove file directory metadata (#1887)
  • api: update model fields in set_icecast_passwords (#1903)
  • api: cascade when dropping table (#1908)
  • legacy: station-metadata api endpoint
  • legacy: don't log 'could not obtain lock' exception (#1943)
  • legacy: check empty before iteration on files
  • use constrained foreign key for files track_type
  • deps: update dependency mermaid to v9.1.2 [security] (#1948)
  • installer: update version file unless tarball (#1950)
  • prevent data loose on track_types_id migration (#1949)
  • use track_type_id in smartblock criteria
  • legacy: no invalid track type in smartblock criteria

🔥 Deprecation and removal

Allowed CORS origins configuration location

The allowed CORS origins configuration moved from the database to the configuration file. The field in the general preference form is deprecated and will be removed in the next release. Be sure to move your allowed CORS origins configuration to the configuration file.

⬆️ Before upgrading

:::caution

Please run this before the upgrade procedure!

:::

Repair broken track types

The database files track type field was previously not constrained and this might have lead to files referencing a now renamed or missing track type. To preserve as much data as possible during the database migration process, you need to check whether some files have broken or missing track type references and fix them accordingly. To list broken track type references, you can run the following command:

sudo -u www-data libretime-api dbshell --command="
    SELECT f.id, f.track_type, f.track_title, f.artist_name, f.filepath
    FROM cc_files f
    WHERE NOT EXISTS (
        SELECT FROM cc_track_types tt
        WHERE tt.code = f.track_type
    )
    AND f.track_type IS NOT NULL
    AND f.track_type <> '';"

If the above command outputs the following, no file needs fixing.

 id | track_type | track_title | artist_name | filepath
----+------------+-------------+-------------+----------
(0 rows)

In addition, the database smart block criteria value was previously referencing track types using codes, and should now reference track types using ids. You need to check whether some smart block have broken track type references and fix them accordingly. To list broken track type references, you can run the following command:

sudo -u www-data libretime-api dbshell --command="
    SELECT b.name, c.criteria, c.modifier, c.value
    FROM cc_blockcriteria c, cc_block b
    WHERE c.block_id = b.id
    AND NOT EXISTS (
        SELECT FROM cc_track_types tt
        WHERE tt.code = c.value
    )
    AND criteria = 'track_type';"

If the above command outputs the following, no smart block needs fixing.

 name | criteria | modifier | value
------+----------+----------+-------
(0 rows)

New configuration file

The configuration file name changed from airtime.conf to config.yml. Please rename your configuration file using the following command:

sudo mv /etc/airtime/airtime.conf /etc/airtime/config.yml

The configuration directory changed from /etc/airtime to /etc/libretime. Please rename your configuration directory using the following command:

sudo mv /etc/airtime /etc/libretime

The configuration file format changed to yml and the configuration schema changed. Please rewrite your configuration file using the yaml format. An example configuration file installer/config.yml is present in the sources.

The general section has been changed:

  • the general.protocol, general.base_url, general.base_port, general.base_dir and general.force_ssl entries were replaced with a single general.public_url entry, be sure to use a valid url with the new configuration entry.

A new storage section has been added:

  • the storage.path entry was added to move the storage configuration from the database to the configuration file, be sure to edit your configuration with the path to your storage. The default storage path value is /srv/libretime.

Nginx, Apache and PHP

The apache2 web server has been replaced with nginx and php-fpm, be sure to uninstall apache2 and clean related configuration files:

sudo rm -f /etc/apache2/sites-*/{airtime,libretime}*
sudo rm -f /etc/php/*/apache2/conf.d/{airtime,libretime}*

sudo apt purge 'apache2' 'libapache2-mod-php*'

sudo find /var/lib/php/sessions -name 'sess_*' -delete

Shared files path

The shared files path changed from /usr/share/airtime to /usr/share/libretime. The directory must be renamed:

sudo mv /usr/share/airtime /usr/share/libretime

Systemd services path

The systemd services path changed from `/e...

Read more

3.0.0-alpha.12

29 Mar 13:52
713640e
Compare
Choose a tag to compare
3.0.0-alpha.12 Pre-release
Pre-release

💖 Contributors

The LibreTime project wants to thank the following contributors for authoring PRs to this release:

🐛 Bug fixes

  • playout: add locales to libretime-playout-notify calls (#1715)
  • worker: enable logfile variable expansion in ExecStart (#1717)

📝 Colophon

This release mainly fixes bugs present in the 3.0.0-alpha.11 release.

3.0.0-alpha.11

28 Mar 19:19
Compare
Choose a tag to compare
3.0.0-alpha.11 Pre-release
Pre-release

💖 Contributors

The LibreTime project wants to thank the following contributors for authoring PRs to this release:

🚀 Features

  • Use setuptools entrypoints (#1409)
  • Support php7.4 (#1354)
  • run API tests in CI (#1421)
  • add support for Ubuntu Focal 20.04 (#1168)
  • debian 11 support (#1292)
  • create libretime_shared package (#1349)
  • enhance libretime shared (#1491)
  • shared: let user provide the log level (#1493)
  • replace verbosity flag with log-level flag (#1496)
  • playout: enhance playout logging (#1495)
  • api: update env var settings loading
  • api: allow to run without log file for dev
  • analyzer: enhance analyzer cli and logging (#1507)
  • playout: migrate notify cli to click (#1519)
  • shared: allow loading from ini config file
  • shared: allow cli parametrized decorators (#1527)
  • shared: add suffix to shared config models
  • analyzer: load config using shared helpers
  • playout: change playout working directory
  • playout: load config using shared helpers
  • analyzer: analyze replaygain using ffmpeg
  • analyzer: analyze cuepoint using ffmpeg
  • playout: change liquidsoap working dir (#1547)
  • legacy: rename log filepath (#1551)
  • shared: add url/dsn property to config classes (#1553)
  • remove locale generation from installer (#1560)
  • legacy: consolidate constants (#1558)
  • legacy: add db config defaults and allow custom port (#1559)
  • remove unused ubuntu ppa (#1591)
  • analyzer: do verify ssl certs on requests
  • analyzer: rework analyze_metadata step
  • api: improve uwsgi systemd integration (#1614)
  • analyzer: rework organise_file using pathlib
  • shared: load config from str filepath
  • shared: create general config model
  • shared: create time functions
  • shared: return log level and filepath
  • remove unused web_server_user config entry
  • legacy: clean config parsing and add defaults
  • api_client: load config using shared helpers
  • worker: load config using shared helpers
  • shared: do not exit on missing config file
  • api: remove admin app and static files
  • api: load config using shared helpers
  • legacy: replace massivescale/celery-php with jooola/celery-php
  • worker: set celery timezone to UTC
  • api: include id in file/webstream serializers
  • remove uninstall script (#1682)
  • worker: add service log filepath (#1640)

🐛 Bug fixes

  • remove rogue buster reference
  • correct vagrantfile function call
  • declare pypo.notify module
  • revert removal of eval for shell commands
  • add missing dependencies to celery module
  • assume api client is installed
  • shared: fix tests
  • change filepath options type to pathlib.Path (#1506)
  • legacy: validate id param in show image controller (#1510)
  • playout: optional log_file for liquidsoap
  • shared: require click >=8.0.3
  • legacy: correct linting issues
  • make vagrant source.list update idempotent (#1520)
  • api: duplicate exception raising and close file
  • legacy: api migration config variable name (#1522)
  • shared: prevent child override by empty dict
  • shared: tmp_path fixture type mismatch
  • analyzer: install missing steps package
  • shared: type is required for default config submodel (#1536)
  • legacy: default values when array is null
  • legacy: do not catch too broad exceptions
  • legacy: add more null check in api live info
  • legacy: only render if img creation succeed (#1540)
  • shared: pin loguru version
  • legacy: clean sql migrations files (#1545)
  • shared: set logger encoding and dont assume encoding
  • playout: proper logger format string
  • playout: only exclude ended file event
  • api_client: use same date format as schedule key
  • api_client: properly enclose events in media dict
  • playout: properly populate scheduled_now_webstream
  • legacy: revert default storage path (#1563)
  • legacy: update setup with new db config schema (#1567)
  • shared: do not strip vhost slash (#1594)
  • analyzer: remove bad attributes in shutdown handler (#1605)
  • analyzer: update docstring for organise_file
  • shared: fix missing port in public_url
  • change celery user in worker service file (#1638)
  • api: model_bakery is a dev dependency
  • api: static_url settings is required in dev mode (#1662)
  • api_client: comply to legacy schedule events
  • playout: remove stream_buffer_start in event dispatch
  • add PPA for newer liquidsoap version on Ubuntu
  • upgrade python packages during install (#1707)
  • installer: test and create correct log path
  • installer: remove rougue reference to /var/log/airtime (#1710)
  • installer: remove /var/tmp/airtime reference
  • worker: drop logfile reference until environment variable expansion works correctly

⬆️ Upgrading

Analyzer certificate verification

Analyzer no longer ignore certificate verification when performing a request. We recommend using Let's Encrypt to get a certificate. If you do rely on self signed certificate, please read the requests documentation to provide a CA Bundle to verify the cert using environment variables.

Analyzer new command line interface

The Analyzer command line interface has been reworked and uses new flags.

  • --debug flag becomes --log-level <level>
  • --rmq-config-file flag becomes --config <filepath>
  • --http-retry-queue-file flag becomes --retry-queue-filepath.
  • retry-queue-filepath default value changed from /tmp/airtime_analyzer_http_retries to retry_queue in the working directory.

New configuration schema and validation

The configuration file parsing was improved with validation and the configuration schema was updated. Some deprecated fields were removed and other were renamed.

The general section has been changed:

  • the general.web_server_user entry was removed
  • the general.cache_ahead_hours entry now defaults to 1
  • the general.airtime_dir entry is deprecated and can be removed
  • the general.station_id entry is deprecated and can be removed
  • the general.protocol (http or https) entry is recommended over the general.force_ssl entry.
  • the general.force_ssl entry should either be removed or set to a value (true or false), an empty value will fail validation.

The storage (current_backend) section has been changed:

  • the current_backend.storage_backend entry now defaults to the only valid value file. This means that you can remove the entire section from your configuration file.

The database section has been changed:

  • the database.* entries now have defaults
  • the database.port entry was added and defaults to 5432
  • the database.dbname entry was renamed to database.name
  • the database.dbuser entry was renamed to database.user
  • the database.dbpass entry was renamed to database.password

The rabbitmq section has been changed:

  • the rabbitmq.* entries now have defaults

The pypo section has been changed:

  • the pypo section was renamed to playout
  • the pypo.ls_* entries were renamed to playout.liquidsoap_*
  • the pypo.*_dir entries were removed
  • the pypo.api_client entry was removed
  • the pypo.record_file_type entry was renamed to playout.record_file_format
  • the pypo.base_recorded_files entry was removed
  • the pypo.poll_interval entry was removed
  • the pypo.push_interval entry was removed
  • the pypo.cue_style entry was removed

The deprecated sections monit and facebook are unused, they can be removed from your configuration file.

Unless you use a custom auth backend, the ldap section can be removed from your configurati...

Read more

3.0.0-alpha.10

15 Oct 19:43
9f1e41e
Compare
Choose a tag to compare
3.0.0-alpha.10 Pre-release
Pre-release

The complete LibreTime documentation is available at libretime.org.

The full tarball for the 3.0.0-alpha.10 release of LibreTime is available here.

Since this is an alpha release there will be bugs in the code.

Please report new issues and/or feature requests in the issue tracker. Join our discourse or chat to us on our Mattermost instance if you need help and for general discussion.

Table of Contents

Features

  • Support force_ssl configuration option in Python applications
  • Move airtime_mvc to legacy and move all PHP related files under it
  • Support Authorization: Api-Key header in API v1
  • Use pip for LibreTime Python package installation
  • Move Python scripts into /usr/local/bin
  • Add REST API v2 (unstable and subject to change)

Bug Fixes

  • Renamed airtime_analyzer to libretime-analyzer
  • Prevent autoload playlists running on deleted show instances
  • Playout history can be exported as CSV and PDF
  • Explicitly fail if the HTTP requests made by the Python applications fail
  • Fix API v2 schedule endpoint item filtering and overlapping playout
  • Fix pypo overlapping track playout
  • Fix installation when Icecast is already installed
  • Request 1Gb of memory on libvirt Vagrant boxes
  • Clean up CORS setup in the installer
  • Pin the setuptools version to ensure older versions of LibreTime can still be installed

Deprecated Features

  • Removed broken Soundcloud integration
  • Dropped support for Ubuntu Xenial as it is end-of-life
  • Dropped support for Debian Stretch as it is end-of-life
  • Removed SysV and Upstart init system files
  • Removed broken My Podcasts feature

Contributors

The LibreTime project wants to thank the following contributors for authoring PRs to this release:

  • @jooola
  • @paddatrapper
  • @xabispacebiker
  • @malespiaut
  • @zklosko
  • @brekemeier
  • @jeromelebleu
  • @danielhjames
  • @rjhelms
  • @hairmare

Installation

The main installation docs may be found at https://libretime.org/install/. They describe a "developer" install using the bundled install script.

We are preparing packages for supported distros and you can take those for a spin if you would like to. Usually the packages get built pretty soon after a release is published. If the current version is not available from the below sources you should wait for a while until they get uploaded.

Please reference these links for further information on how to install from packages. The install docs will get updated to show how to install packages once we have validated that the packages work properly and when the packages are available from a repository allowing you to automate updating to a new version.

If you want to skip the installer GUI completely you can configure LibreTime using legacy/build/airtime.example.conf as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second install -fiap install on a non productive system for reference can help with this type of bootstrap.

Updating

See the docs for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating.
If the update does not go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure broadcast continuity.

If you installed from GitHub you can git pull in your local working copy and re-run the ./install script with the same --web-root and --web-user arguments you used during the initial install. Tarball users can leave out the git pull part and just call the new version of the install script.

Once the update has taken place, you will need to run the following commands to clean up old scripts and configuration:

# Remove the old packages
sudo pip3 uninstall \
  airtime-playout \
  airtime-celery \
  api_clients

# Remove old entrypoints
sudo rm -f \
  /usr/bin/airtime-liquidsoap \
  /usr/bin/airtime-playout \
  /usr/bin/pyponotify

# Remove old config files
sudo rm -f \
  /etc/logrotate.d/airtime-liquidsoap

# Remove the old runtime and PHP directories
sudo rm -rf \
  /var/run/airtime \
  /run/airtime \
  /usr/share/airtime/php/airtime_mvc

# Remove old python libraries entrypoints
sudo rm -f \
  /usr/bin/airtime-liquidsoap \
  /usr/bin/airtime-playout \
  /usr/bin/libretime-analyzer \
  /usr/bin/libretime-api \
  /usr/bin/collectiongain \
  /usr/bin/django-admin \
  /usr/bin/django-admin.py \
  /usr/bin/markdown_py \
  /usr/bin/mid3cp \
  /usr/bin/mid3iconv \
  /usr/bin/mid3v2 \
  /usr/bin/moggsplit \
  /usr/bin/mutagen-inspect \
  /usr/bin/mutagen-pony \
  /usr/bin/pyponotify \
  /usr/bin/replaygain \
  /usr/bin/sqlformat

Known Issues

The following issues may need a workaround for the time being. Please search the issues before reporting problems not listed below.

Interface Customization Issues

The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.

No watched folder support

Currently LibreTime does not support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature. This is tracked in #70.

No line in support

This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording. This is tracked in #42.

Playout won't work if locale is missing

Some minimal OS installs do not have a default locale configured. This only seems to affect some VPS installs as they often do not have a locale setup in the default images provided. This is tracked in #317.

You can set up the locale using a combination of the following commands. You might also want to consult the documentation of your VPS provider as it may contain an official way to set up locales when provisioning a VPS.

# Set locale using systemds localectl
localectl set-locale LANG="en_US.utf8"

These instructions do not seem to work on all Debian based distros so you might need to use update-locale as follows.

#Purge all locales but en_US.UTF-8
sudo locale-gen --purge en_US.UTF-8
#Populate LANGUAGE=
sudo update-locale LANGUAGE="en_US.UTF-8"

3.0.0-alpha.9

13 Jan 17:10
ecd3020
Compare
Choose a tag to compare
3.0.0-alpha.9 Pre-release
Pre-release

The complete LibreTime documentation is available at libretime.org.

The full tarball for the 3.0.0-alpha.9 release of LibreTime is available here.

Since this is an alpha release there will be bugs in the code.

Please report new issues and/or feature requests in the issue tracker. Join our discourse or chat to us on our Mattermost instance if you need help and for general discussion.

Table of Contents

Features

  • Display artwork from ID3 tags if available
  • Expose track metadata or artwork in new API endpoint
  • "Track Type" feature to classify tracks for auto-DJ
  • support liquidsoap versions 1.1.1, 1.3.x and 1.4.x out of the box
  • Improved French translation
  • Updated jquery.cookie to js.cookie
  • forceSSL config to support TLS on non default ports
  • macOS Catalina support for Vagrant
  • CentOS 8 Support
  • Installer creates a secure icecast password on first run
  • Support Multipass as an alternative to Vagrant dev environments

Bugfixes

  • Fix using outro playlist in "repeat until full" smartblock
  • Switch to reliable message consumption to prevent RabbitMQ connections getting dropped side-effects
  • Replace absolute css and js URLs with relative URLs
  • remove legacy upstream conversion tracking, provisioning, and billing code
  • disabled version notification to avoid confusion, users can check current version in Settings > Status.
  • Swap out MusesPlayer for HTML5Player for playout
  • Make lots of untranslatable strings translatable

Deprecated Features

  • Liquidsoap 1.1.1 support. 3.0.0-alpha.9 is most likely the last version to support liquidsoap 1.1.1 out of the box. The number of distros that install a current version of liquidsoap are gaining the majority and once Ubuntu releases a version of their distro that has liquidsoap 1.3.x we will switch to liquidsoap 1.3.x support only. Users still on liquidsoap 1.1.1 will need to apply a patch to their liquidsoap scripts (or update liquidsoap).

Contributors

The LibreTime project wants to thank the following contributors for commiting PRs to this release:

Installation

The main installation docs may be found at https://libretime.org/install/. They describe a "developer" install using the bundled install script.

We are preparing packages for supported distros and you can take those for a spin if you would like to. Usually the packages get built pretty soon after a release is published. If the current version is not available from the below sources you should wait for a while until they get uploaded.

Please reference these links for further information on how to install from packages. The install docs will get updated to show how to install packages once we have validated that the packages work properly and when the packages are available from a repository allowing you to automate updating to a new version.

Updating

See the docs for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating.
If the update does not go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure broadcast continuity.

If you installed from GitHub you can git pull in your local working copy and re-run the ./install script with the same --web-root and --web-user arguments you used during the initial install. Tarball users can leave out the git pull part and just call the new version of the install script.

Updating from 3.0.0-alpha, 3.0.0-alpha.1 and, 3.0.0-alpha.2

The configuration file structure has changed. Please move the contents of the /etc/airtime/cloud_storage.conf and /etc/airtime/rabbitmq-analyzer.ini files into the main /etc/airtime/airtime.conf. In all known cases you need to add the following section to the file.

[current_backend]
storage_backend=file

You can then remove the files and the symlink.

rm /etc/airtime/cloud_storage.conf \
   /etc/airtime/rabbitmq-analyzer.ini \
   /etc/airtime/production

While you're at you may also want to remove the amazon_s3 section if it was in any of the files.

Analyzer grabs all the needed info from the main airtime.conf file starting with 3.0.0-alpha.8.

Known Issues

The following issues may need a workaround for the time being. Please search the issues before reporting problems not listed below.

Installer Issues

The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state, ymmv.

For now the installer distro selection is pretty good at auto-detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use is not recommended.

The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.

If you want a secure environment you should work through the preparing the server docs (up until the dragons) and be prepared to fix some of the issues the installer gets wrong manually by hacking the config file after the fact.

If you want to skip the installer GUI completely you can configure LibreTime using airtime_mvc/build/airtime.example.conf as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second install -fiap install on a non productive system for reference can help with this type of bootstrap.

Media-Monitor config needs manual removing

If you are using the install script you should most likely remove the [media-monitor] config section from your /etc/airtime/airtime.conf file to ensure you do not run into the problems described in
#450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.

Outdated silan reports unreliable cue in/out information

Out of the box the installer installs a broken, outdated version of silan (0.3.2) on some Ubuntu 16.04. CentOS does not have upstream packages and you may either install from source or use the 0.3.3 packages from RaBe APEL.

Check your version of silan by running silan --version. This should report 0.3.3 or higher. If not please see the Silan Installation wiki page for more details & workarounds.

tldr: **[Silan Installation](https://github.com/LibreTime/lib...

Read more

3.0.0-alpha.8

17 Aug 17:21
e232469
Compare
Choose a tag to compare
3.0.0-alpha.8 Pre-release
Pre-release

The complete LibreTime documentation is available at libretime.org.

The full tarball for the 3.0.0-alpha.8 release of LibreTime is available here.

Since this is an alpha release there will be bugs in the code.

Please report new issues and/or feature requests in the issue tracker. Join our discourse or chat us up on Slack if you need help and for general discussion.

Table of Contents

Features

  • The LibreTime project now has a proper logo!
  • New "Show Listener Stats" in "Analytics" contains listeners statistics on specific shows.
  • Display time of last podcast import in downloaded podcasts view.
  • Allow sorting by last play date in smartblocks, makes creating playlists that play the least played track possible.
  • Preliminary support for Debian Buster (Remember to patch the liquidsoap scripts if you use Buster).

Bugfixes

  • Widgets now use user specified timezones as they should.
  • Podcast view now display proper number of downloaded podcasts rather than just the first 25 podcasts.
  • Fix using non-ascii characters in podcast publishing service.
  • Fix canceling current show for "linked" shows.
  • Fix empty schedule page when previous track is empty.
  • Fix focus jumping to search in advanced search.

Deprecated Features

  • We are phasing out support for Debian 8 (Jessie). See the announcement in the 3.0.0-alpha.7 release notes for more details.
  • Liquidsoap 1.1.1 support. 3.0.0-alpha.8 is most likely the last version to support liquidsoap 1.1.1 out of the box. The number of distros that install a current version of liquidsoap are gaining the majority and once Ubuntu releases a version of their distro that has liquidsoap 1.3.x we will switch to native liquidsoap 1.3.x support. Users still on liquidsoap 1.1.1 will need to apply a patch to their liquidsoap scripts (or update liquidsoap).

Contributors

The LibreTime project wants to thank the following contributors for adding PRs to this release:

Installation

The main installation docs may be found at http://libretime.org/install/. They describe a "developer" install using the bundled install script.

We are preparing packages for supported distros and you can take those for a spin if you would like to. Usually the packages get built pretty soon after a release is published. If the current version is not available from the below sources you should wait for a while until they get uploaded.

Please reference these links for further information on how to install from packages. The install docs will get updated to show how to install packages once we have validated that the packages work properly and when the packages are available from a repository allowing you to automate updating to a new version.

Updating

See the docs for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating.
If the update does not go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure broadcast continuity.

If you installed from GitHub you can git pull in your local working copy and re-run the ./install script with the same --web-root and --web-user arguments you used during the initial install. Tarball users can leave out the git pull part and just call the new version of the install script.

Updating from 3.0.0-alpha, 3.0.0-alpha.1 and, 3.0.0-alpha.2

The configuration file structure has changed. Please move the contents of the /etc/airtime/cloud_storage.conf and /etc/airtime/rabbitmq-analyzer.ini files into the main /etc/airtime/airtime.conf. In all known cases you need to add the following section to the file.

[current_backend]
storage_backend=file

You can then remove the files and the symlink.

rm /etc/airtime/cloud_storage.conf \
   /etc/airtime/rabbitmq-analyzer.ini \
   /etc/airtime/production

While you're at you may also want to remove the amazon_s3 section if it was in any of the files.

Analyzer grabs all the needed info from the main airtime.conf file starting with 3.0.0-alpha.8.

Known Issues

The following issues may need a workaround for the time being. Please search the issues before reporting problems not listed below.

Installer Issues

The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state, ymmv.

For now the installer distro selection is pretty good at auto-detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use is not recommended.

The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.

If you want a secure environment you should work through the preparing the server docs (up until the dragons) and be prepared to fix some of the issues the installer gets wrong manually by hacking the config file after the fact.

If you want to skip the installer GUI completely you can configure LibreTime using airtime_mvc/build/airtime.example.conf as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second install -fiap install on a non productive system for reference can help with this type of bootstrap.

Media-Monitor config needs manual removing

If you are using the install script you should most likely remove the [media-monitor] config section from your /etc/airtime/airtime.conf file to ensure you do not run into the problems described in
#450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.

Outdated silan reports unreliable cue in/out information

Out of the box the installer installs a broken, outdated version of silan (0.3.2) on some Debian based Platforms (ie. Ubuntu). This affects Ubuntu 16.04, Debian Jessie and Debian Stretch. CentOS does not have upstream packages and you may either install from source or use the 0.3.3 packages from RaBe APEL.

Check your version of silan by running silan --version. This should report 0.3.3 or higher. If not please see the Silan Installation wiki page for more details & workarounds.

To date silan 0.3.3 or higher is in Debian testing & Ubuntu Bionic. You can check the upstream progress the Debian PTS and Ubuntu launchpad. This section will get removed once the package is in stable.

tldr: Silan Installation

<a id="...

Read more

3.0.0-alpha.7

22 Apr 21:46
be5222d
Compare
Choose a tag to compare
3.0.0-alpha.7 Pre-release
Pre-release

The complete LibreTime documentation is available at libretime.org.

The full tarball for the 3.0.0-alpha.7 release of LibreTime is available here.

Since this is an alpha release there will be bugs in the code. Please report new issues and/or feature requests in the issue tracker. Join our discourse if you need help and for general discussion.

Table of Contents

Features

  • Set default focus to search field on library page.
  • PHP 7.2 and 7.3 compatibility (for Ubuntu 18.04.1 LTS (Bionic Beaver) and other modern distros)
  • "Podcast Album Override" is now "Podcast Metadata Override " and additionally overrides the track title with the title from the RSS feed. The artist field is set to the podcast name in LibreTime.
  • Allowed users to customize the title of podcasts
  • Disabled the creation of smartblocks and playlists for new podcasts by default and added a generate button under the edit podcast tab
  • Better libvirt integration in Vagrant setup.
  • Debian 11 (Buster) support
  • Add columns for uploaded and genre to default library view, sorts it by uploaded and removes album column by default
  • Add more details to the information returned by the API onAirLightAction call
  • Update Spanish translations
  • Allow admins to edit the owner of a track
  • Added system-wide intro and outro playlists for autoloading playlists
  • Added show-source info to live-info-v2 API
  • Update much of the documentation
  • Allow program managers to view listeners statistics

Bugfixes

  • Fix DOS line-endings in vendorized PHP dependencies for packaging.
  • Fix overlapping show names if show does not fit in calendar.
  • Fall back to treating file as MP3 if it isn't recognized by mutagen.
  • Remove defunct support-setting page.
  • Remove legacy AAC code, fix AAC support for SHOUTcast.
  • Display Settings menu for all users.
  • Make "Time Remaining" Smartblock work in Playlist.
  • Fix non-audio enclosure crash when importing badly formed podcast feeds
  • Fix flac files not playing out
  • Fix 500 error when making API call onAirLightAction
  • Fix warning message shown in schedule API call
  • Fix bug where many empty playlists were created when using autoloading
  • Passed show variable to smartblocks loaded via playlist to fix time remaining smartblocks with autoloading playlists.
  • Restore top right user setting link and logout link to UI
  • Fix an unnecessary type conversion to seconds that caused errors with PHP 7.2
  • Fix import errors on podcast episodes with long descriptions
  • Fix issue with multiple time remaining smartblocks in a single playlist not detecting remaining time correctly
  • Fix occasional empty administration page due to null previous file reference

Deprecated Features

  • We are beginning to phase out support for Debian 8 (Jessie). See the announcement for more details.

Contributors

The LibreTime project wants to thank the following contributors for adding PRs to this release: @robbt @frecuencialibre @detobate @greenjon @xabispacebiker @mikeopensauce @paddatrapper @hairmare @ryanrain

Installation

The main installation docs may be found at http://libretime.org/install/. They describe a "developer" install using the bundled install script.

We are preparing packages for supported distros and you can take those for a spin if you would like to. Usually the packages get built pretty soon after a release is published. If the current version is not available from the below sources you should wait for a while until they get uploaded.

Please reference these links for further information on how to install from packages. The install docs will get updated to show how to install packages once we have validated that the packages work properly and when the packages are available from a repository allowing you to automate updating to a new version.

Updating

See the docs for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating.
If the update does not go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure broadcast continuity.

If you installed from GitHub you can git pull in your local working copy and re-run the ./install script with the same --web-root and --web-user arguments you used during the initial install. Tarball users can leave out the git pull part and just call the new version of the install script.

Updating from 3.0.0-alpha, 3.0.0-alpha.1 and, 3.0.0-alpha.2

The configuration file structure has changed. Please move the contents of the /etc/airtime/cloud_storage.conf and /etc/airtime/rabbitmq-analyzer.ini files into the main /etc/airtime/airtime.conf. In all known cases you need to add the following section to the file.

[current_backend]
storage_backend=file

You can then remove the files and the symlink.

rm /etc/airtime/cloud_storage.conf \
   /etc/airtime/rabbitmq-analyzer.ini \
   /etc/airtime/production

While you're at you may also want to remove the amazon_s3 section if it was in any of the files.

Analyzer grabs all the needed info from the main airtime.conf file starting with 3.0.0-alpha.7.

Deprecation Announcement for Debian 8 (Jessie)

Up until 3.0.0-alpha.7 Debian 8 (Jessie) was in the list of supported distros.

Given that Debian 9 (Stretch) is now available and Jessie is EOL since June 2018 LibreTime has to update its support matrix. This info is in the release notes as an early warning since we are deprecating a major os version with an upcoming release.

Known Issues

The following issues may need a workaround for the time being. Please search the issues before reporting problems not listed below.

Installer Issues

The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state, ymmv.

For now the installer distro selection is pretty good at auto-detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use is not recommended.

The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.

If you want a secure environment you should work through the preparing the server docs (up until the dragons) and be prepared to fix some of the issues the installer gets wrong manually by hacking the config file after the fact.

If you want to skip the installer GUI completely you can configure LibreTime using airtime_mvc/build/airtime.example.conf as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second install -fiap install on a non productive system for reference can help with this type of bootstrap.

Media-Monitor config needs manual removing

If you are using the install script you should most likely remove the [media-monitor] config section from your /etc/airtime/airtime.conf file to ensure you do not run into the problems described in
#450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.

Outdated silan r...

Read more

3.0.0-alpha.6

23 Dec 17:38
7c1bea3
Compare
Choose a tag to compare
3.0.0-alpha.6 Pre-release
Pre-release

The complete LibreTime documentation is available at libretime.org.

The full tarball for the 3.0.0-alpha.6 release of LibreTime is available here.

Since this is an alpha release there will be bugs in the code. Please report new issues and/or feature requests in the issue tracker.

Table of Contents

Features

  • Turn on the podcast album override by default on new installs.
  • Ubuntu 18.04 (Bionic) developer tooling.
  • Collapse advanced configuration in show edit form.
  • Clock icon in calendar for autoloading playlists.
  • Let user edit podcast name.
  • Default to creating dynamic smartblock when creating new smartblocks.
  • Move advanced smartblock configuration to collapsed "Advanced options" section.
  • Assume "Y" as answer for questions during installer.

Bugfixes

  • Fix sizing for playlist and smart block on shorter screens.
  • Increased celery timeout to 1800 seconds (affects podcast downloads and other tasks like things related to the soundcloud integration).
  • remove some obsolete scripts from utils/.
  • Fix version check for cases where GitHub is not available or temporarily fails.
  • Clarify wording for "Autoloading Playlist" (used to be called "Auto Schedule" or other names).
  • Remove "Record & Rebroadcast" from ui.
  • Fix scrolling issue in "Add Show" dialog.
  • Allow ampersand in smartblock search criteria.
  • Fix display of selected tracks in Smartblock criteria.
  • Add docs into enriched tarball for packagers.
  • Improve filling smartblocks, they should not get overscheduled rather than not getting filled up all the way.
  • Remove broken ReCaptcha.
  • Fix reading metadata from non-mp3 sources (in podcasts and uploads).
  • Update mutagen to fix some edge cases when reading metadata from files in analyzer.
  • Fix shuffling playlists that contain a smart block.
  • Remove unused zfdebug from dev environment.

Deprecated Features

  • The contents of /etc/airtime/cloud_storage.conf and /etc/airtime/rabbitmq-analyzer.ini have been moved to the main /etc/airtime/airtime.conf file and the env specific symlink is no longer needed. See below for instructions on how to migrate from a pre-release that created those files.
  • As per the announcement in the 3.0.0-alpha.5 release notes we are dropping Ubuntu 14.04 (Trusty) as a supported platform.
  • Removed Amazon S3 storage support.
  • Remove "Record & Rebroadcast" from ui.

Installation

The main installation docs may be found at http://libretime.org/install/. They describe a "developer" install using the bundled install script.

We are preparing packages for supported distros and you can take those for a spin if you would like to. Usually the packages get built pretty soon after a release is published. If the current version is not available from the below sources you should wait for a while until they get uploaded.

Please reference these links for further information on how to install from packages. The install docs will get updated to show how to install packages once we have validated that the packages work properly and when the packages are available from a repository allowing you to automate updating to a new version.

Updating

See the docs for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating.
If the update does not go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure broadcast continuity.

If you installed from GitHub you can git pull in your local working copy and re-run the ./install script with the same --web-root and --web-user arguments you used during the initial install. Tarball users can leave out the git pull part and just call the new version of the install script.

Updating from 3.0.0-alpha, 3.0.0-alpha.1 and, 3.0.0-alpha.2

The configuration file structure has changed. Please move the contents of the /etc/airtime/cloud_storage.conf and /etc/airtime/rabbitmq-analyzer.ini files into the main /etc/airtime/airtime.conf. In all known cases you need to add the following section to the file.

[current_backend]
storage_backend=file

You can then remove the files and the symlink.

rm /etc/airtime/cloud_storage.conf \
   /etc/airtime/rabbitmq-analyzer.ini \
   /etc/airtime/production

While you're at you may also want to remove the amazon_s3 section if it was in any of the files.

Analyzer grabs all the needed info from the main airtime.conf file starting with 3.0.0-alpha.6.

Known Issues

The following issues may need a workaround for the time being. Please search the issues before reporting problems not listed below.

Installer Issues

The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state, ymmv.

For now the installer distro selection is pretty good at auto-detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use is not recommended.

The ui works best if you don't use it in an opinionated fashion and change just the bare minimal.

If you want a secure environment you should work through the preparing the server docs (up until the dragons) and be prepared to fix some of the issues the installer gets wrong manually by hacking the config file after the fact.

If you want to skip the installer GUI completely you can configure LibreTime using airtime_mvc/build/airtime.example.conf as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second install -fiap install on a non productive system for reference can help with this type of bootstrap.

Media-Monitor config needs manual removing

If you are using the install script you should most likely remove the [media-monitor] config section from your /etc/airtime/airtime.conf file to ensure you do not run into the problems described in
#450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.

Outdated silan reports unreliable cue in/out information

Out of the box the installer installs a broken, outdated version of silan on some Debian based Platforms (ie. Ubuntu). This affects all distros supported by the installer except Debian testing which has the silan 0.3.3 and CentOS which does not have upstream packages and you may either install from source or use the 0.3.3 packages from RaBe APEL.

Check your version of silan by running silan --version. This should report 0.3.3 or higher. If not please see the Silan Installation wiki page for more details & workarounds.

To date silan 0.3.3 or higher is in Debian testing & Ubuntu Bionic. You can check the upstream progress the Debian PTS and Ubuntu launchpad. This section will get removed once the package is in stable.

tldr: Silan Installation

Liquidsoap Support

Libretime currently only supports liquidsoap < 1.3.0 out of the box. If...

Read more