From 3ec85d7821da2b270c9a6dc1c988e7c453ca5325 Mon Sep 17 00:00:00 2001 From: Jonas L Date: Mon, 21 Feb 2022 08:16:54 +0100 Subject: [PATCH] docs: update structure and create links between pages (#1611) * docs: rework files structure * rewrite documentation entrypoint * update category files and use yml * add manuals entry page * update admin-manual titles and page order * create releases sections * move ssl configuration to reverse proxy * docs: update website vars and links * update release note codeblock syntax key * resurect troubleshooting guide * Update freeipa custom auth documentation * add notice about the state of the documentation * update the backup documentation * tmp: allow to deploy the website for preview * Don't use require.resolve for plugins * Update the main page link dest * update development environment title * rewrite the install/upgrade/migrate as guides * update website docs sections links * Fix urls * move release note to documentation * move home links to vars files * tmp: update deploy url * add react to tsconfig to handle jsx linting * fix: replace absolute url to relative path to files * tmp: allow CI Website dpeloy on working branch * Update release note title * use default syntax highlighting theme * update the troubleshooting guide * Wording * use CodeBlock components * Better prose * remove api_client config section * fix prose errors * update import prefix for vars file * reroder docs manuals links * use sentence capitalization for page titles * Wording * missing word * Update note about syslog log file * wording --- .github/workflows/website.yml | 4 +- .vale.ini | 2 + docs/README.md | 29 ++++ docs/_interface-customization.md | 2 +- docs/_troubleshooting.md | 57 ------- docs/admin-manual/README.md | 33 ++++ docs/admin-manual/_category_.yml | 2 + docs/admin-manual/backup.md | 56 +++++++ .../custom-authentication.md} | 13 +- .../default-passwords.md | 4 +- ...t-screenshot223-icecast_utf-8_metadata.png | Bin .../icecast.md | 5 +- .../server-time.md} | 4 +- docs/admin-manual/setup/_category_.yml | 2 + .../setup/configuration.md} | 28 +--- docs/admin-manual/setup/install.md | 144 ++++++++++++++++++ .../setup/migrate-from-airtime.md | 40 +++++ .../setup}/reverse-proxy.md | 35 +++-- docs/admin-manual/setup/upgrade.md | 45 ++++++ .../troubleshooting-status-page.png | Bin 0 -> 145915 bytes docs/admin-manual/troubleshooting.md | 52 +++++++ docs/admin-manual/tutorials/_category_.yml | 4 + .../tutorials/setup-a-firewall-using-ufw.md | 28 ++++ .../setup-a-static-ip-using-netplan.md | 44 ++++++ docs/appendix/_category_.json | 4 - docs/appendix/_category_.yml | 2 + docs/developer-manual/README.md | 13 ++ docs/developer-manual/_category_.yml | 2 + .../environment.md} | 4 +- .../api.md => developer-manual/legacy-api.md} | 0 .../widgets-widgets_player.png | Bin .../widgets-widgets_schedule.png | Bin .../widgets-widgets_settings.png | Bin .../{appendix => developer-manual}/widgets.md | 2 +- docs/getting-started/_category_.json | 4 - docs/getting-started/install.md | 117 -------------- ...ssl-screenshot547-connection_untrusted.png | Bin 71393 -> 0 bytes .../ssl-screenshot548-confirm_exception.png | Bin 41027 -> 0 bytes docs/getting-started/ssl.md | 17 --- docs/guides/_category_.json | 4 - docs/intro.md | 57 ------- .../releases/3.0.0-alpha.10.md | 16 +- docs/releases/README.md | 15 ++ docs/releases/_category_.yml | 2 + docs/releases/unreleased.md | 3 + docs/server-config/_category_.json | 4 - docs/server-config/backing-up-the-server.md | 68 --------- docs/upgrading.md | 49 ------ docs/user-manual/README.md | 21 +++ docs/user-manual/_category_.yml | 2 + ...alendar-screenshot353-contents_of_show.png | Bin .../calendar-screenshot451-calendar.png | Bin ...ndar-screenshot452-calendar_resolution.png | Bin .../calendar-screenshot459-update_show.png | Bin ...endar-screenshot488-add_remove_content.png | Bin .../calendar-screenshot489-show_content.png | Bin ...dar-screenshot490-delete_this_instance.png | Bin ...t583-show_instance_description_vc9ooit.png | Bin docs/{guides => user-manual}/calendar.md | 2 +- .../dashboard-columns.png | Bin .../dashboard-delete-extra.png | Bin .../dashboard-drag-and-drop.png | Bin .../dashboard-end-gap.png | Bin .../dashboard-filter.png | Bin .../dashboard-now-playing.png | Bin docs/{guides => user-manual}/dashboard.md | 2 +- .../listener-stats-stream-stats.jpg | Bin .../{guides => user-manual}/listener-stats.md | 0 .../{guides => user-manual}/live-broadcast.md | 0 .../playlists-playlist-editor.png | Bin .../playlists-smartblock-advanced.png | Bin .../playlists-smartblock-content.png | Bin .../playlists-smartblock-options.png | Bin docs/{guides => user-manual}/playlists.md | 2 +- .../playout-history-history-templates.png | Bin .../playout-history-log-sheet.png | Bin .../playout-history-new-hist-temp.png | Bin .../playout-history.md | 2 +- .../podcasts-podcasts_dashboard.png | Bin .../podcasts-podcasts_editor.png | Bin docs/{guides => user-manual}/podcasts.md | 2 +- ...ring-media-screenshot126-debra_silence.png | Bin ...preparing-media-screenshot175-ex_falso.png | Bin .../preparing-media.md | 2 +- .../scheduling-shows-on-air-status.png | Bin ...cheduling-shows-screenshot558-add_show.png | Bin ...heduling-shows-screenshot560-show_when.png | Bin ...g-shows-screenshot561-add_show_content.png | Bin ...-shows-screenshot562-drag_show_content.png | Bin .../scheduling-shows-select_files.png | Bin .../scheduling-shows.md | 2 +- .../settings-api-settings.png | Bin .../settings-general-playback-settings.png | Bin ...ettings-libretime-master-source-stream.png | Bin .../settings-libretime-show-source-stream.png | Bin .../settings-station-info-settings.png | Bin docs/{guides => user-manual}/settings.md | 2 +- ...status-screenshot521-system_status_240.png | Bin docs/{guides => user-manual}/status.md | 0 .../users-user-edit.png | Bin docs/{guides => user-manual}/users.md | 2 +- .../webstreams-webstream.jpg | Bin docs/{guides => user-manual}/webstreams.md | 2 +- website/docusaurus.config.js | 66 +++----- website/src/pages/index.tsx | 32 ++-- website/tsconfig.json | 1 + website/vars.js | 36 +++++ 107 files changed, 682 insertions(+), 512 deletions(-) create mode 100644 docs/README.md delete mode 100644 docs/_troubleshooting.md create mode 100644 docs/admin-manual/README.md create mode 100644 docs/admin-manual/_category_.yml create mode 100644 docs/admin-manual/backup.md rename docs/{server-config/freeipa.md => admin-manual/custom-authentication.md} (94%) rename docs/{getting-started => admin-manual}/default-passwords.md (97%) rename docs/{server-config => admin-manual}/icecast-screenshot223-icecast_utf-8_metadata.png (100%) rename docs/{server-config => admin-manual}/icecast.md (96%) rename docs/{getting-started/set-server-time.md => admin-manual/server-time.md} (98%) create mode 100644 docs/admin-manual/setup/_category_.yml rename docs/{server-config/host-configuration.md => admin-manual/setup/configuration.md} (74%) create mode 100644 docs/admin-manual/setup/install.md create mode 100644 docs/admin-manual/setup/migrate-from-airtime.md rename docs/{getting-started => admin-manual/setup}/reverse-proxy.md (64%) create mode 100644 docs/admin-manual/setup/upgrade.md create mode 100644 docs/admin-manual/troubleshooting-status-page.png create mode 100644 docs/admin-manual/troubleshooting.md create mode 100644 docs/admin-manual/tutorials/_category_.yml create mode 100644 docs/admin-manual/tutorials/setup-a-firewall-using-ufw.md create mode 100644 docs/admin-manual/tutorials/setup-a-static-ip-using-netplan.md delete mode 100644 docs/appendix/_category_.json create mode 100644 docs/appendix/_category_.yml create mode 100644 docs/developer-manual/README.md create mode 100644 docs/developer-manual/_category_.yml rename docs/{local-dev.md => developer-manual/environment.md} (97%) rename docs/{appendix/api.md => developer-manual/legacy-api.md} (100%) rename docs/{appendix => developer-manual}/widgets-widgets_player.png (100%) rename docs/{appendix => developer-manual}/widgets-widgets_schedule.png (100%) rename docs/{appendix => developer-manual}/widgets-widgets_settings.png (100%) rename docs/{appendix => developer-manual}/widgets.md (93%) delete mode 100644 docs/getting-started/_category_.json delete mode 100644 docs/getting-started/install.md delete mode 100644 docs/getting-started/ssl-screenshot547-connection_untrusted.png delete mode 100644 docs/getting-started/ssl-screenshot548-confirm_exception.png delete mode 100644 docs/getting-started/ssl.md delete mode 100644 docs/guides/_category_.json delete mode 100644 docs/intro.md rename website/src/pages/release-notes.md => docs/releases/3.0.0-alpha.10.md (93%) create mode 100644 docs/releases/README.md create mode 100644 docs/releases/_category_.yml create mode 100644 docs/releases/unreleased.md delete mode 100644 docs/server-config/_category_.json delete mode 100644 docs/server-config/backing-up-the-server.md delete mode 100644 docs/upgrading.md create mode 100644 docs/user-manual/README.md create mode 100644 docs/user-manual/_category_.yml rename docs/{guides => user-manual}/calendar-screenshot353-contents_of_show.png (100%) rename docs/{guides => user-manual}/calendar-screenshot451-calendar.png (100%) rename docs/{guides => user-manual}/calendar-screenshot452-calendar_resolution.png (100%) rename docs/{guides => user-manual}/calendar-screenshot459-update_show.png (100%) rename docs/{guides => user-manual}/calendar-screenshot488-add_remove_content.png (100%) rename docs/{guides => user-manual}/calendar-screenshot489-show_content.png (100%) rename docs/{guides => user-manual}/calendar-screenshot490-delete_this_instance.png (100%) rename docs/{guides => user-manual}/calendar-screenshot583-show_instance_description_vc9ooit.png (100%) rename docs/{guides => user-manual}/calendar.md (99%) rename docs/{guides => user-manual}/dashboard-columns.png (100%) rename docs/{guides => user-manual}/dashboard-delete-extra.png (100%) rename docs/{guides => user-manual}/dashboard-drag-and-drop.png (100%) rename docs/{guides => user-manual}/dashboard-end-gap.png (100%) rename docs/{guides => user-manual}/dashboard-filter.png (100%) rename docs/{guides => user-manual}/dashboard-now-playing.png (100%) rename docs/{guides => user-manual}/dashboard.md (98%) rename docs/{guides => user-manual}/listener-stats-stream-stats.jpg (100%) rename docs/{guides => user-manual}/listener-stats.md (100%) rename docs/{guides => user-manual}/live-broadcast.md (100%) rename docs/{guides => user-manual}/playlists-playlist-editor.png (100%) rename docs/{guides => user-manual}/playlists-smartblock-advanced.png (100%) rename docs/{guides => user-manual}/playlists-smartblock-content.png (100%) rename docs/{guides => user-manual}/playlists-smartblock-options.png (100%) rename docs/{guides => user-manual}/playlists.md (98%) rename docs/{guides => user-manual}/playout-history-history-templates.png (100%) rename docs/{guides => user-manual}/playout-history-log-sheet.png (100%) rename docs/{guides => user-manual}/playout-history-new-hist-temp.png (100%) rename docs/{guides => user-manual}/playout-history.md (99%) rename docs/{guides => user-manual}/podcasts-podcasts_dashboard.png (100%) rename docs/{guides => user-manual}/podcasts-podcasts_editor.png (100%) rename docs/{guides => user-manual}/podcasts.md (93%) rename docs/{guides => user-manual}/preparing-media-screenshot126-debra_silence.png (100%) rename docs/{guides => user-manual}/preparing-media-screenshot175-ex_falso.png (100%) rename docs/{guides => user-manual}/preparing-media.md (99%) rename docs/{guides => user-manual}/scheduling-shows-on-air-status.png (100%) rename docs/{guides => user-manual}/scheduling-shows-screenshot558-add_show.png (100%) rename docs/{guides => user-manual}/scheduling-shows-screenshot560-show_when.png (100%) rename docs/{guides => user-manual}/scheduling-shows-screenshot561-add_show_content.png (100%) rename docs/{guides => user-manual}/scheduling-shows-screenshot562-drag_show_content.png (100%) rename docs/{guides => user-manual}/scheduling-shows-select_files.png (100%) rename docs/{guides => user-manual}/scheduling-shows.md (99%) rename docs/{guides => user-manual}/settings-api-settings.png (100%) rename docs/{guides => user-manual}/settings-general-playback-settings.png (100%) rename docs/{guides => user-manual}/settings-libretime-master-source-stream.png (100%) rename docs/{guides => user-manual}/settings-libretime-show-source-stream.png (100%) rename docs/{guides => user-manual}/settings-station-info-settings.png (100%) rename docs/{guides => user-manual}/settings.md (99%) rename docs/{guides => user-manual}/status-screenshot521-system_status_240.png (100%) rename docs/{guides => user-manual}/status.md (100%) rename docs/{guides => user-manual}/users-user-edit.png (100%) rename docs/{guides => user-manual}/users.md (98%) rename docs/{guides => user-manual}/webstreams-webstream.jpg (100%) rename docs/{guides => user-manual}/webstreams.md (95%) create mode 100644 website/vars.js diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 1fdf7a63e..7c83beef7 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -2,7 +2,7 @@ name: Website on: push: - branches: [main] + branches: [main, docs_update] paths: - .github/workflows/website.yml - website/** @@ -60,7 +60,7 @@ jobs: - name: Deploy uses: peaceiris/actions-gh-pages@v3 - if: ${{ github.ref == 'refs/heads/main' }} + if: ${{ github.ref == 'refs/heads/docs_update' }} with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./website/build diff --git a/.vale.ini b/.vale.ini index 1a3f9a4b7..61a43c593 100644 --- a/.vale.ini +++ b/.vale.ini @@ -5,3 +5,5 @@ Vocab = Docs [*.md] BasedOnStyles = Vale, Google, Microsoft, LibreTime + +Vale.Spelling = False diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..036da5606 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,29 @@ +--- +title: Welcome +sidebar_position: 10 +--- + +Welcome to the **LibreTime documentation**, you should find everything you need to know about LibreTime. + +:::caution + +:construction: LibreTime is in being modernized and is finalizing the forking process. Be aware that breaking change may occur and that the documentation may not be up to date. + +::: + +## Getting started + +**Are you new to LibreTime? This is the place to start!** + +The documentation is divided into multiple parts: + +- the [Administrator manual](./admin-manual) provide guides and references to setup and configure LibreTime. +- the [User manual](./user-manual) provide guides and tutorials for managers, and content creators to use LibreTime. +- the [Developer manual](./developer-manual) provide guides to integrate LibreTime, or improve and contribute to LibreTime. + +## Getting help + +Having trouble? We’d like to help! + +- [:question: Try the Forum – it’s got answers to many common questions](https://discourse.libretime.org/). +- [:bug: Report bugs with LibreTime in our ticket tracker.](https://github.com/libretime/libretime/issues) diff --git a/docs/_interface-customization.md b/docs/_interface-customization.md index 8eb876580..d287729da 100644 --- a/docs/_interface-customization.md +++ b/docs/_interface-customization.md @@ -26,7 +26,7 @@ Any custom changes that you make to the administration interface should be backe # Modifying the Icecast interface -If you have installed Icecast, in the directory `/etc/icecast2/web/` you will find several XSLT and other files which are used to generate the Icecast web interface. If you are familiar with HTML you should be able to modify these pages, as they are well commented. You do have to be careful with syntax, because something as simple as a missing bracket can cause the Icecast web interface to break down. +If you have installed Icecast, in the directory `/etc/icecast2/web/` you will find several XSLT and other files which are used to generate the Icecast web interface. If you are familiar with HTML you should be able to modify these pages, as they're well commented. You do have to be careful with syntax, because something as simple as a missing bracket can cause the Icecast web interface to break down. For example, you could change the `status.xsl` page: diff --git a/docs/_troubleshooting.md b/docs/_troubleshooting.md deleted file mode 100644 index 313521f51..000000000 --- a/docs/_troubleshooting.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Troubleshooting ---- - -Is something not working for your LibreTime installation? Here's a quick guide to help you -troubleshoot most issues you'll run into. - -## 1. Let's check the basics - -Is your server on? (We hate to ask.) Is it connected to the internet? Is it connected to your -broadcast console or mixer if being used for soundcard output? If you're using a cloud host, -does your cloud provider's status page indicate any system outages? - -Once you know your physical (or virtual) system is functional, was a show scheduled for the -current time with tracks or an autoplaylist scheduled? - -## 2. Are all services working? - -If you can log in to LibreTime, go to **Settings** > **Status** to see the service indicators. -A fully working server should have green checkmarks next to all services. - -![](/img/Screenshot521-System_status_240.png) - -If one of the services isn't working, text will display with a terminal command to restart the service -or get status information for a particular service. For example (for Ubuntu 18.04), the following -commands would restart or check the status of LibreTime's Liquidsoap instance, respectively. - -```bash -sudo systemctl restart libretime-liquidsoap -sudo systemctl status libretime-liquidsoap -``` - -If the service isn't wanting to restart, look at its status for clues as to why it stopped working. - -> If you find yourself constantly needing to restart a service, there's a chance it was never set to autostart on system boot. Use `sudo systemctl enable servicename` to fix this problem. - -## 3. Known problems - -If you have one of these issues, please try to resolve it with the instructions below before moving on in the -troubleshooting checklist. - -- **Streaming player on Microsite and Listen player on Dashboard not working?** The problem could be caused by a bug in writing to the database during the setup wizard. This can be fixed by going to **Settings** -> **Stream Settings** and toggling the **Default Streaming** and **Custom/ 3rd Party Streaming** option, accepting the popup dialogues, and clicking **Save** at the top of the settings page. -- **File not importing successfully?** LibreTime has been known to work with MP3 and WAV files, encoded using 41,100 Hz. Variable Bit Rate (VBR) files are currently hit or miss with the importer. Please convert your file to an MP3 or WAV at 41,100 Hz. and try uploading again. -- **Podcast hosted by Anchor.fm not importing?** There is no known work-around at this time. Ask your producers to provide their show files manually or check with the show's distributer. -- **Tracks won't publish?** We know the Publish screen is broken and we're working on it. A potential work-around is to use an external podcast host like [Anchor.fm](https://anchor.fm) or [Blubrry](https://blubrry.com/). -- **Can't hear any sound coming from your soundcard (for analog audio output)?** If you are using ALSA as your audio driver, use `alsamixer` to see the current volume your system is set to. If still nothing, go to **Settings** > **Streams** and make sure **Hardware Audio Output** is checked. If you need to play a tone to help you troubleshoot, you can use `speaker-test` (does not come installed with LibreTime). - -## 4. Read the docs - -Our main documentation listing is [here](/docs) and can be searched [here](/search). - -## 5. Reach out to the developers - -LibreTime is still in active development, meaning bugs and issues are expected to pop up every so often. -See if an issue is still open by looking at our [Issues page](https://github.com/LibreTime/libretime/issues). -If you don't get the help you need, please [open an issue](https://github.com/LibreTime/libretime/issues/new/choose) -so we can take a look at it. diff --git a/docs/admin-manual/README.md b/docs/admin-manual/README.md new file mode 100644 index 000000000..6801a9cc8 --- /dev/null +++ b/docs/admin-manual/README.md @@ -0,0 +1,33 @@ +--- +title: Administrator manual +--- + +Welcome to the **LibreTime administrator manual**, you should find guides and references to setup and configure LibreTime. + +:::caution + +This documentation assumes that you: + +- have basic understanding of command line interfaces, +- have a basic understanding of networking. + +::: + +:::tip + +Before following any steps, be sure that your system is up-to-date. + +::: + +## Install and configure + +- [:rocket: Install LibreTime](./setup/install.md) +- [:arrow_up: Upgrade from a previous install](./setup/upgrade.md) +- [:airplane_arriving: Migrate from Airtime](./setup/migrate-from-airtime.md) +- [:gear: Configure your installation](./setup/configuration.md) +- [:lock: Put your installation behind a reverse proxy](./setup/reverse-proxy.md) + +## Advanced + +- [:warning: Setup automated backups](./backup.md) +- [:heavy_check_mark: Use a custom authentication system](./custom-authentication.md) diff --git a/docs/admin-manual/_category_.yml b/docs/admin-manual/_category_.yml new file mode 100644 index 000000000..1d07c9c20 --- /dev/null +++ b/docs/admin-manual/_category_.yml @@ -0,0 +1,2 @@ +label: Admin manual +position: 20 diff --git a/docs/admin-manual/backup.md b/docs/admin-manual/backup.md new file mode 100644 index 000000000..90507d851 --- /dev/null +++ b/docs/admin-manual/backup.md @@ -0,0 +1,56 @@ +--- +title: Backup +sidebar_position: 10 +--- + +## Create a backup + +This guide walk you though the steps required to create a full backup of your installation. + +:::info + +Remember to **automate** and **test** the backup process and to have it run regularly. Having an **automated** and **tested** restoring process is also recommended. + +::: + +:::caution + +Feel free to pick the backup software of your choice, but know that rsync and similar tools are not backup tools. You could use [restic](https://restic.net/) or [borg](https://borgbackup.readthedocs.io/). + +::: + +### Backup the configuration + +On common setups, you need to backup the entire `/etc/airtime` folder. + +### Backup the database + +You need to backup the PostgreSQL database, which holds the entire data of your installation. + +Here is an example to dump your PostgreSQL database: + +```bash +sudo -u postgres pg_dump --file=libretime.sql libretime +``` + +Please read the `pg_dump` usage for additional details. + +### Backup the storage + +You need to backup the entire file storage, which holds all the files of your installation. + +The path to your storage was defined during the installation process. + +## Restore a backup + +### Restore the configuration + +Copy the backed configuration files back to the configuration folder. + +### Restore the database + +:construction: + +### Restore the storage + +:construction: diff --git a/docs/server-config/freeipa.md b/docs/admin-manual/custom-authentication.md similarity index 94% rename from docs/server-config/freeipa.md rename to docs/admin-manual/custom-authentication.md index b0c198463..b3808fdb3 100644 --- a/docs/server-config/freeipa.md +++ b/docs/admin-manual/custom-authentication.md @@ -1,13 +1,16 @@ --- -title: FreeIPA configuration +title: Custom authentication +sidebar_position: 40 --- +## Setup FreeIPA authentication + You can configure LibreTime to delegate all authentication to a FreeIPA server. This allows you users to use their existing FreeIPA credentials. For this to work you need to configure Apache to use `mod_authnz_pam` and `mod_intercept_form_submit`. -## Apache configuration +### Apache configuration After installing the needed modules you can set up Apache to intercept form logins and check them against pam. @@ -37,7 +40,7 @@ check them against pam. ``` -## PAM configuration +### PAM configuration The above configuration expects a PAM configuration for the `http-libretime` service. @@ -48,7 +51,7 @@ auth required pam_sss.so account required pam_sss.so ``` -## LDAP configuration +### LDAP configuration LibreTime needs direct access to LDAP so it can fetch additional information. It does so with a [system account](https://www.freeipa.org/page/HowTo/LDAP#System_Accounts) that you need to @@ -94,7 +97,7 @@ groupmap_admin = 'cn=admins,cn=groups,cn=accounts,dc=int,dc=example,dc=org' groupmap_superadmin = 'cn=superadmin,cn=groups,cn=accounts,dc=int,dc=example,dc=org' ``` -## Enable FreeIPA authentication +### Enable FreeIPA authentication After everything is set up properly you can enable FreeIPA auth in `airtime.conf`: diff --git a/docs/getting-started/default-passwords.md b/docs/admin-manual/default-passwords.md similarity index 97% rename from docs/getting-started/default-passwords.md rename to docs/admin-manual/default-passwords.md index 6f07c116b..852971988 100644 --- a/docs/getting-started/default-passwords.md +++ b/docs/admin-manual/default-passwords.md @@ -1,6 +1,6 @@ --- -title: Change Default Passwords -sidebar_position: 3 +title: Change default passwords +sidebar_position: 80 --- ## LibreTime diff --git a/docs/server-config/icecast-screenshot223-icecast_utf-8_metadata.png b/docs/admin-manual/icecast-screenshot223-icecast_utf-8_metadata.png similarity index 100% rename from docs/server-config/icecast-screenshot223-icecast_utf-8_metadata.png rename to docs/admin-manual/icecast-screenshot223-icecast_utf-8_metadata.png diff --git a/docs/server-config/icecast.md b/docs/admin-manual/icecast.md similarity index 96% rename from docs/server-config/icecast.md rename to docs/admin-manual/icecast.md index 83dad33d7..796c7cde4 100644 --- a/docs/server-config/icecast.md +++ b/docs/admin-manual/icecast.md @@ -1,5 +1,6 @@ --- -title: Icecast Configuration +title: Icecast configuration +sidebar_position: 30 --- ## Background @@ -20,7 +21,7 @@ Setting a higher bitrate for your output stream will only benefit your listeners ## UTF-8 metadata in Icecast MP3 streams -When sending metadata about your stream to an Icecast server in non-Latin alphabets, you may find that Icecast does not display the characters correctly for an MP3 stream, even though they are displayed correctly for an Ogg Vorbis stream. In the following screenshot, Russian characters are being displayed incorrectly in the _Current Song_ field for the MP3 stream: +When sending metadata about your stream to an Icecast server in non-Latin alphabets, you may find that Icecast does not display the characters correctly for an MP3 stream, even though they're displayed correctly for an Ogg Vorbis stream. In the following screenshot, Russian characters are being displayed incorrectly in the _Current Song_ field for the MP3 stream: ![](./icecast-screenshot223-icecast_utf-8_metadata.png) diff --git a/docs/getting-started/set-server-time.md b/docs/admin-manual/server-time.md similarity index 98% rename from docs/getting-started/set-server-time.md rename to docs/admin-manual/server-time.md index 0ab3600fb..b911fe441 100644 --- a/docs/getting-started/set-server-time.md +++ b/docs/admin-manual/server-time.md @@ -1,6 +1,6 @@ --- -title: Setting the Server Time -sidebar_position: 2 +title: Setting the server time +sidebar_position: 20 --- Accurate time keeping on your server is vital for LibreTime performance. You can confirm that the date and time of your server are set correctly with the `date` command. diff --git a/docs/admin-manual/setup/_category_.yml b/docs/admin-manual/setup/_category_.yml new file mode 100644 index 000000000..517671036 --- /dev/null +++ b/docs/admin-manual/setup/_category_.yml @@ -0,0 +1,2 @@ +label: Setup +position: 00 diff --git a/docs/server-config/host-configuration.md b/docs/admin-manual/setup/configuration.md similarity index 74% rename from docs/server-config/host-configuration.md rename to docs/admin-manual/setup/configuration.md index ee16845a2..d54ca322f 100644 --- a/docs/server-config/host-configuration.md +++ b/docs/admin-manual/setup/configuration.md @@ -1,5 +1,6 @@ --- -title: Host configuration +title: Configuration +sidebar_position: 20 --- The streaming host configuration for LibreTime is shown in the file `/etc/airtime/liquidsoap.cfg` which is automatically generated by the **Streams** page, found on the **System** menu of the LibreTime administration interface. For this reason, you would not normally edit the streaming configuration manually, as any changes are likely to be overwritten by the administration interface. @@ -8,7 +9,7 @@ The streaming host configuration for LibreTime is shown in the file `/etc/airtim Optionally, you may wish to edit the file `/etc/airtime/airtime.conf` to set the PostgreSQL database host, and the username and password to connect to the database with. -You can also set options for RabbitMQ messaging and the LibreTime server in this file, although you should not normally need to adjust the defaults unless you are running a large LibreTime system distributed across multiple servers. To run the LibreTime server in demo mode, which changes the greeting on the login page and prevents user accounts from being created or modified, set the value of _demo_ to 1. +You can also set options for RabbitMQ messaging and the LibreTime server in this file, although you shouldn't normally need to adjust the defaults unless you are running a large LibreTime system distributed across multiple servers. To run the LibreTime server in demo mode, which changes the greeting on the login page and prevents user accounts from being created or modified, set the value of _demo_ to 1. ```ini title="/etc/airtime/airtime.conf" [database] @@ -51,26 +52,9 @@ sudo systemctl restart libretime-celery sudo systemctl restart libretime-analyzer ``` -## API client configuration - -The LibreTime API enables many types of information about the broadcast schedule and configuration to be retrieved from the LibreTime server. Other than the live-info and week-info data fetched by website widgets (see the chapter _Exporting the schedule_), all API requests must be authenticated using the secret API key stored in the file `/etc/airtime/api_client.cfg` on the LibreTime server. This key is autogenerated during LibreTime installation and should be unique for each server. - -If you intend to use the LibreTime API across a public network, for security reasons it is highly recommended that all API requests are sent over encrypted https: and that the web server is configured to accept requests to the api/ directory from specific host names or IP addresses only. - -If you have changed the _base_url_, _base_port_ or _base_dir_ setting in `/etc/airtime/airtime.conf` from the defaults, you will probably also have to update the _Hostname_ settings in the file `/etc/airtime/api_client.cfg` accordingly. - -```ini -bin_dir = /usr/lib/airtime/api_clients -api_key = 'XXXXXXXXXXXXXXXXXXXX' -api_base = api -host = libretime.example.com -base_port = 80 -base_dir = / -``` - ## Apache max file size configuration -By default, the maximum upload file size is 40 MB, which may not be large enough for some stations, especially if they are uploading prerecorded shows. The setting for this is located in `/etc/apache2/sites-available/airtime.config`. Search for and update the following in megabytes: +By default, the maximum upload file size is 40 MB, which may not be large enough for some stations, especially if they're uploading prerecorded shows. The setting for this is located in `/etc/apache2/sites-available/airtime.config`. Search for and update the following in megabytes: ```ini ; Maximum allowed size for uploaded files. @@ -80,7 +64,7 @@ upload_max_filesize = 40M post_max_size = 40M ``` -For quick reference, 1024 MB = 1 GB and 2048 MB = 2 GB, but most will be okay with rounding to the nearest thousand. After updating the config file, restart Apache with `sudo systemctl restart apache2`. +For quick reference, 1024 MB = 1 GB and 2048 MB = 2 GB, but most should be okay with rounding to the nearest thousand. After updating the config file, restart Apache with `sudo systemctl restart apache2`. ## Playout settings @@ -168,7 +152,7 @@ If the Airtime logs indicate failures to connect to the RabbitMQ server, such as 2013-10-31 08:21:11,255 ERROR - \[pypomessagehandler.py : main() : line 99\] - Error connecting to RabbitMQ Server. Trying again in few seconds - See more at: https://forum.sourcefabric.org/discussion/16050/#sthash.W8OJrNFm.dpuf ``` -but the RabbitMQ server is running normally, this error might be due to a change in the server's hostname since LibreTime installation. Directory names under `/var/lib/rabbitmq/mnesia/` indicate that RabbitMQ's database files are organised according to the hostname of the server (ex. `rabbit@airtime`) where the hostname is `airtime.example.com`. If the hostname has changed, it may be necessary to reconfigure RabbitMQ manually, as follows: +but the RabbitMQ server is running normally, this error might be due to a change in the server's hostname since LibreTime installation. Directory names under `/var/lib/rabbitmq/mnesia/` indicate that RabbitMQ's database files are organized according to the hostname of the server (ex. `rabbit@airtime`) where the hostname is `airtime.example.com`. If the hostname has changed, it may be necessary to reconfigure RabbitMQ manually, as follows: 1. Delete the files in `/var/lib/rabbitmq/mnesia/` diff --git a/docs/admin-manual/setup/install.md b/docs/admin-manual/setup/install.md new file mode 100644 index 000000000..3c09ede17 --- /dev/null +++ b/docs/admin-manual/setup/install.md @@ -0,0 +1,144 @@ +--- +title: Install +sidebar_position: 10 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import CodeBlock from '@theme/CodeBlock'; +import vars from '@site/vars'; + +This guide walk you though the steps required to install LibreTime on your system. + +:::tip + +If you are coming from **Airtime**, please follow the [Airtime migration guide](./migrate-from-airtime.md). + +::: + +You can install LibreTime using the one of the following methods: + +- [:rocket: Using the installer](#using-the-installer) +- :construction: Using Ansible + +#### Minimum system requirements + +- One of the following Linux distributions + - Ubuntu [current LTS](https://wiki.ubuntu.com/Releases) + - Debian [current stable](https://www.debian.org/releases/) +- 1 Ghz Processor +- 2 GB RAM recommended (1 GB required) +- A static external IP address ([How to setup a static ip using Netplan](../tutorials/setup-a-static-ip-using-netplan.md)) + +## Using the installer + +The installer is shipped in the released tarballs or directly in the project repository. + +### Download + +You can either download the latest released tarball or clone the repository. + + + + +Download the [latest released](https://github.com/libretime/libretime/releases) tarball from Github. + +Or directly from the command-line: + + +wget https://github.com/libretime/libretime/releases/download/{vars.version}/libretime-{vars.version}.tar.gz + + +And extract the tarball: + + +tar -xvf libretime-{vars.version}.tar.gz && cd libretime + + + + + +Clone the project repository: + +```bash +git clone https://github.com/libretime/libretime +cd libretime +``` + +And checkout the latest version: + + +git checkout {vars.version} + + + + + +### Run the installer + +Install LibreTime with the recommended options: + +```bash +sudo ./install -fiap +``` + +Additional options can be listed with the following command: + +```bash +./install --help +``` + +Once the installation is completed, open [http://localhost:80](http://localhost:80) to complete the [setup wizard](#setup-wizard). + +:::note + +- If installed on a remote device, make sure to replace `localhost` with your server's remote address. +- If installed with a custom port, make sure to replace `80` with the custom port. + +::: + +:::warning + +Make sure that you have configured a **firewall** and it's not blocking connection to the desired ports. + +- [How to setup a firewall using UFW](../tutorials/setup-a-firewall-using-ufw.md) + +LibreTime requires the following ports to be open: + +- `80` for the web interface, +- `8000` for the Icecast streams, +- `8001` and `8002` for the live stream input endpoint. + +Consider putting your installation behind a [reverse proxy](./reverse-proxy.md) to increase the security. + +::: + +#### Using hardware audio output + +If you plan to output analog audio directly to a mixing console or transmitter, the user running LibreTime (by default `www-data`) needs to be added to the `audio` user group using the command below: + +```bash +sudo adduser www-data audio +``` + +### Setup wizard + +The setup wizard walk you through the rest of the installation process. + +#### Changing default passwords + +It's recommended that you change the passwords prompted in the setup wizard. Be sure to apply the changes on the server before going to any next step. + +You can change the default PostgreSQL user password using: + +```bash +sudo -u postgres psql -c "ALTER USER airtime PASSWORD 'new-password';" +``` + +You can change the default RabbitMQ user password using: + +```bash +sudo rabbitmqctl change_password "airtime" "new-password" +``` + +Once completed, it's recommended to [install a reverse proxy](./reverse-proxy.md) to setup SSL termination and secure your installation. diff --git a/docs/admin-manual/setup/migrate-from-airtime.md b/docs/admin-manual/setup/migrate-from-airtime.md new file mode 100644 index 000000000..ae1d6abc2 --- /dev/null +++ b/docs/admin-manual/setup/migrate-from-airtime.md @@ -0,0 +1,40 @@ +--- +title: Migrate from Airtime +sidebar_position: 90 +--- + +This guide walk you though the steps required to migrate your data from Airtime to LibreTime. + +:::info + +Airtime **linked files** and **watched folders** features are either deprecated or not working in LibreTime. + +::: + +LibreTime dropped support for Ubuntu 16.04, which is the last supported version of Ubuntu that Airtime supports. + +## Make a backup + + + +Follow [the backup guide](../backup.md) to make a backup of your current Airtime installation. + +## Install + +Install LibreTime on a new system by following the [install guide](./install.md), and **don't run the setup wizard**. + +## Restore the backup + +Restore [the Airtime backup](../backup.md#restore) on the newly installed LibreTime server. + +You have to restore the **database**, the **files storage** and the **configuration files**. + +## Update the configuration files + +Update the configuration file to match the new configuration schema and update any changed values. See the [configuration](./configuration.md) documentation for more details. + +Edit the Icecast password in `/etc/icecast2/icecast.xml` to reflect the password used in Airtime. + +## Finish + +Restart the LibreTime services and navigate to the LibreTime web-page. diff --git a/docs/getting-started/reverse-proxy.md b/docs/admin-manual/setup/reverse-proxy.md similarity index 64% rename from docs/getting-started/reverse-proxy.md rename to docs/admin-manual/setup/reverse-proxy.md index fe0c9247b..4ca358d08 100644 --- a/docs/getting-started/reverse-proxy.md +++ b/docs/admin-manual/setup/reverse-proxy.md @@ -1,29 +1,29 @@ --- -title: Reverse Proxy -sidebar_position: 5 +title: Reverse proxy +sidebar_position: 30 --- 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 +makes extensive use of its API for some site features, 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**](/docs/guides/settings). These origins should include any -domains that will be used externally to connect to your reverse proxy that you +[**General Settings**](../../user-manual/settings.md). These origins should include any +domains that are 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 +that's 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 +this configuration, it's 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 +proxy's traffic to the containers on the internal network isn't. All the SSL certificates live on the reverse proxy and can be renewed there instead of on the individual containers. @@ -32,14 +32,14 @@ containers. 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 +You 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 `localhost` and LibreTime will be installed on `192.168.1.10`. You will need root access on both. `192.168.1.10` also needs to be able to be accessed from `localhost` (`ping 192.168.1.10` on `localhost`). -On `192.168.1.10`, install LibreTime as described in the [install guide](/docs/getting-started/install). Once it has installed, replace `localhost` in +On `192.168.1.10`, install LibreTime as described in the [install guide](./install.md). Once it has installed, replace `localhost` in `/etc/icecast2/icecast.xml` with the following: ```xml @@ -108,3 +108,18 @@ needs to be set to true: ... force_ssl = true ``` + +## SSL Configuration + +To increase the security of your server, you can enable encrypted access to the LibreTime administration interface, and direct your users towards this more secure login page. The main advantage of using this encryption is that your remote users' login names and passwords are not sent in plain text across the public Internet or untrusted local networks, such as shared Wi-Fi access points. + +## Deploying a certificate with Certbot + +One of the fastest, easiest, and cheapest ways to get an SSL certificate is through [Certbot](https://certbot.eff.org/), as created by the +Electronic Frontier Foundation. To use Certbot, your LibreTime installation must be open to the internet on port 80. + +Follow [Certbot's documentation](https://certbot.eff.org/instructions) for your OS and webserver to install an SSL certificate. You'll need to renew the certificate every 90 days to keep your installation secure. + +## Mixed encrypted and unencrypted content + +Whether your certificate is self-signed or not, you will see browser security warnings whenever a https:// page is delivering unencrypted content, such as the stream from an Icecast server. In Firefox, an exclamation mark icon is displayed in the address bar of the **Listen** pop-up. diff --git a/docs/admin-manual/setup/upgrade.md b/docs/admin-manual/setup/upgrade.md new file mode 100644 index 000000000..731261745 --- /dev/null +++ b/docs/admin-manual/setup/upgrade.md @@ -0,0 +1,45 @@ +--- +title: Upgrade +sidebar_position: 80 +--- + +This guide walk you though the steps required to upgrade LibreTime. + +:::tip + +You should always have a fallback system available during the upgrade to ensure **broadcast continuity**. + +::: + +#### Make a backup + +Follow [the backup guide](../backup.md) to make an extra backup of your installation in case of accidental data loss during +the upgrade process. + +#### Install the new version + +Follow [the install guide](./install.md) to download and install the new version. + +#### Verify + +Verify that all the services are still running after the install process: + +```bash +sudo systemctl status \ + libretime-analyzer \ + libretime-api \ + libretime-celery \ + libretime-liquidsoap \ + libretime-playout \ + apache2 +``` + +Verify for any error in the logs after the install process: + +```bash +sudo tail -n 20 /var/log/libretime/**/*.log +``` + +Log into the interface and verify for any error after the install process. + +If you encounter issues with the new interface, you may need to clear your web browser's cache. diff --git a/docs/admin-manual/troubleshooting-status-page.png b/docs/admin-manual/troubleshooting-status-page.png new file mode 100644 index 0000000000000000000000000000000000000000..590dfa2cffbfd11bb1b1c47ae4f7401a34f4a3f0 GIT binary patch literal 145915 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℞@)7Ua2j<(%O&rwm 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%0Aow#RQcn_F9m9D7W-v;scW&Kg>Gx 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 B>@ENR literal 0 HcmV?d00001 diff --git a/docs/admin-manual/troubleshooting.md b/docs/admin-manual/troubleshooting.md new file mode 100644 index 000000000..9af0b5551 --- /dev/null +++ b/docs/admin-manual/troubleshooting.md @@ -0,0 +1,52 @@ +--- +title: Troubleshooting +sidebar_position: 90 +--- + +This guide walk you though the steps required to troubleshoot LibreTime. + +## Services status + +When facing a problem with LibreTime the first reflex is to verify whether the services are running. + +In the web interface, go to **Settings** > **Status** to see the state of the services. + +![](./troubleshooting-status-page.png) + +If a service isn't running, you should search for details using the tool running those services. +On a common setup, you should use the systemd service status: + +```bash +sudo systemctl status libretime-celery +``` + +:::note + +Be sure to replace the service name with the problematic one. + +::: + +## Logs + +The next place to search for details on potential errors are the log files. +On a common setup, you should search for the following files: + +- `/var/log/libretime/analyzer.log` contains logs from the analyzer, +- `/var/log/libretime/api.log` contains logs from the api, +- `/var/log/libretime/legacy.log` contains logs from the legacy app, +- `/var/log/libretime/liquidsoap.log` contains logs from liquidsoap, +- `/var/log/libretime/playout.log` contains logs from playout. + +For some LibreTime services, you can set a higher log level using the `LIBRETIME_LOG_LEVEL` environment variable, or by running the service by hand and using a command line flag: + +```bash +sudo -u www-data libretime-analyzer --config /etc/airtime/airtime.conf --log-level debug +``` + +- `/var/log/syslog` contains most of the system logs combined. This log file may contain information that the application logger wasn't able to log, such as early startup errors. You can get the LibreTime logs using: + +```bash +sudo tail -f "/var/log/syslog" | grep "libretime-" +``` + +- `/var/log/apache2/error.log` contains logs from the web server. diff --git a/docs/admin-manual/tutorials/_category_.yml b/docs/admin-manual/tutorials/_category_.yml new file mode 100644 index 000000000..2f410333b --- /dev/null +++ b/docs/admin-manual/tutorials/_category_.yml @@ -0,0 +1,4 @@ +# Always add "How to" at the beginning of your tutorials title +# +label: Tutorials +position: 99 diff --git a/docs/admin-manual/tutorials/setup-a-firewall-using-ufw.md b/docs/admin-manual/tutorials/setup-a-firewall-using-ufw.md new file mode 100644 index 000000000..bbb730c7a --- /dev/null +++ b/docs/admin-manual/tutorials/setup-a-firewall-using-ufw.md @@ -0,0 +1,28 @@ +--- +title: How to setup a firewall using UFW +--- + +This tutorials will walk you though the steps required to setup a firewall using [UFW](https://doc.ubuntu-fr.org/ufw). + +## 1. Install and enable `UFW` + +First you need to make sure UFW is installed and enabled: + +```bash +sudo apt install ufw +sudo ufw enable +``` + +## 2. Configure allowed ports + +Next, you need to configure the firewall allowed ports: + +```bash +sudo ufw allow 22,80,8000/tcp +``` + +If you plan to use the live stream input endpoint, be sure to open the `8001` and `8002` ports: + +```bash +sudo ufw allow 8001,8002/tcp +``` diff --git a/docs/admin-manual/tutorials/setup-a-static-ip-using-netplan.md b/docs/admin-manual/tutorials/setup-a-static-ip-using-netplan.md new file mode 100644 index 000000000..343fca75b --- /dev/null +++ b/docs/admin-manual/tutorials/setup-a-static-ip-using-netplan.md @@ -0,0 +1,44 @@ +--- +title: How to setup a static ip using Netplan +--- + +This tutorials will walk you though the steps required to configure a server static IP address by modifying the [Netplan](https://netplan.io/reference/) configuration. + +## 1. Edit the configuration + +First find the right Netplan configuration filename, and edit the file: + +```bash +cd /etc/netplan && ls # find the netplan filename +sudo nano ##-network-manager-all.yaml +``` + +If the Netplan configuration is empty, fill in the file with the example below. Otherwise, +input the IP address reserved for the server in `xxx.xxx.xxx.xxx/yy` format, the gateway (the IP address +of your router), and your DNS server's address. + +```yaml +network: + version: 2 + renderer: networkd + ethernets: + enp3s0: + addresses: [192.168.88.8/24] + gateway4: 192.168.88.1 + nameservers: + addresses: [192.168.88.1] +``` + +:::tip + +If you don't have your own DNS server you can use the router's address in most cases or a public DNS server like Google `8.8.8.8` or Cloudflare `1.1.1.1`. + +::: + +## 2. Apply the configuration + +After the Netplan file has been saved, apply the changes by running: + +```bash +sudo netplan apply +``` diff --git a/docs/appendix/_category_.json b/docs/appendix/_category_.json deleted file mode 100644 index e8af851b2..000000000 --- a/docs/appendix/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Appendix", - "position": 7 -} diff --git a/docs/appendix/_category_.yml b/docs/appendix/_category_.yml new file mode 100644 index 000000000..d28154198 --- /dev/null +++ b/docs/appendix/_category_.yml @@ -0,0 +1,2 @@ +label: Appendix +position: 70 diff --git a/docs/developer-manual/README.md b/docs/developer-manual/README.md new file mode 100644 index 000000000..eccb1f3d3 --- /dev/null +++ b/docs/developer-manual/README.md @@ -0,0 +1,13 @@ +--- +title: Developer manual +--- + +Welcome to the **LibreTime developer manual**, you should find guides to integrate LibreTime and tools to improve and contribute to LibreTime. + +## Integrate LibreTime + +- :construction: Work in progress + +## Improve and contribute to LibreTime + +- :construction: Work in progress diff --git a/docs/developer-manual/_category_.yml b/docs/developer-manual/_category_.yml new file mode 100644 index 000000000..67ed9fb93 --- /dev/null +++ b/docs/developer-manual/_category_.yml @@ -0,0 +1,2 @@ +label: Developer manual +position: 40 diff --git a/docs/local-dev.md b/docs/developer-manual/environment.md similarity index 97% rename from docs/local-dev.md rename to docs/developer-manual/environment.md index cb8ffb655..0afc810f7 100644 --- a/docs/local-dev.md +++ b/docs/developer-manual/environment.md @@ -1,5 +1,5 @@ --- -title: Local development +title: Development environment --- ## Vagrant @@ -112,7 +112,7 @@ multipass shell ltTEST ``` Multipass isn't currently able to do an automated install from the cloud-init script. -After you enter the shell for the first time, you will still need to [run the LibreTime installer](/docs/getting-started/install). +After you enter the shell for the first time, you will still need to [run the LibreTime installer](../admin-manual/setup/install.md). The IP address of your new VM can be found by running `multipass list`. Copy and paste it into your web browser to access the LibreTime interface and complete the setup wizard. diff --git a/docs/appendix/api.md b/docs/developer-manual/legacy-api.md similarity index 100% rename from docs/appendix/api.md rename to docs/developer-manual/legacy-api.md diff --git a/docs/appendix/widgets-widgets_player.png b/docs/developer-manual/widgets-widgets_player.png similarity index 100% rename from docs/appendix/widgets-widgets_player.png rename to docs/developer-manual/widgets-widgets_player.png diff --git a/docs/appendix/widgets-widgets_schedule.png b/docs/developer-manual/widgets-widgets_schedule.png similarity index 100% rename from docs/appendix/widgets-widgets_schedule.png rename to docs/developer-manual/widgets-widgets_schedule.png diff --git a/docs/appendix/widgets-widgets_settings.png b/docs/developer-manual/widgets-widgets_settings.png similarity index 100% rename from docs/appendix/widgets-widgets_settings.png rename to docs/developer-manual/widgets-widgets_settings.png diff --git a/docs/appendix/widgets.md b/docs/developer-manual/widgets.md similarity index 93% rename from docs/appendix/widgets.md rename to docs/developer-manual/widgets.md index b2e46d0f7..de19fc24d 100644 --- a/docs/appendix/widgets.md +++ b/docs/developer-manual/widgets.md @@ -24,7 +24,7 @@ The streaming player widget inserts your LibreTime stream into your website. One ![](./widgets-widgets_player.png) -From **Widgets** > **Player**, enter a title for your streaming widget and select what stream you'd like to use. All selectible streams must first be configured in **Settings** > **Streams** (see [Settings](/docs/guides/settings)). **Auto detect** should be fine for most. +From **Widgets** > **Player**, enter a title for your streaming widget and select what stream you'd like to use. All selectible streams must first be configured in **Settings** > **Streams** (see [Settings](../user-manual/settings.md)). **Auto detect** should be fine for most. ## Show schedule widget diff --git a/docs/getting-started/_category_.json b/docs/getting-started/_category_.json deleted file mode 100644 index fd94d1fcf..000000000 --- a/docs/getting-started/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Getting started", - "position": 2 -} diff --git a/docs/getting-started/install.md b/docs/getting-started/install.md deleted file mode 100644 index af4245de9..000000000 --- a/docs/getting-started/install.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Installation -sidebar_position: 1 ---- - -## Minimum system requirements - -- One of the following Linux distributions - - Ubuntu [current LTS](https://wiki.ubuntu.com/Releases) - - Debian [current stable](https://www.debian.org/releases/) -- 1 Ghz Processor -- 2 GB RAM recommended (1 GB required) -- A static IP address for your server - -## Preparing the server - -Configure the server to have a static IP address by modifying the Netplan configuration. - -```bash -cd /etc/netplan && ls # find the netplan filename -sudo nano ##-network-manager-all.yaml -``` - -If the Netplan configuration is empty, fill in the file with the example below. Otherwise, -input the IP address reserved for the server in `xxx.xxx.xxx.xxx/yy` format, the gateway (the IP address -of your router), and your DNS server's address. - -:::tip - -Don't have a DNS server of your own? You can use a public DNS server like Google (`8.8.8.8`) or Cloudflare (`1.1.1.1`), or input your router's address in most cases. - -::: - -:::caution - -Do not use tabs in YAML files. Use two spaces to indent instead. - -::: - -```yaml title="Netplan configuration on Ubuntu" -network: - version: 2 - renderer: networkd - ethernets: - enp3s0: - addresses: [192.168.88.8/24] - gateway4: 192.168.88.1 - nameservers: - addresses: [192.168.88.1] -``` - -After the netplan file has been saved, run `sudo netplan apply` to apply changes. - -Next, configure Ubuntu's firewall by running: - -```bash -sudo ufw enable -sudo ufw allow 22,80,8000/tcp -``` - -:::info - -Unblock ports 8001 and 8002 if you plan to use LibreTime's Icecast server to broadcast livestreams without an external Icecast server acting as a repeater. - -```bash -sudo ufw allow 8001,8002/tcp -``` - -::: - -## Installing LibreTime - - - -Installing LibreTime consists of running the following commands in the terminal: - -```bash -git clone https://github.com/LibreTime/libretime.git -cd libretime - -sudo bash install -fiap -``` - -After the install is completed, head to the IP address of the server LibreTime was just installed on -to complete the welcome wizard. While not strictly necessary, it is recommended that you change the passwords prompted in the welcome wizard if you intend on accessing the server from the Internet. The welcome wizard will -walk you through the rest of the installation process. - -## Services - -Once all of the services needed to run LibreTime are installed and configured, -it is important that the server starts them during the boot process, to cut down on downtime, especially in live environments. -Ubuntu 18.04 uses the `systemctl` command to manage services, so run the following commands to enable all -LibreTime-needed services to run at boot: - -```bash -sudo systemctl enable libretime-liquidsoap -sudo systemctl enable libretime-playout -sudo systemctl enable libretime-celery -sudo systemctl enable libretime-analyzer -sudo systemctl enable apache2 -sudo systemctl enable rabbitmq-server -``` - -:::tip - -If an error is returned, try adding `.service` to the end of each command. - -::: - -## User permissions - -If you plan to have LibreTime output analog audio directly to a mixing console or transmitter, -the `www-data` user needs to be added to the `audio` user group using the command below: - -``` -sudo adduser www-data audio -``` diff --git a/docs/getting-started/ssl-screenshot547-connection_untrusted.png b/docs/getting-started/ssl-screenshot547-connection_untrusted.png deleted file mode 100644 index d963b4ca9d38d3e3184bc1296ff0162143fb9836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71393 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%0Dq)T@l-b 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 diff --git a/docs/getting-started/ssl-screenshot548-confirm_exception.png b/docs/getting-started/ssl-screenshot548-confirm_exception.png deleted file mode 100644 index da490fa8ea34d7f72926105c52fa62d1a2fff38f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41027 zcmb5W1#BEa^Dk&Si5+tiGsn!#%*-4!Gc!}n%*@Qp%yvxcn7yVoGxHjs^L_7s(w%fq zcPou%c6O$^yP&&%Rn;4=ASaFphYbe-0f8tfA)*8U0r~K8+h3 zAaK;JPS_+MWDXm2Yn=&xTdpG^G(mxa+Ia9dPn<(Q=_8y0NjbF6rOTpXDLS%gb^3ywixqk(kZ@>W>|- zmCEOq+#WCBh>MF)nxaGy{dW5=rOzaiLJ2Cy#zoA2Z{E;IxFi-3mh)u+g@s6oGe4_H z+$%WQTF~gKxWvkebCvdX`qhv=&P@_k`x&OUp)v7tL9bYD?K{qhCNi<`Sb zwG!Ij^rNp*QyI++=`vyNI+weIbKPQS_arBfkNcaHE1n#?{9n&?k1Fu&>(mqT*)gc) zSCVZI-mR&$kaJ0=s`>}#LhGa!Fqy#8mTwbCMV`^vX>pg%4uV3{VNa^*e#F`8Z(IZF zgf+u-56PBjoJpR35SM#BD9%@|FH2qnWzZfc>8tn+X@{TX8C5G(3_dy&0o^w|9Ng5T zVu03$z`+9I$C2QaT5j2lc^@6f9Yi_?$ZD$B8|NM?Q4||48`Jyv2&DTo7MF z8r{^fa=sxe*FDxCS~q1WcO9ery|D!EWDNYJ21Z+|}sZo7@G?mrbY zZSl4aj)>F>WE@Fy{JAEgOCcYGW?oy(tvqma{Zjt^W$1WyWwi4$Q}mkUQLEJ)8&6KT z{T&&ye3$#QC3LOz1(z*)y_ph45;UrX%>`sK z2kHsFi-STlTdzM6LQf04-cPO=$10UF;0RTV#Vtf%AikHLPA^@~fb{f2zEE(5v#;L| z3o?x;&iI@t=cV?{Dbu7XYQ1<7Po)HFIg{HKD~Q`1jzoPJ#HXTlnb?Iw2(m%djxN3o z;Tc%>CC`|z&xr_{u9TyyHMAa%OO>u+eM@rDK+I|BZvM?mJJYKJ05PV{_@?RPP!UBM z;?=F?9a-<2PuyloE%Rlynl?{e%G+6|15kg&I;vE?GKc0@Zz{qCw)4pq+=7&u{cM#W z@%po9WMiXrOqoiti-=h*;Jc6SH4qBwgryM3{GEeyT?>DSvwgNo%ZE~a zD{duOBSZ0s{7mLr-Z`&=B=PvIpY!TD+^&MUHphs!hTQ4QGX8R@Z3i~+1&MgxoCB-SR%dgASdq~ zrWiYIQ-`5|co|KOOw(e#b`NKk(1be03XBc_Q%#X_lei)v|NNsU%$#|`#Bbjpzg?}n}?OleVMGW%K6FwWR7-^o+o z$IDrWo1u}6oHfK{;3!J^d3Lx`d6!HZ8DEJj^l}BAL*kXb6PF#AkqntJDgg9!8x2b0pr?*_pqnRQkY0WBF1ze}6X zeJA|%74nE-tBotzGA4^v2WMngWJ3E19FAL`?^x1rIgNWgoDswm5SKey4W{j!6eh&5 z$(Ih+ryRWb_Yu}j7aR6{jP?x0RGm%K2SCo6j`8qTw)&v8RD?tt=-kbEaVK_1aSpeB zl##`HEyzo&TP*BJ6@uAsu5<^-`|^_Nc4T+INoQw0n);DYC@m~h%J(4M@LGS%dR$}U znCQBPf-)cW_KTHqmwQu5=Smx??|%}9o|f!wn-*pDKni#cI8v!<=InH`yMl`97aUtCViczuV-9_h`Gaw;#9;k4MC_MDkN34{HOq?$5CMa3wO zQ5e=S#H3F@T<_x-yJ#mkj3nfR&ulyd=8|lMisSnz_NDq0x7TD%Rj4F?311HBFOD+3 z?b1RRvOAB~I=2+N`XCg_6){mP<3I?HL!$1vpo$XGQBj5}J2nu?pa0QeB&|1}v(WXe z$ImetpW`ZH+EZSfF??aXy<)fjTkcS!Pq{Qx$?Vj7kxSAYwj1=G^2KL!c3(LUWp2^vqD+8P3nIC!XH# zHSA|-Z=3gt8y7Nse*TSW34!Dv#Tc*Q{NVjD-sH?F$|(H#%qze~P)N$)>eyubD>=m1 zvlUDdw44RL(u@fVnOr7e zz3yK_zxOh54h52(-&?mAmR|I2@mzcx&We=e+#RD$%o=U)^dMe4-4w&t3iX~Wi?CI> zcqXKk0v5W|jQxcx#(bDIW&70Q(lY>(6O{_l-bC4h33V>b?vCiRt(|G&^j262sP#hH z4(T770KH1Ss%C?Y=a@R)^~})y6!2;-2g99LQ%ZYK;OkZK2D>A(Me$Y=mpkCZ-+sXh zC_G=~{rU6dFdeVUnj;2*hSbloMUqco_12W?$Mb3o#9Lv23 zb3B9+Lc}X+FvrxyB*eYmZbn9pfa&UL zLXeY4zj?9uFHd`-)J{M7tLN;`wZx%i3fBwnfNXh&?57wbaG%s4XkyE15O zgU6r}(gu==^-046Z7awv>!kd?^B_|mS0cFqe~qs$g!5+KNq|0o>Z$7P&;DZ7)Ch|x zV=*ztG@V%?QklIy zfcu^=D^iIz9zMrS>YS~1-1TJK$4x%D$$I>;)-v?JrcY6F7DGL(e0LX0nkD(V!qNQj z3#^kzqSAYlH}UR zljQ#~je_RI!b*S84Jw>1aGK9wD2pdiFvdz83*+O(ON2_03Je5%uU3nef&yBLZ!wcz9pH3ch{c;u78rnce_Lw3qNcIv>i54lprK1F$pN`Z10C?{*Kxe zxiu};_kpid-IGe5nSkrfjVw+W4+{hsVk8R6YifG7U?A^RANbtYEfxzVpc*&A`iNnB z7G{;c&Li2j9nSw5K}}GOHoSzzxAM*5UTUDBPf7nQPlP2IZoJ!!N^2IEmUf1cn3GhL zB`<4MviB5&=;0V@pN@58j80TYgd<7ahegp4e%rL$#m{V#kd>s7Clemtdh=p?eiNY~ z?@0H0Pye3GOTJjZPA$^Khlr6pfT!FqeNE|Rd+?sm89X$Jo1BnE?HBNbu3ve|G&UlW zfasycN6&lHBu;piz}-v9Oj&9R)o&C-HeE~}AaFUa+^Vd8?0P)jr|5>Kxot#!QlCgp z`;M8&7+!+%)!ONN`$+!3SO#BZ;PZb0(gEEE3i`O@_%F)&JkSpR-(LVa|L_r1fc^RZ zw+A8ZAJ(tmp(CO^AJog_X~h{$@;qP#D<;Z^=!kkCM-f_XRGI&=Gv z{-R!q-m@7j9Bi>tHer!oZgi{OvJvx}bb$?lN&D~7sdj3(m8sl(A5#daZPBDkafR*a zpQCtvH3ohx&%J^(*LpP>85=CV9QX9f+{O@HJ0v?g1ASftZg?o0 zu-GzMiPv(+Te6hNapmbRa4DMr@}vbf!=kT1_cKyDZH{Svm=Yc|n?&_q0PWzg-gCp7 zr5BxcTi?g+JQth3WyaihE2Aq#AdOqQ{2cBj$IYLM_DVpNz@9RGvYx7pIJ&>or-5I*XQMF8Bv~x4Y%pfIF(dvB@bPTlP9W>{)HenBROqEq<7$vo;7-~GZwCD z!eRb9mq&B(p7#2ZC*MLwsIx{tpxosmJC0>}wVa?0w6Wp`-+FyF!!vaL%F!fii}mAv ze_re4SGpUh{AIc6VXy%>$0sMUi=@w10A$1N{KFn!O8_&BU`boX>K}yL2qSx@TP6<> zm+HQ{thL4!(rDW@Vnec;Ua>kV($*ZG*tx&iTS;##&NV(fsfMLjkICDFYx25bE|`s4 zyl8<#(tj*AKB*_%gUHd{&|b{EsXEylLblMXCF}1O{46@3_x#>Ny5Ma$rLSN7bA{$T zJ?Bhwu1Ha5gF8D+!!I~IutSlSD5*h^kmupr%epfor$ z>3xjV;`FWLXk_(G%sK6^jJW=Dx7BZ08leX(zD~K`;62K!jWyJy_w5EiQZ)~Q`djtm zQgkI^`Eh+?xXe9!ZV6yRKM=>GFx5T{J9+_WOw zPyeu$skHi=5Ls6VjyFii?+;`PMkpDZM|)HI+~_z(I?vxh{uzgRFDEJUuFI>dAZgd* zXJZb*CMW5Oni)IL=Y~c%L-F>c_#4G{2KRm##gXE+B-u$pKL(yY8)x7+hM40|#_pfeztS)M}bBkSC^jeG%^ z93-OGI`BNw%8BLfT<&WO`LWZC9*Ek=`wIv9tRBFSMN`5D} z&gKVZTU)HMM$)5TosU0gOysAkzl3-#hc2h~At)sIKF`|uG2RR_J@WGh2Erg;TJ=T* z9~&NM2cq@*4Aow=8oV|;)4j39Aun+^IN#ZyT1Wkxf#jk##==A^AH7cG7UjzwhWujms$>Q^NuynAtwZ zhC8LoV42^`2`YDzUoQ}+Bp!Rk;7OWkP)lj7_MlxtoDvH zKsJwcH79srB&0D{BX8VWvUJQMq+Ox4%K2DDdq+s!J$Nd0S7A`~k=C&piK&xYZrtN~ zR3PBUwM8!es3x)9t$bxq=Qe^6v~|sM%-iz^KbE{qWt~_I*AxzL&zb)?Mk*_N9e4Lk zk}{g_phgxo)1t8K4&GZ@hPg4(A?U$#+qLBx3QITh@Exd3`7w?(YQL)3oP| z_Rw=3RVB`Mp_>?O>;OfkMa<+tB!|isScvkIjKzf5d506;VZtaQ2CoR(5DaDZ$i099 z+$WznOvw%(&nwM1S#9_saQu2CMBYQbv`iJFt$&TBu#*)oxba2b7ksX!_35hw2&5n* z>}2oT{q^j#^X_ouT*z)>d#Fz^&pamP&(8ulk~8OBg)X*Gz``X8Dscv6_171UwxwH& z>>LWNk8Fw7koUehgS>Tup72##wqp)C)V&GL@O&PFH=3IfBex2;@MotM-IbJ$8PtWg?ovBtX^8E z&UBsHmd{K<+-o>WNIBD=P$JiJAZ(M*7s{1Vp?(e*EgOdd@IDv~^(u7qwZK~6A@;_WTktM|+n8wSu?XrwD=RR^w*--%QpyM>Fjs=K z(?oY4+{GDfhykt)09VjSx7Xm~`+J6{#GP<5e@WD>Sr<-@Y{RWTw#!clV(8TDpznA24dcqu6;3>YYd^#F& zKm}RG&QrJo78EC$IdW`^G78yFa`H%_YPO8i&9zy6Sd4cI65<%brD-Ew4sh>0I^M~l zFTx8G_ZO?u->ijc2TG083EKz^*RHz$FsyAcfNHFc30iN>3&_25S8u?7pgJclXe5!O zaO_XiIp=Aa*P3s+DtqK)Wo-oC+C#~b(-PL*q4Ka)6aZBluC&?OCqp<%FipCeQaWTT z$Um4%IwLL&GVecYSLS%N;WD_m6For%OaPYBdhBr1J2IRvohcrFYaayn_VyyGkMhLj zu-!op4-Kj74i^rSyIa3!yiIgmo>AwsrM}m#j->SH)kOtQC{zpkp}QW&8p;_>kJmT( zbz<2V6~F?B-vh^$=b!LJS`zSaev7x!)B<_2WETJuRIE}18Vbe=lN6@J36bnn7mgYS z#tNts-Oyv|^_6$nE4}<4yJ8NPrveW@F*e@p=~@w(_9sugm)?nasCw+8iMT}D8V{a% zHBe&X(ez{h@7p8aVg(hIyB#%Hlokhxjbbo}gt?)YTuY^U?b_U_QT(HdGOe|E>8C^U ztgCk>V*`Qs*`FzJbvS>2X~n~w>5vIO#67Rt+iyvOx*N|PP4SFeVUy4td4Mxok4r~b zcgS`VTcB;xiJUdlg>Tx)PJgZjn2(u(c$++J>I0=WVcIa|=KN$4c(qa>^W5P5-fG_+ zd90AUC5%cBJy!}QHYjT^jbuo0Op%SpDz>Vy=R;W4XYn&z>WeScVU-Y> z5>{aO_4EXyp9sg4lRiwFP3zRppBcpk@mx<){!9B+T3Q;Y<`Bs_2Nf1x!U9dfDtwyrChbJq4ZKCC{n#`#i2nj{+s1MtAtq zTI{vdAl2t&_>x5@dPXNBm7MQI)h_et8=;)9n%}=`#?+u7F__MP=3VNkzh|$$gTATs z-VsrdBvl~xPAZo^-=ON+DXv22&GyN+JDGA>*q(Wi_q8v((n{r~HyIG>`n|4I&23I7p#_ zUctN@njg^$&`v8d^-Qm-o-Ov?Xn~FO(KE6kJ1}dA9%Z9c4E*i4u#h`AF&ZJWJ-h)d z(t%7R|DQz+uF>z5;3oZbLUF4;l1W(R1En4<+-$ufDK`5;#MI!I31{f@bz_sTmd*bx zR{)0;(pj~al7l!RkGAA3v35c%OG)`Fr;?8vIB!WB8wuyl4S*Hg2&xDs18}hJKdn!ZgnOXrCZc zc|(gQX*LOeJ7?-P^hlFau2ECtV{QNjSxbzfHWGwVoiV(>e!*lGt%UstvM$TAJ2_4H z_jfDJCl;G|2<_Mi&1lD@vAJ1#w(`>2J-EZA)lu4A^5LBU04BKa9d1>|V<)WV6ED_cXU58?9MqN!fI>qQDZ@gbzKClDsn#jq2J4r$0 zHV5og+?8P|uGEhK=DJ+0C6K_7v+(sV7Q4%!NoXle%F-->L1X3xNs+t}hM$LjRIi3E3NcQkl%Ak5M~wLsdXmSW>Hc(jm;Xb_{y)8} z%kF#|qMFC%Zqg-8GeZ7p7Q2$otKbD~?Bx##s_oa4n0~k0g9}2Y_+A>g;AbUH1Ht~8#i&dH^O%Q z)dc25v~oDuv3o^{5tAjt%42kT)t0DE{>+>Sp8qUapOT*zg-LfVg7JosPOfGo*G8eK z@L!^PYj-eyf+s3))s^%mZG$PLJB>MU>dDu_JLfjh;}>M~>eYL#r(!5MboW1T8u=P& zrlmE#PCrp=5xF%&YUD=non!8EtJ~j3{&ZOnBOm!o|M|-Yijn<5;nF0a#HyV{wbVTK zG$z3I(Oz_EDmzG57UeY$v*7@6LviafYpt0U{Z{EDI>zB*(ABY# z!&!2?BPXum4Theby9T6WKLky8p5B7&3wbmN0^!P*UOGWe6Q{&vIx?kWDs!Ub3KQbPW(B4Z z^6m#rjKCVL!){O6iB2&Fd^VygKD{$01BuLnpoE#ym>kzLQyt(c1B#sLyNcByH6UM$ zeGbP}M%-^`o^Fusq<VBZ(6a7!YvDu>0l&v7|HhOnM&Zl{uAmKG z-rSK_N%49jW)GNjgZXq;YjsAnY;sBef?``^hF0gHNsIL)n&PQ>Q)TLv^UJ3X-r-&E)L%K_}o1`m^Zia zAP^{Fs+A?#=ZoUjABFuX`tz~-MJa4|murX!h6Lx-Dr*GOx?Z*bUGt!mZ zTOT%}uwa1x%0$0?au%4{N?^t$0})k$9`#`)^t6$HIkMsYlsBCpueafj=WcAW!!r{E z$(qrWZ&i0k?!(pt8~nJ*frTa)u1;i_bA552pH}naKeR(wuX>_!U0+^NyoD5EV3+dT;D`u;7HEc(743$8plkHiCiP}I;273eRQA|G;_gXgQyD@ANjf zMNslcUCE{(E%E4n0O!SF6Uwr-f~8u$=C6Z3mQnEPSjtsHr5Sw;wzM+sAIef~(bH+* zD&exAPTna@s7#4WqV4Sk_{Hb7ivq=3aHqHqTyD2x8kN}?BHfy8@vJGo!WzCivb8gO zKHUOPZCP&S@M&`1aif8piw0}6rb%+~<0Tg4QJ9uww+C9cjaA{K_#ahcNTohz<=VZ| z<@-Jj(M)72Z%eLlX6AXyGLGO1uwhl(6$lrPP!>U9D${H%cc9V-B)K58aa*J>w+0Ny zYhi3Oc0KB-*HCaIS4v!`2Vy2%aMn$>6>_Lqiq0li7vVkQl^&l-&2xk+4r=&tev#bk zD*)^Lu&&KNiTuHun>%#$#ixz&jc6s380aD%OCm|L)*W)NcGmWK?mmEX@LrHjHz;PP z*&J8xcI&QkGWh6#2$xLSHbLZ@yBKtsd=`G%h~u-(YMQ+wEv_fNQHwd0@aTMR+XkJ? z1Mz4$&E~9$)-Wbe(l0Uv&wbQF7*Yr#@W;;wkJ~@rzQZj5mufaCsjF5EQ)I2b{y`|m z9q7Wb@O}U*ZfO23Q)q8MxmtAe#Z<=-wsb;IvWfe@Llo^pDrjImz%5o~3S zv-rZASV8BSf<|ie+r)9f^V>H}84(GFZW!N)RHK;=Z-c#Et5H9`-G^lr63M9qn~CxZ zL-D6g38+eMf$bx(Of=5$UnaUmPbl3qz`dwWwaqtO37kVI34X1o2wIz2Fo42!edZH` z+p}ec=d#nu*^CGaB}aq|4|A72H;_Shyd`~jU*qgA2pHwJT=}pog{x8Ymeq|1S9skg z>V0LPy6LlvNGKB{TYrDkXHOaip+~#0Yxx z@e&EYog*J<2WhfHV)R0&l*rt+7AnTk0Dh_2S9}YXDg>-_>XiV+HE{& ztchc`P^@+Y2!7yA@ray`R5~rLx@`LCb}igU>2_Cvu^v(SGAmJOV15c@)uQL@%+d@~ zy@@F1zKU|n7{Uuv2LXT0@<8#U@dWcXjWniO{yIQ5ugjMd#S-B%R$B|a!^sZ?AjyrS zZqPPafzjY9*U7unma2(+7)hakAo6->{Ce5Y7$$5@a9f4?@xi)41GN)xUrxIZ{OQ^4Ga?y7!Yx^oFyMwRBDo&%H=#HI=z zlsciW0>5bDar+m!Qe3@hS9uhqxgeGu3<9F-Pcz)U4}zBLW7CENEJy;~CW$+4u^_sL zV0ckO)AZiy%6*?iINWxsG0$6 zkcOZxr;AssUJ8c04|NpJpFuOdxUTp;hj#0ABab0gr8BDL&<^z^7td&|(7aNU95q|{ zeRL|=Zu@i@!HrKFs%_R1r3I0^_x=5SNXCPRu4Gv5i&HVXk(KbY&$fyYk}YR%;cV0$ z3K~5W<>#Wcjy0qknJ`Z`W5|^Xs~$HCRiY~QPFuU`K9BCB%|a%1q6Y(E&pS*km!DAI zqGX%3lY(HDX;NJh8u%uY-lYWZ6kpp|T%onZnoRu9<$I2FZfg1;-S@HI9{j?yxV-{y zM%ibrHdWqo)?*uqxqsx(eTX9DM2uN;boTQT*RI*4(8Snk3}GML#+}i!KN@8yL}~rua;QSC8iL@Fa`4eowloF?-Yx*DqpgpXGB5y*#-| z-p!E@w1c#n;oN#>^W^)Juyc)A*IB!ushXilC)%YwI9%g6uzc*oUzfpJe@s!Rl9LV^ zcqk|+k}8y9E47x4JEd6k+dPoi-{|ecJZ{M_XOX+b3Qj_4E@f$;uWu zZNK>qFBq(kg*;iRLlS<-JI^b&;5lyH9;s0n5L+Df1nIclI(wa)tgs^)Pah)&FJdV4 zqXEbrT_z;>o|^FKbkDH(ifmzdsegiAVMN*N@78Qhal=|AL#AP3C{+#yIM`d^*Dst0 zI1TtG?1~5_v7dYu@%Em0GIy!q_z*YD-k`*fAJQfZ@~aif*%+$LTxM%t1p;euEN05c zd^hlm^f)bbt}g%nf<8}C&zxgEW;4m4J6KNWB4*PX|B$KPUoL&plWirBJuscK1$uuy zDD{`EsOYV}gut6RxOg061KMJ#hyMGk^%-@rB9%4C-Fiv``QL0wWF_vv=*?E5pb$ zt|YCoap|#Jn@b)XF4kc_<{V-e7Hj@Tqxxqj$tjeU+nKJ*vL}9)SxY8cjo(E}IX8py z#{mVWhOcKbB$C5%*g3KDihQTOPYe``pIorijNzqdzO1IsN%$?1z;Kr~|~*Va6;4EWQN$ zBd67$Q@ySx)l2^K)}ze!eIuWn2dh>cARqiA5Z+u-E|Q#@HEM|Hi&@{pZ1{UZ#S*}K zgXjnv_PEhTq!k`mk4`{(nH+|c3v@h^E>o1AUv;pxRjS{N79&CzN#8-ED@t;{u33#n zw1K)-a^*=olg}QI2dH|Q4=-V|e)0u*dcT0P|MknmiyX|Z^cpQxxr2tfBhznR4T(0g z6&@d~o0J_!r6q3U|IhxR*PNFLoR@NoMG12HD#&r204z4CMW z$aKHLZT`v#*vFBpZ)=HV2-~bT+IRtr>ZQncy8AathhEmIAr3b0P-yh`5(O**5lb8L zQ^I(k3;dmzB&C74t$Xhb?^WbH$)^t#Njz^G(yq3}_H;N>j+3HR>mj>Vhieo12irm~ zBS%TT;F<1>`=KINgdUY}j1#pHLgtv_Ms%oeD_2@u%LK|yKT;a$hXoEU)cKNQE-aQl z0u`t-@x1bD4bxZGcVYku5k@S5;`%53(Y&t{)0>WKTGQuSjexyJ4~cVcjTn$8WZrK2 zG;I^ln7W~37V}z6zRJ<8Ht-rHXSz2syYqsWvB2!?pl-D%1?aVyP;P#STrBBKD0(2k?44a&dL#AkK&tcbXMPqM9$qQG4U@c=b#N0mob0K=X3&C=<_UMzVFh zBRtu!n&jovpepvCa*80Q>9ZiT;HG7i&my1mF`43UwFQd>8k;3yZYzR+9Zop7Af04)%8f zN>=r@Tb9HL3DgbKPl8&yioWOOeBzuQRWu*Dfsk8N+aYaXw2h=D8R8mOCaUCL8Pih* zp5MLg3F9}BtT;F-`<1D!hBH`ajMMNVyK_E9vsv$S4jmZq`GTt`wL@T}eSP_RXwmGh z=QVHYpifeU@foghiYiHmx`@`1>NsX}EQuoqPfyr?UbR05=P8xjJ3Eumuq1JWZjg|) zkTbKw0*xo{o^Sn-C6)5k%IlpRMknS_{QUfI@$lfISIl~!sTv=0w>^c3j>upy{1r0X z&L@@#+?sn_%1QOjXpvyrs)f<|d*m|8qRvY;H8rAe>3p5*{ z3%}L*;~G|vn_B85i+hw&bS>9L>0ZXvzHwni3vHkmWkf>>yv)lByqfj0^xBzoR`(~1 zlp6wBj-5BnBfn+up|7&eRwek1G z?cVp8*m8g5VASIdL;R5ynSfc)a==`k>}2%27rmLh}KjMj^x z7r0O2+ul+_tE2_@8LEHoe2r96s9LR1sl2YSad3F}I^kt>xZW)F=3FXp7%08y1Xf(u zT@(erbM$r(-wd=*uHM4pPFF2!A!xV-7vud-d$eMK$nLSUUFBN>wqQ1yfDSv8=J9vk zBze>ybvHy8N*Od76G6Hgzz3hugw>sYMN#-})<};Z>@EIK#L5}VW^)$oCe1UW`d|(!4f^3=LbA;h)=J)O{f-Y;V zKX&vNYpBJv|16DvYwgDIKGui|&h4Qgrrl^%y%D|sK9>KnLh(o&z2Vf)n{pqav!%*x zles*hUqM$m34njA$6oP2OXa7_QH54Mv@nA;N zMZ3dRV{p`9QngO#%SHa7tlDpLC-E((COS#4u{Wz)JRo?IX85`1pgHR&%6*#lAd>P& zYkktb``5t820Le0DMw^St^4a1RRS#&S^)l7OVi%WjPOxrGmK}ZnBge>$9zc;xt0rU z4V>sG^ZIen-0Ci&Bomj>ul<7_o$`ln(dpE=~`1Ws7N6j=mJD{WBEI^+&c`a6+Y|Dt~ zmbU4!!TuRV^eeBQEmirhcV z?*I2%)qJ^&_mg-v+9KLN;+vAr=foM^ldZirTP69Zcez#~cW@?>oz8Kp)JQya_7-G& z`IK)A6X^eWINasD;fSq~js)^@?7q56vm*_ya>?P=nk5tcwq>8WB-?CYGe<-XZt$b2 zFzjed9tX-N>$kh$JP4ldE{k4QEW2i(6ahc}-Pf$uw z!JtpQC+K@2>gXkvfnP}E=nn^@uQ0BfJKdtcUw#xA(jR-u_szbKc3HJPny<2=v)pXm z6wg37gF6tzk$<)PM~*~})1Rh~bu`*{NDgAocb9;mzr9wUP=S8{qJ>}k8RirBu+#zU zUH2_2U)ER3z649k;2$Ch6hrFe#k+4d{BOnMMIJ#o9lIo?`y3jou-J=wWpkQO{|5y6C8f3nSzoFV!m}#UU?l%DN%JSYUOXg$@@r(Z|1w6N7`cmv|GY7v zsfr+C>mJS3ZXM7r;#DzkH&#T-ZGLJR`hUPa!zEnU(SFlUy>3$u^Y*h)NfN;S7z>Y$ z#Q*l+DQO7*Sy8`o-$&MW_{8i#V{%{lAG`Y>>-zftR`#0rS=W%5LIc5*_anWikrK@K zL91IrrdX(O!O+YslthxvPabkRaf+m50&_@h>7DCG-hxCMcg3ZvVqpTl9PdCozgSUe zu>%uVK(iP945X{W&}mmS)2{Lyq=%XYVLLllDC0V~BAk>5oCH zFC7N-baZs{Umt{PmoT2XA5obd*ne=kA49EcE|PUsAzL;t8|{FG%vl`Bp0Fq0_{5C& z6tr=9u3Ra>Y~KN|^%nNTC-*u<%8^eZYBa(}N=On3b&&!;Aw&ZzH)8%s@xHD3gm5KK ztn99#%o)G6f0J%aX)gb!t%-TfC{Veez)JK@Lv7i2m#9a#7(c=ZBY(@t*#zH<7}ky+ zd29I#lpqobY?scN{VZo(ibWHzIRoWdSGJhDhMvLDC;~mQ`mGqswXi3GkjQ!Lce2JP zsp20oA4@Fi_Nh%K32GnBMA-rrswj`l!>{J8bv93lDI%hW(XY{MqaRhvQkczBlhm=y zaLA*bk!pTXb#rBmnZxp%pJT}?P+r*oTB@WCbzSEQb3D+9slk`b?YH^q#QgRJz4c~n zb@}e@`)z!OJs^FY7TdB!OZPO2?jizPK=!a9{)7ORD-sbjrJJaY`#vo)6qeGgnR4#psZ}YN+ z*0owsx#!J013bCBMlRGiaCo-C-ak+ut z;=Rya^iCuzndIKjnWPpgBXU?k$?=ystFmbBolQ*mu z64figpogq&wQCyy?ym`dHUk=h#wrn$wiX}Ut?3>)vFP)vRRU2%B_5c?HxZvw<|wWV zg{U8Bv)3MzU4pfIP1Ig?=aS3G{$9gk<_(j1E)^sG$QwRStFI1dGP%xK`L(TNUD}+# ze^dWGpPCMn>U0Y>TO7UI%d?%QAP~}5_{xgivLDJJUF2@R9r}^3N!;B0`J2e{@2eju z!Lr3U2yb1hj)gFA{i21CsR3!a`4zg&Pot;q2}TXB;A~vay-`>zgYTUtnK+Z#=%D+f zz%_>elhZa}>Padgs9R@?UzcHxb3CtRD(owr_yTlwTKj5)OmC$dP6}vT-|qdM=Vp?b z<>FE&=b*2l3*>u*yK#CAm%Z9r(tksLb5r9*jfK;TCAG7XT>h(`D7jMf`q&?Ian$Ta zrsv(v5Gpg%3mEAgW3VzC_w~L%)!=eFk18!Cx3#r(K3$Fv3JT&Oc9Kj;<8q-22nf*V z#g3~wa5|WHdym3m{t64*zp;@+rCL$vbRf46$d(on`OK9a1C5AnzdxCdE1hIC8biv# zfr*Tayy1N#J3BiIr#(AK?+5Df0fP^6op#@kN^=iaTj`g}{1o?6Ny5WX$hS{UB0t)H zeSR3#XF%1s@A}wx8->aEJ1_62R5I1@?pWeQG;DW{U?B9?!9i$lEkxTV|~af0{Db4oM|uhPwF*xI|PdMFpBL z>8NcNS=-kY5fS;N^vmKDx2u76RnJ%@H}&h?P2bdd;NObqH2lP<0*X_-SNuDwkjVHZL+Y#>`iHqCXI3 z`F_;jZ~@ug@K#QYMspaX<<{UUq&jkY2v}EV2l4ep0G*an+jL?OvL&At;ln%JW3cQz z8Q-FH(@@Ph+-N@%B=hgCtetKbrgP)I9yy&8<@KvrobT!>wYsAOb6gB1;?zi`*#D|} zTgl(YhE%;ceV$lG?`;juQzI5HNOQCY*T6WAe^}m2;hSFSq;f`UyRPA0pYC?Xlc|S> zhQ59K)>mf$mfu}%u`&A4oJFsolw^eBzP-w3tEC2uIWk*Nk8G>$y7_tsE46yf?lk{9 z2_a#C>)FcHhS!D0jeI6sbhTD%gU5~O$F2td8FS;Iu58H$EekE;cBy?Ucj zBsRN^$>B(hcE`PlyGDnd5r^Y>N+f)qKOdas^nKyj8IASR*KvFx5bQU`mO<{({L!1$ zi^7b>(IlAfG0JZD=VjFe{5+}p!%oM*`G(uM3iPQPN>=T>q%)Q{df$$iiYh`_D|Ek| z=|_S@R%Z#EOkIct1HMMV)&Q3vipVQ2N1ZeEFCV-y2pFL^ZdA74^=?Jl}|35`?(Q{ z!m4n`y5gV@84wqlPn{Sl-XiY!6&4Zd38DCe$@MII3vDapHe>lj$HH zNuqr2%=uI>>+}d^GEr|8F-Ak}ab*zAuve@H(1?{yPeuI*rI_e72r8nAf~!p1W_=#+ za6w}yYoV+INi9wVj#rv(Y=ZGx}}2&%p>MyZa(!+EG7gdVL*Y;8FSDWp#4 zJ8LAQq?9J(N%isr@aBj&BZPfu~2`joN)U2Ssz#Z6&MU=Y96r9;4hlKHHm3`TqTTpf?A{?ceg+ zn%P#8hLq;#(9o2<*&4W^uF2og@kZ2pH~9>WU6_>Z?Ce12tmW0_=H?^VrR?O2gOQO@ zp_4^DyQO9&e^*N%NW28GN=@M$tY(#r;C}xYuTu><61U+#0$;7xL@<`H?d;gkcwLXN zJo>)h>Nn`mWrM2t8Xq4oSX5HN+Psm<9#YS4*mc?mOdnWhT{_Q1ZhlzF6}evm&k^Ec zU&~`R&;XT3`1Xw05bqU!p3IxJ(|j+U(ub2yFDKhSD-*MR4#}Z^E!Ptsg1fIwoMICA z_8Yy9*c}o@p<%?O!aK#6*21`VucYAnqVxOvO98p9{IId*`OYSGJqssz9B18~COQq1 zp<0(Rx^}5jTjZmhY;(+c!^Xl!Um3V5Z3Q#glkGXn?my>FVlaT?g&Xndve6 z_&xmt~%9mOZZrwZI*NB z;Noc{>kdC?R5aat7!=SWIT}#R#=ldX@W&}|yuYGDFB6`!l#Sl1d2K}N_f5x@$a*1S z!>{1hP4imuyT&w%VE^NH{*CGg6YluV3=noA?0dYdfmvNgmU$?h?d^5t1qLj* z$AU#&A3%{?wH=S*}rU3+x9{v8ACu1*lJ5s4`z}bymwWZK&_qx!(32esFdvC5U!OOt`G!ni% z#YPidXC&a zX4ZH_&K1+``YE~4j!U10=L8cT>$Kd)v{iTb^OemPU*=AjSx;*EvEG4E5M6#d7yzYTr`pF+?Or~KvLPo-dOF45 zx%9g~Iw~f{3hQNJy;R<4B z?;U!rWkeydBY(;$HhN<+qoDHI$5r{nlk-=c`E*cZppV!k%&6A}Oib#XnA?pGsfbeA zd&K>xugvsjd{cZG&xV_JBrhZWr|0Cmb81NyrzJA=D{zW|Wx%921n86ES*2b^x0CwB zK25Ewq5b%Nj}3TzcPjjq&Xw=)s97|8U&pCQR-JCH4+gJEqyT&s$;x0O3*|9qSl`uT z?&^>nZ*%2X1^E;P_p#_7uH@!QqU|4i#eJ@U)b|leWt9$;zg97Q&o7but^NsScueF;vrl~Z>kAOJS#VDKO zHJ=Y`hT$x$bHk$q-9>E?q%&WlIdb?yKBkOlH8~m32JNtfcQ=0}fhs}l;eg=YB}_$P z_06p>+3XRV^|zHOO0=iL59zxeMt*d3^d0M02{_ID%oFN7`a!S+yuEJq$6dvC>q4WW zLIfcVb|@99q;X|1myM+!PL&X0qlXe~gn-lFyqM~;+&0ndx@u$(l+P4$9tlD%D-}m5u$rw|iBrqp?>P zwzQ}fWveQ_XY9`vWpi}LOgbMpDb+Ls0TkgH?OK(-_#-ocXT=^)y6kehgqCmsn8z6t z>4Vav|E~Dddr^AS$C1pWdec%*bl4K>8f2NwD=}=9rGgXc2@Q9typym4?f~F*vaFm{ zp7)INxoUxW!5pb`Z+|-(K}2JbO5;ZX=lSpmvAF!*Z}mzAI2p;gI^tT=mAZx?HEPRr zZ2qY#1r%bz(gplyG%ceAts&Orq6itelYVl%+@TyawIKh4V`t>M3QWWXYGcj@Pm?<4&TYBoU{BI4rOEcDMbxVfdSgT*5>Z3?gLj7#$gz*xqRo=VW%(L%U?!Nd2k*D~VPypW1@-aC`0{EJc~COy`BE zG_V|XB{_aOs#B%h=rH{d0JyuBi>twh+>1483Okx)-=LJtXSzdH@xJP#AlrTNvFRS` z4<-BcMmN#CFdxQz)z^3A?&7m+C$teY*sjgFdK8TvKkjjg_Z;=8-zSWoV95SDt8~ z3XHCWu!+J(h2hJQbEml7^8M>%GpXw1UoAY?0=13V0KuPyqT$D933f(-nMbmNg~XxG zD%;@W`mGE6s53U0pxpp@1lRh9mytd>bU)5U?1h{cGU~@x4b|UQn~RHuKkN5!k@j4@ zO_!@d!F`Wk1kMP?FiV1dk9DA2%aaNYRHIVnvtH0bo!Xq%s|Is7y`tMbl)q1Saki^1 zmTxr~rHW_0UD$P=y(LEnOe$gK{xMv|5fpyj$GJ`tfjTgo-S%7vkd;LYY`R2Uh;JQ= zy+u%R0n86aD2;H=zF z{dJLQTJZbzhgKF+mS0NEG5#{9^zIvcT~Z{m?W>lm*+1`uP*zB*CoOUBQ;lPv)|`jJ z7XW!d%caTV_l#c1I^(#zCNCt3*zt3izRF!4qDuJjVO;HXr`k`!m^g;PZ?zW3YTjbq zw&^klsyQFYYtje!uT88EK!RfnU_6}AiKw<5`D0AhH6I5*%bD8vu$dz8!>b#oli`oA z?y7uwFDCGX1uyOgY`n5lL3Yzc6#+G|4mrGozP5Y3OweA`zEl)+nN*W$X>Zc{ZecTl z0@60>F7ey&x@R;Bh)cR%ICrCo_ z)w$L4J)g>)GK{>J1*T0sTe>N2JgfO+F0k!tR+W)2N|x<9>}79Z#d z`Tm&{2E!zpyPB@$20fVTMh5sl&hFLlysURseV|PKldL0h$T(%`2{TbD7vgPc`Iz#s2-5%)S}lGCq;>hKvQOFM z%m?;CIyud3ZrXw^z#m19VR$w!VwQS2CNI*jeY*H+#kq-&UouK0f47jz#sn~6pEJgW z=tAdpvUx@)0u~%(N~@LR@(DNN_)u;}Qat3C<_9Ji5n;bVj$Gx~^|}CUpH+~onMSe? zHnHSzh+wpaDp%i-5D&+D1bT640bVW!-^SeJ7(U&0H5)v1oOfS)c9TMD_Oo_(nB@*) z%=nTM(%$%E>*tGNjm(}gxm+-^fgt{L%-^p0;uotx*|Yn40A5!p^)~l4`y~tGz}>Nr zsCx{#4l1=MIbDtn*a+QiA4|T4R)9knqy;g4obnZV=24;Jh;kEUXqhNVSt?OOgTxm0rVKLkT~Kl!E>%(uA|s3 zbjkT|z3e|eWQUEhmH#L*2AmQw($gn$Mny&Glafwd@fBN*W5EM~7rYrrE?o9j?4^+3 z8ylFzK74GvI2?wAlRXuujFrbK0A8DRNico>?C#;Ah4t|guH5@?R*yHFRyv{v)Ut?; z`0ghS7xv8gX?dYnWhyaSww1cUtd zN02wc7bs`pjpQk}dtIF$|2sGF7q%)bku|x%aH8%X z{Rba4_7XOHiyHvdvxfs`Ql@o`G{V_qQ|X0z168ku+r8UU4q>Ct2Z}kam5^ShYxGUG z54A{b?s8V~Dsd2}@NV|(S@-m!Sa%ALrFP!QDCR4Di&f<31ho|@DMn`I#PoDwmZ)ZH z{S~wG-+jlHtS~*{>ajmPfcaC+Ye$v2Mo?xBa@*Du>Cow6>zYKh=jO5@+A;ELz^TP^ zA%)5tx_7aPaIU&ug;oG6$gpKXdzmJQj)%KC!rdm4XWFZz}TVeaSShr{rYnA*D84u}m4KvI!8Jt=EoqKHp@F}p~ z{E?F*HW+&g5puorjRFwE8cJK@vBUHEvy46Zz3WVNOQN}7R>|Wc`>OIUU+$9{wLLNp z@09V%=Y;Up8zQhhC~*o&J9RQl`)={+Lph44B7UIOa>sX9k4xr_+3SPLF1f(+8-dzD z9?rBbjoBf^g+~97ON8tA(k81Ve|bb_9rVw&J2`-_!;t-lN-CpBA%}CWe?lkkG3CJF zfHMuig`sm%_+_aqE8Daav|XB31>7O&?f|}G0DX0mnUX&%eSiHaxhq98M|*aCG$L!l z^Gx%`a4}+c+VLl5S(5tW4F%H(k)n2dOKC2vQ47T$w?Vy=o{zBV0k1*WNV7LRcilDk_$V%yk#V{kBN;Ji21G~ElMeO3CSr-8Q{%`W$d-12|3vVNUwn_KRw-%do z3st5}sOPSUxps`mME&G>uE7Z(9-T03|9K8_ocN>=npN8d#5^9M_;%pYOla8mo4dvt1=i{u)V2DdRFW4s``3&*ml6?;lD6gc)Z`&O7W=m+i zv>ssC<~$$aHQ=+3n)+{q|r;yX#K!#jCNUi*|8H9-d6(EM(8jL8TMGOZ} zsZSQ_JdNnq4+oUxwNMF&pCTUTO?mNR-8WH zl|~hGU}DXep{T0*ArV$4@d7=BGA#OWR3^Yl9@4v}y3E328MV^8{U@vD^J95Ht%>#E zIZbw4+~B@$Wag6}Q*?yxX7i_g#%R#25Xk0c?9TlFQLOj%{N8h|%@d6=ampk_0KGqe zg?@;LVNEmtMNLe!+2Q9#!u}sC9_)mjyJ=1m7EEkcmyC_)~H@6(>F>YJU&ls zs4rd>2A5va7%hvp0si4i(zh+4vsn%|1F`*vE@nZoGd^3?mf#5Cc!pl3qPl~=frKU_ z^n_vO8!=W5RbyPQRI3fr0nASALaDufL@(_GcIu4gQT4lys6dnYk9G4-&HKFcb6MM~ zG_6I}+tUy`zJ#ZAxc~-sOefMe1=VI^kVJ%&M(QFp?S5?E8xNMR4MyniCgbPHgBAQP zD}r`_jB7phJIwPcR6G=_rw$7t9~<`=C3gj0&MYU%)a|TNAEQQ^{VH`B*mPoE=I;hI z&~?Vjj90m*8GR*1_y?^GPd6t(+&u_9RHmCB*~~RlYr4Lp!=|4Y znD=G31;m=CH3}p-plxqADpW0Ua)RyR6~vOw;8ccD3(`+!6GQQm~pyoK^ z?J{OLq?0sM(PpuHev^>eMCx<8ES2VE$x(n4aq+JwLn%Sr6zBC!6A{;l^ z(b|ZpTpVA!rDqqZXRVI%QYR-qVePvCh!lp)I+1$1rap>b(;K#fTzmN}hKPsmyjyk# zp;)5AKZsp~yb_PXpv^`ykBeEH@M)Iaq~qNry=q(cDy{S_iq)%_&Pk!M^5N#Ec--1l9bxNJ3_O5~P+UIEtDe2|*vHgRbaQ|8lb*iwT|FN3=xW(x%LS!# zfSKkn1xMROlZ6iFgwV_3kQP&O5j_1Tv|cFY={maRu;R6U`TPNlDM;aXw|}bAp!MaJ ze1U+BUMj!76Ei*AeRCnk)%#~7P}R|)SPz=IL&&GAz?Y9|>$j%J(E{Z-1%_lA&9tKN zri{j)C4FuF1VRle83#a{%fSq9;e!4dB-M+cW&V1ZA`Yzu9^50!H%jjb}0imqeDZ|{p0>y~Ey%)w$ z!1H4OxFvS(8cCfqS0nO_)H;G>kje<3T4s~Y0;Ql*E#~BJKi|{(uLsCOF`vGBRohV; zJpX>ZD8s|G_twphB4t+{Z!IiE`saLrc>GM2qTBFOgyUSC=<1;w$}sTXL*1#?n+-+^ zzkDmW2`-xRz3d(uo2+j2%EJC%EkG~3N^pL0glF5?kl)o~Rm?j7uIa_+%=Nr4$<9L> z+s`ZYuM;~JJd1;yDY{)FG~1Qf7nNq0XOY9ar#^lTVV%zAaa!l&NKRskoIc7!DS2yz#Ff(p0+akiT!iaf) zuUVAXq4mAd2c8ZS%u?05`n^Lr+G@01WM2+D)W+=fKdgUik7MGBtLZXQD&bn@$?}9V z-ZKwY(k$^nuqi z9RlXnZp-MB&$)Ckgcvl$0+&*gE#w;eJA-=mS-~kw zavqu~ljgFNSCnEvTwFCgTv^0NbsJBuw()*g++z29Lhq9YZflGkZNgs-Djb$NZZ=^R zEWDa57)&&gmP;bLe&AEu)Z63zuMmledJ*h|WHG#dG62q9 z({onL^v*@^&SC!Q>kbcSjcm{o+Af~0OW4K?)d08M536Kn*ktM~KFR*F@86#e=t=G9$a^WH z;_or?Ax=G*YpzmP8Ku-F+A#8s&3?xFB0k>l@LGozwo!mOI$v}}0{*tV+991(1k4_3 zJpWiFfM&7E-OoI5f#0$I9*}4y1s67-E}ERCKDZIog1tioyvK10$rxtHmG%5 zKj`!Tc&%(NfuhB_8#QD%)y;*nlvGv6a@Kuw-x)|D!gI6Lu7~!L@)!MOjIjY&=|NA& z@GLx^7UZa{yPXPWPu={PEj_84zHWDk4PPnn?&&+vJr?a=yjq&)H{h~tR|7P{$&w}_ zr!##4%m4+r8WdynOQ>4k{SW+&tM%V&7=@fNVUiC>NReEv@CtLx*tRp&j%&Aa8<$RB zDt#swsEBH+vNP&t?nD_4&1A#lpo1Wj%l$G(`2%v|VOK7b4&T`)X{+T5CK_p3hh1>c zM8`PgxSTVrV@+J)_6H1D&A0@?r{Z}y2$ui^N}XrTYtP0kxXwtj(UvFtTG@XO7xAuW4|c^s7-8`4v1jX&X19(65&z0_JJD1w@#}ht>Me5V3LKT{(knY>D2IwD|&z%0-Jw0>NP46L25i748mSQoL3)E^qzeZnNT6!IAK);}UEBz!2T^m0l zPun+V`vwhbZ>gN|I8sG~oUf9wny`({eJ@u=fWr11)WPJ)5r3*8dsgkx+Y5^9*6SKi zpC6qI+Po{zLORpJ&zM;;zswb|mr3p!6CJt9oHVZ*wPsc+#E#XHZT;>qaj~xb!-jWw*@3w;*j5~E@W%*!n7Z?L#;)M1==i9#p;^Clw5FY=Q z_4p^t@xQAGe=>?Z#o`%a&Z0pY&V64hF0pX@AeP$zsQ0~|`AeZR!?2MwmIu+U?vLML zW@Cywwe(`={CAXw1}ImmU`tkZbB3S&ej?3bHTvV*r^FK}0Z=0vZTNYb=>ff(EP*D#^=tb1wuCK`dKCd`j_l^Z>Z9=_I!(IRu4uta+i4l><6 zIvj~O#u5cBlS73Q;d7zSj=5uUfjB@@H5@ait*3$4SN5p+Jgf|oVL~DJyTa(gGlGYO zfd{%{m@~B6Xy4$z?c^Hb1Gnkd5c*Ha)mpi|+EPqV8=z`H+LPkjPXsvBA6E#mcXC(x zml|?K-B8`OWoblR=WmPoQ+lk{CZd9L*y^i$KSZ8peV2SMyJ@11n00!A=7SP*`nG7g zbKNwj312j=7xriRyrK%^y?Eu{aZG^wXm)E#x+~8+y~KF0&Y@7WXhB|!#4aG4pME8!LkEFzTalatG2c3@E-dGWdU{ z6Ft7|MPTu`<7crQ#yCfh97n;h^L+RejjPo0h*@iK4GMRyTM#0e8fejgS|-AIZDdJr zUj0G@i$@XwmL?icr*ion->Gp-5Y?7iv6FDxqED`L{Bc`KIKaq8!mFcE6A8#iE^l<%AZzLInibUS8*w&m!S>%YSTJW$Sj?yTTY;>BAn9Dyo~;1#pV`U5Z?JJbr8YNyPz3jpX-E?2h2l;lXXD%(n6(?b~iS z|M^8mMD$KE>X|ED_Gu;-(Z4lTuPrjz{>2?|r}Rd4)r&O1X0P=Wb_Yk5tG_Jg%A}c| zMk{sRU#Kkjo&y=)S~Kng47%j@h)Xi$lXZt^tIM5;=hgRmYA(JzO-u7n+}>mvb>n0{ zS8n@w{&?@3O@_+lc}ZWr-`1mKF75F0*ka~>G2U?Rv<;6&^^6_qMphhPT*h$9R5beL z9S0Y!pl_?utAilyN@VF#V=%_aYEEO?N9L%-C)$lHNS@uhY+X5}4W0jHJjG8?|bng&n=eA=!wlV_mr0lfuugWm1!ARH7VOe&^`W_OR~sluQ{_t$rp| z6eZc5XivvtoU5MU*tig4S}d6ZZ{v0dV89gOd`svL^);>`1!v zQAA4KN|HHB^+0GA+<=>RaXKLFlT*;VT`IEbsffnt@ZSz!m>`CHcI$-gt9#lu5>!hI2}6L)WvdAY*vcN%XD#TorZiK~~LXy|aLa6tGyp2H*{FGWm;NNvZt1a?st zY$Y$}iCj%p#lq;1C^T-z7gn3hPl@upQRab{8_Co<)#!T+`uy#}HlZo;;X<}U`8hsV zwU~$PN}DUiFU*}lu0yNdh-mbn?ibxaZkv+H51ppFgG{cY|qO z!&6T?53z-^>??o^UwS77J=oe%`FtcyTFPcOfKK~jUP-vo9I@a^xl%>O6*0pTGmoa+#MrmcRv}`fLdyG*8XIo!wDDLLe*{M5*2A~;QE2gR2h~T}wnuL=FI((jq{PEA z{}CP>Rx2uk{2P^D^T!z%pCvkT1lG3P#X|H7&pC`r>FN?X8c`dVN^EwOF$v<>Xa&I) z`xm9(u{<>|6JS`|&_;E0I+XnQN%e>dGHuO%GRN!h9^;`9a0LsJsOG^E0a}?SI#~Gs zzc_&ZRs8?3Y7?Z2uw;ukI)V*qgIES=id`@L{|cVE2A)=DXGa6ylm!}^4ujC?#@HPY zeCY7mc$A2PPPK%yx&w-79Jzp-f$p=avHs)xl# zF>!5mUCoJ-XRuhIm9HXSgRa@T2mJ?v%)M3vOoAAq57N^H1zW-CuD0tXLaHVH5%vw# z5*aWSpyKck7bB6jw3<|?&15x_qtv*sS8$=lLhUvsGpD^ovJAaJZDQ?UDa0rV@Tlkk zcd~6}J@K>*I+Rda{4s9#(8FRg7lGXrRw#PQXQoU4lx+9hI-S#;@9OIJAxgK4i za_4Jm`Ma7lTfS~xEenkp@qy&G@!G9k6mNU;1OiKi9o3DL3`VhjL&MFLOk1ITNCJk15 z`m+JBFemC+58&w$<=Y5Ay=doF*ZrL|k!cxO!O3)`zJFTO3^8J0X>(!*|hgP!*s zi!R$f#*Zc}ZGoR^p}XV}o^EEr7I8AIC;JRsVK zA3AsQ)O%u7SHX@;{_@-gy&B!swr7RP9g~d&_`}wJ0sronCM@8856d$UJgE+pS=1%v zuL3$`a3=X1a+JP*z4*5?O#g!auQZUedBC{~gz~$Nl5*>AWw(l zOrKv!!Em2Vy8W8DBgmAsxjtr%Od)u4k`!h{0+=wbJt zd9`$j&ZnOD34p~)p8s-T+xDab|M_($+Xk3n_f3BB_8vFfiDu7bse50vdaM5?Ni!z& zquL_OT%5dX|>yrLVB4^52PyL*Dm}OYzrb(52dUaVOq4t`!exuLpW2hKi3sHHF2E2{74i0*0=aDiUN6; ziGZwBB|?V4A7agU|%$b-VWZ zua^6*TO4B4kk7-$M*>uCY!rRSLx6kB6YGG^w;MdJJ&KJAER)kL;dK>p*2ckHD5?O< zl&PDo$VZTp$p#}Fyik7c-0bYhntF#^$wjdODT4Q`Cw0k;zU)m!oxJ0f(6S8Ucj-o8 zogzATm4?3Pb@UuOx$p#Pmm1Nu z5oN!*Z7Sjqj5qwYc*ZZHJxK=Jx=)q*=YV2-MYiy3YqTB%PSc>i-S30!f;rK8PHJa8 zUH1n4CQA=i^_IOemxJBKhv~oHQ(f&|6#1FJrov*|^CK%#bTF-puKTe%>X&IUi_IN+ z<-uD?|7EBw()s07_ve=uyNWqkYKWeYZHCBkL2ih(%iMEXn|r)Xd!q)N3i~c;1@1ADX>B*E(4tIFl$rXjw%jUV zE+P-S?`nZ=eOL((zpfah0i|rOncM5wG6}BPODbbGCF*3(eHLzO5zyKY814{*ODnrbJ^A3>sg0m z)ajck$WH#$cHDP-9XCg$b6fFTL*h}R&HFFhu+!{;PoC}}Dd32vqrET@r+)?Yzn}aC z^CCAY30*^jpOX&#*rX}gf0Z2iLDx$UIN#r;XcBvAMurFZ}N{cvfJ zea#k4}H{EzXvO2~^M`G{9bI!G%sv`TmW@*m0-oe!6++1Nd>%cjKfVWeW zSDd#_fmQcO2IR<_Wk;~drkaLfe-Y)`bt^)$;fNPkGtMnDfSf!>c8FAZG+lmM;vJ^> z`io|yN$1dfq3z31I7%~Lmf{KB&LE*7nMrxF7kG$(9rzuL@}aFVOjt{NwKQ8x4@YLm!an^wA-t)_ z>)`VNbY2+v;o=P+YT8x4qKOFUdKQc|<*~?%^owPSt1cS(1Li8bRjEW7@9^R>*p4)m z(2^jmGwwv(ip&qE}`^lwRspvIi4r+Gk9udswN`W3t=BGIzKmQoEFrLHEeNZHdAX)+{#`C!ksPDA^DF6Icv?xyBXIUw0Z}3U1%b?=D(D( z!D&OIqBAr(014sEexosrGwsEdF5LkYRzwSeEkQ+RJa=`+fjO(&_}xj(8RxN!tGRNB z512pUZCBE_&D%Xt|I4jr3j3_(%%B5kwC9cVO5{?V9%5%)BRdIG&!1I7{qlVO@YF#& zp5$#&sS)z6O{IQ{&1;DYOold*q=^(?!q*fwQ{V@Vc&rd+Byg!!($zzK`!3AsW^Zg8 z4rK!wjC1Fhw9aR2h_WEFS4E7nr-h*9@gi-;F3Cxv^Za|42K}$aFEbguyLq9a%d>pZ zj`G(S-M%-ndI+Bd(F^k68&9TnTJ^b*vZ`J1uS3?Z1%X^MBKFm;YewVD^WQy)csE|g z@wDqYJ@VAs^E>Oo&}_+u*zQD@Hu46NUz8O3#VKg94#lSz82VPr zJ)nK!@?-aA3moHq-M>0fXQ4zmeiN>7sBtMnVu%OJUuDTXQlEcUnYElVsMRQp^eyhb z9rmo>mQXkS6)IrHg+%qlRU)3TdFfN;kU!zdgX$gMz)0t*Wa@$3jgt@m7F# zE1lWO3ssvSY3}pJ{XtRq9E>Bs{l`yI-aun7{54HxjI9dU{uqQE-YHJEef>@b_sw7!Jt=@anR%J zjHT>7DXE1nsl?@jMC^b8XR=E*qZ+gO=2t{)nrgNTfUviZvC1==w$rv7TlMWxr~}BO zq;G`r;|ko)h@L5N*0~j}5LX_2oU38K5X20TURG>h`+VLE>GezUwB&MAfbTWgt^fkK zW~bO^6GTA=_J%Iwq=*kc>!cEMFePAdmH?ZeRS<<}TaBm|ifUuujv7oldwMZl75Ql> zhu$=ZjEe5Z{JlG2ObvC#{Po1vlhVt#_5yU*P# zX$YZN*;B1Oy~miggACL%EoF-1AvMgPky99s4`_%N5xezL-?oBP9xj5fX_jZH%L3Fl z(sNphXKPOA@vz9V*>9?DcJ0W-0Cj6X*M23ORhZ}cQtr!vf0hRmq_t)}sYNoy%QD?l zsEg2Ze^GCa(s^T+HD_{3@b;q4PJCf~u47m{?_f@HoiX5Upt1IyXYa zof0d+bD=xg`;@5b%4VR?xuC)>C`rVIrF!SAq9d|*qK2FgRd6u!%ww>%1n$`#c>3gr z!}xmN@v`vp6K=l)X!?dhkgWT&)+rACmZO!6u(s0fH1P2%5=TFukPnkFe_tr4G<4kA z%{dOfgK>(pJtOYd+;nl%P{TO1qNT&VXors}*crt(p#S(!s--E& z33lxRWCghBV^8RBntcCzYT&;e0{HKz2>x%?zn-c1|GzcsFSVAZ-c!ZYAXr8VPaC>He*ZL}k$(_;_R7+g1TtcWZ;Yzp26rKhJ` zTRd>{@EAEg^Ar4mWqGiS7u{_>Q)EjwS(5aMJIr|u%k>s+geL)<{X|)t&xYJ3v==Tx zbK3w%L%B^tB}AN}qH2#Bj}_W~&XQf!`$Rg9ZfUrowy#<*ihTx-)H6VWk;U*cWc>tTd6u?#&jWKm?CD=*DEE z1C?M+-uP_K6^s0dz!!Fp#Z%)-g17kY-w&VcIyCGn8BzPUVp%m&=Tu;yc7n6rLMbg- zxpdFiSxI%g)tn|QW~IAY#ZyW$Ams_Hso4MQg@6-sM(veY!xgV`GTparpu6UOB2QE^ z)BJea6gK9D zZ~r$g=!_C_Z9NTYlb4^Yp1!vP06K10Uvf|BFU{!&G%49!Ysn%cn$P$Fe61uJNzJiw zIidU4F7#N@{)-3X_s#y#vesdpxqo#U-}cOyN9$kpr;V}hjIhXLO;%XzjWoqsVFs34 zjOWz%77i$W9`M@CaNP|_vb{egO{G-yQraTUWxe$|jjuope#K>)M%iMu`5otH=Dq zYfZ*}v-IQoEiI#wC~RgNj>E^{x*1BNZ|L`s>O43s{!D-$rNV^^U{#eiKpYQZc2@ zxeM4aYq4F8Z!e8LpB=TheRP6Fko7=(>%9U9a7;BfS1~{n@S7_T=18T%58TH2+?n0` zM>+Zq0jmdwWjiNE$q(3{z)gxs@apOGk*E*}Bsqfw@}@7@OBQnKXkonZrjcS@$CUEaybNl#U5eh;r!Q}F6q-eVo0u3a*zlEu&_kHpbsanvyw)SP z-8n%DBq!azD@VzL6og(M(gerV7g9M!=NvRCVAE~df8@dm?agS@P>1pe#WjqA4u0!d zzRV@!kgItBDx40nj`?^aN{moCh?cw+ok;dl zTi6cP$<0q&B^#&~v(Z!CUuG8F(feyk3GMtX!^%uII(aZb*dxE9?8ZLhg^*see7z|= zdm?`Xi27@%)UQJw=w7k+UomR%bF1@#KOZ7-;CpbHf2dJSO$S%mu`fT_x89fXxKogX z@3=%sGCn<7IrTT6hM1ZX13?<8lg})F0cx>g<%<+`m1qq3*w73{;bWiz&JPE+jkcj1 z)&>n2e4P>cCP0Miqm&96)F;wEt4&^QqlWp-mI47Kj6yi%HS#!4@pV7@7BR*8i;FG+ zSoN(k8CC9M%MHc${VLPg;2Mj}m1inHUtX-j10yPbkFC-NXkI~KVDv7PT!suQu_mk7 zpQEC#JhWKhdja?}^K^dc3|UbDFw&`=X!h)KqbbSRrwts7LLQ?fnl8nIkVU_HVq_rrLDLU{RJyi6qi$eZJq6z-v*!mE@xjs zZ{Jg>^Idx_V2CH)odpeo1pGwp+rJRmBglabcj9IqXcHRO{k(Djd-{Cs+{!P?(oX2& zieE0O12b0J>SZA1{-3taJF1DGTi_}pAPOi7DkzBbUJ?SKC@3H$bVNdx-aCYjAc(Xe z9SKz+AV@RPgwTuBfPff6?=^G+2FQ!w_s@Ihy!~VMoVz=-cgpV0+`IF;sQsaL^ow3Q zFM>is(scwLS>oS4K0cS@&?#qQOtwXC1Fx7vaf_ibQFQ);c;h6LC{QA`kGW`wQGvmg zpTEXvrgtr3&{kl)wzSj?_C3g>{^WSE>o@nK2d9r)%!jV9OK|15lrbljgNK*~gJ@95 zVx`e%H~PlIblq5g9%7N!fv{ybdvp1kkn^g;gGudzY0jZxU za%ylt&o|kIYsrDLulUVVc(kr6FnEYOjS1H*PI>(VgcvMD7UoTC_6L_nmx09pc)z8R z0X``Sp@8~qW14RA@S7N85>Q%h%|Tz-I>6p5GZz&8b0fVk;u_B1o2>@3p(9+E8Oa}F zhMDzp%et}&J34&2;o_8qAi60w)JmbIX!mGf)!si)^k(?G`=TBcA{gAuxpAoN`~hDR z%7fBWx24FX!{Pw|-)H+=>(%*5>GN&j^6cfBGQo-TDw5T;LHV|xkzDQml8(AA)K^xP z?h-Q+_l%|CTKdGr&ki8HyLlsy=IiXoN6&e@7GjFVYE?p{k|Hq#q>ekq`=-E;pfu+p z7fN0%^Kw7AbxT2gTi6{3E!m5cn@>Fg0>DHoLN$-Aq3iZ^S69(6b%33nop%hJ`we7$ zyjbK5A77HwUFGGA;b%cDe>$2fd^#T*WF*;G(=8@#b)EoRT;9byN zBZe1@rRD=)hIIs)Xqks{SAQmUaB^|0;i*BC;A}cAEv?K5V3C;xyK;d}76-M>a0HoT z63v|gT=Db2#l)nHZe@?^%<_zF9JF0*KPAtZ8`E8<0~zk=v%MShj6iTc%RXHM;A&kJ z3|s)zbPAOdu~t{}IU!OoI69CpTpmatz5)73M4E`H_`Dq8t9wu;$)W;h%{L~HNgNUX zw798UkU0E4ei#r>QB5o{23;})fjr{aQ}Sq{5?GlaCGG>!|56g(f+3?XRW-TEUA*`H zJhF3XJD!XXvPH#6TvY(%L%XuB*A$eM@(&8PLt-^Y!ao0OWmn)W;QlG6Cx7RTw)+PX z{~>>tCXd@M8gj*drZEr};m=GgEsbH0M6i5`pjP}cym|D;S<>Uh-4D`tLk3C(J?d=E zhpJp5dw@?RxLpVFA&ipSVe@idYkfe@6zT$F{8#>@I4BRaRt*)rZGSai@JC^(eWtH^ z;hq9F-Zb?0o1W42hs<6V)siVEa8CmqqGGhlr7f=@13t6D=Hy=AnhS;T1q^VC@Kti*RaV@Lnrt*<+h10K)ccp#bo%e63UbjC(MxhX1h zl|pu{W;-YneyaMM?T!*(O7}&M?s`}OFR|h%Y|-)YwRM?05o+8aJ8H@|)|5Zy(hCc_ zj@@)=`zR*CisUjVU+&O(yvnxj)l%gGZhIK@@&4YuO+r^wYUv}x zJ4*B3Y2~jG`yf@f^;vl3LgntkN6m=$?|*&k$7Mk$X$fEwzlDmgF5nuP(OBVoV zW_^AAotM`r2OI(&=J5k4fe_5}aevPP9T`tS+j46b^?eMvHoT#`k12l4c4cRC(9mrT zObM;V)X-lC^&1vC(}ZicW%9rsk8AfTiFUUSryQFD&iUG}I4vybzxxpn6?6QnnC5e+ zG79j81gH5z!uO8$+HsYaDRKkT^_|QnT0h{L>b=&PWj$erlQncaRXQ>=vjOrjH1Gh1 zj9b(C&_Zv<&8FDixZ8%+C;s><(Iocy>CLksu}?wv<5s+g3k^)8@+B(Jks*zTNX$Tl z+n_zCjFa zoy5Oy#^=J~1C4%xKH%^dnf3Kj3kwTU->p3Jy|xpen7Ey~TY*yW)Ip~!3v^3b);k!nd8+4ber?vZ4T99$&dTn);W_p-g&V7t!KGlSB;=0f2OZ-EACU$6%Rc` z&ntWd>!;u@9(#pFCf1X3y;BpmqFBQN=lzGkGGFTAreRElJ-Rw#V}6yyIHPWOdXuEgM%UjK#O;Q|$LjUVh!$ ziY~`g*c4^H_)m@3y~skr?zkO4Qz5ZT=)wAr>`rsdm4s<^o#tHSTxk_r=fK_6+>B~R z#>V4Embk36CUN^`_;dLpW4q=v)O{!V3nkBATp{Op)Aow)vimTYrH-YsBx%+^Nto0% z)|h;M?4tV0Uf;;;a)Uz5w6mmD4b)T5w(s#JsFa?C|3!-L8?l2Bb=zJ$Qujn&xSop{ zx%<&j*;V6p!LQ0F?|#UT{`8FJX4$x6wv2gqR&ByV)%&l@nVd7PWddhCTpHlL*p}0j z^@tyn=~&M+v}BY_IOGq&?k|M3GnE!+v^T_fa?c>^9J&`EVSX%hj$U)BYukS!<1eP$ zvpT9WTI9g+h#Z;mbcp}!E86wFvW)#rrLJH2_UC>kT_+G}SB{nfbb7NM( z&&f@ewk70~g_|5x?A@K#H1DI~M5dNZkgu8b-kI3c$~7iLPGHX&eao2rN)DvcQmnx7 z*l&qCP>8894a~oy?5W)Vw6c%n! zCb_1#yf7z=_$DiXic5tVf6ts4(tJaAZL@QA?#MmIDcuRW;zQuT z$9(#_mA!U@8(hy4BiD>vIn_ghHCvlC_g# zb~0nFwk8IB?Jo6}Ov2#KcfP7A4ByUpPp#FA!qWl@>=DndrPJ)xvJqbwF5^>BFsY=} zv98)kfyMX-_!gQZzERMoG?_k21?M$xurX>*Wv8}T+$hw7`^ECBs9TPrXkbDi-@Y%- zqA`UD>0XB#9N>aSK;mu5=ZK~Z>iXaPp)I&#A4v7-+y)2=`4y;#l+Kffvrr1D57P_HyM#=dcb2`s$16z6)& zzLx$^t}AkRd?n#)AsN}?31r&nuOcA`pq(J4N=)ytQ)T(C7+;l^4$h=yx+8vwUhDIO zIx5;I^wDBT?OXVcr6r9ApUFK5kvf%{p*MDFlG}3G*UJf_yoI>2DKBFbiPyqQN77^P zh(9KY$gf7{dKt4@k13OFSr-Wyc&*y;rr$&84HM_{_{_0#W5VPVil~7SM{9)!{nbFO z{Jwv~Ts-6S9m`~YMBtv}gXzkhTvis+Owg@zR49J`rm9f}G-DW0{*t&)Z1u2FXNVAY z3UAZ)j^n2iZl+kX^_)+ZZuAf8&Q@}a=6dp8xC1HbWO}0?4Cu^jWt%{L2e(Ey+*lLA?i3Izz`PiaGsq?){ zIYC~RdoDEC1&G&ILvcMlm2$mLWQ6Ayh?legyB2FD{+!mhDl=&e@rm-{s5d}PLo>1y zm*bhfL=4^zD1W&p;$RfEDPoDpvhJ1Y(_6ILI|yUsM1JZWdbw0gg4np|a+?yV<`%rz z7N4NkNn?VVWM|)-;~pU^n?~yNvghl9tsn3bwb61pv1HN~SH58$j!9^}gg;S_BgN z!ASN!mntx0rp|2dc=;gAs_&Iq(!bYDBd?UL`=|C$riA6gVtP@_6%P2SeQ)n;d4za) zPYC+05Yg=$kU|JS`B|kS^OQ%zOh%j6l}XwjGU~pE?^hRc5_kTC%NmF_EIzK{5@Te} zy?9ZxXFDf>itdj#>}AI8Z-;sp}> zf;Wb1ciibpZfVdEl=XlsXHD;Abkjx!Tj@!8wa&u??tp`oDXS%b%Bq$ju5`O)WGj*v zhJIy{yKpR0uOZN+v6#8I!lkqtZ{Gdp^ZP^Y`U+6956j+E;M0Qz;-+6&1AS)czT+Y0 z#vZ&Vw9LYBq5|?7*LZ5ZEjGN>lhNcs`#gv+f-;hG9IsGcrQ&gy9gIVk-hdvPD-s}i zs+*cq;{~8%99%dO0>xJY4Q%G@7`4;n6kVQ%Dn6O{X=+xvV=~3~YT=G}n7o;$eQC_N z<@}%O#lj*anYTil#p9~#)`SkeUPug;?kSSr0( zgMNlkBW(TMwE40_A-FyJ7UEn&4w;ARw- zy!r?b)yZmeyhZrV^C+}wKqeD~GGaS_Lc!*zE&oVQNP9gL!Pad4aH-$*c;z@Q?uO&U zu@&)nn+%oJMj_pbFgNAIJ9A^z>A#8ps{AEqD~T|wwH6~BZ$+o~8pnM6H{~07TCv!y zK#(~LCKz`|*-8kcixk^c#&l)0-G$lnrqBbCCj5PvIpDR`wr<}NeLI>N(X_2-V=zFeF`IYA=+uU6rBd>M^nI9TD;VTi}G|By1}pH`lyq%v0Y0T{NTg z8$i^LgR{#`%g;8AJ9b%CTSy|J+9Pi-N)zo4-kaPVBBlcebsBhTw zxlkbET)I8yfRJt;@`gOxjAH@8Qw3V`)mMk=GFr(-rA%$P#6(5K{K>!z=oz`ooU9cj z+>>%=knufJv$aJwt#D9>Yj-8OL9aKIl*VA4yKPa`0Y{GE;o)1rAf+~YfG3H9zRGu- z-rIimVuSfIr2@m%Td;h!#ho1tnlRI!33PhhqOTue-Uqfqk|zh~TU?i&iYwh?SeHOC))$ z8y0Z1Q5{Hdg+G+(Ce!Er{;n6RLLfF5XQ$qqzRa1(`Stba^mJx&7zc4D#DDB%+T&z) z(i_snxk*fd-A)dgjEE=m)H0ri$}1=+u!4g!1_m@dQvQ3X>7N=W=KJdoFO+NZpZCy_ zU6Z0gC+@dz-GHGtvPt+2{U5!Z?eR$0Hd zs>$5dmR;A$Ox2fa8h7l-#v}bF*3YJe;!r3F$b(teT<`XAV4Vos#hSCsFgOa?cIJOz zKZ*qYQ`tZMzj`c7%v$j7$A$nM$L4YZ@wce{<)T+;WJb0bl5hU6rWH#1?pma~FDeu*!v6>MC(ncc diff --git a/docs/getting-started/ssl.md b/docs/getting-started/ssl.md deleted file mode 100644 index efa36f4af..000000000 --- a/docs/getting-started/ssl.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: SSL Configuration -sidebar_position: 4 ---- - -To increase the security of your server, you can enable encrypted access to the LibreTime administration interface, and direct your users towards this more secure login page. The main advantage of using this encryption is that your remote users' login names and passwords are not sent in plain text across the public Internet or untrusted local networks, such as shared Wi-Fi access points. - -## Deploying a certificate with Certbot - -One of the fastest, easiest, and cheapest ways to get an SSL certificate is through [Certbot](https://certbot.eff.org/), as created by the -Electronic Frontier Foundation. To use Certbot, your LibreTime installation must be open to the internet on port 80. - -Follow [Certbot's documentation](https://certbot.eff.org/instructions) for your OS and webserver to install an SSL certificate. You'll need to renew the certificate every 90 days to keep your installation secure. - -## Mixed encrypted and unencrypted content - -Whether your certificate is self-signed or not, you will see browser security warnings whenever a https:// page is delivering unencrypted content, such as the stream from an Icecast server. In Firefox, an exclamation mark icon is displayed in the address bar of the **Listen** pop-up. diff --git a/docs/guides/_category_.json b/docs/guides/_category_.json deleted file mode 100644 index c59a630d3..000000000 --- a/docs/guides/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Guides", - "position": 3 -} diff --git a/docs/intro.md b/docs/intro.md deleted file mode 100644 index 4fd6a8198..000000000 --- a/docs/intro.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Introduction - -LibreTime is an open-source radio automation system. It can be used for music and show playout in a radio studio or start an internet radio station on its own. LibreTime runs on Ubuntu and Debian Linux; [we're also working on making Docker images](https://github.com/LibreTime/libretime/issues/949). - -## Getting started - -Get started by installing LibreTime on your server. Open up your terminal and enter - -```bash -git clone https://github.com/LibreTime/libretime.git -cd libretime - -sudo ./install -fiap -``` - -After the installer is done, head to your server's IP address in a web browser and complete the setup wizard. - -### Upload some music - -Login using the default username and password and click on the blue **Upload** button in the left pane. Drag and drop files onto the upload area or click to browse for files on your computer. - -![](./guides/scheduling-shows-select_files.png) - -Once the files have uploaded and finished being analyzed, you can schedule your first show. - -### Schedule your first show - -Navigate to the Calendar and click the **+ New Show** button on the toolbar. - -![](./guides/scheduling-shows-screenshot560-show_when.png) - -Fill out the **What** (name, description of your show) and **When** (start time, end time) blocks, then click the grey **+ Add This Show** button at the top. - -Click on the new show in the Calendar to open its context menu and select **Schedule Tracks**. - -![](./guides/scheduling-shows-screenshot561-add_show_content.png) - -Your uploaded tracks, playlists, smartblocks, and webstreams appear in the left pane; drag them to the right pane in the order you want them to play back for your show. The bar at the bottom of the right playlist tells you how much time you have left in your show. - -![](./guides/scheduling-shows-screenshot562-drag_show_content.png) - -When you're done, click **Ok** at the bottom of the window. - -### That's it! - -You just scheduled your first show! It will automatically begin playing back at the time your show is set to start. You can listen to what is playing live by clicking the **Listen** button under the On Air indicator in the top right corner. - -## Next steps - -- Make sure you [set the time on your server](/docs/getting-started/set-server-time) -- Learn how to [work with podcasts](/docs/guides/podcasts) -- [Create user accounts](/docs/guides/users) for your DJs, Program Managers, and Administrators -- Learn how to [broadcast live](/docs/guides/live-broadcast) from your studio diff --git a/website/src/pages/release-notes.md b/docs/releases/3.0.0-alpha.10.md similarity index 93% rename from website/src/pages/release-notes.md rename to docs/releases/3.0.0-alpha.10.md index f6929e3c6..5543440ef 100644 --- a/website/src/pages/release-notes.md +++ b/docs/releases/3.0.0-alpha.10.md @@ -1,14 +1,12 @@ --- -title: LibreTime 3.0 Alpha 10 Released +title: LibreTime 3.0.0 alpha 10 --- -# Release Notes for LibreTime 3.0 Alpha 10 - The full tarball for the **3.0.0-alpha.10** release of LibreTime is available [here](https://github.com/LibreTime/libretime/releases/download/3.0.0-alpha.10/libretime-3.0.0-alpha.10.tar.gz). Since this is an alpha release there will be bugs in the code. -Please report new issues and/or feature requests in the [issue tracker](https://github.com/LibreTime/libretime/issues). Join our [discourse](https://discourse.libretime.org/) or chat to us on our [Mattermost](https://chat.libretime.org/e) instance if you need help and for general discussion. +Please report new issues and/or feature requests in the [issue tracker](https://github.com/LibreTime/libretime/issues). Join our [discourse](https://discourse.libretime.org/) or chat to us on our [Mattermost](https://chat.libretime.org/) instance if you need help and for general discussion. ## Features @@ -57,7 +55,7 @@ The LibreTime project wants to thank the following contributors for authoring PR ## Installation -The main installation docs may be found [here](/docs/getting-started/install/). They describe a "developer" install using the bundled `install` script. +The main installation docs may be found [here](../admin-manual/setup/install.md). They describe a "developer" install using the bundled `install` script. We are preparing packages for supported distros and you can take those for a spin if you would like to. Usually the packages get built pretty soon after a release is published. If the current version is not available from the below sources you should wait for a while until they get uploaded. @@ -71,14 +69,14 @@ If you want to skip the installer GUI completely you can configure LibreTime usi ## Updating -See [the docs](/docs/upgrading) for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating. +See [the docs](../admin-manual/backup.md) for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating. If the update does not go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure broadcast continuity. If you installed from GitHub you can `git pull` in your local working copy and re-run the `./install` script with the same `--web-root` and `--web-user` arguments you used during the initial install. Tarball users can leave out the git pull part and just call the new version of the install script. Once the update has taken place, you will need to run the following commands to clean up old scripts and configuration: -```shell +```bash # Remove the old packages sudo pip3 uninstall \ airtime-playout \ @@ -144,14 +142,14 @@ Some minimal OS installs do not have a default locale configured. This only seem You can set up the locale using a combination of the following commands. You might also want to consult the documentation of your VPS provider as it may contain an official way to set up locales when provisioning a VPS. -```shell +```bash # Set locale using systemds localectl localectl set-locale LANG="en_US.utf8" ``` These instructions do not seem to work on all Debian based distros so you might need to use update-locale as follows. -```shell +```bash #Purge all locales but en_US.UTF-8 sudo locale-gen --purge en_US.UTF-8 #Populate LANGUAGE= diff --git a/docs/releases/README.md b/docs/releases/README.md new file mode 100644 index 000000000..858a5c2cf --- /dev/null +++ b/docs/releases/README.md @@ -0,0 +1,15 @@ +--- +title: Releases +--- + +:::info + +LibreTime is following [semantic versioning](https://semver.org/). + +::: + +:::note + +:sparkles: New LibreTime versions are released when it is ready :tm:. + +::: diff --git a/docs/releases/_category_.yml b/docs/releases/_category_.yml new file mode 100644 index 000000000..0aa7eb9ab --- /dev/null +++ b/docs/releases/_category_.yml @@ -0,0 +1,2 @@ +label: Releases +position: 50 diff --git a/docs/releases/unreleased.md b/docs/releases/unreleased.md new file mode 100644 index 000000000..c05bad176 --- /dev/null +++ b/docs/releases/unreleased.md @@ -0,0 +1,3 @@ +--- +title: Unreleased +--- diff --git a/docs/server-config/_category_.json b/docs/server-config/_category_.json deleted file mode 100644 index fba54e0f9..000000000 --- a/docs/server-config/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Server configuration", - "position": 5 -} diff --git a/docs/server-config/backing-up-the-server.md b/docs/server-config/backing-up-the-server.md deleted file mode 100644 index b67206215..000000000 --- a/docs/server-config/backing-up-the-server.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Backing up LibreTime ---- - -:::info - -At the moment, there is no script to cleanly restore a LibreTime backup. To restore a LibreTime backup, install a fresh copy, go through the standard setup process, and reupload the backed-up media files. - -::: - -A backup script is supplied for your convenience in the `utils/` folder of the LibreTime repo. -Run it using: - -``` -sudo bash libretime-backup.sh # backs up to user's home folder -# or -sudo bash libretime-backup.sh /backupdir/ -``` - -The backup process can be automated with Cron. Simply add the following to the root user's -crontab with `sudo crontab -e`: - -``` -0 0 1 * * /locationoflibretimerepo/libretime/backup.sh -``` - -> For more information on how Cron works, check out [this Redhat guide](https://www.redhat.com/sysadmin/automate-linux-tasks-cron). - -If you wish to deploy your own backup solution, the following files and folders need to -be backed up. - -``` -/srv - /airtime - /stor - /imported - Successfully imported media - /organize - A temporary holding place for uploaded media as the importer works -/etc - /airtime - airtime.conf - The main LibreTime configuration - icecast_pass - Holds the password for the Icecast server - liquidsoap.cfg - The main configuration file for Liquidsoap -``` - -In addition, you should keep a copy of the database current to the backup. The below code -can be used to export the LibreTime database to a file. - -``` -sudo -u postgres pg_dumpall filename -# or to a zipped archive -sudo -u postgres pg_dumpall | gzip -c > archivename.gz -``` - -It is recommended to use an incremental backup technique to synchronize -the your LibreTime track library with a backup server regularly. (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.) - -Two notible backup tools are [rsync](https://rsync.samba.org/) (without version control) and -[rdiff-backup](https://rdiff-backup.net/) (with version control). _rsync_ comes -preinstalled with Ubuntu Server. - -:::note - -Standard rsync backups, which are used by the backup script, cannot restore files deleted in the backup itself - -::: diff --git a/docs/upgrading.md b/docs/upgrading.md deleted file mode 100644 index 3d2bc9ea5..000000000 --- a/docs/upgrading.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Upgrading LibreTime ---- - -:::caution - -While upgrading your installation may not cause any station downtime or data loss, always plan for the worst. Only upgrade your installation when LibreTime isn't playing out shows, notify your DJs and essential personnel, and back up your database, configuration files, and media library before you make any changes. - -::: - -1. [Back up the server](/docs/server-config/backing-up-the-server) and make a copy of all the configuration files under `/etc/airtime/`. -2. Run `./install -fiap` as described in the [installation guide](/docs/getting-started/install). - This will detect an existing LibreTime deployment and backup any - configuration files that if finds. The install script also tries to restart - the needed services during an upgrade. In any case you should monitor if this - happened and also take a quick look at the logs files to be sure everything - is still fine. Now might be the time to reboot the system or virtual machine - LibreTime is running on since regular reboots are part of a healthy system - anyway. -3. Log into the new version of the LibreTime administration interface. If the - playout engine starts up and detects that a show should be playing at the - current time, it will skip to the correct point in the current time and start - playing. If you encounter issues trying to connect to the new administration - interface, you may need to clear your web browser's cache. - -### Migrating from Airtime - -:::note - -Airtime's _linked files_ and _watched folders_ features currently do not work in LibreTime. - -::: - -LibreTime has dropped support for Ubuntu 16.04, which is the last supported -version of Ubuntu that Airtime supports. The following instructions describe how -to migrate from Airtime to LibreTime. If there are issues encountered while -upgrading, please [file a bug](https://github.com/libretime/libretime/issues/new?labels=bug&template=bug_report.md) - -1. Take a [backup of the server](/docs/server-config/backing-up-the-server) -2. Create a new system for LibreTime and run the install script, as described in the [install guide](/docs/getting-started/install). -3. Before running the web-configuration, restore the Airtime database to the new - PostgreSQL server, media database and configuration file -4. Update the configuration file to match the new configuration schema and update any - changed values. See the [host configuration](/docs/server-config/host-configuration) documentation - for more details. -5. Edit the Icecast password in `/etc/icecast2/icecast.xml` to reflect the - password used in Airtime -6. Restart the LibreTime services -7. Open LibreTime's dashboard and verify all services are running diff --git a/docs/user-manual/README.md b/docs/user-manual/README.md new file mode 100644 index 000000000..44be95064 --- /dev/null +++ b/docs/user-manual/README.md @@ -0,0 +1,21 @@ +--- +title: User manual +--- + +Welcome to the **LibreTime user manual**, you should find guides and tutorials for managers, and content creators to use LibreTime. + +## Introduction + +:construction: + +## As manager + +:construction: + +## As content creator + +:construction: + +## As guest + +:construction: diff --git a/docs/user-manual/_category_.yml b/docs/user-manual/_category_.yml new file mode 100644 index 000000000..2c401ab95 --- /dev/null +++ b/docs/user-manual/_category_.yml @@ -0,0 +1,2 @@ +label: User manual +position: 30 diff --git a/docs/guides/calendar-screenshot353-contents_of_show.png b/docs/user-manual/calendar-screenshot353-contents_of_show.png similarity index 100% rename from docs/guides/calendar-screenshot353-contents_of_show.png rename to docs/user-manual/calendar-screenshot353-contents_of_show.png diff --git a/docs/guides/calendar-screenshot451-calendar.png b/docs/user-manual/calendar-screenshot451-calendar.png similarity index 100% rename from docs/guides/calendar-screenshot451-calendar.png rename to docs/user-manual/calendar-screenshot451-calendar.png diff --git a/docs/guides/calendar-screenshot452-calendar_resolution.png b/docs/user-manual/calendar-screenshot452-calendar_resolution.png similarity index 100% rename from docs/guides/calendar-screenshot452-calendar_resolution.png rename to docs/user-manual/calendar-screenshot452-calendar_resolution.png diff --git a/docs/guides/calendar-screenshot459-update_show.png b/docs/user-manual/calendar-screenshot459-update_show.png similarity index 100% rename from docs/guides/calendar-screenshot459-update_show.png rename to docs/user-manual/calendar-screenshot459-update_show.png diff --git a/docs/guides/calendar-screenshot488-add_remove_content.png b/docs/user-manual/calendar-screenshot488-add_remove_content.png similarity index 100% rename from docs/guides/calendar-screenshot488-add_remove_content.png rename to docs/user-manual/calendar-screenshot488-add_remove_content.png diff --git a/docs/guides/calendar-screenshot489-show_content.png b/docs/user-manual/calendar-screenshot489-show_content.png similarity index 100% rename from docs/guides/calendar-screenshot489-show_content.png rename to docs/user-manual/calendar-screenshot489-show_content.png diff --git a/docs/guides/calendar-screenshot490-delete_this_instance.png b/docs/user-manual/calendar-screenshot490-delete_this_instance.png similarity index 100% rename from docs/guides/calendar-screenshot490-delete_this_instance.png rename to docs/user-manual/calendar-screenshot490-delete_this_instance.png diff --git a/docs/guides/calendar-screenshot583-show_instance_description_vc9ooit.png b/docs/user-manual/calendar-screenshot583-show_instance_description_vc9ooit.png similarity index 100% rename from docs/guides/calendar-screenshot583-show_instance_description_vc9ooit.png rename to docs/user-manual/calendar-screenshot583-show_instance_description_vc9ooit.png diff --git a/docs/guides/calendar.md b/docs/user-manual/calendar.md similarity index 99% rename from docs/guides/calendar.md rename to docs/user-manual/calendar.md index 56156d8e8..a69f6bb0b 100644 --- a/docs/guides/calendar.md +++ b/docs/user-manual/calendar.md @@ -1,5 +1,5 @@ --- -title: Show Calendar +title: Show calendar --- The Calendar page of the LibreTime administration interface has three views: **day**, **week** and **month**, which can be switched using the grey buttons in the top right corner. By default, the **month** view is shown, with today's date highlighted by a pale grey background. diff --git a/docs/guides/dashboard-columns.png b/docs/user-manual/dashboard-columns.png similarity index 100% rename from docs/guides/dashboard-columns.png rename to docs/user-manual/dashboard-columns.png diff --git a/docs/guides/dashboard-delete-extra.png b/docs/user-manual/dashboard-delete-extra.png similarity index 100% rename from docs/guides/dashboard-delete-extra.png rename to docs/user-manual/dashboard-delete-extra.png diff --git a/docs/guides/dashboard-drag-and-drop.png b/docs/user-manual/dashboard-drag-and-drop.png similarity index 100% rename from docs/guides/dashboard-drag-and-drop.png rename to docs/user-manual/dashboard-drag-and-drop.png diff --git a/docs/guides/dashboard-end-gap.png b/docs/user-manual/dashboard-end-gap.png similarity index 100% rename from docs/guides/dashboard-end-gap.png rename to docs/user-manual/dashboard-end-gap.png diff --git a/docs/guides/dashboard-filter.png b/docs/user-manual/dashboard-filter.png similarity index 100% rename from docs/guides/dashboard-filter.png rename to docs/user-manual/dashboard-filter.png diff --git a/docs/guides/dashboard-now-playing.png b/docs/user-manual/dashboard-now-playing.png similarity index 100% rename from docs/guides/dashboard-now-playing.png rename to docs/user-manual/dashboard-now-playing.png diff --git a/docs/guides/dashboard.md b/docs/user-manual/dashboard.md similarity index 98% rename from docs/guides/dashboard.md rename to docs/user-manual/dashboard.md index db9fe6aad..3b69dded3 100644 --- a/docs/guides/dashboard.md +++ b/docs/user-manual/dashboard.md @@ -94,7 +94,7 @@ playing immediately. This manual triggering of playout can be used as a live assist technique, in which the LibreTime server's soundcard output is mixed with other sources such as microphones or telephone hybrids on its way to a transmitter, or a separate stream encoder. For instance, a live show's host may -not wish to cut off a studio discussion in order to play music at a fixed time. +not wish to cut off a studio discussion to play music at a fixed time. ![](./dashboard-drag-and-drop.png) diff --git a/docs/guides/listener-stats-stream-stats.jpg b/docs/user-manual/listener-stats-stream-stats.jpg similarity index 100% rename from docs/guides/listener-stats-stream-stats.jpg rename to docs/user-manual/listener-stats-stream-stats.jpg diff --git a/docs/guides/listener-stats.md b/docs/user-manual/listener-stats.md similarity index 100% rename from docs/guides/listener-stats.md rename to docs/user-manual/listener-stats.md diff --git a/docs/guides/live-broadcast.md b/docs/user-manual/live-broadcast.md similarity index 100% rename from docs/guides/live-broadcast.md rename to docs/user-manual/live-broadcast.md diff --git a/docs/guides/playlists-playlist-editor.png b/docs/user-manual/playlists-playlist-editor.png similarity index 100% rename from docs/guides/playlists-playlist-editor.png rename to docs/user-manual/playlists-playlist-editor.png diff --git a/docs/guides/playlists-smartblock-advanced.png b/docs/user-manual/playlists-smartblock-advanced.png similarity index 100% rename from docs/guides/playlists-smartblock-advanced.png rename to docs/user-manual/playlists-smartblock-advanced.png diff --git a/docs/guides/playlists-smartblock-content.png b/docs/user-manual/playlists-smartblock-content.png similarity index 100% rename from docs/guides/playlists-smartblock-content.png rename to docs/user-manual/playlists-smartblock-content.png diff --git a/docs/guides/playlists-smartblock-options.png b/docs/user-manual/playlists-smartblock-options.png similarity index 100% rename from docs/guides/playlists-smartblock-options.png rename to docs/user-manual/playlists-smartblock-options.png diff --git a/docs/guides/playlists.md b/docs/user-manual/playlists.md similarity index 98% rename from docs/guides/playlists.md rename to docs/user-manual/playlists.md index ff199d64c..d293df869 100644 --- a/docs/guides/playlists.md +++ b/docs/user-manual/playlists.md @@ -54,7 +54,7 @@ Click the **plus button** on the left to add OR criteria, such as **Creator** co :::tip -If you see the message **0 files meet the criteria**, it might mean that the files in the Library have not been tagged with the correct metadata. See the chapter [Preparing media](/docs/guides/preparing-media) for tips on tagging content. +If you see the message **0 files meet the criteria**, it might mean that the files in the Library have not been tagged with the correct metadata. See the chapter [Preparing media](./preparing-media.md) for tips on tagging content. ::: diff --git a/docs/guides/playout-history-history-templates.png b/docs/user-manual/playout-history-history-templates.png similarity index 100% rename from docs/guides/playout-history-history-templates.png rename to docs/user-manual/playout-history-history-templates.png diff --git a/docs/guides/playout-history-log-sheet.png b/docs/user-manual/playout-history-log-sheet.png similarity index 100% rename from docs/guides/playout-history-log-sheet.png rename to docs/user-manual/playout-history-log-sheet.png diff --git a/docs/guides/playout-history-new-hist-temp.png b/docs/user-manual/playout-history-new-hist-temp.png similarity index 100% rename from docs/guides/playout-history-new-hist-temp.png rename to docs/user-manual/playout-history-new-hist-temp.png diff --git a/docs/guides/playout-history.md b/docs/user-manual/playout-history.md similarity index 99% rename from docs/guides/playout-history.md rename to docs/user-manual/playout-history.md index 8ea20269d..5bf896929 100644 --- a/docs/guides/playout-history.md +++ b/docs/user-manual/playout-history.md @@ -1,5 +1,5 @@ --- -title: Playout History +title: Playout history --- On the History menu, the **Playout History** page enables you to view a list of files played within a specific date and time range. This page is designed to help your station prepare reports for music royalty collection societies and regulatory agencies. diff --git a/docs/guides/podcasts-podcasts_dashboard.png b/docs/user-manual/podcasts-podcasts_dashboard.png similarity index 100% rename from docs/guides/podcasts-podcasts_dashboard.png rename to docs/user-manual/podcasts-podcasts_dashboard.png diff --git a/docs/guides/podcasts-podcasts_editor.png b/docs/user-manual/podcasts-podcasts_editor.png similarity index 100% rename from docs/guides/podcasts-podcasts_editor.png rename to docs/user-manual/podcasts-podcasts_editor.png diff --git a/docs/guides/podcasts.md b/docs/user-manual/podcasts.md similarity index 93% rename from docs/guides/podcasts.md rename to docs/user-manual/podcasts.md index e76197f20..4b0a04e1a 100644 --- a/docs/guides/podcasts.md +++ b/docs/user-manual/podcasts.md @@ -12,7 +12,7 @@ Podcast feeds coming from Anchor.fm have been known to have a similar issue. ::: -The podcast interfaces provides you with the ability to generate [Smartblocks](/docs/guides/playlists) that can be used in conjunction with autoloading playlists to schedule the newest episode of a podcast without human intervention. +The podcast interfaces provides you with the ability to generate [Smartblocks](./playlists.md) that can be used in conjunction with autoloading playlists to schedule the newest episode of a podcast without human intervention. diff --git a/docs/guides/preparing-media-screenshot126-debra_silence.png b/docs/user-manual/preparing-media-screenshot126-debra_silence.png similarity index 100% rename from docs/guides/preparing-media-screenshot126-debra_silence.png rename to docs/user-manual/preparing-media-screenshot126-debra_silence.png diff --git a/docs/guides/preparing-media-screenshot175-ex_falso.png b/docs/user-manual/preparing-media-screenshot175-ex_falso.png similarity index 100% rename from docs/guides/preparing-media-screenshot175-ex_falso.png rename to docs/user-manual/preparing-media-screenshot175-ex_falso.png diff --git a/docs/guides/preparing-media.md b/docs/user-manual/preparing-media.md similarity index 99% rename from docs/guides/preparing-media.md rename to docs/user-manual/preparing-media.md index 5fa7f7e3c..6b5eebaf8 100644 --- a/docs/guides/preparing-media.md +++ b/docs/user-manual/preparing-media.md @@ -1,5 +1,5 @@ --- -title: Preparing Media for Upload +title: Preparing media for upload --- 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. diff --git a/docs/guides/scheduling-shows-on-air-status.png b/docs/user-manual/scheduling-shows-on-air-status.png similarity index 100% rename from docs/guides/scheduling-shows-on-air-status.png rename to docs/user-manual/scheduling-shows-on-air-status.png diff --git a/docs/guides/scheduling-shows-screenshot558-add_show.png b/docs/user-manual/scheduling-shows-screenshot558-add_show.png similarity index 100% rename from docs/guides/scheduling-shows-screenshot558-add_show.png rename to docs/user-manual/scheduling-shows-screenshot558-add_show.png diff --git a/docs/guides/scheduling-shows-screenshot560-show_when.png b/docs/user-manual/scheduling-shows-screenshot560-show_when.png similarity index 100% rename from docs/guides/scheduling-shows-screenshot560-show_when.png rename to docs/user-manual/scheduling-shows-screenshot560-show_when.png diff --git a/docs/guides/scheduling-shows-screenshot561-add_show_content.png b/docs/user-manual/scheduling-shows-screenshot561-add_show_content.png similarity index 100% rename from docs/guides/scheduling-shows-screenshot561-add_show_content.png rename to docs/user-manual/scheduling-shows-screenshot561-add_show_content.png diff --git a/docs/guides/scheduling-shows-screenshot562-drag_show_content.png b/docs/user-manual/scheduling-shows-screenshot562-drag_show_content.png similarity index 100% rename from docs/guides/scheduling-shows-screenshot562-drag_show_content.png rename to docs/user-manual/scheduling-shows-screenshot562-drag_show_content.png diff --git a/docs/guides/scheduling-shows-select_files.png b/docs/user-manual/scheduling-shows-select_files.png similarity index 100% rename from docs/guides/scheduling-shows-select_files.png rename to docs/user-manual/scheduling-shows-select_files.png diff --git a/docs/guides/scheduling-shows.md b/docs/user-manual/scheduling-shows.md similarity index 99% rename from docs/guides/scheduling-shows.md rename to docs/user-manual/scheduling-shows.md index ad71296ee..06532be89 100644 --- a/docs/guides/scheduling-shows.md +++ b/docs/user-manual/scheduling-shows.md @@ -1,5 +1,5 @@ --- -title: Scheduling Shows +title: Scheduling shows --- diff --git a/docs/guides/settings-api-settings.png b/docs/user-manual/settings-api-settings.png similarity index 100% rename from docs/guides/settings-api-settings.png rename to docs/user-manual/settings-api-settings.png diff --git a/docs/guides/settings-general-playback-settings.png b/docs/user-manual/settings-general-playback-settings.png similarity index 100% rename from docs/guides/settings-general-playback-settings.png rename to docs/user-manual/settings-general-playback-settings.png diff --git a/docs/guides/settings-libretime-master-source-stream.png b/docs/user-manual/settings-libretime-master-source-stream.png similarity index 100% rename from docs/guides/settings-libretime-master-source-stream.png rename to docs/user-manual/settings-libretime-master-source-stream.png diff --git a/docs/guides/settings-libretime-show-source-stream.png b/docs/user-manual/settings-libretime-show-source-stream.png similarity index 100% rename from docs/guides/settings-libretime-show-source-stream.png rename to docs/user-manual/settings-libretime-show-source-stream.png diff --git a/docs/guides/settings-station-info-settings.png b/docs/user-manual/settings-station-info-settings.png similarity index 100% rename from docs/guides/settings-station-info-settings.png rename to docs/user-manual/settings-station-info-settings.png diff --git a/docs/guides/settings.md b/docs/user-manual/settings.md similarity index 99% rename from docs/guides/settings.md rename to docs/user-manual/settings.md index 5eabba151..6e660ffbe 100644 --- a/docs/guides/settings.md +++ b/docs/user-manual/settings.md @@ -57,7 +57,7 @@ refactors. You can switch back at any time. 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_](/docs/guides/playout-history) chapter, in the +[_Exporting the schedule_](./playout-history.md) chapter, in the _Advanced Configuration_ section of this book). The **Allowed CORS URLs** is intended to deal with situations where you want a diff --git a/docs/guides/status-screenshot521-system_status_240.png b/docs/user-manual/status-screenshot521-system_status_240.png similarity index 100% rename from docs/guides/status-screenshot521-system_status_240.png rename to docs/user-manual/status-screenshot521-system_status_240.png diff --git a/docs/guides/status.md b/docs/user-manual/status.md similarity index 100% rename from docs/guides/status.md rename to docs/user-manual/status.md diff --git a/docs/guides/users-user-edit.png b/docs/user-manual/users-user-edit.png similarity index 100% rename from docs/guides/users-user-edit.png rename to docs/user-manual/users-user-edit.png diff --git a/docs/guides/users.md b/docs/user-manual/users.md similarity index 98% rename from docs/guides/users.md rename to docs/user-manual/users.md index 117e1ce97..51801a370 100644 --- a/docs/guides/users.md +++ b/docs/user-manual/users.md @@ -21,7 +21,7 @@ To add further user accounts to the system, one for each of your station staff t - Everything Guests can do, plus - Upload media (music, PSAs, underwriting, shows, etc.) to their own library (DJs cannot view other libraries) -- Edit metadata, delete, and schedule media in their own library to shows they are assigned to +- Edit metadata, delete, and schedule media in their own library to shows they're assigned to - Preview uploaded media _without_ affecting the live playout - Create Playlists, Smart Blocks, and connect Podcasts and Webstreams to LibreTime diff --git a/docs/guides/webstreams-webstream.jpg b/docs/user-manual/webstreams-webstream.jpg similarity index 100% rename from docs/guides/webstreams-webstream.jpg rename to docs/user-manual/webstreams-webstream.jpg diff --git a/docs/guides/webstreams.md b/docs/user-manual/webstreams.md similarity index 95% rename from docs/guides/webstreams.md rename to docs/user-manual/webstreams.md index 17a7e935c..6d2825414 100644 --- a/docs/guides/webstreams.md +++ b/docs/user-manual/webstreams.md @@ -18,6 +18,6 @@ The **Stream URL** setting must include the _port number_ (such as 8000) and _mo :::note -LibreTime checks the remote webstream's status upon editing stream settings, so an offline stream will result in an error. There are many tools such as [BUTT](https://danielnoethen.de/butt/) and [MIXXX](https://www.mixxx.org) that can be used to send a test stream to LibreTime can save it; read more [here](/docs/guides/live-broadcast). +LibreTime checks the remote webstream's status upon editing stream settings, so an offline stream will result in an error. There are many tools such as [BUTT](https://danielnoethen.de/butt/) and [MIXXX](https://www.mixxx.org) that can be used to send a test stream to LibreTime can save it; read more [here](./live-broadcast.md). ::: diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index bf91d2cb4..87d99f7be 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -1,15 +1,14 @@ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion -const lightCodeTheme = require("prism-react-renderer/themes/github"); -const darkCodeTheme = require("prism-react-renderer/themes/dracula"); +const vars = require("./vars"); /** @type {import('@docusaurus/types').Config} */ const config = { - title: "Libretime", - tagline: "Broadcast without limits", - url: "https://libretime.org", - baseUrl: "/", + title: vars.title, + tagline: vars.description, + url: vars.website, + baseUrl: "/libretime/", onBrokenLinks: "throw", onBrokenMarkdownLinks: "throw", favicon: "img/icon.svg", @@ -19,7 +18,7 @@ const config = { plugins: [ [ - require.resolve("@cmfcmf/docusaurus-search-local"), + "@cmfcmf/docusaurus-search-local", { indexBlog: false, indexPages: false, @@ -40,7 +39,7 @@ const config = { docs: { path: "../docs", sidebarPath: require.resolve("./sidebars.js"), - editUrl: "https://github.com/libretime/libretime", + editUrl: `${vars.repository.href}/blob/main/docs`, }, blog: false, theme: { @@ -54,25 +53,25 @@ const config = { /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ navbar: { - title: "Libretime", + title: vars.title, logo: { - alt: "Libretime tower", + alt: "LibreTime tower", src: "img/icon.svg", }, items: [ { - type: "doc", - docId: "intro", - position: "left", label: "Docs", + to: "/docs", + position: "left", + type: "dropdown", + items: vars.doc.sections, }, - { to: "/contribute", label: "Contribute", position: "left" }, - { type: "localeDropdown", position: "right" }, - { - href: "https://github.com/libretime/libretime", - label: "GitHub", - position: "right", - }, + { label: "Contribute", to: "/contribute", position: "left" }, + + { ...vars.repository, position: "right" }, + { ...vars.forum, position: "right" }, + { ...vars.channel, position: "right" }, + // { type: "localeDropdown", position: "right" }, ], }, footer: { @@ -80,41 +79,20 @@ const config = { links: [ { title: "Docs", - items: [ - { - label: "Install", - to: "/docs/intro", - }, - ], + items: vars.doc.sections, }, { title: "Community", - items: [ - { - label: "Discourse", - href: "https://discourse.libretime.org", - }, - { - label: "Mattermost", - href: "https://chat.libretime.org", - }, - ], + items: [vars.forum, vars.channel], }, { title: "More", - items: [ - { - label: "GitHub", - href: "https://github.com/libretime/libretime", - }, - ], + items: [vars.repository], }, ], copyright: `Code licensed under AGPLv3; docs licensed under GPLv2.`, }, prism: { - theme: lightCodeTheme, - darkTheme: darkCodeTheme, additionalLanguages: ["apacheconf", "ini"], }, }), diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx index b1e671d2e..b0aec41f9 100644 --- a/website/src/pages/index.tsx +++ b/website/src/pages/index.tsx @@ -3,8 +3,9 @@ import clsx from "clsx"; import Layout from "@theme/Layout"; import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; -import styles from "./index.module.css"; +import vars from "@site/vars"; +import styles from "./index.module.css"; import HomepageFeatures from "../components/HomepageFeatures"; function HomepageHeader() { @@ -15,24 +16,17 @@ function HomepageHeader() {

{siteConfig.title}

{siteConfig.tagline}

- - Get started πŸš€ - - - Release Notes - + {vars.home.links.map((link) => ( + + {link.label} + + ))}
diff --git a/website/tsconfig.json b/website/tsconfig.json index 57bbce401..a9e419620 100644 --- a/website/tsconfig.json +++ b/website/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "@tsconfig/docusaurus/tsconfig.json", "compilerOptions": { + "jsx": "react", "baseUrl": "." } } diff --git a/website/vars.js b/website/vars.js new file mode 100644 index 000000000..0b46b7baa --- /dev/null +++ b/website/vars.js @@ -0,0 +1,36 @@ +module.exports = { + title: "LibreTime", + description: "Radio Broadcast & Automation Platform", + version: "3.0.0-alpha.10", + website: "https://jooola.github.io", + + repository: { + href: "https://github.com/libretime/libretime", + label: "Github", + }, + + forum: { + href: "https://discourse.libretime.org", + label: "Discourse", + }, + + channel: { + href: "https://chat.libretime.org", + label: "Mattermost", + }, + + home: { + links: [ + { label: "Get started πŸš€", to: "/docs/admin-manual" }, + { label: "Release note", to: "/docs/releases/3.0.0-alpha.10" }, + ], + }, + + doc: { + sections: [ + { label: "Admin manual", to: "/docs/admin-manual" }, + { label: "User manual", to: "/docs/user-manual" }, + { label: "Developer manual", to: "/docs/developer-manual" }, + ], + }, +};