From bab69e31066c1c0a664a40807cefc00a6700d2bf Mon Sep 17 00:00:00 2001
From: Zachary Klosko <31484611+zklosko@users.noreply.github.com>
Date: Fri, 15 May 2020 12:51:40 -0400
Subject: [PATCH] First round of @paddatrapper changes
---
docs/api.md | 3 +
docs/backing-up-the-server.md | 3 +
docs/calendar.md | 3 +
docs/database.md | 28 +------
docs/exporting-the-schedule.md | 3 +
docs/folders.md | 14 +++-
docs/freeipa.md | 2 +
docs/hd-audio-moduels.md | 2 +
docs/help.md | 2 +
docs/history-templates.md | 5 +-
docs/icecast-handover.md | 45 -----------
docs/icecast-shoutcast.md | 52 +++++++++++++
docs/manual.md | 6 +-
docs/piwik.md | 129 --------------------------------
docs/playlists.md | 2 +
docs/preparing-media.md | 2 +
docs/promoting-your-station.md | 11 ++-
docs/setting-the-server-time.md | 2 +
docs/smartblocks.md | 3 +-
docs/status.md | 2 +
docs/stream-settings.md | 3 +-
docs/track-types.md | 3 +
docs/upgrading.md | 2 +
docs/users.md | 3 +
docs/vagrant.md | 3 +
docs/webstreams.md | 3 +-
26 files changed, 123 insertions(+), 213 deletions(-)
delete mode 100644 docs/icecast-handover.md
delete mode 100644 docs/piwik.md
diff --git a/docs/api.md b/docs/api.md
index 9879db7c6..c26c76a53 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -1,3 +1,6 @@
+LibreTime API Usage
+--------------------
+
The LibreTime API enables many types of information about the broadcast schedule and configuration to be retrieved from the LibreTime server. Other than the live-info and week-info data fetched by website widgets (see the chapter *Exporting the schedule*), all API requests must be authenticated using the secret API key stored in the file */etc/airtime/api\_client.cfg* on the LibreTime server. This key is autogenerated during LibreTime installation and should be unique for each server.
If you intend to use the LibreTime API across a public network, for security reasons it is highly recommended that all API requests are sent over encrypted https: and that the web server is configured to accept requests to the api/ directory from specific host names or IP addresses only.
diff --git a/docs/backing-up-the-server.md b/docs/backing-up-the-server.md
index 9f56d398a..494c2710a 100644
--- a/docs/backing-up-the-server.md
+++ b/docs/backing-up-the-server.md
@@ -1,3 +1,6 @@
+Backing up the server
+--------------------
+
The following shell commands can be used for database backup and restore on a
running *PostgreSQL* server in an LibreTime system.
diff --git a/docs/calendar.md b/docs/calendar.md
index 9ba453a72..e7f490e78 100644
--- a/docs/calendar.md
+++ b/docs/calendar.md
@@ -1,3 +1,6 @@
+Calendar
+--------
+
The Calendar page of the LibreTime administration interface has three views: **day**, **week** and **month**, which can be switched using the grey buttons in the top right corner. By default, the **month** view is shown, with today's date highlighted by a pale grey background.

diff --git a/docs/database.md b/docs/database.md
index 1ec3f2a30..628cddec5 100644
--- a/docs/database.md
+++ b/docs/database.md
@@ -4,36 +4,10 @@ Database
LibreTime is designed to work with a [PostgreSQL](https://www.postgresql.org/) database server running locally.
LibreTime uses [PropelORM](http://propelorm.org) to interact with the ZendPHP components and create the database.
-#Modifying the Database
+# Modifying the Database
If you are a developer seeking to add new columns to the database here are the steps.
1. Modify `airtime_mvc/build/schema.xml` with any changes.
2. Run `dev_tools/propel_generate.sh`
3. Update the upgrade.sql under `airtime_mvc/application/controllers/upgrade_sql/VERSION` for example
`ALTER TABLE imported_podcast ADD COLUMN album_override boolean default 'f' NOT NULL;`
-
-#Viewing the Database and Data
-One new tool that you can use to interact with and directly view the LibreTime database and tables is [Postage](https://github.com/workflowproducts/postage/releases/)
-
-It provides a graphical interface that can show the LibreTime tables and easily modify the data inside. It runs as a local GUI client.
-Here are some brief instructions for how to get starting using it as a developer with a vagrant virtual machine.
-
-1. Download and install release from their [github page](https://github.com/workflowproducts/postage/releases/) - Additional instructions [here](https://github.com/workflowproducts/postage/)
-2. Setup port-forwarding for the vagrant VM - check the VirtualBox Settings for the VM -> Network -> Advanced -> Port Forwarding -> Forward HostPort 5550 to GuestPort 5432
-3. Modify PostgreSQL to accept connections from outside localhost -> edit /etc/postgresql/VERSION#/main/postgresql.conf - uncomment and modify the listen_address to be `listen_addresses = '*' `you may also need to edit pg_hba.conf in the same directory and allow Ipv4 connections from your localhost. I modified it to all as security wasn't a concern.
-4. Setup a Postgres username/password for super user in Ubuntu etc use
-
-```
-sudo -u postgres psql postgres
-
-# \password postgres
-```
-Enter new password:
-
-5. Startup Postage by running `postage` and edit the postage-connections.conf and set the port to 5550 and save it. Then type in the username postgres and password you set above.
-6. Launch and select the airtime database to view the copy running on your vagrant box. To see the data/schema in a particular table click Schemas->Tables->table_name and then DesignTable or EditData
-
-This can provide a easier way to view how LibreTime composes its tables than the CLI to postgresql.
-
-## Description of Tables and their Purposes
-TODO
diff --git a/docs/exporting-the-schedule.md b/docs/exporting-the-schedule.md
index d9e79e706..77a3bdd4c 100644
--- a/docs/exporting-the-schedule.md
+++ b/docs/exporting-the-schedule.md
@@ -1,3 +1,6 @@
+Exporting the schedule
+----------------------
+
LibreTime has a feature which enables your station's show and schedule information to be displayed on remote websites. This feature is included in LibreTime because you would not usually invite the general public to access your LibreTime server directly. If you had very large numbers of people requesting data from the LibreTime server at once, the burst of network traffic might overload the server, potentially disrupting your broadcasts. If carried out maliciously, this network overload is known as a *denial of service attack*.
Instead, your public-facing web server can retrieve the schedule information from the LibreTime API. This information can then be displayed on your broadcast station or affiliate websites by a content management system, such as Sourcefabric's **Newscoop** (). It can be presented using Javascript widgets and styled with CSS, in any format that you require. The **Broadcaster** theme for Newscoop () integrates these widgets with ready-to-use styles.
diff --git a/docs/folders.md b/docs/folders.md
index c36a9cf85..b5a2ae242 100644
--- a/docs/folders.md
+++ b/docs/folders.md
@@ -1,3 +1,13 @@
-LibreTime's media library is inside the */srv/airtime/stor/* folder on your server, by default. Tracks are uploaded into the imported subdirectory and then a separate directory based upon the user ID # of the user who uploaded it and then into a folder based upon the artist.
+Media Library Folders
+---------------------
-LibreTime unlike Airtime does not currently monitor the files for changes after they are uploaded. The media library is not designed to be edited directly after files are uploaded. This was done as part of a move towards enabling cloud-based file hosting. There are currently two works in progress to support filesystem imports and sync but neither of them have been finished as of the time of this writing. See [#111](https://github.com/LibreTime/libretime/pull/111) and [#514](https://github.com/LibreTime/libretime/pull/514). In addition LibreTime does not write metadata changes back to the files. See [#621](https://github.com/LibreTime/libretime/issues/621)
+LibreTime's media library is inside the */srv/airtime/stor/* folder on your server, by default.
+Tracks are uploaded into the imported subdirectory and then a separate directory based upon the user
+ID # of the user who uploaded it and then into a folder based upon the artist.
+
+LibreTime unlike Airtime does not currently monitor the files for changes after they are uploaded.
+The media library is not designed to be edited directly after files are uploaded. This was done as part of a
+move towards enabling cloud-based file hosting. There are currently two works in progress to support filesystem
+imports and sync but neither of them have been finished as of the time of this writing. See
+[#70](https://github.com/LibreTime/libretime/issues/70). In addition LibreTime does not write metadata changes
+back to the files. See [#621](https://github.com/LibreTime/libretime/issues/621)
diff --git a/docs/freeipa.md b/docs/freeipa.md
index 837ef620d..f0c255721 100644
--- a/docs/freeipa.md
+++ b/docs/freeipa.md
@@ -1,3 +1,5 @@
+# FreeIPA configuration
+
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/hd-audio-moduels.md b/docs/hd-audio-moduels.md
index 7bc58eee8..0d6d73f7e 100644
--- a/docs/hd-audio-moduels.md
+++ b/docs/hd-audio-moduels.md
@@ -1,3 +1,5 @@
+# HD Audio Modules
+
This listing is provided to help ensure that the correct model parameter is passed to the ALSA kernel module for an Intel HDA soundcard, if one is fitted to your LibreTime server. See the chapter *Preparing the server* in this book for more details.
Model name Description
diff --git a/docs/help.md b/docs/help.md
index a7ff54f33..94e6a5748 100644
--- a/docs/help.md
+++ b/docs/help.md
@@ -1,3 +1,5 @@
+# Help menu
+
The first entry on LibreTime's **Help** menu offers a **Getting Started** guide
for new users. Further down, there is also a link to the online version of this
**User Manual**.
diff --git a/docs/history-templates.md b/docs/history-templates.md
index e9c74761d..f13db36b9 100644
--- a/docs/history-templates.md
+++ b/docs/history-templates.md
@@ -1 +1,4 @@
-**TBD**
+History Templates
+-----------------
+
+Coming soon.
\ No newline at end of file
diff --git a/docs/icecast-handover.md b/docs/icecast-handover.md
deleted file mode 100644
index ff63eb2f8..000000000
--- a/docs/icecast-handover.md
+++ /dev/null
@@ -1,45 +0,0 @@
-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).
-
-If your **Icecast** server is hosted in a remote data centre, you may not have the option to handover the streaming media source manually, because you have no physical access to connect a broadcast mixer to the server. Disconnecting the stream and beginning another is less than ideal, because the audience's media players will also be disconnected when that happens.
-
-The **Icecast** server has a *fallback-mount* feature which can be used to move clients (media players used by listeners or viewers) from one source to another, as new sources become available. This makes it possible to handover from LibreTime output to a show from another source, and handover to LibreTime again once the other show has ended.
-
-To enable fallback mounts, edit the main Icecast configuration file to define the mount points you will use, and the relationship between them.
-
- sudo nano /etc/icecast2/icecast.xml
-
-The example ** section provided in the *icecast.xml* file is commented out by default. Before or after the commented section, add three mount point definitions. The default mount point used by LibreTime is */airtime\_128* which is shown in the */etc/airtime/liquidsoap.cfg* file. You must also define a mount point for the live source (called */live.ogg* in this example) and a mount point for the public to connect to (called */stream.ogg* in this example).
-
-
- /airtime_128
- 0
-
-
-
- /live.ogg
- /airtime_128
- 1
- 0
-
-
-
- /stream.ogg
- /live.ogg
- 1
- 0
-
-
-These mount point definitions mean that a client connecting to a URL such as *http://icecast.example.com:8000/stream.ogg* will first fall back to the */live.ogg* mount point if it is available. If not, the client will fall back in turn to the */airtime\_128* mount point for LibreTime playout.
-
-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
---------------------
-
-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.
-
-To configure **Mixxx** for streaming to Icecast, click *Options*, *Preferences*, then *Live Broadcasting*. For server *Type*, select the default of *Icecast 2* when streaming to Debian or Ubuntu servers, as this is the current version of Icecast supplied with those GNU/Linux distributions.
-
-
-
-By default, Icecast streams are buffered to guard against network problems, which causes latency for remote listeners. When monitoring the stream from a remote location, you may have to begin the live stream a few seconds before the previous stream ends to enable a smooth transition.
diff --git a/docs/icecast-shoutcast.md b/docs/icecast-shoutcast.md
index 7b29b42ba..f1d88cc29 100644
--- a/docs/icecast-shoutcast.md
+++ b/docs/icecast-shoutcast.md
@@ -1,3 +1,5 @@
+# Icecast and Shoutcast stream configuration
+
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.
Ogg Vorbis playback is supported in **Mozilla Firefox**, **Google Chrome** and **Opera** browsers, via **jPlayer** (), and is also supported in several popular media players, including VideoLAN Client, also known as VLC (). (See the chapter *Stream player for your website* on how to deliver **jPlayer** to your audience). Ogg Opus is relatively new and is supported natively in the very latest browsers, such as Mozilla Firefox 25.0, and media players including VLC 2.0.4 or later.
@@ -28,3 +30,53 @@ After saving the */etc/icecast2/icecast.xml* file, you should restart the Icecas
Restarting icecast2: Starting icecast2
Detaching from the console
icecast2.
+
+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).
+
+If your **Icecast** server is hosted in a remote data centre, you may not have the option to handover the streaming media source manually, because you have no physical access to connect a broadcast mixer to the server. Disconnecting the stream and beginning another is less than ideal, because the audience's media players will also be disconnected when that happens.
+
+The **Icecast** server has a *fallback-mount* feature which can be used to move clients (media players used by listeners or viewers) from one source to another, as new sources become available. This makes it possible to handover from LibreTime output to a show from another source, and handover to LibreTime again once the other show has ended.
+
+To enable fallback mounts, edit the main Icecast configuration file to define the mount points you will use, and the relationship between them.
+
+ sudo nano /etc/icecast2/icecast.xml
+
+The example ** section provided in the *icecast.xml* file is commented out by default. Before or after the commented section, add three mount point definitions. The default mount point used by LibreTime is */airtime\_128* which is shown in the */etc/airtime/liquidsoap.cfg* file. You must also define a mount point for the live source (called */live.ogg* in this example) and a mount point for the public to connect to (called */stream.ogg* in this example).
+
+
+ /airtime_128
+ 0
+
+
+
+ /live.ogg
+ /airtime_128
+ 1
+ 0
+
+
+
+ /stream.ogg
+ /live.ogg
+ 1
+ 0
+
+
+These mount point definitions mean that a client connecting to a URL such as *http://icecast.example.com:8000/stream.ogg* will first fall back to the */live.ogg* mount point if it is available. If not, the client will fall back in turn to the */airtime\_128* mount point for LibreTime playout.
+
+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
+--------------------
+
+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.
+
+To configure **Mixxx** for streaming to Icecast, click *Options*, *Preferences*, then *Live Broadcasting*. For server *Type*, select the default of *Icecast 2* when streaming to Debian or Ubuntu servers, as this is the current version of Icecast supplied with those GNU/Linux distributions.
+
+
+
+By default, Icecast streams are buffered to guard against network problems, which causes latency for remote listeners. When monitoring the stream from a remote location, you may have to begin the live stream a few seconds before the previous stream ends to enable a smooth transition.
+
diff --git a/docs/manual.md b/docs/manual.md
index 23ae62222..f9c131847 100644
--- a/docs/manual.md
+++ b/docs/manual.md
@@ -12,7 +12,7 @@ There are also a number of tutorials in Spanish on [Vimeo](https://vimeo.com/use
* [Smart Blocks](smartblocks)
* [Webstreams](webstreams)
* [Podcasts](podcasts)
-* [My Podcasts](my-podcast)
+* My Podcast (coming soon)
* [Radio Page](radio-page)
* [Calendar](calendar)
* Widgets (coming soon)
@@ -52,13 +52,11 @@ There are also a number of tutorials in Spanish on [Vimeo](https://vimeo.com/use
### Advanced Configuration
* [Configuring FreeIPA authentication](freeipa)
-* [Using Icecast and Shoutcast in the studio](icecast-shoutcast)
+* [Using and configuring Icecast and Shoutcast](icecast-shoutcast)
* [Configuring track types](track-types)
* [Interface Customization](interface-customization)
* [Setting up SSL](ssl-config)
* [Promoting your station through your Icecast stream](promoting-your-station)
-* [Configuring Icecast handover](icecast-handover)
-* [Configuring Icecast statistics with Piwik](piwik)
* [How to back up the LibreTime media folder and database](backing-up-the-server)
* [Upgrading LibreTime](upgrading)
* [Uninstalling LibreTime](uninstall)
diff --git a/docs/piwik.md b/docs/piwik.md
deleted file mode 100644
index 69b88719e..000000000
--- a/docs/piwik.md
+++ /dev/null
@@ -1,129 +0,0 @@
-Piwik () is an open source web analytics platform which supports Icecast's log format, in Piwik version 2.0 or later. For your convenience, packages of Piwik for Debian and Ubuntu are provided in the repository. If you have already configured your LibreTime server for this repository, you can install the **piwik** package and its dependencies with the command:
-
- sudo apt-get install piwik php5-geoip php5-cli mysql-server
-
-For security reasons, you should set a strong root password for the MySQL server. If you have not set a MySQL root password already, you should be promoted to do this during the installation of the **mysql-server** package.
-
-Database and web server configuration
--------------------------------------
-
-Piwik uses a MySQL database which must be created manually before you can use the Piwik web interface.
-
-1. Log into the database management system with the root password that you set for the MySQL server:
-
- mysql -uroot -p
- Enter password:
-
-The server should respond with:
-
- Welcome to the MySQL monitor. Commands end with ; or \g.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- mysql>
-
-2. At the mysql command prompt, create a database named *piwik* with the command:
-
- CREATE DATABASE `piwik` /*!40100 DEFAULT CHARACTER SET utf8 */;
-
-3. Create a MySQL user and a strong password with access to the database previously created:
-
- CREATE USER piwik@localhost IDENTIFIED BY 'my-strong-password';
- GRANT ALL PRIVILEGES ON piwik.* to piwik@localhost;
- GRANT FILE ON *.* TO piwik@localhost;
- QUIT
-
-4. Create a virtual host for the piwik web interface in */etc/apache2/sites-available/piwik-vhost.conf* setting the *ServerName* as appropriate for your server:
-
-
- ServerName stats.example.com
- DocumentRoot /usr/share/piwik
- Include "conf.d/piwik.conf"
-
-
-5. Enable the virtual host and reload the web server:
-
- sudo a2ensite pwiki-vhost.conf
- sudo invoke-rc.d apache2 reload
-
-6. Open the *ServerName* that you set for Piwik in your browser. You should see the Piwik setup pages. Provide the MySQL database and Piwik *Super User* details when requested. If you intended to use Piwik for Icecast statistics only, you can skip the step *JavaScript Tracking Code*.
-
-
-
-7. Uncomment the last line in the crontab file */etc/cron.d/piwik* and set your Piwik *ServerName* to enable automatic archiving every five minutes:
-
- 5 * * * * www-data [ -e /usr/share/piwik/misc/cron/archive.php ]
- && [ -x /usr/bin/php ]
- && /usr/bin/php /usr/share/piwik/misc/cron/archive.php
- -- "url=http://stats.example.com/" >/dev/null 2>&1
-
-See for more details of Piwik installation and configuration.
-
-Configure Piwik for geolocation
--------------------------------
-
-By default, Piwik uses browser language settings to guess the countries in which your station's audience is physically located. In order to satisfy broadcast regulators and music royalty collection societies, a more accurate method is required, based on the location of individual IP addresses.
-
-1. Edit the file */etc/php5/apache2/conf.d/20-geoip.ini* to set the path to your Piwik installation:
-
- extension=geoip.so
- geoip.custom_directory=/usr/share/piwik/misc
-
-Then restart the web server for the change to take effect:
-
- sudo invoke-rc.d apache2 restart
-
-2. Download GeoLite data from MaxMind's website under the [Creative Commons Attribution-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/), for example:
-
- wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
-
-2. Unzip and set permissions on the data file, then move it to the *misc* directory under the Piwik install directory and rename it to *GeoIPCity.dat* :
-
- gunzip GeoLiteCity.dat.gz
- chmod 644 GeoLiteCity.dat
- sudo mv GeoLiteCity.dat /usr/share/piwik/misc/GeoIPCity.dat
-
-4. In the Piwik web interface click **Settings** in the top right corner, then **Geolocation** in the left side menu. Change the setting from *Default* to *GeoIP (PECL)* .
-
-5. Optionally, configure *Setup automatic updates of GeoIP databases* at the end of the Geolocation page.
-
-Importing an Icecast log file
------------------------------
-
-In addition to the JavaScript tracking code used for web analytics, Piwik includes a Python script which can import a server log file directly. This script accepts the parameter *--log-format-name=icecast2* which enables support for the connection duration field logged by Icecast when a client disconnects. It is this field which enables stations to track the duration of individual audience connections, and calculate both the average connection duration and the 'aggregate tuning hours' figure required by some broadcast regulators.
-
-For an Icecast log file at */var/log/icecast2/access.log* you can run the script as follows:
-
- python /usr/share/piwik/misc/log-analytics/import_logs.py --show-progress
- --url=http://stats.example.com --idsite=1 --recorders=8 --enable-http-errors
- --log-format-name=icecast2 --strip-query-string /var/log/icecast2/access.log
-
-where the parameters are:
-
- --url=http://stats.example.com
-
-*The ServerName of your Piwik installation.*
-
- --idsite=1
-
-*Number of the default site configured in Piwik.*
-
- --recorders=8
-
-*How many threads to use while parsing the log file. To begin with, set this value to the number of CPU cores you can spare on the Piwik server.*
-
- --enable-http-errors
-
-*Collect statistics for errors, such as stream links not found.*
-
- --strip-query-string
-
-*Used because any characters requested by the client after the Icecast mounpoint URL can confuse the statistics.*
-
-If the Piwik server is remote, you can use an additional parameter *--token\_auth=* to authenticate the request. You can find the token to use for your installation by logging in to Piwik and clicking **API** in the main navigation menu at the top of the page. Further details of the import script are shown at http://piwik.org/docs/log-analytics-tool-how-to/
-
-The script will report the number of records processed and the time that has been required to parse the Icecast log file. If the import script is taking too long to execute, there are performance and configuration tips in the https://github.com/piwik/piwik/blob/master/misc/log-analytics/README.md file.
-
-Open the Piwik dashboard in your browser, and you should now see a summary of the imported data, including the most popular streams (listed under *Entry Pages*), *Visits by Server Time*, *Referrer Websites* and a *Visitor Map*.
-
-
diff --git a/docs/playlists.md b/docs/playlists.md
index 057a0485a..a6ccb2757 100644
--- a/docs/playlists.md
+++ b/docs/playlists.md
@@ -1,3 +1,5 @@
+# The Playlists page
+
Creating a new playlist
-----------------------
diff --git a/docs/preparing-media.md b/docs/preparing-media.md
index 44c987998..73f711237 100644
--- a/docs/preparing-media.md
+++ b/docs/preparing-media.md
@@ -1,3 +1,5 @@
+# Preparing media for uploading to LibreTime
+
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
diff --git a/docs/promoting-your-station.md b/docs/promoting-your-station.md
index 8c7540051..4e7718886 100644
--- a/docs/promoting-your-station.md
+++ b/docs/promoting-your-station.md
@@ -1,6 +1,13 @@
-If you have an Icecast server, you can put a link to the Icecast status page (by default at port 8000) on your station's homepage, to provide an overview of available streams. See the chapter *Interface customization* for tips on theming the Icecast status page. You can also use Now Playing widgets (see the chapter *Exporting the schedule*) or HTML5 stream players (see the chapter *Stream player for your website*) to help grow your audience.
+Promoting Your Station
+----------------------
-On an Icecast server, you can uncomment the ** section in the */etc/icecast2/icecast.xml* file to have your station automatically listed on the Icecast directory website which could help you pick up more listeners.
+If you have an Icecast server, you can put a link to the Icecast status page (by default at port 8000) on your station's homepage,
+to provide an overview of available streams. See the chapter *Interface customization* for tips on theming the
+Icecast status page. You can also use Now Playing widgets (see the chapter *Exporting the schedule*) or HTML5 stream players (see the chapter *Stream player for your website*) to help grow your audience.
+
+On an Icecast server, you can uncomment the `` section in the _/etc/icecast2/icecast.xml_ file to have
+your station automatically listed on the Icecast directory website which could help you pick
+up more listeners.
diff --git a/docs/setting-the-server-time.md b/docs/setting-the-server-time.md
index efd36dd70..962505686 100644
--- a/docs/setting-the-server-time.md
+++ b/docs/setting-the-server-time.md
@@ -1,3 +1,5 @@
+# Setting the server time
+
Accurate time keeping on your server is vital for LibreTime performance. You can confirm that the date and time of your server are set correctly with the **date** command:
date
diff --git a/docs/smartblocks.md b/docs/smartblocks.md
index 8982fb6e3..4cd00c12a 100644
--- a/docs/smartblocks.md
+++ b/docs/smartblocks.md
@@ -1,5 +1,6 @@
+# The Smartblocks page
-Creating a smart block
+Creating a smartblock
----------------------
Smart blocks are automatically filled with media files from the LibreTime library, according to the criteria that you specify. This feature is intended to save staff time, compared to selecting items for a playlist manually, and can be used to schedule shows that operate in a consistent format.
diff --git a/docs/status.md b/docs/status.md
index f5702ec2f..5ef05bec6 100644
--- a/docs/status.md
+++ b/docs/status.md
@@ -1,3 +1,5 @@
+# The Status page
+
On the **Settings** menu, the **Status** page provides an overview of the health and resource usage of the various services that make up a LibreTime system. If all is well, you will only see green check mark icons in the **Status** column. This page also shows how much **Disk Space** you have used on the disk partition containing the main Import folder, as well as any disks or partitions with watched folders.

diff --git a/docs/stream-settings.md b/docs/stream-settings.md
index e8e90d382..b01b2ef6e 100644
--- a/docs/stream-settings.md
+++ b/docs/stream-settings.md
@@ -1,5 +1,6 @@
-*Note* LibreTime installed via the install script does not currently change the default Icecast password and is insecure without intervention by the system admin. There is a [tutorial](https://github.com/LibreTime/libretime/wiki/Securing-icecast-and-customizing-stream-settings) on our wiki that walks you through the steps of how to fix this and an open issue [#86](https://github.com/LibreTime/libretime/issues/86) to track resolution of this.
+# The Stream Settings page
+*Note* LibreTime installed via the install script does not currently change the default Icecast password and is insecure without intervention by the system admin. There is a [tutorial](https://github.com/LibreTime/libretime/wiki/Securing-icecast-and-customizing-stream-settings) on our wiki that walks you through the steps of how to fix this and an open issue [#86](https://github.com/LibreTime/libretime/issues/86) to track resolution of this.
Global settings
------------------------
diff --git a/docs/track-types.md b/docs/track-types.md
index 7f22d1886..82c4edfdd 100644
--- a/docs/track-types.md
+++ b/docs/track-types.md
@@ -1,3 +1,6 @@
+Working with track types
+------------------------
+
# How to add track types
**Audience**: Adminstrators
diff --git a/docs/upgrading.md b/docs/upgrading.md
index 6ef3fdc9a..0c0392328 100644
--- a/docs/upgrading.md
+++ b/docs/upgrading.md
@@ -1,3 +1,5 @@
+# Upgrading LibreTime
+
## LibreTime versioning
LibreTime 3.x versions support upgrading from Airtime 2.5.x versions. LibreTime follows the [Semantic Versioning (semver)](http://semver.org/spec/v2.0.0.html) standards.
diff --git a/docs/users.md b/docs/users.md
index 018da6ec3..15fb92bbf 100644
--- a/docs/users.md
+++ b/docs/users.md
@@ -1,3 +1,6 @@
+The Users page
+---------------
+
If your Airtime server is accessible from the public Internet, it will not be secure until you set your own, strong password for the all-powerful *admin* user. Should the password for the *admin* user still be set to *admin* or some other easily guessed word, you should set a new password immediately, via the **Users** page on the System menu. Only users with the **User Type** of *Admin* can see the **System** menu when they log in.
Setting passwords and contact details
diff --git a/docs/vagrant.md b/docs/vagrant.md
index 08538d218..a08ade4e4 100644
--- a/docs/vagrant.md
+++ b/docs/vagrant.md
@@ -1,3 +1,6 @@
+Using Vagrant and Virturalbox for developing LibreTime
+-------------------------------------------------------
+
The **LibreTime Vagrant install** is the fastet way to get LibreTime up and running in a way
to hack on its source code or to test it locally. There are two supported providers: libvirt
and VirtualBox.
diff --git a/docs/webstreams.md b/docs/webstreams.md
index 0368057d2..8c2da32ca 100644
--- a/docs/webstreams.md
+++ b/docs/webstreams.md
@@ -1,6 +1,7 @@
-Adding a web stream
+The Webstreams page
-------------------
+## Adding a webstream
A web stream URL and metadata can be added to the LibreTime library, so that a remote stream can be searched for and scheduled to be *pulled* into a show. For example, at the top of the hour your station may pull a news report from journalists working in another studio. This is a different concept from **Master Source** and **Show Source** remote streams which are *pushed* into the LibreTime playout schedule.
To add a web stream, click the **+ New** button on the left side of the Webstreams page. Like a playlist, web streams in the Library can have a title and **Description**, which may help you find them in searches later.