Beginning to prepare pages of new site
Could load the theme from an external repo, so everything will need to fit in here. Can be built locally, though.
This commit is contained in:
parent
3a01503f87
commit
f87977b80f
|
@ -16,3 +16,5 @@ airtime_mvc/tests/log/*.log
|
|||
.vagrant/
|
||||
.DS_Store
|
||||
.idea/
|
||||
/docs/_site
|
||||
/docs/.jekyll-cache
|
|
@ -1,54 +0,0 @@
|
|||
I"L<hr />
|
||||
<p>layout: page
|
||||
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.</p>
|
||||
|
||||
<h2 id="bug-reporting">Bug reporting</h2>
|
||||
|
||||
<p>If you think you’ve found a bug, please report it on our <a href="https://github.com/LibreTime/libretime/issues/new/choose">Github issues page</a>.
|
||||
Create a bug report by selecting <strong>Get Started</strong> next to <strong>Bug Report</strong>. That way, the LibreTime team can keep track of
|
||||
your problem and notify you when it has been fixed. You can also suggest
|
||||
improvements and new features for LibreTime on that site.</p>
|
||||
|
||||
<h2 id="feature-requests">Feature requests</h2>
|
||||
|
||||
<p>Have an idea that would make LibreTime even better than it is right now? Start a <strong>Feature request</strong> on our
|
||||
<a href="https://github.com/LibreTime/libretime/issues/new/choose">Github issues page</a>.</p>
|
||||
|
||||
<h2 id="help-translate-libretime">Help translate LibreTime</h2>
|
||||
|
||||
<p>LibreTime can run in over 15 different languages due to the gracious help of our volunteers. Is your language not
|
||||
supported? Follow <a href="interface-localization">this guide</a> to add your language to LibreTime!</p>
|
||||
|
||||
<h2 id="help-write-code-for-libretime">Help write code for LibreTime</h2>
|
||||
|
||||
<p>Are you familar with coding in PHP? Have you made projects in Liquidsoap and some of the other services we use?
|
||||
Take a look at the bugs and feature requests <a href="https://github.com/LibreTime/libretime/issues">here</a>, and then
|
||||
fork our repo and have a go! Just use the <strong>Fork</strong> button at the top of our <strong>Code</strong> page, clone the forked repo to
|
||||
your desktop, open up a favorite editor and make some changes, and then commit, push, and open a pull request.
|
||||
Knowledge on how to use <a href="https://guides.github.com/activities/hello-world/">Github</a> and <a href="https://git-scm.com/docs/gittutorial">Git</a>
|
||||
will suit you well, use the links for a quick 101.</p>
|
||||
|
||||
<h3 id="testing-libretime-in-vagrant">Testing LibreTime in Vagrant</h3>
|
||||
|
||||
<p>Before submitting code to the project, it’s a good idea to test it first. To do this, it’s easiest to install
|
||||
LibreTime in a virtural machine on your local system or in a cloud VM. Instructions on how to set up a virtural
|
||||
instance of LibreTime with Vagrant are located <a href="vagrant">here</a>.</p>
|
||||
|
||||
<p>If you would like to try LibreTime in a Docker image,
|
||||
Odclive has instructions <a href="https://github.com/kessibi/libretime-docker">here</a> for setting up a test image
|
||||
and a more persistant install.</p>
|
||||
|
||||
<h3 id="modifying-the-database">Modifying the Database</h3>
|
||||
<p>LibreTime is designed to work with a <a href="https://www.postgresql.org/">PostgreSQL</a> database server running locally.
|
||||
LibreTime uses <a href="http://propelorm.org">PropelORM</a> to interact with the ZendPHP components and create the database.</p>
|
||||
|
||||
<p>If you are a developer seeking to add new columns to the database here are the steps.</p>
|
||||
|
||||
<ol>
|
||||
<li>Modify <code class="highlighter-rouge">airtime_mvc/build/schema.xml</code> with any changes.</li>
|
||||
<li>Run <code class="highlighter-rouge">dev_tools/propel_generate.sh</code></li>
|
||||
<li>Update the upgrade.sql under <code class="highlighter-rouge">airtime_mvc/application/controllers/upgrade_sql/VERSION</code> for example
|
||||
<code class="highlighter-rouge">ALTER TABLE imported_podcast ADD COLUMN album_override boolean default 'f' NOT NULL;</code></li>
|
||||
</ol>
|
||||
:ET
|
|
@ -1,35 +0,0 @@
|
|||
I"¬<h2 id="listen">Listen</h2>
|
||||
|
||||
<p><img src="img/listen-button.png" alt="" /></p>
|
||||
|
||||
<p>In the Master Panel, beneath the <strong>ON AIR</strong> indicator, you will find the <strong>LISTEN</strong> button. This button opens a
|
||||
pop-up <strong>Live stream</strong> window, which enables you to monitor the streams that have been configured previously
|
||||
in the <strong>Streams</strong> page on the <strong>System</strong> menu. In the <strong>Live stream</strong> window, a drop-down menu enables you to
|
||||
switch between the streams which are currently available. Both the streaming server and name of the stream are
|
||||
shown. Your station logo is shown in the top left corner of the window, if you have uploaded one via
|
||||
the <strong>Preferences</strong> page on the <strong>System</strong> menu.</p>
|
||||
|
||||
<p><img src="img/Screenshot477-Live_stream_chooser.png" alt="" /></p>
|
||||
|
||||
<blockquote>
|
||||
<p>Note: the volume controls in the Listen window only affect what you hear on your computer, not LibreTime’s main output</p>
|
||||
</blockquote>
|
||||
|
||||
<p><img src="img/Screenshot478-Live_stream_mute.png" alt="" />Â </p>
|
||||
|
||||
<p>To display the URL of the stream you are monitoring, so that you can copy and paste it into an email or web page, click the <strong>Share</strong> button. Click the <strong>X</strong> icon to the right of the URL to return to the drop-down menu of available streams.</p>
|
||||
|
||||
<p><img src="img/Screenshot479-Live_stream_share.png" alt="" /></p>
|
||||
|
||||
<h2 id="radio-page">Radio page</h2>
|
||||
|
||||
<p><img src="img/radio-page.png" alt="" /></p>
|
||||
|
||||
<p>LibreTime includes a mini-site, which can be accessed at <em>serverIP</em> (for local installations), or
|
||||
<em>libretime.yourdomain.com</em> or <em>cloudvmIP</em> (for installations to a server on a domain). The site includes your
|
||||
logo and station description (set under Settings > General), the login button to the LibreTime interface, the schedule for the next seven days,
|
||||
podcast tabs, and a live feed of your station with the currently playing artist and track displayed.</p>
|
||||
|
||||
<p>The background of the radio page can be changed; see instructions <a href="interface-customization">here</a>.
|
||||
Image comes from <a href="https://www.catsonsynthesizersinspace.com/">CATS ON SYNTHESIZERS IN SPACE</a>.</p>
|
||||
:ET
|
|
@ -1,31 +0,0 @@
|
|||
I"<h1 id="frequently-asked-questions">Frequently Asked Questions</h1>
|
||||
|
||||
<p><strong>What is LibreTime?</strong></p>
|
||||
|
||||
<p>LibreTime is a community managed fork of the AirTime project.</p>
|
||||
|
||||
<p>It is managed by a friendly inclusive community of stations
|
||||
from around the globe that use, document and improve LibreTime.</p>
|
||||
|
||||
<p><strong>Can I upgrade to LibreTime?</strong></p>
|
||||
|
||||
<p>In theory you can update any pre 3.0 version of AirTime to
|
||||
LibreTime 3.0.0 and above. More information on <a href="upgrading">Upgrading</a>
|
||||
is in the docs.</p>
|
||||
|
||||
<p>LibreTime is complex software, as such it is close to impossible
|
||||
to guarantee that every upgrade path works as intended. This
|
||||
means you should trial the update on a parallel test
|
||||
infrastructure to minimize possible downtime.</p>
|
||||
|
||||
<p>Please let the community know if you encounter issues with the
|
||||
update process.</p>
|
||||
|
||||
<p><strong>Why are Cue-In/Out points wrong in some tracks? / What’s with silan?</strong></p>
|
||||
|
||||
<p>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. Please see the <a href="https://github.com/LibreTime/libretime/releases">release notes</a> for up to date mitigation scenarios and details on the issues.</p>
|
||||
|
||||
<p><strong>Why did you fork AirTime?</strong></p>
|
||||
|
||||
<p>See this <a href="https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d">open letter to the Airtime community</a>.</p>
|
||||
:ET
|
|
@ -13,9 +13,44 @@ topnav:
|
|||
url: contribute
|
||||
|
||||
docsnav:
|
||||
- page: Config
|
||||
url: config1
|
||||
- page: More config
|
||||
url: config2
|
||||
- page: Admin stuff
|
||||
url: adminstuff
|
||||
- section: Install
|
||||
contents:
|
||||
- page: Quick Install
|
||||
url: quickstart
|
||||
- page: Host Configuration
|
||||
url: host-configuration
|
||||
- page: Setting the Server Time
|
||||
url: setting-the-server-time
|
||||
- page: Configuring Track Types
|
||||
url: track-types
|
||||
- page: Setting up SSL
|
||||
url: ssl-config
|
||||
- page:
|
||||
- section: Using LibreTime
|
||||
contents:
|
||||
- page: Preparing Media
|
||||
url: preparing-media
|
||||
- page: Scheduling Shows
|
||||
url: scheduling-shows
|
||||
- page: Broadcasting Live
|
||||
url: live-broadcast
|
||||
- page: Adding Users
|
||||
url: users
|
||||
- page: Help!
|
||||
url: troubleshooting
|
||||
- page: Advanced Configuration
|
||||
url: advanced-configuration
|
||||
- page:
|
||||
- section: Radio Broadcasting 101
|
||||
contents:
|
||||
- page: UNESCO Public Radio Guide
|
||||
url: learnradio-unescoguide
|
||||
- page:
|
||||
- section: Appendix
|
||||
contents:
|
||||
- page: HD Audio Modules
|
||||
url: hd-audio-modules
|
||||
- page: Rights and Royalties
|
||||
url: rights-royalties
|
||||
- page: Media Folders used by LibreTime
|
||||
url: folders
|
||||
|
|
|
@ -85,15 +85,34 @@ layout: default
|
|||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div id="sidebar">
|
||||
<ul>
|
||||
{% for item in site.data.nav.docsnav %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="{{ item.url }}">{{ item.page }}</a>
|
||||
<a class="nav-link" href="{{ item.url }}">{{ item.page }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<nav id="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<h3>Table of Contents</h3>
|
||||
</div>
|
||||
|
||||
{% for item in site.data.nav.docsnav %}
|
||||
<ul class="list-unstyled components">
|
||||
<i>{{ item.section }}</i>
|
||||
{% for entry in item.contents %}
|
||||
<li>
|
||||
<a href="{{ entry.url }}">{{ entry.page }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</nav>
|
||||
|
||||
<div class="container-fluid">
|
||||
<!-- This is the main content of the page getting pulled from the MDs -->
|
||||
<div class="content">
|
||||
|
|
|
@ -226,7 +226,9 @@
|
|||
<h5>Follow the docs, and you'll be off the ground in no time!</5>
|
||||
|
||||
<div class="start-buttons" style="padding: 20px;">
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="http://libretime.org/#getting-started">Vagrant/Manual Install</a>
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="quickstart">Quick Install</a>
|
||||
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="vagrant">Vagrant</a>
|
||||
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="https://github.com/ned-kelly/docker-multicontainer-libretime/blob/master/README.md">Docker Deployment</a>
|
||||
</div>
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
Tutorials
|
||||
------
|
||||
|
||||
This page contains links to number of tutorials.
|
||||
Please provide any feedback on this [discourse forum post](https://discourse.libretime.org/t/new-tutorials-available-on-libretime-wiki/270/2).
|
||||
There are also a number of tutorials in Spanish on [Vimeo](https://vimeo.com/user90812787)
|
||||
|
||||
## Understanding the Main Menus
|
||||
* [Upload](upload)
|
||||
* [Dashboard](dashboard)
|
||||
* [Tracks](tracks)
|
||||
* [Playlists](playlists)
|
||||
* [Smart Blocks](smartblocks)
|
||||
* [Webstreams](webstreams)
|
||||
* [Podcasts](podcasts)
|
||||
* [Radio Page](radio-page)
|
||||
* [Calendar](calendar)
|
||||
* Settings
|
||||
* [General](general-settings)
|
||||
* [Users](users)
|
||||
* [Streams](stream-settings)
|
||||
* [Status](status)
|
||||
* Analytics
|
||||
* [Playout History](history)
|
||||
* [History Templates](history-templates)
|
||||
* [Listener Stats](listener-stats)
|
||||
* [Help](help)
|
||||
* [Listen](listen)
|
||||
|
||||
## For Program Managers
|
||||
* [Building a schedule](build-schedule)
|
||||
* [How to set up an automatic top of the hour ID with intro playlist feature](intro-playlist)
|
||||
* [How to setup a Auto DJ to play music from certain genres for unscheduled shows](autodj)
|
||||
* [Preventing dead air between shows without cutting off tracks](outro-playlist)
|
||||
* [How to schedule automatic underwriting/advertising announcements (YouTube)](https://www.youtube.com/watch?v=F7rMut7Trb4)
|
||||
* [How to schedule a repeating webstream with a linked show (YouTube)](https://www.youtube.com/watch?v=Ha3X6aYdY04)
|
||||
* [How to export a schedule of played tracks](exporting-the-schedule)
|
||||
|
||||
## For Server Administrators
|
||||
|
||||
* [How to configure API Authentication](api)
|
||||
* [Information on reverse proxy connections](reverse-proxy)
|
||||
* [Configuring FreeIPA authentication](freeipa)
|
||||
* [Using and configuring Icecast and Shoutcast](icecast-shoutcast)
|
||||
* [Interface Customization](interface-customization)
|
||||
* [Promoting your station through your Icecast stream](promoting-your-station)
|
||||
* [How to back up the LibreTime media folder and database](backing-up-the-server)
|
||||
* [Upgrading LibreTime](upgrading)
|
||||
* [Uninstalling LibreTime](uninstall)
|
|
@ -1,74 +0,0 @@
|
|||
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.
|
||||
|
||||
You can dump the entire database to a zipped file with the combination of the
|
||||
**pg\_dumpall** command and **gzip**. The **pg\_dumpall** command is executed
|
||||
as the user *postgres*, by using the **sudo** command and the **-u** switch. It
|
||||
is separated from the **gzip** command with the pipe symbol.
|
||||
|
||||
```bash
|
||||
sudo -u postgres pg_dumpall | gzip -c > libretime-backup.gz
|
||||
```
|
||||
|
||||
This command can be automated to run on a regular basis using the standard
|
||||
**cron** tool on your server.
|
||||
|
||||
When restoring a production database on a cleanly installed LibreTime system, it
|
||||
may be necessary to drop the empty database that was created during the new
|
||||
installation, by using the **dropdb** command. Again, this command is executed
|
||||
with **sudo** as the user *postgres*:
|
||||
|
||||
```bash
|
||||
sudo -u postgres dropdb airtime
|
||||
```
|
||||
|
||||
This **dropdb** command above is necessary to avoid 'already exists' errors on
|
||||
table creation when overwriting an empty LibreTime database in the next step.
|
||||
These errors might prevent some data from being restored, such as user account
|
||||
data.
|
||||
|
||||
To restore, first unzip the backup file with **gunzip**, then use the **psql**
|
||||
command as the *postgres* user:
|
||||
|
||||
```bash
|
||||
gunzip libretime-backup.gz
|
||||
sudo -u postgres psql -f libretime-backup
|
||||
```
|
||||
|
||||
You should now be able to log in to the LibreTime web interface in the usual way.
|
||||
|
||||
For safety reasons, your regular database backups should be kept in a directory
|
||||
which is backed up by your storage backup tool of choice; for example, the
|
||||
*/srv/airtime/database\_backups* directory. This should ensure that a storage
|
||||
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
|
||||
--------------
|
||||
|
||||
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
|
||||
space. Creating a compressed file from hundreds of gigabytes of storage server
|
||||
contents is likely to take a very long time, and may have little benefit for the
|
||||
amount of CPU power used, if the media files are already stored in a highly
|
||||
compressed format. It is also impractical to copy very large backup files across
|
||||
the network on a daily basis.
|
||||
|
||||
Instead, it is preferable to use an incremental backup technique to synchronize
|
||||
the production LibreTime server storage with a backup server each day or night. If
|
||||
the backup server also contains an LibreTime installation, it should be possible
|
||||
to switch playout to this second machine relatively quickly, in case of a
|
||||
hardware failure or other emergency on the production server.
|
||||
|
||||
A standard incremental backup tool on GNU/Linux servers is *rsync*
|
||||
[(http://rsync.samba.org/)](http://rsync.samba.org/)) which can be installed
|
||||
using the package manager of your GNU/Linux distribution. However, incremental
|
||||
backup alone cannot help in the scenario where a file which later proves to be
|
||||
important has been deleted by an administrator. For backups that can be rolled
|
||||
back to restore from an earlier date than the current backup, the tool
|
||||
*rdiff-backup*
|
||||
[(http://www.nongnu.org/rdiff-backup/](http://www.nongnu.org/rdiff-backup/)) can
|
||||
be deployed.
|
|
@ -1,253 +0,0 @@
|
|||
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** (<http://newscoop.sourcefabric.org/>). It can be presented using Javascript widgets and styled with CSS, in any format that you require. The **Broadcaster** theme for Newscoop (<https://github.com/newscoop/theme-Broadcaster>) integrates these widgets with ready-to-use styles.
|
||||
|
||||
There are two kinds of information that can be retrieved remotely from the LibreTime API without authentication; the metadata for the current show plus the following show (live-info), or the schedule for the current week and the week ahead (week-info). The week-info metadata includes show names, times, and individual show URLs on your public website. That way, the audience for your station can click through from the schedule information to find out more about a particular show, or download a previous show recording that you might have made available.
|
||||
|
||||
If your LibreTime server was accessible at https://libretime.example.com the live show information could be retrieved by your web server using this URL:
|
||||
|
||||
https://libretime.example.com/api/live-info/?callback
|
||||
|
||||
The comma-separated text metadata returned to your web server might be something like this:
|
||||
|
||||
({"env":"production",
|
||||
"schedulerTime":"2013-07-03 14:07:31",
|
||||
|
||||
"previous":{"name":"Earth, Wind & Fire - Boogie Wonderland",
|
||||
"starts":"2013-07-01 22:53:00",
|
||||
"ends":"2013-07-01 22:55:00",
|
||||
"type":"track"},
|
||||
"current":{"name":"Deodato - Also Sprach Zarathustra",
|
||||
"starts":"2013-07-03 13:07:06",
|
||||
"ends":"2013-07-03 13:16:05",
|
||||
"media_item_played":true,
|
||||
"record":0,
|
||||
"type":"track"},
|
||||
|
||||
"next":{"id":8,
|
||||
"instance_id":10,
|
||||
"name":"Rock Show",
|
||||
"url":"https:\/\/rock.example.com\/",
|
||||
"start_timestamp":"2013-07-03 14:00:00",
|
||||
"end_timestamp":"2013-07-03 15:00:00",
|
||||
"starts":"2013-07-03 14:00:00",
|
||||
"ends":"2013-07-03 15:00:00",
|
||||
"record":0,
|
||||
"type":"show"},
|
||||
|
||||
"currentShow":[{"start_timestamp":"2013-07-03 14:07:00",
|
||||
"0":"2013-07-03 13:07:00",
|
||||
"end_timestamp":"2013-07-03 15:00:00",
|
||||
"1":"2013-07-03 14:00:00",
|
||||
"name":"Funk Show",
|
||||
"2":"Funk Show",
|
||||
"id":7,
|
||||
"3":7,
|
||||
"instance_id":9,"4":9,
|
||||
"record":0,
|
||||
"5":0,
|
||||
"url":"https:\/\/funk.example.com\/",
|
||||
"6":"",
|
||||
"starts":"2013-07-03 14:07:00",
|
||||
"7":"2013-07-03 13:07:00",
|
||||
"ends":"2013-07-03 15:00:00",
|
||||
"8":"2013-07-03 14:00:00"}],
|
||||
|
||||
"nextShow":[{"id":8,
|
||||
"instance_id":10,
|
||||
"name":"Rock Show",
|
||||
"url":"https:\/\/rock.example.com\/",
|
||||
"start_timestamp":"2013-07-03 15:00:00",
|
||||
"end_timestamp":"2013-07-03 16:00:00",
|
||||
"starts":"2013-07-03 15:00:00",
|
||||
"ends":"2013-07-03 16:00:00",
|
||||
"record":0,
|
||||
"type":"show"}],
|
||||
|
||||
"timezone":"BST",
|
||||
"timezoneOffset":"3600",
|
||||
"AIRTIME_API_VERSION":"1.1"})
|
||||
|
||||
The information for the current week's schedule could be retrieved using the URL:
|
||||
|
||||
https://libretime.example.com/api/week-info/?callback
|
||||
|
||||
In this case, the metadata returned would be in a different format from the above example, something like the following. To keep the example short, this particular schedule export only contains four shows on a Monday. A full weekly schedule export would contain a great deal more text.
|
||||
|
||||
({"monday":[
|
||||
|
||||
{"start_timestamp":"2013-07-01 12:05:00",
|
||||
"end_timestamp":"2013-07-01 13:00:00",
|
||||
"name":"Elvis Show",
|
||||
"id":2,
|
||||
"instance_id":2,
|
||||
"record":0,
|
||||
"url":"https:\/\/elvis.example.com\/",
|
||||
"starts":"2013-07-01 12:05:00",
|
||||
"ends":"2013-07-01 13:00:00"},
|
||||
|
||||
{"start_timestamp":"2013-07-01 13:00:00",
|
||||
"end_timestamp":"2013-07-01 14:00:00",
|
||||
"name":"News",
|
||||
"id":3,
|
||||
"instance_id":4,
|
||||
"record":0,
|
||||
"url":"https:\/\/news.example.com\/",
|
||||
"starts":"2013-07-01 13:00:00",
|
||||
"ends":"2013-07-01 14:00:00"},
|
||||
|
||||
{"start_timestamp":"2013-07-01 14:00:00",
|
||||
"end_timestamp":"2013-07-01 15:00:00",
|
||||
"name":"Funk Show",
|
||||
"id":4,
|
||||
"instance_id":6,
|
||||
"record":0,
|
||||
"url":"https:\/\/funk.example.com\/",
|
||||
"starts":"2013-07-01 14:00:00",
|
||||
"ends":"2013-07-01 15:00:00"},
|
||||
|
||||
{"start_timestamp":"2013-07-01 15:00:00",
|
||||
"end_timestamp":"2013-07-01 17:30:00",
|
||||
"name":"Rock Show",
|
||||
"id":5,
|
||||
"instance_id":7,
|
||||
"record":0,
|
||||
"url":"https:\/\/rock.example.com\/",
|
||||
"starts":"2013-07-01 15:00:00",
|
||||
"ends":"2013-07-01 17:30:00"},
|
||||
|
||||
],
|
||||
|
||||
"tuesday":[],
|
||||
"wednesday":[],
|
||||
"thursday":[],
|
||||
"friday":[],
|
||||
"saturday":[],
|
||||
"sunday":[],
|
||||
"AIRTIME_API_VERSION":"1.1"})
|
||||
|
||||
If you see the message *You are not allowed to access this resource* when attempting to display schedule information in your web browser, log in to the LibreTime administration interface, click *System* in the main menu, then *Preferences*. Set **Allow Remote Websites To Access "Schedule" Info?** to **Enabled**, click the **Save** button, then refresh the browser window opened on the schedule export URL. If you do not wish to make schedule information available to the public, set this option to **Disabled** instead.
|
||||
|
||||

|
||||
|
||||
Caching schedule information
|
||||
----------------------------
|
||||
|
||||
If the LibreTime server is behind a firewall, or you want to protect the LibreTime server from large numbers of schedule requests, you may wish to cache the schedule information on a public-facing or intermediate server. You can then create a firewall rule that only allows the schedule server to connect to the LibreTime server, in addition to any remote users of the LibreTime web interface.
|
||||
|
||||
Your system administrator can set up schedule caching on a standard Apache and PHP enabled web server with the *curl* program installed, using the following steps:
|
||||
|
||||
1. Create a shell script on the schedule server (schedule.example.com) that polls the remote LibreTime server (libretime.example.com), and writes the metadata returned into a pair of local temporary files:
|
||||
|
||||
sudo nano /usr/local/bin/libretime-schedule.sh
|
||||
|
||||
The content of this file should be like the following script, replacing libretime.example.com with the name of your LibreTime server:
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
curl -s "https://libretime.example.com/api/live-info/?callback=***" > /tmp/live-info
|
||||
|
||||
curl -s "https://libretime.example.com/api/week-info/?callback=***" > /tmp/week-info
|
||||
|
||||
2. Make the script executable:
|
||||
|
||||
sudo chmod +x /usr/local/bin/libretime-schedule.sh
|
||||
|
||||
3. Create an Apache VirtualHost configuration for the schedule server:
|
||||
|
||||
sudo nano /etc/apache2/sites-available/schedule
|
||||
|
||||
containing a definition like the following, replacing *schedule.example.com* with the name of your schedule server:
|
||||
|
||||
<VirtualHost *:80>
|
||||
ServerName schedule.example.com
|
||||
DocumentRoot /var/www/schedule/
|
||||
</VirtualHost>
|
||||
|
||||
4. In the schedule server's DocumentRoot folder, create the folders *api/live-info/* and *api/week-info/*
|
||||
|
||||
sudo mkdir -p /var/www/schedule/api/live-info/
|
||||
sudo mkdir -p /var/www/schedule/api/week-info/
|
||||
|
||||
5. Create an index.php file in the *api/live-info/* folder:
|
||||
|
||||
sudo nano /var/www/schedule/api/live-info/index.php
|
||||
|
||||
containing the following code:
|
||||
|
||||
<?php
|
||||
$filename = '/tmp/live-info'; // define here the path and name of uploaded live-info file
|
||||
|
||||
header('Content-Type: text/javascript');
|
||||
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
|
||||
$callback = empty($_GET['callback']) ? null : $_GET['callback'];
|
||||
$content = file_get_contents($filename);
|
||||
$content = str_replace('***', $callback, $content);
|
||||
echo $content;
|
||||
?>
|
||||
|
||||
6. Create an index.php file in the *api/week-info/* folder:
|
||||
|
||||
sudo nano /var/www/schedule/api/week-info/index.php
|
||||
|
||||
containing the following code:
|
||||
|
||||
<?php
|
||||
$filename = '/tmp/week-info'; // define here the path and name of uploaded week-info file
|
||||
|
||||
header('Content-Type: text/javascript');
|
||||
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
|
||||
$callback = empty($_GET['callback']) ? null : $_GET['callback'];
|
||||
$content = file_get_contents($filename);
|
||||
$content = str_replace('***', $callback, $content);
|
||||
echo $content;
|
||||
?>
|
||||
|
||||
7. Enable the new configuration and reload the Apache web server:
|
||||
|
||||
sudo a2ensite schedule
|
||||
sudo /etc/init.d/apache2 reload
|
||||
|
||||
8. Create a cron job to run the shell script each minute:
|
||||
|
||||
sudo nano /etc/cron.d/libretime-schedule
|
||||
|
||||
containing the line:
|
||||
|
||||
* * * * * www-data /usr/local/bin/libretime-schedule.sh
|
||||
|
||||
The schedule server will now be serving the same show information as the LibreTime server, with a cache lifetime of one minute. You can adjust the cache lifetime by altering the frequency of the cron job that polls the LibreTime server.
|
||||
|
||||
Pushing schedule information via FTP or SSH
|
||||
-------------------------------------------
|
||||
|
||||
If there is no inbound access to the LibreTime server at all, an FTP script can be used to push cached schedule data from LibreTime to an external web server. The standard ftp command should be available on the LibreTime server and the external web server should have a suitably restricted FTP account set up. After following steps 1 and 2 above to export schedule data to a pair of temporary files on the LibreTime server, create a new script on the LibreTime server to automatically make the upload:
|
||||
|
||||
sudo nano /usr/local/bin/upload-schedule-data.sh
|
||||
|
||||
Replace host, user and password values with appropriate values for your external web server:
|
||||
|
||||
#!/bin/sh
|
||||
HOST='website.example.com'
|
||||
USER='ftp_user'
|
||||
PASSWD='ftp_password'
|
||||
|
||||
ftp -n -v $HOST << EOT
|
||||
user $USER $PASSWD
|
||||
ascii
|
||||
prompt
|
||||
put /tmp/airtime-week-info
|
||||
put /tmp/airtime-live-info
|
||||
bye
|
||||
EOT
|
||||
|
||||
Then make the new script executable and create a cron job to launch it every minute, as in step 8 above. Steps 3 to 7 above should be carried out on the external web server so that it can convert the two temporary files uploaded via FTP into public schedule data.
|
||||
|
||||
If you have secure shell access (SSH) to the remote web server, you could write a script to use the secure copy command (scp) instead of ftp.
|
|
@ -1 +1 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.1">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2020-05-22T17:33:13-04:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">LibreTime Radio Automation</title><subtitle>An open source radio automation server made for (and made by) low-power FM stations and the rest of us.</subtitle></feed>
|
||||
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.1">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2020-05-22T18:01:11-04:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">LibreTime Radio Automation</title><subtitle>An open source radio automation server made for (and made by) low-power FM stations and the rest of us.</subtitle></feed>
|
|
@ -1,4 +1,312 @@
|
|||
<h1 id="media-library-folders">Media Library Folders</h1>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
header.masthead {
|
||||
padding-top: 10rem;
|
||||
padding-bottom: calc(10rem - 56px);
|
||||
background-image: url("img/header.jpg");
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
.bg-dark{
|
||||
padding:2rem 0
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container-lg">
|
||||
<nav class="content">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
/* "CONTENT" From Above */
|
||||
.content {
|
||||
|
||||
/* size of my container minus sidebar width */
|
||||
width: calc(80%);
|
||||
|
||||
/* Estimated height of largest sidebar in case of short content */
|
||||
min-height: 800px;
|
||||
}
|
||||
|
||||
/* SIDEBAR */
|
||||
.sidebar {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 57px;
|
||||
width: 20%;
|
||||
height: 100%; /* Super important! */
|
||||
background-color: #212529;
|
||||
color: #fff;
|
||||
}
|
||||
.link-style {
|
||||
color: rgba(255,255,255,.9);
|
||||
}
|
||||
/* SIDEBAR CONTAINER */
|
||||
.sidebar-item {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 10%;
|
||||
width: 100%;
|
||||
height: 25%;
|
||||
|
||||
/* Position the items */
|
||||
&:nth-child(2) { top: 25%; }
|
||||
&:nth-child(3) { top: 50%; }
|
||||
&:nth-child(4) { top: 75%; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div id="sidebar">
|
||||
<ul>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<nav id="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<h3>Table of Contents</h3>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Install</i>
|
||||
|
||||
<li>
|
||||
<a href="quickstart">Quick Install</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="host-configuration">Host Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="setting-the-server-time">Setting the Server Time</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="track-types">Configuring Track Types</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="ssl-config">Setting up SSL</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Using LibreTime</i>
|
||||
|
||||
<li>
|
||||
<a href="preparing-media">Preparing Media</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="scheduling-shows">Scheduling Shows</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="live-broadcast">Broadcasting Live</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="users">Adding Users</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="troubleshooting">Help!</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="advanced-configuration">Advanced Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Radio Broadcasting 101</i>
|
||||
|
||||
<li>
|
||||
<a href="learnradio-unescoguide">UNESCO Public Radio Guide</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Appendix</i>
|
||||
|
||||
<li>
|
||||
<a href="hd-audio-modules">HD Audio Modules</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="rights-royalties">Rights and Royalties</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="folders">Media Folders used by LibreTime</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
|
||||
<div class="container-fluid">
|
||||
<!-- This is the main content of the page getting pulled from the MDs -->
|
||||
<div class="content">
|
||||
<h1 id="media-library-folders">Media Library Folders</h1>
|
||||
|
||||
<p>LibreTime’s media library is inside the <em>/srv/airtime/stor/</em> folder on your server, by default.
|
||||
Tracks are uploaded into the imported subdirectory and then a separate directory based upon the user
|
||||
|
@ -10,3 +318,34 @@ move towards enabling cloud-based file hosting. There are currently two works in
|
|||
imports and sync but neither of them have been finished as of the time of this writing. See
|
||||
<a href="https://github.com/LibreTime/libretime/issues/70">#70</a>. In addition LibreTime does not write metadata changes
|
||||
back to the files. See <a href="https://github.com/LibreTime/libretime/issues/621">#621</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<section class="bg-dark text-white">
|
||||
<div class="text-footer">
|
||||
<small>Hosted on GitHub Pages — Theme by <a href="https://github.com/ned-kelly">ned-kelly</a> and <a href="https://github.com/zklosko">Zachary Klosko</a> | </small>
|
||||
<small>Code and docs licensed under GPLv2. More details <a href="http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/about-this-manual/">here</a>. </small>
|
||||
</div>
|
||||
</section>
|
||||
</footer>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
# Settings
|
||||
|
||||

|
||||
|
||||
On the **Settings** menu, click **General** to set your **Station Name**. This
|
||||
text is shown in your web browser's title bar when your station staff are logged
|
||||
into LibreTime, and optionally in stream metadata. You can also set a **Station
|
||||
Description** and **Station Logo** here.
|
||||
|
||||

|
||||
|
||||
The **Default Interface Language** drop-down menu sets the default localization
|
||||
for your LibreTime instance, and the **Station Timezone** drop-down menu can be
|
||||
used to display local time at your station. LibreTime stores show times
|
||||
internally in UTC format (similar to *Greenwich Mean Time*), but displays local
|
||||
time for the convenience of your station staff. You can also set the day of the
|
||||
week that you wish to start your station's weekly schedule on, which defaults
|
||||
to Sunday.
|
||||
|
||||
The **Track Type Default** enables you to select a track type default for uploads.
|
||||
|
||||
Initially, the **Default Fade In** and **Default Fade Out** times for automated
|
||||
fades are set to half a second, and the **Default Crossfade Duration** is set to
|
||||
zero seconds. Custom fade and crossfade times can be set for adjacent items in a
|
||||
playlist or static smart block. See the chapter *Library* for details.
|
||||
|
||||
The **Intro Autoloading Playlist** enables you to select a playlist that will be
|
||||
scheduled at the beginning of every show that has enabled an autoloading
|
||||
playlist. This can be used for instance to insert a station ID or other
|
||||
announcements a the top of every show.
|
||||
|
||||
The **Outro Autoloading Playlist** enables you to select a playlist that will be
|
||||
scheduled after the content of every show with an autoloading playlist.
|
||||
|
||||
The **Overwrite Podcast Episode Metatags** option which is enabled by default
|
||||
causes LibreTime to override the Artist, Title & Album fields on any tracks
|
||||
downloaded from a podcast with information from the RSS feed.
|
||||
|
||||
The **Generate a smartblock and a playlist upon creation of a new podcast**
|
||||
option when enabled will create a smartblock matching the newest episode of a
|
||||
podcast and a playlist containing that smartblock automatically upon adding a
|
||||
podcast to LibreTime. This can also be done manually by the generate smartblock
|
||||
and playlist button under a podcasts settings which is why it is disabled by
|
||||
default.
|
||||
|
||||

|
||||
|
||||
You can enable live, read-only access to the LibreTime schedule calendar for
|
||||
your station's public website with the **Public LibreTime API** option, if you
|
||||
wish. (There is more about this feature in the
|
||||
[*Exporting the schedule*](exporting-the-schedule) chapter, in the
|
||||
*Advanced Configuration* section of this book).
|
||||
|
||||
The **Allowed CORS URLs** is intended to deal with situations where you want a
|
||||
remote site with a different domain to access the API. This is relevant when
|
||||
there is a reverse proxy server in front of LibreTime. If you are using a
|
||||
reverse proxy, the URLs that will be used to access it should be added here.
|
||||
|
||||
The **Display login button on your Radio Page?** will determine whether visitors
|
||||
to your site see a link to login. If this is disabled DJs and admins will need
|
||||
to goto http://SITEURL/login to be able to login.
|
||||
|
||||
The **Tune-In Settings** section is intended for stations that have partnered
|
||||
with TuneIn to automatically push their now playing metadata to TuneIn. This
|
||||
hasn't been tested and also requires special credentials from TuneIn.
|
||||
|
||||

|
||||
|
||||
The **Dangerous Options** section provides an administrator the ability to erase
|
||||
the entire LibreTime library.
|
||||
|
||||
When you are done remember click the **Save** button at the top or bottom of the
|
||||
form.
|
||||
|
||||

|
||||
|
||||
Individual LibreTime users can choose another interface localization when they
|
||||
log in, or set personal preferences for localization and time zone by clicking
|
||||
their username on the right side of the menu bar.
|
||||
|
||||

|
|
@ -1,4 +1,312 @@
|
|||
<h2 id="host-configuration">Host configuration</h2>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
header.masthead {
|
||||
padding-top: 10rem;
|
||||
padding-bottom: calc(10rem - 56px);
|
||||
background-image: url("img/header.jpg");
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
.bg-dark{
|
||||
padding:2rem 0
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container-lg">
|
||||
<nav class="content">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
/* "CONTENT" From Above */
|
||||
.content {
|
||||
|
||||
/* size of my container minus sidebar width */
|
||||
width: calc(80%);
|
||||
|
||||
/* Estimated height of largest sidebar in case of short content */
|
||||
min-height: 800px;
|
||||
}
|
||||
|
||||
/* SIDEBAR */
|
||||
.sidebar {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 57px;
|
||||
width: 20%;
|
||||
height: 100%; /* Super important! */
|
||||
background-color: #212529;
|
||||
color: #fff;
|
||||
}
|
||||
.link-style {
|
||||
color: rgba(255,255,255,.9);
|
||||
}
|
||||
/* SIDEBAR CONTAINER */
|
||||
.sidebar-item {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 10%;
|
||||
width: 100%;
|
||||
height: 25%;
|
||||
|
||||
/* Position the items */
|
||||
&:nth-child(2) { top: 25%; }
|
||||
&:nth-child(3) { top: 50%; }
|
||||
&:nth-child(4) { top: 75%; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div id="sidebar">
|
||||
<ul>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<nav id="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<h3>Table of Contents</h3>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Install</i>
|
||||
|
||||
<li>
|
||||
<a href="quickstart">Quick Install</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="host-configuration">Host Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="setting-the-server-time">Setting the Server Time</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="track-types">Configuring Track Types</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="ssl-config">Setting up SSL</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Using LibreTime</i>
|
||||
|
||||
<li>
|
||||
<a href="preparing-media">Preparing Media</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="scheduling-shows">Scheduling Shows</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="live-broadcast">Broadcasting Live</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="users">Adding Users</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="troubleshooting">Help!</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="advanced-configuration">Advanced Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Radio Broadcasting 101</i>
|
||||
|
||||
<li>
|
||||
<a href="learnradio-unescoguide">UNESCO Public Radio Guide</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Appendix</i>
|
||||
|
||||
<li>
|
||||
<a href="hd-audio-modules">HD Audio Modules</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="rights-royalties">Rights and Royalties</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="folders">Media Folders used by LibreTime</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
|
||||
<div class="container-fluid">
|
||||
<!-- This is the main content of the page getting pulled from the MDs -->
|
||||
<div class="content">
|
||||
<h2 id="host-configuration">Host configuration</h2>
|
||||
|
||||
<p>The streaming host configuration for LibreTime is shown in the file <em>/etc/airtime/liquidsoap.cfg</em> which is automatically generated by the <strong>Streams</strong> page, found on the <strong>System</strong> 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.</p>
|
||||
|
||||
|
@ -173,3 +481,34 @@ push_interval = 1# in seconds
|
|||
# (needs the post_processor patch)
|
||||
cue_style = pre
|
||||
</code></pre></div></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<section class="bg-dark text-white">
|
||||
<div class="text-footer">
|
||||
<small>Hosted on GitHub Pages — Theme by <a href="https://github.com/ned-kelly">ned-kelly</a> and <a href="https://github.com/zklosko">Zachary Klosko</a> | </small>
|
||||
<small>Code and docs licensed under GPLv2. More details <a href="http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/about-this-manual/">here</a>. </small>
|
||||
</div>
|
||||
</section>
|
||||
</footer>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -246,7 +246,9 @@
|
|||
<h5>Follow the docs, and you'll be off the ground in no time!</5>
|
||||
|
||||
<div class="start-buttons" style="padding: 20px;">
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="http://libretime.org/#getting-started">Vagrant/Manual Install</a>
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="quickstart">Quick Install</a>
|
||||
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="vagrant">Vagrant</a>
|
||||
|
||||
<a class="btn btn-light btn-xl sr-button" target="_blank" href="https://github.com/ned-kelly/docker-multicontainer-libretime/blob/master/README.md">Docker Deployment</a>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,312 @@
|
|||
<h1 id="interface-localization">Interface Localization</h1>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
header.masthead {
|
||||
padding-top: 10rem;
|
||||
padding-bottom: calc(10rem - 56px);
|
||||
background-image: url("img/header.jpg");
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
.bg-dark{
|
||||
padding:2rem 0
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container-lg">
|
||||
<nav class="content">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
/* "CONTENT" From Above */
|
||||
.content {
|
||||
|
||||
/* size of my container minus sidebar width */
|
||||
width: calc(80%);
|
||||
|
||||
/* Estimated height of largest sidebar in case of short content */
|
||||
min-height: 800px;
|
||||
}
|
||||
|
||||
/* SIDEBAR */
|
||||
.sidebar {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 57px;
|
||||
width: 20%;
|
||||
height: 100%; /* Super important! */
|
||||
background-color: #212529;
|
||||
color: #fff;
|
||||
}
|
||||
.link-style {
|
||||
color: rgba(255,255,255,.9);
|
||||
}
|
||||
/* SIDEBAR CONTAINER */
|
||||
.sidebar-item {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 10%;
|
||||
width: 100%;
|
||||
height: 25%;
|
||||
|
||||
/* Position the items */
|
||||
&:nth-child(2) { top: 25%; }
|
||||
&:nth-child(3) { top: 50%; }
|
||||
&:nth-child(4) { top: 75%; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div id="sidebar">
|
||||
<ul>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<nav id="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<h3>Table of Contents</h3>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Install</i>
|
||||
|
||||
<li>
|
||||
<a href="quickstart">Quick Install</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="host-configuration">Host Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="setting-the-server-time">Setting the Server Time</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="track-types">Configuring Track Types</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="ssl-config">Setting up SSL</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Using LibreTime</i>
|
||||
|
||||
<li>
|
||||
<a href="preparing-media">Preparing Media</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="scheduling-shows">Scheduling Shows</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="live-broadcast">Broadcasting Live</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="users">Adding Users</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="troubleshooting">Help!</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="advanced-configuration">Advanced Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Radio Broadcasting 101</i>
|
||||
|
||||
<li>
|
||||
<a href="learnradio-unescoguide">UNESCO Public Radio Guide</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Appendix</i>
|
||||
|
||||
<li>
|
||||
<a href="hd-audio-modules">HD Audio Modules</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="rights-royalties">Rights and Royalties</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="folders">Media Folders used by LibreTime</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
|
||||
<div class="container-fluid">
|
||||
<!-- This is the main content of the page getting pulled from the MDs -->
|
||||
<div class="content">
|
||||
<h1 id="interface-localization">Interface Localization</h1>
|
||||
|
||||
<p>The LibreTime administration interface can be localized using the standard GNU <strong>gettext</strong> method. Using GitHub for this task means you don’t have to tackle the whole of a localization yourself; just as much as you can manage.</p>
|
||||
|
||||
|
@ -63,3 +371,34 @@ msgstr ""
|
|||
<p>Finally, <strong>git add</strong>, <strong>git commit</strong> and <strong>git push</strong> these new .mo and .po files to your GitHub fork of the project, and send a git pull request (<a href="https://help.github.com/articles/using-pull-requests">https://help.github.com/articles/using-pull-requests</a>) to the LibreTime developers. The localization can then be added to a forthcoming LibreTime release.</p>
|
||||
|
||||
<p>If you don’t want to work with git, that’s no problem - download a copy of the .po template file, edit the header, run it through an automatic translator and check it with Poedit. Then email your contribution to the LibreTime team as an attachment - it will be very welcome! However, learning to use git is a good idea, because it means you can work directly on the current source code, share the localization work with the LibreTime community, and avoid duplicated effort.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<section class="bg-dark text-white">
|
||||
<div class="text-footer">
|
||||
<small>Hosted on GitHub Pages — Theme by <a href="https://github.com/ned-kelly">ned-kelly</a> and <a href="https://github.com/zklosko">Zachary Klosko</a> | </small>
|
||||
<small>Code and docs licensed under GPLv2. More details <a href="http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/about-this-manual/">here</a>. </small>
|
||||
</div>
|
||||
</section>
|
||||
</footer>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
# Radio Broadcasting 101 - 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!
|
|
@ -1,86 +0,0 @@
|
|||
# Broadcasting live with MIXXX or B.U.T.T.
|
||||
|
||||
[](https://www.youtube-nocookie.com/embed/4GLsU9hPTtM "How to Livestream Your Show")
|
||||
|
||||
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.
|
||||
|
||||
Live shows with MIXXX
|
||||
---------------------
|
||||
|
||||
Mixxx is a cross-platform Open Source application for DJs, available [here](https://www.mixxx.org).
|
||||
|
||||
Installed on a desktop or laptop computer, Mixxx complements your LibreTime server to provide a complete system
|
||||
for both live and scheduled broadcasting. Although Mixxx has many features designed for dance music DJs
|
||||
that require beat matching and pitch independent time stretching, the program can be used for any kind of
|
||||
manually triggered broadcast playout, including live speech shows such as news or current affairs.
|
||||
|
||||
Mixxx supports a wide variety of popular hardware control surfaces, which can be connected to your
|
||||
computer using a USB cable. A control surface might replace or augment an analogue mixer in your studio,
|
||||
depending on your live mixing and playout requirements.
|
||||
|
||||
Mixxx 1.9.0 or later includes a live streaming client which, like LibreTime, is compatible with the **Icecast**
|
||||
and **SHOUTcast** media servers. This feature can also be used to stream from Mixxx directly into LibreTime,
|
||||
using either the **Show Source** or **Master Source**.
|
||||
|
||||

|
||||
|
||||
To configure **Mixxx** for streaming into LibreTime, click **Options**, **Preferences**, then
|
||||
**Live Broadcasting** on the main Mixxx menu. For server **Type**, select the default of **Icecast 2**.
|
||||
For **Host**, **Mount**, **Port**, **Login** and **Password**, use the **Input Stream Settings**
|
||||
configured in the LibreTime **Streams** page, on LibreTime's **System** menu. See [stream settings](stream-settings)
|
||||
for remote input connection details.
|
||||
|
||||
Live shows with B.U.T.T. (Broadcast Using This Tool)
|
||||
------------------------------------------------------
|
||||
|
||||
## Set Up
|
||||
|
||||
1. Download and install butt from <https://danielnoethen.de/> for your OS.
|
||||
*Note: be sure you have butt version 0.1.17 or newer installed*
|
||||
2. Open up butt
|
||||
3. Click **settings**
|
||||
4. Under **Main** under **Server **click **ADD**
|
||||
* Type LibreTime (or your station) under Name
|
||||
* Click the radio button next to **IceCast** under Type
|
||||
* Type your stations URL (webpage address) under **Address**:
|
||||
* Type **8002** under **Port**:
|
||||
* Type your DJ login password under **Password**
|
||||
* Type **/show** under IceCast mountpoint:
|
||||
* Type your dj login under **IceCast user:**
|
||||
5. Click **ADD**
|
||||
6. Still in settings click, **Audio** and select your external sound card under
|
||||
**Audio Device** *Note: if you only have an internal sound card you maybe able
|
||||
to use it but that is OS specific and outside of this tutorial. We are assuming
|
||||
you have a mic and mixer or a USB mixer hooked up to or as an external soundcard*
|
||||
|
||||
## Show Time
|
||||
|
||||
1. When its almost your show time go to your LibreTime page and look at the time
|
||||
in the top right when your show starts go to Butt.
|
||||
2. Click the white Play button (third button in the middle).
|
||||
3. If it says connecting… and then stream time with a counter– congratulations,
|
||||
your are connected!
|
||||
4. Go to the LibreTime page and at the top right under Source Streams the
|
||||
tab besides Show Source is to the left and Orange – if it is and Current
|
||||
shows Live Show you are connected.
|
||||
5. If it is gray, click on the **Show Source** switch to the right of it and it
|
||||
will toggle your show on and you will be broadcasting. *Note: whether auto
|
||||
connect is turned on is a station specific setting so it could work either way*
|
||||
|
||||
## Recording your show
|
||||
|
||||
You can record your show under butt by clicking the red circle record button on
|
||||
the left. It will save a mp3 based upon the date and time in your home/user
|
||||
directory by default.
|
||||
|
||||
Everything should now be working and you can broadcast for your entire time
|
||||
slot. If you choose to stop streaming before it is over click the white square
|
||||
**Stop** button to disconnect. Then go to the LibreTime page and if the Show
|
||||
Source didn’t automatically disconnect you can click it to the right and it
|
||||
should turn gray.
|
||||
|
||||
You are now done streaming.
|
||||
|
||||
If you have issues connecting check with your system administrator to see if you
|
||||
have the details right.
|
|
@ -1,97 +0,0 @@
|
|||
# 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
|
||||
----------------
|
||||
|
||||
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.
|
||||
|
||||
There are a number of programs available which can be used to correct mistakes or incomplete information in ID3 tags. On GNU/Linux, the program **Ex Falso** ([http://code.google.com/p/quodlibet/](http://code.google.com/p/quodlibet/) "http://sourceforge.net/projects/dr14tmeter/")) can be useful for batch setting and editing ID3 tags before importing files into your LibreTime server. On a Debian or Ubuntu desktop machine, you can install this program with the command:
|
||||
|
||||
sudo apt-get install exfalso
|
||||
|
||||
After installation, you can run this program with the command:
|
||||
|
||||
exfalso
|
||||
|
||||
or from the desktop menu. The *Tags From Path* feature of this program is a particularly useful time saver if you have a large archive of untagged files. Sometimes there is useful creator or title information in the file name or directory path structure, which can be converted into an ID3 tag automatically.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||
The program **mid3iconv** (part of the **python-mutagen** package in Debian and Ubuntu) can be used to batch convert the metadata character set of files on the command line. You can install **python-mutagen** with the command:
|
||||
|
||||
sudo apt-get install python-mutagen
|
||||
|
||||
<span id="Convert_MP3_Tags_using_mid3iconv" class="mw-headline"> For example, to preview the conversion of tags from Windows-1251 </span><span id="Convert_MP3_Tags_using_mid3iconv" class="mw-headline">(CP1251)</span><span id="Convert_MP3_Tags_using_mid3iconv" class="mw-headline"> character set to UTF-8 for a whole archive of MP3 files, you could use the command: </span>
|
||||
|
||||
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d -p
|
||||
|
||||
in the base directory of the archive. The **-d** option specifies that the new tag should be printed to the server console (debug mode), and the **-p** option specifies a preview run. This preview will enable you to confirm that the metadata is being read and converted correctly before writing the new tags.
|
||||
|
||||
To actually convert all of the tags and strip any legacy ID3v1 tag present from each file at the same time, you could use the command:
|
||||
|
||||
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1
|
||||
|
||||
The name of the original character set follows the **-e** option. Other legacy character sets that mid3iconv can convert to UTF-8 include:
|
||||
|
||||
KOI8-R: Russian
|
||||
KOI8-U: Ukrainian
|
||||
|
||||
GBK: Traditional Chinese
|
||||
GB2312: Simplified Chinese
|
||||
|
||||
EUC-KR: Korean
|
||||
EUC-JP: Japanese
|
||||
|
||||
CP1253: Greek
|
||||
CP1254: Turkish
|
||||
CP1255: Hebrew
|
||||
CP1256: Arabic
|
||||
|
||||
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.
|
||||
|
||||
Because of this automatic gain adjustment, any files with average loudness higher than -14 dBFS will not sound louder than quieter files at playout time, but the lower crest factor in the louder files (their relatively low peak-to-average ratio) may be apparent in the output, making those files sound less dynamic. This may be an issue for contemporary popular music, which can average at -9 dBFS or louder before ReplayGain adjustment. (See <http://www.soundonsound.com/sos/sep11/articles/loudness.htm> for a detailed analysis of the problem).
|
||||
|
||||
Your station's producers should therefore aim for 14dB between peak and average loudness to maintain the crest factor of their prepared material (also known as *DR14* on some dynamic range meters, such as the command-line DR14 T.meter available from <http://sourceforge.net/projects/dr14tmeter/>). If the producers are working to a different loudness standard, the ReplayGain modifier in LibreTime's Stream Settings page can be adjusted to suit their material.
|
||||
|
||||
Large transient peaks in otherwise quiet files should be avoided, to guard against the need for peak limiting when ReplayGain is applied to those quieter files.
|
||||
|
||||
The **vorbisgain** command-line tool, available in the **vorbisgain** package in Debian/Ubuntu, can be used to indicate the ReplayGain of an individual Ogg Vorbis file before ingest into LibreTime. (A similar tool for MP3 files is available in the **mp3gain** package in Debian/Ubuntu).
|
||||
|
||||
Here is an example of a very quiet file where the use of ReplayGain would make the output more than 17dB louder:
|
||||
|
||||
$ vorbisgain -d Peter_Lawson-Three_Gymn.ogg
|
||||
Analyzing files...
|
||||
|
||||
Gain | Peak | Scale | New Peak | Track
|
||||
----------+------+-------+----------+------
|
||||
+17.39 dB | 4536 | 7.40 | 33585 | Peter_Lawson-Three_Gymn.ogg
|
||||
|
||||
And here is an example of a very loud file, with lower crest factor, where the output will be more than 7dB quieter with ReplayGain applied:
|
||||
|
||||
$ vorbisgain -d Snoop_Dogg-Doggfather.ogg
|
||||
Analyzing files...
|
||||
|
||||
Gain | Peak | Scale | New Peak | Track
|
||||
----------+-------+-------+----------+------
|
||||
-7.86 dB | 36592 | 0.40 | 14804 | Snoop_Dogg-Doggfather.ogg
|
||||
|
||||
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
|
||||
----------------------
|
||||
|
||||
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/")
|
||||
|
||||
Very quiet introductions or over-long fades can also lead to apparent gaps in your broadcast playout. Some audio CDs feature a 'hidden track' at the end, which in fact uses a long period of silence within the final track, rather than an actual separate track on the disc. This means that CD encoding programs will often encode both the hidden material and the silence in the media file. For example, the track *Debra* from the CD *Midnite Vultures* by *Beck* includes hidden material preceded by seven minutes of silence, as shown in the screen shot from Audacity below.
|
||||
|
||||

|
|
@ -1,113 +0,0 @@
|
|||
# Reverse Proxy Connections
|
||||
|
||||
In some deployments, the LibreTime server is deployed behind a reverse proxy,
|
||||
for example in containerization use-cases such as Docker and LXC. LibreTime
|
||||
makes extensive use of its API for some site functionality, which causes
|
||||
[Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)
|
||||
to occur. By default, CORS requests are blocked by your browser and the origins
|
||||
need to be added to the **Allowed CORS URLs** block in
|
||||
[**General Settings**](general-settings). These origins should include any
|
||||
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
|
||||
|
||||
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
|
||||
users. This provides some advantages in the containerization space, as this means that
|
||||
the containers can be on their own internal network, protected from outside access.
|
||||
|
||||
A reverse proxy also allows SSL to be terminated in a single location for multiple sites.
|
||||
This means that all your traffic to the proxy from clients is encrypted, but the reverse
|
||||
proxy's traffic to the containers on the internal network is not. All the SSL certificates
|
||||
live on the reverse proxy and can be renewed there instead of on the individual
|
||||
containers.
|
||||
|
||||
## Setup
|
||||
|
||||
There are known bugs when using LibreTime behind a reverse proxy ([#957](https://github.com/LibreTime/libretime/issues/957)
|
||||
tracks the issue and contains a temporary workaround). For SSL redirection to work, you
|
||||
need two domains: one for LibreTime and one for Icecast. Here, these will be
|
||||
`libretime.example.com` and `icecast.example.com`.
|
||||
|
||||
You will also require two VMs, servers or containers. Alternatively the reverse proxy can
|
||||
be located on the server, proxying connections to containers also on the host. Setting up
|
||||
a containerization environment is beyond the scope of this guide. It assumes that you have
|
||||
Nginx set up on `proxy` and LibreTime will be installed on `libretime`. You will need root
|
||||
access on both. `libretime` also needs to be able to be accessed from `proxy`
|
||||
(`ping libretime` on `proxy`).
|
||||
|
||||
On `libretime`, install LibreTime as described in the [install guide](install). In short
|
||||
this means run the following commands:
|
||||
|
||||
```
|
||||
git clone https://github.com/LibreTime/libretime.git
|
||||
cd libretime
|
||||
sudo ./install -fiap
|
||||
```
|
||||
|
||||
Once it has installed, replace `<hostname>localhost</hostname>` in
|
||||
`/etc/icecast2/icecast.xml` with the following:
|
||||
|
||||
```
|
||||
<hostname>icecast.example.com</hostname>
|
||||
```
|
||||
|
||||
This is the hostname that people listening to your stream will connect to and what
|
||||
LibreTime will use to stream out to them. You will then need to restart Icecast:
|
||||
|
||||
```
|
||||
sudo systemctl restart icecast2
|
||||
```
|
||||
|
||||
On `proxy`, run the following:
|
||||
|
||||
```
|
||||
cat << EOF | sudo tee /etc/nginx/sites-available/libretime.conf
|
||||
server {
|
||||
listen 80;
|
||||
server_name libretime.example.com;
|
||||
location / {
|
||||
rewrite ^ https://$server_name$request_uri? permanent;
|
||||
}
|
||||
}
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name libretime.example.com;
|
||||
ssl_certificate /etc/letsencrypt/live/libretime.example.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/libretime.example.com/privkey.pem;
|
||||
add_header Strict-Transport-Security "max-age=15552000;";
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
client_max_body_size 512M;
|
||||
location / {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_pass http://libretime/;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
This Nginx configuration ensures that all traffic uses SSL to the reverse proxy, and
|
||||
traffic is proxied to `libretime`.
|
||||
|
||||
Next, the SSL certificate needs to be generated and the site activated.
|
||||
|
||||
```
|
||||
sudo apt install certbot
|
||||
sudo systemctl stop nginx
|
||||
sudo certbot certonly -d libretime.example.com -a standalone
|
||||
sudo systemctl start nginx
|
||||
```
|
||||
|
||||
You can now go to [https://libretime.example.com](https://libretime.example.com) and go
|
||||
through the installer. On `General Settings`, you need to change the Webserver Port to
|
||||
`443` and add the following CORS URLs:
|
||||
|
||||
```
|
||||
https://libretime.example.com
|
||||
http://libretime.example.com
|
||||
https://localhost
|
||||
http://localhost
|
||||
```
|
|
@ -1,4 +1,312 @@
|
|||
<h1 id="rights-and-royalties">Rights and Royalties</h1>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
header.masthead {
|
||||
padding-top: 10rem;
|
||||
padding-bottom: calc(10rem - 56px);
|
||||
background-image: url("img/header.jpg");
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
.bg-dark{
|
||||
padding:2rem 0
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container-lg">
|
||||
<nav class="content">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
/* "CONTENT" From Above */
|
||||
.content {
|
||||
|
||||
/* size of my container minus sidebar width */
|
||||
width: calc(80%);
|
||||
|
||||
/* Estimated height of largest sidebar in case of short content */
|
||||
min-height: 800px;
|
||||
}
|
||||
|
||||
/* SIDEBAR */
|
||||
.sidebar {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 57px;
|
||||
width: 20%;
|
||||
height: 100%; /* Super important! */
|
||||
background-color: #212529;
|
||||
color: #fff;
|
||||
}
|
||||
.link-style {
|
||||
color: rgba(255,255,255,.9);
|
||||
}
|
||||
/* SIDEBAR CONTAINER */
|
||||
.sidebar-item {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 10%;
|
||||
width: 100%;
|
||||
height: 25%;
|
||||
|
||||
/* Position the items */
|
||||
&:nth-child(2) { top: 25%; }
|
||||
&:nth-child(3) { top: 50%; }
|
||||
&:nth-child(4) { top: 75%; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - </title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div id="sidebar">
|
||||
<ul>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<nav id="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<h3>Table of Contents</h3>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Install</i>
|
||||
|
||||
<li>
|
||||
<a href="quickstart">Quick Install</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="host-configuration">Host Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="setting-the-server-time">Setting the Server Time</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="track-types">Configuring Track Types</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="ssl-config">Setting up SSL</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Using LibreTime</i>
|
||||
|
||||
<li>
|
||||
<a href="preparing-media">Preparing Media</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="scheduling-shows">Scheduling Shows</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="live-broadcast">Broadcasting Live</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="users">Adding Users</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="troubleshooting">Help!</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="advanced-configuration">Advanced Configuration</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Radio Broadcasting 101</i>
|
||||
|
||||
<li>
|
||||
<a href="learnradio-unescoguide">UNESCO Public Radio Guide</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled components">
|
||||
<i>Appendix</i>
|
||||
|
||||
<li>
|
||||
<a href="hd-audio-modules">HD Audio Modules</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="rights-royalties">Rights and Royalties</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="folders">Media Folders used by LibreTime</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
|
||||
<div class="container-fluid">
|
||||
<!-- This is the main content of the page getting pulled from the MDs -->
|
||||
<div class="content">
|
||||
<h1 id="rights-and-royalties">Rights and Royalties</h1>
|
||||
|
||||
<p>If you’re new to broadcasting, or have not streamed your station online before,
|
||||
reading the following brief explanation of compensation rules for songwriters,
|
||||
|
@ -80,3 +388,34 @@ from third parties for streaming. How, for example, would you know if someone
|
|||
uploaded a file to your online radio station that unknown to you, had been
|
||||
ripped from a commercially released CD? That’s the kind of thing that could get
|
||||
you in trouble with the licensing authorities and copyright holders.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<section class="bg-dark text-white">
|
||||
<div class="text-footer">
|
||||
<small>Hosted on GitHub Pages — Theme by <a href="https://github.com/ned-kelly">ned-kelly</a> and <a href="https://github.com/zklosko">Zachary Klosko</a> | </small>
|
||||
<small>Code and docs licensed under GPLv2. More details <a href="http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/about-this-manual/">here</a>. </small>
|
||||
</div>
|
||||
</section>
|
||||
</footer>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
# Scheduling Shows
|
||||
|
||||
Log in using your username and password using the link in the upper right corner. (If you just installed
|
||||
LibreTime, your username/password is admin/admin.)
|
||||
|
||||
The main workflow in LibreTime is **Upload** media -> create a show on the **Calendar** -> **Schedule Tracks**.
|
||||
|
||||
Once you log in, click on the big blue button on the left navigation that says **Upload**.
|
||||
|
||||

|
||||
|
||||
Select the type of media you are uploading (Music, Station IDs, etc.) by using the dropdown box
|
||||
at the top of the pane. After that, either drag and drop media into the area below or click the
|
||||
dashed rectangle to open a file browser.
|
||||
|
||||
Once your files have uploaded and have been successfully imported (as shown in the pane on the right),
|
||||
click on **Calendar** on the left navigation.
|
||||
|
||||

|
||||
|
||||
Click on the blue **+ New Show** button to add a new show.
|
||||
|
||||

|
||||
|
||||
At the very minimum, fill out the show's name and when the show will take place. If the show will repeat regularly,
|
||||
check the **Repeats?** box and fill out the repeat information. Click on the grey **+ Add this show** button at the top
|
||||
of the pane to add your show to the calendar.
|
||||
|
||||
Once your show is created, click on it to open its context menu. Select **Schedule Tracks** to open the track scheduler.
|
||||
|
||||

|
||||
|
||||
The track scheduler behaves similar to iTunes or Windows Media Player: media browser on the left, playlist on the right.
|
||||
Find the tracks that you'd like to schedule by using the search box or sorting columns and then drag them
|
||||
into the playlist.
|
||||
|
||||

|
||||
|
||||
The bar at the end of the show's playlist will show the amount of time the show is underscheduled or overscheduled.
|
||||
Shows that are underscheduled will have dead air at the end and shows that are overscheduled
|
||||
will fade out exactly when the show is over (the orange colored entry), meaning tracks scheduled to start
|
||||
after this point will not play (dark red colored entries). Click the **Ok** button in the bottom right to save.
|
||||
|
||||
Show playback will start and end as per each show's start and end times, allowing you to rely completely on
|
||||
LibreTime for running your station or using LibreTime as a part of your live setup to cover when DJs are not present.
|
||||
When media is playing, the **On Air** indicator at the top will turn red.
|
||||
|
||||

|
||||
|
||||
You can listen to your stream by going to `yourserverIP:8000` or by clicking the **Listen** button under the On Air
|
||||
indicator.
|
|
@ -1,15 +1,107 @@
|
|||
<h1 id="using-vagrant-and-virturalbox-for-developing-libretime">Using Vagrant and Virturalbox for developing LibreTime</h1>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<p>The <strong>LibreTime Vagrant install</strong> 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.</p>
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<h2 id="prerequisites">Prerequisites</h2>
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
|
||||
<ul>
|
||||
<li><a href="https://git-scm.com/">Git</a></li>
|
||||
<li><a href="https://vagrantup.com">Vagrant</a></li>
|
||||
</ul>
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/creative.min.css" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
header.masthead {
|
||||
padding-top: 10rem;
|
||||
padding-bottom: calc(10rem - 56px);
|
||||
background-image: url("img/header.jpg");
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
.bg-dark{
|
||||
padding:2rem 0
|
||||
}
|
||||
</style>
|
||||
|
||||
<title>LibreTime Radio Automation - Using Vagrant and Virturalbox for developing LibreTime</title>
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top navbar-shrink" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="index"> LibreTime Radio Automation </a>
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="quickstart">Install</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="features">Features</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="tour">Tour</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="faq">FAQ</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="advanced-configuration">Docs</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link js-scroll-trigger" href="contribute">Help Us!</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container-lg">
|
||||
<nav class="content">
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
section{padding:4rem 0}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<section class="bg-primary">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto text-center">
|
||||
<h2 class="section-heading text-white"> Using Vagrant and Virturalbox for developing LibreTime </h2>
|
||||
<hr class="light my-4">
|
||||
<p class="text-faded mb-4">
|
||||
The fastest way to get LibreTime up and running in a way to hack on its source code or to test it locally.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<blockquote>
|
||||
<p>Prerequisites: git, <a href="https://vagrantup.com">Vagrant</a>, libvirt or VirturalBox</p>
|
||||
</blockquote>
|
||||
|
||||
<h3 id="virtual-box">Virtual Box</h3>
|
||||
|
||||
|
@ -135,3 +227,27 @@ to re-run the installer.</p>
|
|||
|
||||
<p>If you only want to re-run parts of the installer, use <code class="highlighter-rouge">--provision-with $step</code>. The
|
||||
supported steps are <code class="highlighter-rouge">prepare</code>, <code class="highlighter-rouge">install</code>, <code class="highlighter-rouge">install-mkdocs</code> and <code class="highlighter-rouge">start-mkdocs</code>.</p>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<section class="bg-dark text-white">
|
||||
<div class="text-footer">
|
||||
<small>Hosted on GitHub Pages — Theme by <a href="https://github.com/ned-kelly">ned-kelly</a> and <a href="https://github.com/zklosko">Zachary Klosko</a> | </small>
|
||||
<small>Code and docs licensed under GPLv2. More details <a href="http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/about-this-manual/">here</a>. </small>
|
||||
</div>
|
||||
</section>
|
||||
</footer>
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
Tutorials
|
||||
------
|
||||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
|
||||
This page contains links to number of tutorials.
|
||||
Please provide any feedback on this [discourse forum post](https://discourse.libretime.org/t/new-tutorials-available-on-libretime-wiki/270/2).
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Backing up the server
|
||||
--------------------
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Exporting the schedule
|
||||
----------------------
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
sidebar: appendix
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Media Library Folders
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Settings
|
||||
|
||||

|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
sidebar: installer
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Host configuration
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
sidebar: devs
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Interface Localization
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Radio Broadcasting 101 - UNESCO Public Radio Guide
|
||||
|
||||
The UNESCO publication [*Community Radio - A user's guide to the technology*](img/CommunityRadioUserGuide.pdf)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Broadcasting live with MIXXX or B.U.T.T.
|
||||
|
||||
[](https://www.youtube-nocookie.com/embed/4GLsU9hPTtM "How to Livestream Your Show")
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# 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.
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Reverse Proxy Connections
|
||||
|
||||
In some deployments, the LibreTime server is deployed behind a reverse proxy,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
sidebar: appendix
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Rights and Royalties
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
# Scheduling Shows
|
||||
|
||||
Log in using your username and password using the link in the upper right corner. (If you just installed
|
||||
|
|
|
@ -1,17 +1,10 @@
|
|||
---
|
||||
sidebar: devs
|
||||
layout: page
|
||||
title: Using Vagrant and Virturalbox 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.
|
||||
---
|
||||
|
||||
# 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.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
* [Git](https://git-scm.com/)
|
||||
* [Vagrant](https://vagrantup.com)
|
||||
> Prerequisites: git, [Vagrant](https://vagrantup.com), libvirt or VirturalBox
|
||||
|
||||
### Virtual Box
|
||||
|
||||
|
|
Loading…
Reference in New Issue