From 57eb5d9c5b6f9c605a899be2cb3371df682b790c Mon Sep 17 00:00:00 2001 From: Zachary Klosko Date: Fri, 5 Jun 2020 23:07:38 -0400 Subject: [PATCH] Adding table of contents to docs pages --- docs/Gemfile.lock | 73 +++++++++++++++ docs/_config.yml | 4 +- docs/_data/nav.yml | 6 +- docs/_layouts/docs.html | 6 +- docs/_layouts/post.html | 51 ----------- docs/_layouts/splash.html | 2 +- docs/backing-up-the-server.md | 3 +- docs/contribute.md | 2 +- docs/css/creative.min.css | 10 +++ docs/features.md | 155 -------------------------------- docs/freeipa.md | 7 +- docs/gemfile | 3 + docs/host-configuration.md | 9 +- docs/icecast-shoutcast.md | 10 +-- docs/interface-customization.md | 7 +- docs/library.md | 5 +- docs/live-broadcast.md | 5 +- docs/playlists-smartblocks.md | 5 +- docs/playout-history.md | 5 +- docs/podcasts-webstreams.md | 5 +- docs/preparing-media.md | 16 ++-- docs/quickstart.md | 3 +- docs/reverse-proxy.md | 3 +- docs/scripts/toc.js | 98 ++++++++++++++++++++ docs/setting-the-server-time.md | 7 +- docs/settings.md | 7 +- docs/ssl-config.md | 1 + docs/troubleshooting.md | 8 +- docs/unesco-guide.md | 12 --- docs/upgrading.md | 1 + docs/users.md | 2 +- docs/vagrant.md | 2 +- 32 files changed, 229 insertions(+), 304 deletions(-) create mode 100644 docs/Gemfile.lock delete mode 100644 docs/_layouts/post.html delete mode 100644 docs/features.md create mode 100644 docs/gemfile create mode 100644 docs/scripts/toc.js delete mode 100644 docs/unesco-guide.md diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock new file mode 100644 index 000000000..6e7af44f7 --- /dev/null +++ b/docs/Gemfile.lock @@ -0,0 +1,73 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + colorator (1.1.0) + concurrent-ruby (1.1.6) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + ffi (1.13.0) + forwardable-extended (2.6.0) + http_parser.rb (0.6.0) + i18n (1.8.3) + concurrent-ruby (~> 1.0) + jekyll (4.1.0) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (~> 2.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.4.0) + pathutil (~> 0.9) + rouge (~> 3.0) + safe_yaml (~> 1.0) + terminal-table (~> 1.8) + jekyll-sass-converter (2.1.0) + sassc (> 2.0.1, < 3.0) + jekyll-toc (0.14.0) + jekyll (>= 3.8) + nokogiri (~> 1.10) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.2.1) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.2.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + mini_portile2 (2.4.0) + nokogiri (1.10.9) + mini_portile2 (~> 2.4.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (4.0.5) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.4) + rouge (3.19.0) + safe_yaml (1.0.5) + sassc (2.4.0) + ffi (~> 1.9) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + unicode-display_width (1.7.0) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll-toc (~> 0.14.0) + +BUNDLED WITH + 2.1.4 diff --git a/docs/_config.yml b/docs/_config.yml index d60096910..bd7a7c791 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -18,5 +18,5 @@ headbuttonurl: index#get-started headbuttontext: Get LibreTime # Build settings -#plugins: -# - jekyll-feed +plugins: + - jekyll-toc \ No newline at end of file diff --git a/docs/_data/nav.yml b/docs/_data/nav.yml index c04c1e8b1..053f464f1 100644 --- a/docs/_data/nav.yml +++ b/docs/_data/nav.yml @@ -68,7 +68,9 @@ docsnav: url: hd-audio-modules - page: Contribute to LibreTime url: contribute + - page: Letter to the AirTime Community + url: https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d - page: Rights and Royalties url: rights-royalties - - page: UNESCO Guide to Public Radio - url: unesco-guide \ No newline at end of file + - page: UNESCO Public Radio Guide (PDF) + url: img/CommunityRadioUserGuide.pdf \ No newline at end of file diff --git a/docs/_layouts/docs.html b/docs/_layouts/docs.html index 216112162..a15a6c622 100644 --- a/docs/_layouts/docs.html +++ b/docs/_layouts/docs.html @@ -85,13 +85,13 @@ layout: default

{{ page.title }}


-

- {{ page.blurb }} -

+
+ {% toc %} +
{{ content }} diff --git a/docs/_layouts/post.html b/docs/_layouts/post.html deleted file mode 100644 index 9b0d257a7..000000000 --- a/docs/_layouts/post.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: default ---- - - - - - - - -
-
-
-
-

{{ page.title }}

-
-

- {{ page.blurb }} -
by {{ page.author }} on {{ page.date }} -

-
-
-
-
- - {{ content }} - - -
-
-
-
-

Other Posts

-
-

-

-

-
-
-
-
- - diff --git a/docs/_layouts/splash.html b/docs/_layouts/splash.html index b6a659ad7..55ef25ffa 100644 --- a/docs/_layouts/splash.html +++ b/docs/_layouts/splash.html @@ -264,7 +264,7 @@
-

Get started with LibreTime today.

+

Get started with LibreTime today


Requires: 1 Ghz processor, 2 GB RAM, wired ethernet connection with static IP address, and you. What are you waiting for? diff --git a/docs/backing-up-the-server.md b/docs/backing-up-the-server.md index fcae27c13..03f19d818 100644 --- a/docs/backing-up-the-server.md +++ b/docs/backing-up-the-server.md @@ -48,8 +48,7 @@ which is backed up by your storage backup tool of choice; for example, the restore can be made along with a matching and complete version of the LibreTime database from the day that the storage backup was made.  -Storage backup --------------- +## Storage backup Backing up the LibreTime database with **pg\_dumpall** will not back up the LibreTime media storage server, which is likely to need a great deal more backup diff --git a/docs/contribute.md b/docs/contribute.md index e2823bdcc..adddc8fef 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -1,7 +1,7 @@ --- layout: docs title: Contributing to LibreTime -blurb: LibreTime is a community project, maintained by an awesome group of volunteers. Being a "free as in freedom" project, we need the help of our users to keep the project going. You don't have to know how to write code in order to help. Check out some of ways you can give back to the LibreTime project below. +toc: true --- > LibreTime is a fork of AirTime due to stalled development of the FLOSS version. For background on this, diff --git a/docs/css/creative.min.css b/docs/css/creative.min.css index 61d1d6c1e..c43cd80fa 100755 --- a/docs/css/creative.min.css +++ b/docs/css/creative.min.css @@ -317,4 +317,14 @@ padding: 10px 20px; .station-logos-col { flex: 25%; padding: 5px; +} + +/* TOC */ +.section-nav { + background-color: #fff; + margin: 5px 0; + padding: 10px 30px; + border: 1px solid #212529; + border-radius: 0px; + border-left: 10px solid #212529; } \ No newline at end of file diff --git a/docs/features.md b/docs/features.md deleted file mode 100644 index 61bf2fb36..000000000 --- a/docs/features.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: page -title: Features -blurb: Just some of LibreTime's greatest hits ---- - -> Quick Links: -- [Library Intelligence](#library) -- [Programming](#programming) -- [DJ Management](#managedjs) -- [AM/FM & Web](#amfm) -- [B-Sides](#bsides) - -# Library Intelligence {#library} - -* *Automation* - LibreTime has a scheduler function that enables users to - create shows with content for playback at the exact date and time specified. - Playlists, smart blocks and remote stream URLs can be used multiple times. - -# Programming {#programming} - -* *Web-based remote station management* - authorized personnel can add - programme material, and create playlists or smart blocks, - all via a web interface. -* *Automation* - LibreTime has a scheduler function that enables users to - create shows with content for playback at the exact date and time specified. - Playlists, smart blocks and remote stream URLs can be used multiple times. - -# DJ Management {#managedjs} - -* *User Management* - LibreTime allows for the creation of user accounts with four levels of user permissions: -*Guest*, *DJ*, *Program Manager*, and *Admin*. Only give your staff the permissions they need to succeed. - -# AM/FM & Web {#amfm} - -* *Solid playout* - LibreTime uses the open source Liquidsoap streaming language - for reliable and precise playback to multiple outputs. - -# B-Sides {#bsides} - -* *Open source* - run LibreTime royalty-free, make changes to the code, and contribute to the project as you see fit, under the GNU AGPLv3 license. -* *Multilingual* - supports over 15 languages both in the interface and inside file metadata -* *Low system requirements* - * For servers: 1Ghz processor, 2 GB RAM, and a wired ethernet connection with a static IP address - * For end-users: a modern version of Firefox, Chrome, or Safari, and a screen resolution of at least 1280x768 - -![](img/Screenshot540-Now_playing_250.png) - -LibreTime is intended to provide a solution for a wide range of broadcast -projects, from community to public and commercial stations. The scalability of -LibreTime allows implementation in a number of scenarios, ranging from an -unmanned broadcast unit accessed remotely through the Internet, to a local -network of machines accessing a central LibreTime storage system. LibreTime -supports the playout of lossy compressed audio files in both MP3 and AAC -formats and the open, royalty-free equivalent -[Ogg Vorbis](http://www.vorbis.com/ "Ogg Vorbis homepage"). It also supports -playout of lossless FLAC and WAV format audio files. - -LibreTime manages the [Liquidsoap](http://savonet.sourceforge.net/) stream -generator at the heart of the system. Liquidsoap generates streams from files -in the LibreTime library and any remote input streams that you specify. -Available stream output formats include Ogg Vorbis, Ogg Opus, MP3, and AAC. The -library is indexed in a [PostgreSQL](http://www.postgresql.org/) database to -enable searching. Live shows can be recorded automatically with -[Ecasound](http://eca.cx/ecasound/ "Ecasound homepage"), using the sound card -line input. News editors, DJs and station controllers can use LibreTime to -build playlists or smart blocks and manage media files (upload, edit metadata, -manage advertisements) at the station or via the Internet. - -The scheduler in LibreTime has a calendar view, organized by months, weeks or -days. Program editors can schedule playlists and shows here for their -broadcast station. In some scenarios, the transmitter is situated outside the -reach of the broadcaster and all program management has to be maintained -through the web interface. Possible reasons for this scenario might be of a -pragmatic nature (running many stations from one central office due to limited -human resources) or an emergency (running a transmitter in a crisis area -without putting staff at risk). - -LibreTime services ----------------- - -| Service | Description | -|---------|-------------| -| libretime-analyzer | Keeps track of files being added, renamed, moved or removed from storage, and reads their metadata using the Mutagen library. | -| [PostgreSQL](https://www.postgresql.org/) | Contains the location of those media files and their metadata. This means you can search for and playlist a set of media files according to the specific metadata that you require, or use a 'smart block' to select the files for you. The database also contains details of specified remote input streams. | -| Pypo | (Python Playout engine) Downloads media from the storage up to 24 hours ahead of playout and checks it for average level (with ReplayGain tools) and leading or trailing silence (with Silan). At playout time, the media to be broadcast is sent to Liquidsoap. | -| [Liquidsoap](https://www.liquidsoap.info/) | Takes individual media files and remote input streams, and assembles them into a continuous output stream. This stream can be sent to a sound card (e.g. for a broadcast mixer, on the way to an FM or DAB transmitter) or to a streaming server for IP network distribution, over the LAN, local WiFi or the Internet. You can stream to a sound card and up to three different stream distribution servers with the same LibreTime server, if you wish. | -| [Icecast](https://www.icecast.org/) or [Shoutcast](https://shoutcast.com/) | Audio streaming server, used for creating an internet radio stream from LibreTime. Icecast is included in the LibreTime installation by default. Note: If a suitable Liquidsoap output is not available for your streaming service of choice, you can send audio from Liquidsoap to a separate encoding or streaming machine via a sound card or relay stream. | -| [Monit](https://mmonit.com/monit/) | Monitors the health of pypo, libretime-analyzer and Liquidsoap, and reports the status of these services to LibreTime. | -| [RabbitMQ](https://www.rabbitmq.com/) | Pushes messages from LibreTime to libretime-analyzer and pypo about changes to media files and the playout schedule. | - -Example studio broadcast system -------------------------------- - -In the diagram of an FM radio station below, LibreTime is hosted on a server -connected to the local network, with direct soundcard access. Liquidsoap -outputs streams to both the transmitter, via the main studio mixer, and -streaming media servers. The machine running LibreTime is behind a firewall -because it is also connected to the Internet for remote access by media -contributors. This enables LibreTime to offer password-protected access to the -media library and scheduling from both inside and outside the studio building. - -![](img/libretime_architecture.svg) - -Example web broadcast system ----------------------------- - -In the diagram below, LibreTime is hosted on a remote web server, and has no -soundcard. There does not need to be a centralised studio, although LibreTime -can enable remote studios to stream in to Liquidsoap at authorised times. -Optionally, the outgoing Icecast stream can be relayed to a transmitter. - -![](img/libretime_web_architecture.svg) - - - -

-
-
-
-

Frequently Asked Questions

-
-
-
-
-
-
-
-
-

"What is LibreTime?"

-

LibreTime is a community managed fork of the AirTime project. It is managed by a friendly inclusive community of stations from around the globe that use, document and improve LibreTime.

-
-
-
-
-

"Can I upgrade to LibreTime?"

-

In theory you can update any pre 3.0 version of AirTime to LibreTime 3.0.0 and above. More information is here.

-
-
-
-
-

"Why are Cue-In/Out points wrong in some tracks?"

-

The silan silence detection is currently outdated on almost all distributions. The older versions report clearly wrong information and may segfault at the worst. Versions starting with 0.3.3 (and some patched 0.3.2 builds) are much better but still need thorough testing.

-
-
-
-
-

"Why did you fork AirTime?"

-

See this open letter to the Airtime community.

-
-
-
-
-
- \ No newline at end of file diff --git a/docs/freeipa.md b/docs/freeipa.md index 6bb817ade..d450c44e7 100644 --- a/docs/freeipa.md +++ b/docs/freeipa.md @@ -1,14 +1,9 @@ --- layout: docs title: FreeIPA Configuration +toc: true --- -> Quick Links: -- [Apache Configuration](#apache) -- [PAM Configuration](#pam) -- [LDAP Configuration](#ldap) -- [Enable FreeIPA Authentication](#freeipa) - You can configure LibreTime to delegate all authentication to a FreeIPA server. This allows you users to use their existing FreeIPA credentials. For this to diff --git a/docs/gemfile b/docs/gemfile new file mode 100644 index 000000000..ded5de21b --- /dev/null +++ b/docs/gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gem "jekyll-toc", "~> 0.14.0" \ No newline at end of file diff --git a/docs/host-configuration.md b/docs/host-configuration.md index 7390ed3d6..bb4d3a48f 100644 --- a/docs/host-configuration.md +++ b/docs/host-configuration.md @@ -1,16 +1,9 @@ --- layout: docs title: Host configuration -blurb: After installation, follow these instructions to set up your LibreTime server or VM +toc: true --- -> Quick Links: -- [Database and RabbitMQ Hosts](#database) -- [Changing the default PostgreSQL passwords](#postgre) -- [API Client Configuration](#api) -- [Apache max file size configuration](#apache) -- [Playout and recorder settings](#playout) - The streaming host configuration for LibreTime is shown in the file */etc/airtime/liquidsoap.cfg* which is automatically generated by the **Streams** page, found on the **System** menu of the LibreTime administration interface. For this reason, you would not normally edit the streaming configuration manually, as any changes are likely to be overwritten by the administration interface. # Database and RabbitMQ hosts {#database} diff --git a/docs/icecast-shoutcast.md b/docs/icecast-shoutcast.md index 341c24261..97a486bc5 100644 --- a/docs/icecast-shoutcast.md +++ b/docs/icecast-shoutcast.md @@ -1,6 +1,7 @@ --- layout: docs title: Icecast and Shoutcast Stream Configuration +toc: true --- LibreTime supports direct connection to two popular streaming media servers, the open source **Icecast** () and the proprietary **SHOUTcast** (). Apart from the software license, the main difference between these two servers is that Icecast supports simultaneous MP3, AAC, Ogg Vorbis or Ogg Opus streaming from LibreTime, whereas SHOUTcast supports MP3 and AAC streams but not Ogg Vorbis or Opus. The royalty-free Ogg Vorbis format has the advantage of better sound quality than MP3 at lower bitrates, which has a direct impact on the amount of bandwidth that your station will require to serve the same number of listeners. Ogg Opus also benefits from good sound quality at low bitrates, with the added advantage of lower latency than other streaming formats. Opus is now an IETF standard () and requires Icecast 2.4 or later to be installed on the streaming server. @@ -13,8 +14,7 @@ Because LibreTime supports simultaneous streaming in multiple formats, it is pos Conversely, you may have a music station which wants to stream at 160kbps or 192kbps to offer a quality advantage over stations streaming at 128kbps or less. Since Ogg, AAC and MP3 formats use lossy compression, listeners will only hear the benefit of higher streaming bitrates if the media files in the LibreTime storage server are encoded at an equivalent bitrate, or higher. -UTF-8 metadata in Icecast MP3 streams -------------------------------------- +# UTF-8 metadata in Icecast MP3 streams When sending metadata about your stream to an Icecast server in non-Latin alphabets, you may find that Icecast does not display the characters correctly for an MP3 stream, even though they are displayed correctly for an Ogg Vorbis stream. In the following screenshot, Russian characters are being displayed incorrectly in the *Current Song* field for the MP3 stream: @@ -34,8 +34,7 @@ After saving the */etc/icecast2/icecast.xml* file, you should restart the Icecas Detaching from the console icecast2. -Icecast handover configuration ------------------------------- +# Icecast handover configuration In a typical radio station configuration, the live output from the broadcast studio and the scheduled output from LibreTime are mixed together before being sent further along the broadcast chain, to a transmitter or streaming media server on the Internet. (This may not be the case if your LibreTime server is remote from the studio, and you are using the **Show Source Mount Point** or **Master Source Mount Point** to mix live and scheduled content. See the *Stream Settings* chapter for details). @@ -72,8 +71,7 @@ These mount point definitions mean that a client connecting to a URL such as *ht Setting the value of ** to 1 (enabled) means that when the */live.ogg* mount point becomes available again, the client will be re-connected to it.  If you wish to hide the */airtime\_128* and */live.ogg* mount points from the public Icecast web interface, set the value of ** in each of these definitions to 1. -Source configuration --------------------- +# Source configuration Connect the other source to the Icecast server with the same parameters defined in the */etc/airtime/liquidsoap.cfg* file, except for the mount point. This should one of the mount points you have defined in the */etc/icecast2/icecast.xml* file, such as */live.ogg* in the example above. diff --git a/docs/interface-customization.md b/docs/interface-customization.md index 6dc1c09a1..b48e181e0 100644 --- a/docs/interface-customization.md +++ b/docs/interface-customization.md @@ -1,6 +1,7 @@ --- layout: docs title: Modifying the LibreTime interface +toc: true --- @@ -22,8 +23,7 @@ Save the file with **Ctrl+O**, then refresh your browser to see the change to th Any custom changes that you make to the administration interface should be backed up before upgrading LibreTime to a newer version, otherwise they could be overwritten. If you have made improvements that you think might be useful to other LibreTime users, please contact LibreTime and tell us about them. -Modifying the LibreTime Radio Page ------------------------------------ +# Modifying the LibreTime Radio Page The background of the mini-site that appears when you visit the server's domain in your web browser can be changed by modifying the page's CSS file, located at */usr/share/airtime/php/airtime_mvc/public/css/radio-page/radio-page.css*. @@ -40,8 +40,7 @@ html { Place the new background image in the */usr/share/airtime/public/css/radio-page/img/* folder and change the `background:` entry's URL to point to the new image. The new image should be at least 1280 x 720 in pixel size to avoid being blurry. -Modifying the Icecast interface -------------------------------- +# Modifying the Icecast interface If you have installed Icecast, in the directory */etc/icecast2/web/* you will find several XSLT and other files which are used to generate the Icecast web interface. If you are familiar with HTML you should be able to modify these pages, as they are well commented. You do have to be careful with syntax, because something as simple as a missing bracket can cause the Icecast web interface to break down. diff --git a/docs/library.md b/docs/library.md index c8803b39f..7a95bb750 100644 --- a/docs/library.md +++ b/docs/library.md @@ -1,12 +1,9 @@ --- layout: docs title: Dashboard and Calendar +toc: true --- -> Quick Links: -- [Dashboard](#dashboard) -- [Calendar](#calendar) - # Dashboard {#dashboard} The Dashboard is divided into two sections a Library section divided between diff --git a/docs/live-broadcast.md b/docs/live-broadcast.md index 03accfe7e..78abb49e8 100644 --- a/docs/live-broadcast.md +++ b/docs/live-broadcast.md @@ -1,12 +1,9 @@ --- layout: docs title: Broadcasting live with MIXXX or B.U.T.T. +toc: true --- -> Quick Links: -- [MIXXX](#mixxx) -- [BUTT](#butt) - This how to is intended for DJs using BUTT or MIXXX to stream to their LibreTime server with an external USB audio card setup to route a mixer and sound. diff --git a/docs/playlists-smartblocks.md b/docs/playlists-smartblocks.md index 148863595..67f9c771f 100644 --- a/docs/playlists-smartblocks.md +++ b/docs/playlists-smartblocks.md @@ -1,12 +1,9 @@ --- layout: docs title: Playlists and Smartblocks +toc: true --- -> Quick Links: -- [Playlists](#playlists) -- [Smartblocks](#smartblocks) - # Playlists {#playlists} ## Creating a new playlist diff --git a/docs/playout-history.md b/docs/playout-history.md index 690df3fd4..f5773a853 100644 --- a/docs/playout-history.md +++ b/docs/playout-history.md @@ -1,12 +1,9 @@ --- layout: docs title: Playout History +toc: true --- -> Quick Links: -- [Playout History](#history) -- [Exporting the Playout History](#exporting) - # History {#history} On the History menu, the **Playout History** page enables you to view a list of files played within a specific date and time range. This page is designed to help your station prepare reports for music royalty collection societies and regulatory agencies. diff --git a/docs/podcasts-webstreams.md b/docs/podcasts-webstreams.md index bd6eb74f3..29e9ae846 100644 --- a/docs/podcasts-webstreams.md +++ b/docs/podcasts-webstreams.md @@ -1,12 +1,9 @@ --- layout: docs title: Podcasts and Webstreams +toc: true --- -> Quick Links: -- [Podcasts](#podcasts) -- [Webstreams](#webstreams) - diff --git a/docs/preparing-media.md b/docs/preparing-media.md index 23c7149a3..8c10b1326 100644 --- a/docs/preparing-media.md +++ b/docs/preparing-media.md @@ -1,11 +1,12 @@ --- layout: docs title: Preparing Media for LibreTime -blurb: Before uploading media to an LibreTime server, there are a number of factors which should be considered. Getting your ingest workflow right will save you a lot of time later. +toc: true --- -Metadata quality ----------------- +Before uploading media to an LibreTime server, there are a number of factors which should be considered. Getting your ingest workflow right will save you a lot of time later. + +# Metadata quality LibreTime automatically imports any metadata that is in the files' ID3 tags. If these tags are incorrect or are missing information, you will have to either edit the metadata manually, or suffer the consequences. For example, if the files have creator or genre metadata missing, it will be impossible to search for, create playlists or generate smart blocks according to these criteria until you add it. @@ -21,8 +22,7 @@ or from the desktop menu. The *Tags From Path* feature of this program is a part ![](img/Screenshot175-Ex_Falso.png) -Metadata in legacy character sets ---------------------------------- +# Metadata in legacy character sets LibreTime expects file tag metadata to be stored in the international *UTF-8* character set. Programs such as **Ex Falso** (described above) encode metadata in UTF-8 by default. If you have an archive of files encoded with metadata in a legacy character set, such as the Cyrillic encoding *Windows-1251*, you should convert these files before import. @@ -56,8 +56,7 @@ CP1254: Turkish CP1255: Hebrew CP1256: Arabic -Audio loudness --------------- +# Audio loudness On file ingest, LibreTime analyzes each Ogg Vorbis, MP3, AAC or FLAC file's loudness, and stores a *ReplayGain* value for that file in its database. At playout time, the ReplayGain value is provided to Liquidsoap so that gain can be automatically adjusted to provide an average output of -14 dBFS loudness (14 decibels below full scale). See for more details of ReplayGain. @@ -89,8 +88,7 @@ And here is an example of a very loud file, with lower crest factor, where the o In the output from vorbisgain, *Peak* is the maximum sample value of the file before any ReplayGain has been applied, where a value of 32,767 represents full scale when decoding to signed 16 bit samples. Note that lossy compressed files can have peaks greater than full scale, due to encoding artifacts. The *New Peak* value for the Snoop Dogg file may be relatively low due to the hard limiting used in the mastering of that piece of music. -Silence in media files ----------------------- +# Silence in media files Before importing media, it is good practice to check for any silent sections in the media files. While LibreTime compensates for leading and trailing silence with the use of automatic cue-in and cue-out points****, it may be preferable to trim these files to the intended length before upload. This is because media in the LibreTime library could potentially be re-used in many different systems. **Audacity** is a cross-platform editor suitable for the task of trimming audio files, available from [http://audacity.sourceforge.net/](http://audacity.sourceforge.net "http://sourceforge.net/projects/dr14tmeter/") diff --git a/docs/quickstart.md b/docs/quickstart.md index eda555d77..6ad11d33d 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -1,10 +1,9 @@ --- title: Quick Install layout: docs -blurb: LibreTime is quick and easy to install and get running. Follow this guide to go from zero to full internet radio station in 10 minutes! +toc: true --- - > Note: this guide is assuming you are using Ubuntu 18.04 LTS for installation, which comes with `ufw` and `netplan`, and that you have already installed `git` and configured `ntp`. NTP configuration instructions can be found [here](setting-the-server-time). While it is possible to install LibreTime on other OSes, such as CentOS 7, Debian 9 and 10, and Raspbian 9 and 10, diff --git a/docs/reverse-proxy.md b/docs/reverse-proxy.md index 689c3c19b..981338773 100644 --- a/docs/reverse-proxy.md +++ b/docs/reverse-proxy.md @@ -1,6 +1,7 @@ --- layout: docs title: Reverse Proxy Connections +toc: true --- In some deployments, the LibreTime server is deployed behind a reverse proxy, @@ -14,7 +15,7 @@ domains that will be used externally to connect to your reverse proxy that you want handled by LibreTime. These URLS can also be set during the first run configuration that is displayed when you first install LibreTime -## Reverse Proxy Basics +# Reverse Proxy Basics A reverse proxy allows the LibreTime server to not be connected to the open internet. In this configuration, it is rather behind another server that proxies traffic to it from diff --git a/docs/scripts/toc.js b/docs/scripts/toc.js new file mode 100644 index 000000000..fc086f6f5 --- /dev/null +++ b/docs/scripts/toc.js @@ -0,0 +1,98 @@ +// https://github.com/ghiculescu/jekyll-table-of-contents +(function($){ + $.fn.toc = function(options) { + var defaults = { + noBackToTopLinks: false, + title: 'Jump to...', + minimumHeaders: 3, + headers: 'h1, h2, h3, h4, h5, h6', + listType: 'ol', // values: [ol|ul] + showEffect: 'show', // values: [show|slideDown|fadeIn|none] + showSpeed: 'slow', // set to 0 to deactivate effect + classes: { list: '', + item: '' + } + }, + settings = $.extend(defaults, options); + + function fixedEncodeURIComponent (str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { + return '%' + c.charCodeAt(0).toString(16); + }); + } + + function createLink (header) { + var innerText = (header.textContent === undefined) ? header.innerText : header.textContent; + return "" + innerText + ""; + } + + var headers = $(settings.headers).filter(function() { + // get all headers with an ID + var previousSiblingName = $(this).prev().attr( "name" ); + if (!this.id && previousSiblingName) { + this.id = $(this).attr( "id", previousSiblingName.replace(/\./g, "-") ); + } + return this.id; + }), output = $(this); + if (!headers.length || headers.length < settings.minimumHeaders || !output.length) { + $(this).hide(); + return; + } + + if (0 === settings.showSpeed) { + settings.showEffect = 'none'; + } + + var render = { + show: function() { output.hide().html(html).show(settings.showSpeed); }, + slideDown: function() { output.hide().html(html).slideDown(settings.showSpeed); }, + fadeIn: function() { output.hide().html(html).fadeIn(settings.showSpeed); }, + none: function() { output.html(html); } + }; + + var get_level = function(ele) { return parseInt(ele.nodeName.replace("H", ""), 10); }; + var highest_level = headers.map(function(_, ele) { return get_level(ele); }).get().sort()[0]; + var return_to_top = ' '; + + var level = get_level(headers[0]), + this_level, + html = settings.title + " <" +settings.listType + " class=\"" + settings.classes.list +"\">"; + headers.on('click', function() { + if (!settings.noBackToTopLinks) { + window.location.hash = this.id; + } + }) + .addClass('clickable-header') + .each(function(_, header) { + this_level = get_level(header); + if (!settings.noBackToTopLinks && this_level === highest_level) { + $(header).addClass('top-level-header').after(return_to_top); + } + if (this_level === level) // same level as before; same indenting + html += "
  • " + createLink(header); + else if (this_level <= level){ // higher level than before; end parent ol + for(var i = this_level; i < level; i++) { + html += "
  • " + } + html += "
  • " + createLink(header); + } + else if (this_level > level) { // lower level than before; expand the previous to contain a ol + for(i = this_level; i > level; i--) { + html += "<" + settings.listType + " class=\"" + settings.classes.list +"\">" + + "
  • " + } + html += createLink(header); + } + level = this_level; // update for the next one + }); + html += ""; + if (!settings.noBackToTopLinks) { + $(document).on('click', '.back-to-top', function() { + $(window).scrollTop(0); + window.location.hash = ''; + }); + } + + render[settings.showEffect](); + }; +})(jQuery); diff --git a/docs/setting-the-server-time.md b/docs/setting-the-server-time.md index 8f9f0f2ea..67037348d 100644 --- a/docs/setting-the-server-time.md +++ b/docs/setting-the-server-time.md @@ -1,6 +1,7 @@ --- layout: docs title: Setting the Server Time +toc: true --- # Setting the server time @@ -15,8 +16,7 @@ The server should respond with the date, time, time zone and year in a format si If the time on your server is wrong, it is recommended that you take LibreTime off-air until the problem is fixed. -Configuring NTP ---------------- +# Configuring NTP Although it is possible to set the date and time of the server manually, this is not recommended because the server clock can drift over time, compromising the accuracy of your broadcast schedule. If your LibreTime server is permanently connected to the Internet, you can synchronize your server to a time server with the **ntp** ** program. If **ntp** is not yet installed, you can enter the following command on Debian or Ubuntu: @@ -55,8 +55,7 @@ Then use the **ntpq -p** command to confirm that **ntp** is working. This comman ntppub.le 158.43.192.66  2 u   91   64    2 122.781  44.864  0.001 dns0.rmpl 195.66.241.3   2 u   27   64    3  22.171   1.464  4.242 -Adjusting the server time zone ------------------------------- +# Adjusting the server time zone The data centre which hosts your LibreTime server could be located anywhere in the world. Some servers are set to *Coordinated Universal Time* or UTC (similar to *Greenwich Mean Time* or GMT), regardless of their location. LibreTime uses UTC time in its database for scheduling purposes, independent of the server time zone. diff --git a/docs/settings.md b/docs/settings.md index eed7301b1..046f1f93e 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -1,14 +1,9 @@ --- layout: docs title: Settings +toc: true --- -> Quick Links: -- [General Settings](#general) -- [Track Types](#types) -- [Stream Settings](#stream) -- [LibreTime Status](#status) - # General Settings {#general} diff --git a/docs/ssl-config.md b/docs/ssl-config.md index 4bcc74ca0..af4b0bf72 100644 --- a/docs/ssl-config.md +++ b/docs/ssl-config.md @@ -1,6 +1,7 @@ --- layout: docs title: Setting up SSL +toc: true --- To increase the security of your server, you can enable encrypted access to the LibreTime administration interface, and direct your users towards this more secure login page. The main advantage of using this encryption is that your remote users' login names and passwords are not sent in plain text across the public Internet or untrusted local networks, such as shared Wi-Fi access points. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 63e3dc91b..67f9c5930 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,15 +1,9 @@ --- layout: docs title: Troubleshooting -blurb: Having trouble with your LibreTime installation? We've got you covered! +toc: true --- -> Quick Links: -- [Log Files](#logs) -- [Test Tones](#tones) -- [RabbitMQ](#rabbitmq) -- [Uninstall LibreTime](#uninstall) - LibreTime is effectively a web site running on a LAPP stack, so individual components of the system can be started, stopped, restarted or checked in the server console using the **systemctl** command: sudo systemctl start|stop|restart|status libretime-liquidsoap diff --git a/docs/unesco-guide.md b/docs/unesco-guide.md deleted file mode 100644 index ce232a5f7..000000000 --- a/docs/unesco-guide.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: docs -title: UNESCO Public Radio Guide ---- - -The UNESCO publication [*Community Radio - A user's guide to the technology*](img/CommunityRadioUserGuide.pdf) -features a very comprehensive guide to setting up a community radio station. -This guide is aimed at people thinking about setting up a radio station in -India, but includes lots of practical advice that would be useful in any -country. - -More guides will be coming soon. Don't touch that dial! \ No newline at end of file diff --git a/docs/upgrading.md b/docs/upgrading.md index 9b7b1d95a..f2190b07e 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -1,6 +1,7 @@ --- layout: docs title: Upgrading LibreTime +toc: true --- ## LibreTime versioning diff --git a/docs/users.md b/docs/users.md index 538c6a703..e5d696e72 100644 --- a/docs/users.md +++ b/docs/users.md @@ -1,7 +1,7 @@ --- layout: docs title: Managing Users -blurb: How to add, edit, and remove user accounts +toc: true --- > Note: if your Airtime server is accessible from the public Internet (ex. being hosted in a cloud VM) diff --git a/docs/vagrant.md b/docs/vagrant.md index 0330ced77..85e68ce7b 100644 --- a/docs/vagrant.md +++ b/docs/vagrant.md @@ -1,7 +1,7 @@ --- layout: page title: Using Vagrant and Virtualbox for developing LibreTime -blurb: The fastest way to get LibreTime up and running in a way to hack on its source code or to test it locally. +toc: true --- > Prerequisites: git, [Vagrant](https://vagrantup.com), libvirt or VirturalBox