Adding table of contents to docs pages

This commit is contained in:
Zachary Klosko 2020-06-05 23:07:38 -04:00
parent 68fd06f408
commit 57eb5d9c5b
32 changed files with 229 additions and 304 deletions

73
docs/Gemfile.lock Normal file
View File

@ -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

View File

@ -18,5 +18,5 @@ headbuttonurl: index#get-started
headbuttontext: Get LibreTime
# Build settings
#plugins:
# - jekyll-feed
plugins:
- jekyll-toc

View File

@ -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
- page: UNESCO Public Radio Guide (PDF)
url: img/CommunityRadioUserGuide.pdf

View File

@ -85,13 +85,13 @@ layout: default
<div class="col-lg-8 mx-auto text-center">
<h2 class="section-heading text-white"> {{ page.title }} </h2>
<hr class="light my-4">
<p class="text-faded mb-4">
{{ page.blurb }}
</p>
</div>
</div>
</div>
</section>
<div class="toc">
{% toc %}
</div>
<!-- This is the main content of the page getting pulled from the MDs -->
<div class="content">
{{ content }}

View File

@ -1,51 +0,0 @@
---
layout: default
---
<html>
<head>
<style>
section{padding:2rem 0}
</style>
</head>
<body>
<section class="bg-dark">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto text-center">
<h2 class="section-heading text-white"> {{ page.title }} </h2>
<hr class="light my-4">
<p class="text-faded mb-4">
{{ page.blurb }}
<br><small>by {{ page.author }} on {{ page.date }}</small>
</p>
</div>
</div>
</div>
</section>
{{ content }}
<!-- Work in progress... aiming to create list of blog posts -->
<section class="bg-dark">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto text-center">
<h2 class="section-heading text-white"> Other Posts </h2>
<hr class="light my-4">
<p class="text-faded mb-4">
<ul>
{% for post in site.posts %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
</p>
</div>
</div>
</div>
</section>
</body>
</html>

View File

@ -264,7 +264,7 @@
<div class="container">
<div class="row">
<div class="col-lg-10 mx-auto text-center">
<h2 class="section-heading">Get started with LibreTime today.</h2>
<h2 class="section-heading">Get started with LibreTime today</h2>
<hr class="my-4">
<p class="mb-5" style="text-align: center;">
Requires: 1 Ghz processor, 2 GB RAM, wired ethernet connection with static IP address, and you. What are you waiting for?

View File

@ -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

View File

@ -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,

View File

@ -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;
}

View File

@ -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)
# <i class="fas fa-1x fa-music text-primary mb-3 sr-icon-1"></i> 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.
# <i class="fas fa-1x fa-th-list text-primary mb-3 sr-icon-2"></i> 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.
# <i class="fas fa-1x fa-users text-primary mb-3 sr-icon-3"></i> 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.
# <i class="fas fa-1x fa-broadcast-tower text-primary mb-3 sr-icon-4"></i> AM/FM &amp; 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)
<html>
<!-- FAQ Section -->
<section id="faq">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<h2 class="section-heading">Frequently Asked Questions</h2>
<hr class="my-4">
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-3 col-md-6 text-center">
<div class="service-box mt-5 mx-auto">
<h3 class="mb-3">"What is LibreTime?"</h3>
<p class="text-muted mb-0">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.</p>
</div>
</div>
<div class="col-lg-3 col-md-6 text-center">
<div class="service-box mt-5 mx-auto">
<h3 class="mb-3">"Can I upgrade to LibreTime?"</h3>
<p class="text-muted mb-0">In theory you can update any pre 3.0 version of AirTime to LibreTime 3.0.0 and above. More information is <a href="upgrading">here</a>.</p>
</div>
</div>
<div class="col-lg-3 col-md-6 text-center">
<div class="service-box mt-5 mx-auto">
<h3 class="mb-3">"Why are Cue-In/Out points wrong in some tracks?"</h3>
<p class="text-muted mb-0">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.</p>
</div>
</div>
<div class="col-lg-3 col-md-6 text-center">
<div class="service-box mt-5 mx-auto">
<h3 class="mb-3">"Why did you fork AirTime?"</h3>
<p class="text-muted mb-0">See this <a href="https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d">open letter to the Airtime community</a>.</p>
</div>
</div>
</div>
</div>
</section>
</html>

View File

@ -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

3
docs/gemfile Normal file
View File

@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem "jekyll-toc", "~> 0.14.0"

View File

@ -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}

View File

@ -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** (<http://www.icecast.org>) and the proprietary **SHOUTcast** (<http://www.shoutcast.com>). 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 (<http://tools.ietf.org/html/rfc6716>) 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 *<fallback-override>* 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 *<hidden>* 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.

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -1,12 +1,9 @@
---
layout: docs
title: Playlists and Smartblocks
toc: true
---
> Quick Links:
- [Playlists](#playlists)
- [Smartblocks](#smartblocks)
# Playlists {#playlists}
## Creating a new playlist

View File

@ -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.

View File

@ -1,12 +1,9 @@
---
layout: docs
title: Podcasts and Webstreams
toc: true
---
> Quick Links:
- [Podcasts](#podcasts)
- [Webstreams](#webstreams)
<html>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/g-4UcD8qvR8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</html>

View File

@ -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 <http://www.replaygain.org/> 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/")

View File

@ -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,

View File

@ -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

98
docs/scripts/toc.js Normal file
View File

@ -0,0 +1,98 @@
// https://github.com/ghiculescu/jekyll-table-of-contents
(function($){
$.fn.toc = function(options) {
var defaults = {
noBackToTopLinks: false,
title: '<i>Jump to...</i>',
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 "<a href='#" + fixedEncodeURIComponent(header.id) + "'>" + innerText + "</a>";
}
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 = '<i class="icon-arrow-up back-to-top"> </i>';
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 += "<li class=\"" + settings.classes.item + "\">" + createLink(header);
else if (this_level <= level){ // higher level than before; end parent ol
for(var i = this_level; i < level; i++) {
html += "</li></"+settings.listType+">"
}
html += "<li class=\"" + settings.classes.item + "\">" + 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 +"\">" +
"<li class=\"" + settings.classes.item + "\">"
}
html += createLink(header);
}
level = this_level; // update for the next one
});
html += "</"+settings.listType+">";
if (!settings.noBackToTopLinks) {
$(document).on('click', '.back-to-top', function() {
$(window).scrollTop(0);
window.location.hash = '';
});
}
render[settings.showEffect]();
};
})(jQuery);

View File

@ -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.

View File

@ -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}

View File

@ -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.

View File

@ -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

View File

@ -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!

View File

@ -1,6 +1,7 @@
---
layout: docs
title: Upgrading LibreTime
toc: true
---
## LibreTime versioning

View File

@ -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)

View File

@ -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