chore: remove website dir
The website has moved to https://github.com/libretime/website
|
@ -1,149 +0,0 @@
|
|||
## Custom .gitignore
|
||||
################################################################################
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# generated files
|
||||
.cache-loader
|
||||
|
||||
# misc
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
## Github Node .gitignore
|
||||
## See https://github.com/github/gitignore/blob/main/Node.gitignore
|
||||
################################################################################
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional stylelint cache
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
.temp
|
||||
.cache
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
|
@ -1,25 +0,0 @@
|
|||
# Website
|
||||
|
||||
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
|
||||
|
||||
### Installation
|
||||
|
||||
```
|
||||
$ yarn
|
||||
```
|
||||
|
||||
### Local Development
|
||||
|
||||
```
|
||||
$ yarn start
|
||||
```
|
||||
|
||||
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
|
||||
|
||||
### Build
|
||||
|
||||
```
|
||||
$ yarn build
|
||||
```
|
||||
|
||||
This command generates static content into the `build` directory and can be served using any static contents hosting service.
|
|
@ -1,3 +0,0 @@
|
|||
module.exports = {
|
||||
presets: [require.resolve("@docusaurus/core/lib/babel/preset")],
|
||||
};
|
|
@ -1,76 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 beta.0, finally!
|
||||
authors:
|
||||
- jooola
|
||||
tags: [release]
|
||||
---
|
||||
|
||||
Greetings LibreTime enthusiast's and friends!
|
||||
|
||||
We are happy to announce that we [released LibreTime `v3.0.0-beta.0` yesterday](/docs/releases/3.0.0-beta.0/)! :tada:
|
||||
|
||||
This is our very first blog post, and they should be as irregular as LibreTime releases! We changed from the monthly community meetings to something less timezone sensitive, such as blog posts.
|
||||
|
||||
<!--truncate-->
|
||||
|
||||
We will go through the notable changes in the recent release of LibreTime.
|
||||
|
||||
A **lot** of work has been put into LibreTime to finalize the forking from AirTime, and provide a comfortable base for future works.
|
||||
|
||||
## Versions, and supported distributions releases
|
||||
|
||||
We drafted a [supported distributions releases and versions support policy](/docs/developer-manual/development/releases#distributions-releases-support), that will help us to know when to drop support for distributions releases, and help you to plan for a distributions upgrades.
|
||||
|
||||
The important bits are:
|
||||
|
||||
- New LibreTime releases will only target the current stable distributions releases.
|
||||
- Maintenance only releases will provide bug and security fixes for old stable distributions releases until they reach their end of life.
|
||||
|
||||
Note that the [release note for LibreTime `v3.0.0-beta.0`](/docs/releases/3.0.0-beta.0/#-deprecation-and-removal) announced some major deprecation.
|
||||
|
||||
## What is missing from AirTime ?
|
||||
|
||||
I would expect that most of AirTime users already migrated to LibreTime using one of the many alpha versions, for those who didn't migrated yet, you will have to install LibreTime `<3.1` before upgrading to any newer versions.
|
||||
|
||||
Some incomplete or non functional features from AirTime were removed in LibreTime:
|
||||
|
||||
- [The **My podcasts** feature has been removed.](https://github.com/libretime/libretime/pull/1327)
|
||||
- [The **Line in recording** feature was not added.](https://github.com/libretime/libretime/issues/42)
|
||||
- (I probably missed a few others...)
|
||||
|
||||
Those feature might be reimplemented in the future, any contribution are welcome!
|
||||
|
||||
## Running inside containers
|
||||
|
||||
This has been awaited for quite some time: you can now [run LibreTime inside containers](/docs/admin-manual/setup/install#using-docker-compose) :tada: ! A [docker-compose example](https://github.com/libretime/libretime/tree/main/docker/example) is available in the repository.
|
||||
|
||||
Please help us test it and give us feedback, we really appreciate any help!
|
||||
|
||||
## A new configuration file
|
||||
|
||||
A lot has moved with regards to configuring LibreTime. A lot of settings from the database moved to the configuration file to simplify the configuration of LibreTime.
|
||||
|
||||
This will allow us to add more options for advanced use cases, such as ssl input harbors, HLS outputs or your own Liquidsoap scripts.
|
||||
|
||||
## Improvement for development
|
||||
|
||||
LibreTime might be hard to contribute to without having a good understanding of the project in general. A lot of work has been made to clean and modernize parts of LibreTime, by simplifying the file structure of the project and the naming, adding typing definitions or development tools to help you write good code. To keep improving the developer experience, new contributions will have to include typings and tests.
|
||||
|
||||
Though, with the new docker-compose setup, setting up a development environment is really easy! Feel free to test it by making a contribution!
|
||||
|
||||
## Now what ?
|
||||
|
||||
We expect to cut the LibreTime 3.0.0 release in the next weeks. So please help us test LibreTime so we can fix bugs!
|
||||
|
||||
A few exiting features that are will be worked on once 3.0.0 is out:
|
||||
|
||||
- Liquidsoap 2.0 support
|
||||
- SSL input harbors
|
||||
- HLS streaming
|
||||
- Start embedding a new UI in parts of the legacy web application.
|
||||
|
||||
If you feel [like paying us a beer, or a month rent](https://opencollective.com/libretime), we will really appreciate!
|
||||
|
||||
Cheers !
|
||||
|
||||
Jo
|
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
jooola:
|
||||
name: Jooola
|
||||
url: https://github.com/jooola
|
|
@ -1,125 +0,0 @@
|
|||
// @ts-check
|
||||
// Note: type annotations allow type checking and IDEs autocompletion
|
||||
|
||||
const vars = require("./vars");
|
||||
|
||||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
title: vars.title,
|
||||
tagline: vars.description,
|
||||
url: process.env.URL || vars.website,
|
||||
baseUrl: process.env.BASE_URL || "/",
|
||||
onBrokenLinks: "throw",
|
||||
onBrokenMarkdownLinks: "throw",
|
||||
favicon: "img/icon.svg",
|
||||
organizationName: "libretime",
|
||||
projectName: "libretime",
|
||||
trailingSlash: true,
|
||||
|
||||
plugins: [
|
||||
[
|
||||
"@cmfcmf/docusaurus-search-local",
|
||||
{
|
||||
indexBlog: false,
|
||||
indexPages: false,
|
||||
},
|
||||
],
|
||||
[
|
||||
"@docusaurus/plugin-client-redirects",
|
||||
{
|
||||
redirects: require("./redirects"),
|
||||
},
|
||||
],
|
||||
],
|
||||
|
||||
i18n: {
|
||||
defaultLocale: "en",
|
||||
locales: ["en"],
|
||||
},
|
||||
|
||||
presets: [
|
||||
[
|
||||
"classic",
|
||||
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||
({
|
||||
docs: {
|
||||
path: "../docs",
|
||||
sidebarPath: require.resolve("./sidebars.js"),
|
||||
editUrl: `${vars.repository.href}/blob/main/docs`,
|
||||
|
||||
async sidebarItemsGenerator({
|
||||
defaultSidebarItemsGenerator,
|
||||
...args
|
||||
}) {
|
||||
const items = await defaultSidebarItemsGenerator(args);
|
||||
|
||||
return items.map((item) => {
|
||||
// Reverse releases pages ordering
|
||||
if (item.type === "category" && item.label === "Releases") {
|
||||
return { ...item, items: item.items.reverse() };
|
||||
}
|
||||
|
||||
return item;
|
||||
});
|
||||
},
|
||||
remarkPlugins: [require("mdx-mermaid")],
|
||||
},
|
||||
theme: {
|
||||
customCss: require.resolve("./src/css/custom.css"),
|
||||
},
|
||||
}),
|
||||
],
|
||||
],
|
||||
|
||||
themeConfig:
|
||||
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
|
||||
({
|
||||
navbar: {
|
||||
title: vars.title,
|
||||
logo: {
|
||||
alt: "LibreTime tower",
|
||||
src: "img/icon.svg",
|
||||
},
|
||||
items: [
|
||||
{
|
||||
label: "Docs",
|
||||
to: "/docs",
|
||||
position: "left",
|
||||
type: "dropdown",
|
||||
items: vars.doc.sections,
|
||||
},
|
||||
{ label: "Contribute", to: "/contribute", position: "left" },
|
||||
{ label: "Blog", to: "blog", position: "left" },
|
||||
|
||||
{ ...vars.repository, position: "right" },
|
||||
{ ...vars.forum, position: "right" },
|
||||
{ ...vars.channel, position: "right" },
|
||||
{ type: "docsVersionDropdown", position: "right" },
|
||||
// { type: "localeDropdown", position: "right" },
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: "dark",
|
||||
links: [
|
||||
{
|
||||
title: "Docs",
|
||||
items: vars.doc.sections,
|
||||
},
|
||||
{
|
||||
title: "Community",
|
||||
items: [vars.forum, vars.channel],
|
||||
},
|
||||
{
|
||||
title: "More",
|
||||
items: [vars.repository],
|
||||
},
|
||||
],
|
||||
copyright: `Code licensed under AGPLv3; docs licensed under GPLv2.`,
|
||||
},
|
||||
prism: {
|
||||
additionalLanguages: ["apacheconf", "ini", "nginx"],
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
module.exports = config;
|
|
@ -1,48 +0,0 @@
|
|||
{
|
||||
"name": "website",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
"start": "docusaurus start",
|
||||
"build": "docusaurus build",
|
||||
"swizzle": "docusaurus swizzle",
|
||||
"deploy": "docusaurus deploy",
|
||||
"clear": "docusaurus clear",
|
||||
"serve": "docusaurus serve",
|
||||
"write-translations": "docusaurus write-translations",
|
||||
"write-heading-ids": "docusaurus write-heading-ids",
|
||||
"typecheck": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@cmfcmf/docusaurus-search-local": "^0.11.0",
|
||||
"@docusaurus/core": "^2.0.1",
|
||||
"@docusaurus/plugin-client-redirects": "^2.0.1",
|
||||
"@docusaurus/preset-classic": "^2.0.1",
|
||||
"@mdx-js/react": "^1.6.21",
|
||||
"clsx": "^1.2.1",
|
||||
"mdx-mermaid": "^1.2.3",
|
||||
"mermaid": "^9.1.4",
|
||||
"prism-react-renderer": "^1.3.1",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "^2.0.1",
|
||||
"@tsconfig/docusaurus": "^1.0.6",
|
||||
"@types/node": "^18.6.4",
|
||||
"typescript": "^4.7.4"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.5%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
module.exports = [
|
||||
{
|
||||
to: "/docs",
|
||||
from: ["/documentation/", "/manual/", "/manual/about-this-manual/"],
|
||||
},
|
||||
{
|
||||
to: "/docs/admin-manual/backup",
|
||||
from: ["/manual/backing-up-the-server/", "/docs/backing-up-the-server"],
|
||||
},
|
||||
{
|
||||
to: "/docs/admin-manual/setup/install",
|
||||
from: ["/install"],
|
||||
},
|
||||
{
|
||||
to: "/docs/admin-manual/setup/upgrade",
|
||||
from: ["/manual/upgrading/", "/docs/upgrading"],
|
||||
},
|
||||
{
|
||||
to: "/docs/admin-manual/troubleshooting",
|
||||
from: ["/manual/troubleshooting/", "/docs/troubleshooting"],
|
||||
},
|
||||
];
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
* Creating a sidebar enables you to:
|
||||
- create an ordered group of docs
|
||||
- render a sidebar for each doc of that group
|
||||
- provide next/previous navigation
|
||||
|
||||
The sidebars can be generated from the filesystem, or explicitly defined here.
|
||||
|
||||
Create as many sidebars as you want.
|
||||
*/
|
||||
|
||||
// @ts-check
|
||||
|
||||
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
|
||||
const sidebars = {
|
||||
// By default, Docusaurus generates a sidebar from the docs folder structure
|
||||
tutorialSidebar: [{ type: "autogenerated", dirName: "." }],
|
||||
|
||||
// But you can create a sidebar manually
|
||||
/*
|
||||
tutorialSidebar: [
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Tutorial',
|
||||
items: ['hello'],
|
||||
},
|
||||
],
|
||||
*/
|
||||
};
|
||||
|
||||
module.exports = sidebars;
|
|
@ -1,11 +0,0 @@
|
|||
.features {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 2rem 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.featureSvg {
|
||||
height: 200px;
|
||||
width: 200px;
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
import useBaseUrl from "@docusaurus/useBaseUrl";
|
||||
import React from "react";
|
||||
import clsx from "clsx";
|
||||
import styles from "./HomepageFeatures.module.css";
|
||||
|
||||
type FeatureItem = {
|
||||
title: string;
|
||||
image: string;
|
||||
description: JSX.Element;
|
||||
};
|
||||
|
||||
const FeatureList: FeatureItem[] = [
|
||||
{
|
||||
title: "Easy to Use",
|
||||
image: "/img/undraw_happy_news.svg",
|
||||
description: (
|
||||
<>
|
||||
LibreTime was designed from the ground up to be easily installed and
|
||||
used to get your radio station on the air quickly.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: "Powerful Library Management",
|
||||
image: "/img/undraw_upload.svg",
|
||||
description: (
|
||||
<>
|
||||
Import everything from music to sweepers to full-length programs, then
|
||||
have shows and podcasts scheduled automatically.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: "AM/FM & Web",
|
||||
image: "/img/undraw_podcast.svg",
|
||||
description: (
|
||||
<>
|
||||
Audio playout to your broadcasting console or transmitter, or start an
|
||||
internet radio station directly from the cloud. LibreTime can do it all.
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
function Feature({ title, image, description }: FeatureItem) {
|
||||
return (
|
||||
<div className={clsx("col col--4")}>
|
||||
<div className="text--center">
|
||||
<img
|
||||
className={styles.featureSvg}
|
||||
alt={title}
|
||||
src={useBaseUrl(image)}
|
||||
/>
|
||||
</div>
|
||||
<div className="text--center padding-horiz--md">
|
||||
<h3>{title}</h3>
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default function HomepageFeatures(): JSX.Element {
|
||||
return (
|
||||
<section className={styles.features}>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
{FeatureList.map((props, idx) => (
|
||||
<Feature key={idx} {...props} />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
import React, { FunctionComponent } from "react";
|
||||
import Link from "@docusaurus/Link";
|
||||
|
||||
interface Props {
|
||||
version: string;
|
||||
}
|
||||
|
||||
const TarballLink: FunctionComponent<Props> = ({ version, children }) => (
|
||||
<Link
|
||||
to={`https://github.com/libretime/libretime/releases/download/${version}/libretime-${version}.tar.gz`}
|
||||
>
|
||||
{children}
|
||||
</Link>
|
||||
);
|
||||
|
||||
export default TarballLink;
|
|
@ -1,39 +0,0 @@
|
|||
/**
|
||||
* Any CSS included here will be global. The classic template
|
||||
* bundles Infima by default. Infima is a CSS framework designed to
|
||||
* work well for content-centric websites.
|
||||
*/
|
||||
|
||||
/* You can override the default Infima variables here. */
|
||||
:root {
|
||||
--ifm-color-primary: #ee4b28;
|
||||
--ifm-color-primary-dark: #e83812;
|
||||
--ifm-color-primary-darker: #db3511;
|
||||
--ifm-color-primary-darkest: #b42c0e;
|
||||
--ifm-color-primary-light: #f06142;
|
||||
--ifm-color-primary-lighter: #f16b4f;
|
||||
--ifm-color-primary-lightest: #f48c75;
|
||||
--ifm-code-font-size: 95%;
|
||||
}
|
||||
|
||||
/* For readability concerns, you should choose a lighter palette in dark mode. */
|
||||
html[data-theme="dark"] {
|
||||
--ifm-color-primary: #e57962;
|
||||
--ifm-color-primary-dark: #e06146;
|
||||
--ifm-color-primary-darker: #de5538;
|
||||
--ifm-color-primary-darkest: #c43d21;
|
||||
--ifm-color-primary-light: #ea917e;
|
||||
--ifm-color-primary-lighter: #ec9d8c;
|
||||
--ifm-color-primary-lightest: #f3c1b6;
|
||||
}
|
||||
|
||||
.docusaurus-highlight-code-line {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
display: block;
|
||||
margin: 0 calc(-1 * var(--ifm-pre-padding));
|
||||
padding: 0 var(--ifm-pre-padding);
|
||||
}
|
||||
|
||||
html[data-theme="dark"] .docusaurus-highlight-code-line {
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
|
@ -1,87 +0,0 @@
|
|||
---
|
||||
title: Contribute to LibreTime
|
||||
---
|
||||
|
||||
# Contribute to LibreTime
|
||||
|
||||
LibreTime is a fork of AirTime due to stalled development of the open source version. For background on this, see this [open letter to the Airtime community](https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d).
|
||||
|
||||
## Code of conduct
|
||||
|
||||
Before any contribution, read and be prepared to adhere to our
|
||||
[code of conduct](https://github.com/libretime/organization/blob/main/CODE_OF_CONDUCT.md).
|
||||
|
||||
In addition, LibreTime follow the standardized
|
||||
[C4 development process](https://rfc.zeromq.org/spec:42/c4/), in which you can
|
||||
find explanation about most of the development workflows for LibreTime.
|
||||
|
||||
## Bug reporting
|
||||
|
||||
Following these guidelines helps maintainers and the community understand your
|
||||
report, reproduce the behavior, and find related reports.
|
||||
|
||||
Before creating bug reports, please check the following list, to be sure that
|
||||
you need to create one:
|
||||
|
||||
- Check the [LibreTime forum](https://discourse.libretime.org/) for existing
|
||||
questions and discussion.
|
||||
- Check that your issue does not already exist in the
|
||||
[issue tracker](https://github.com/libretime/libretime/issues?q=is%3aissue+label%3abug).
|
||||
|
||||
:::note
|
||||
|
||||
If you find a closed issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
|
||||
|
||||
:::
|
||||
|
||||
When you are creating a bug report, please include as many details as possible.
|
||||
Fill out the [required template](https://github.com/libretime/libretime/issues/new?labels=bug&template=bug_report.md),
|
||||
the information it asks helps the maintainers resolve the issue faster.
|
||||
|
||||
Bugs are tracked on the [official issue tracker](https://github.com/libretime/libretime/issues).
|
||||
|
||||
## Suggesting enhancements
|
||||
|
||||
This section guides you through submitting an enhancement suggestion for
|
||||
LibreTime, including completely new features and minor improvements to existing
|
||||
functionality. Following these guidelines helps maintainers and the community
|
||||
understand your suggestion and find related suggestions.
|
||||
|
||||
Before creating enhancement suggestions, please check the following list, as you
|
||||
might find out that you don't need to create one:
|
||||
|
||||
- **Check the [LibreTime forum](https://discourse.libretime.org/)** for existing
|
||||
questions and discussion.
|
||||
- **Check that your issue does not already exist in the
|
||||
[issue tracker](https://github.com/libretime/libretime/issues?q=is%3aissue+label%3afeature-request)**.
|
||||
|
||||
When you are creating an enhancement suggestion, please include as many details
|
||||
as possible. Fill in [the template](https://github.com/libretime/libretime/issues/new?labels=feature-request&template=feature_request.md),
|
||||
including the steps that you imagine you would take if the feature you're
|
||||
requesting existed.
|
||||
|
||||
## Financial
|
||||
|
||||
LibreTime is run by volunteers who write code and manage the project in their
|
||||
spare time. Financial contributions help us pay for our domain and back-end
|
||||
infrastructure. It can also be used to cover the costs of development for
|
||||
important features and conference attendance. If you wish to contribute
|
||||
financially, you can do so through our
|
||||
[OpenCollective](https://opencollective.com/libretime).
|
||||
|
||||
## Translation
|
||||
|
||||
LibreTime can run in over 15 different languages due to the gracious help of our volunteers.
|
||||
|
||||
LibreTime is now localized using [Weblate](https://weblate.org/en/). If you would like to contribute a language translation, create an account and start working on [our Weblate page](https://hosted.weblate.org/projects/libretime/).
|
||||
|
||||
## Write documentation
|
||||
|
||||
One of the simplest ways to get started contributing to a project is through
|
||||
improving documentation. LibreTime is constantly evolving, this means that
|
||||
sometimes our documentation has gaps. You can help by adding missing sections,
|
||||
editing the existing content so it is more accessible or creating new content
|
||||
(tutorials, FAQs, etc).
|
||||
|
||||
Issues pertaining to the documentation are usually marked with the [Documentation](https://github.com/libretime/libretime/labels/documentation)
|
||||
label.
|
|
@ -1,28 +0,0 @@
|
|||
/**
|
||||
* CSS files with the .module.css suffix will be treated as CSS modules
|
||||
* and scoped locally.
|
||||
*/
|
||||
|
||||
.heroBanner {
|
||||
padding: 4rem 0;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 966px) {
|
||||
.heroBanner {
|
||||
padding: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.buttonPadding {
|
||||
margin-left: 0.25rem !important;
|
||||
margin-right: 0.25rem !important;
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
import React from "react";
|
||||
import clsx from "clsx";
|
||||
import Layout from "@theme/Layout";
|
||||
import Link from "@docusaurus/Link";
|
||||
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
||||
import vars from "@site/vars";
|
||||
|
||||
import styles from "./index.module.css";
|
||||
import HomepageFeatures from "../components/HomepageFeatures";
|
||||
|
||||
function HomepageHeader() {
|
||||
const { siteConfig } = useDocusaurusContext();
|
||||
return (
|
||||
<header className={clsx("hero hero--primary", styles.heroBanner)}>
|
||||
<div className="container">
|
||||
<h1 className="hero__title">{siteConfig.title}</h1>
|
||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||
<div className={styles.buttons}>
|
||||
{vars.home.links.map((link) => (
|
||||
<Link
|
||||
className={clsx(
|
||||
"button button--secondary button--lg",
|
||||
styles.buttonPadding
|
||||
)}
|
||||
to={link.to}
|
||||
>
|
||||
{link.label}
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Home(): JSX.Element {
|
||||
const { siteConfig } = useDocusaurusContext();
|
||||
return (
|
||||
<Layout title={siteConfig.title} description={siteConfig.tagline}>
|
||||
<HomepageHeader />
|
||||
<main>
|
||||
<HomepageFeatures />
|
||||
</main>
|
||||
</Layout>
|
||||
);
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
libretime.org
|
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 3.6 KiB |
|
@ -1,7 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 64 64" clip-rule="evenodd" fill-rule="evenodd" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="geometricPrecision">
|
||||
<path fill="#474443" d="M31.993 18.107c3.32 0 6.36 1.198 8.706 3.179l-3.438 3.444a8.687 8.687 0 0 0-10.522 0l-3.438-3.444a13.443 13.443 0 0 1 8.692-3.179zm2.08 26.966L35.711 59h-7.437l1.653-13.927a13.44 13.44 0 0 1-6.626-3.016l3.438-3.444a8.72 8.72 0 0 0 4.412 1.73v-1.73h-.84c-1.034 0-1.875-.858-1.875-1.893v-8.072c0-1.035.841-1.892 1.874-1.892h3.38c1.033 0 1.874.857 1.874 1.892v8.072c0 1.035-.841 1.893-1.874 1.893h-.841v1.73a8.72 8.72 0 0 0 4.412-1.73l3.438 3.444a13.44 13.44 0 0 1-6.626 3.016zm.118-17.312c.399 0 .723.31.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.4.325-.71.708-.71zm-1.859.222c.28 0 .502.222.502.488 0 .28-.222.488-.502.488a.482.482 0 0 1-.487-.488c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm4.796 1.7c.399 0 .723.326.723.725 0 .384-.324.71-.723.71a.719.719 0 0 1-.708-.71c0-.4.325-.725.708-.725zm-1.859.222a.496.496 0 1 1 .014.991.495.495 0 0 1-.014-.99zm-1.55.089c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.089c.178 0 .31.147.31.325 0 .162-.132.31-.31.31a.312.312 0 0 1-.31-.31c0-.178.133-.325.31-.325zm4.796 1.7a.725.725 0 0 1 0 1.449.722.722 0 0 1-.708-.725c0-.399.325-.724.708-.724zm-1.859.236c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.104c.178 0 .31.133.31.31 0 .178-.132.31-.31.31a.303.303 0 0 1-.31-.31c0-.177.133-.31.31-.31zm4.796 1.7c.399 0 .723.325.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.385.325-.71.708-.71zm-1.859.222a.495.495 0 1 1 .014.99.495.495 0 0 1-.014-.99zm-1.55.074c.222 0 .414.192.414.414a.426.426 0 0 1-.413.428.416.416 0 0 1-.414-.428c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.148.31.31a.315.315 0 0 1-.31.326.315.315 0 0 1-.31-.325c0-.163.133-.31.31-.31zm4.796 1.7a.725.725 0 0 1 0 1.45.722.722 0 0 1-.708-.725c0-.4.325-.725.708-.725zm-1.859.237c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm-3.541-11.073a8.654 8.654 0 0 0-2.553 6.15c0 2.41.974 4.583 2.553 6.165l-3.424 3.43a13.53 13.53 0 0 1-3.97-9.595c0-3.74 1.52-7.126 3.97-9.58zm15.716-3.43a13.522 13.522 0 0 1 3.97 9.58c0 3.755-1.52 7.14-3.97 9.595l-3.424-3.43a8.689 8.689 0 0 0 2.553-6.165 8.654 8.654 0 0 0-2.553-6.15z" />
|
||||
<path fill="#e62129" d="M19.317 44.364a17.903 17.903 0 0 1-5.254-12.7 17.93 17.93 0 0 1 5.254-12.7l-3.424-3.43c-4.117 4.14-6.67 9.832-6.67 16.13a22.77 22.77 0 0 0 6.67 16.13z" />
|
||||
<path fill="#e62129" d="M44.683 18.965a17.916 17.916 0 0 1 5.24 12.7 17.89 17.89 0 0 1-5.24 12.699l3.424 3.43a22.77 22.77 0 0 0 6.67-16.13c0-6.298-2.553-11.99-6.67-16.13z" />
|
||||
<path fill="#e62129" d="M51.206 12.43a27.143 27.143 0 0 1 7.954 19.234c0 7.525-3.04 14.326-7.954 19.25l3.423 3.429A31.984 31.984 0 0 0 64 31.664C64 22.824 60.429 14.81 54.63 9Z" />
|
||||
<path fill="#e62129" d="M12.794 50.913A27.152 27.152 0 0 1 4.84 31.664c0-7.51 3.04-14.311 7.954-19.234L9.371 9A31.975 31.975 0 0 0 0 31.664a31.984 31.984 0 0 0 9.37 22.679Z" />
|
||||
</svg>
|
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 12 KiB |
|
@ -1,19 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.1" clip-rule="evenodd" fill-rule="evenodd" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" viewBox="0 0 260 64">
|
||||
<g id="g936">
|
||||
<path fill="#1a1a1a" id="polygon21" d="M90.18 40.811h9.646v4.771H84.294V19.497h5.885z" />
|
||||
<path fill="#1a1a1a" d="M106.234 23.99c-.975 0-1.776-.278-2.368-.836-.627-.592-.941-1.288-.941-2.124 0-.87.314-1.567.941-2.124.592-.558 1.393-.836 2.368-.836.975 0 1.776.278 2.403.836.627.557.905 1.253.905 2.124 0 .87-.278 1.567-.905 2.124-.627.558-1.428.836-2.403.836zm2.821 21.592h-5.712V26.95h5.712z" id="path23" />
|
||||
<path fill="#1a1a1a" d="M119.154 43.388h-.069v2.194h-5.747V18h5.747v11.771h.069c1.428-2.194 3.448-3.274 6.06-3.274 2.403 0 4.249.836 5.537 2.473 1.289 1.637 1.951 3.9 1.951 6.756 0 3.1-.767 5.607-2.264 7.453-1.532 1.88-3.552 2.821-6.095 2.821-2.263 0-4.005-.87-5.189-2.612zm-.139-7.836v1.916c0 1.184.348 2.194 1.01 2.96.697.8 1.602 1.184 2.682 1.184 1.288 0 2.298-.488 3.029-1.498.732-1.01 1.08-2.437 1.08-4.318 0-1.532-.313-2.751-.975-3.587-.662-.87-1.602-1.323-2.821-1.323-1.184 0-2.124.452-2.891 1.288-.731.87-1.114 1.985-1.114 3.378z" id="path25" />
|
||||
<path fill="#1a1a1a" d="M148.582 32.14c-.696-.384-1.497-.558-2.438-.558-1.253 0-2.228.453-2.925 1.358-.696.906-1.045 2.16-1.045 3.727v8.915h-5.746V26.95h5.746v3.448h.07c.905-2.507 2.542-3.796 4.91-3.796.592 0 1.08.07 1.428.244z" id="path27" />
|
||||
<path fill="#1a1a1a" d="M167.98 37.886h-12.154c.209 2.716 1.915 4.074 5.119 4.074 2.055 0 3.831-.487 5.398-1.463v4.145c-1.741.905-3.97 1.358-6.721 1.358-2.995 0-5.328-.801-7-2.473-1.637-1.671-2.473-4.005-2.473-6.965 0-3.1.906-5.537 2.682-7.348 1.811-1.811 4.005-2.716 6.617-2.716 2.716 0 4.806.8 6.303 2.402 1.463 1.637 2.229 3.831 2.229 6.583zm-5.328-3.518c0-2.681-1.08-4.005-3.239-4.005-.905 0-1.706.383-2.403 1.15-.662.766-1.08 1.706-1.219 2.855z" id="path29" />
|
||||
<path fill="#1a1a1a" id="polygon31" d="M176.965 24.269h-7.418v-4.771h20.722v4.77h-7.453v21.314h-5.851z" />
|
||||
<path fill="#1a1a1a" d="M196.12 23.99c-.976 0-1.777-.278-2.369-.836-.626-.592-.94-1.288-.94-2.124 0-.87.314-1.567.94-2.124.592-.558 1.393-.836 2.369-.836.975 0 1.776.278 2.403.836.626.557.905 1.253.905 2.124 0 .87-.279 1.567-.905 2.124-.627.558-1.428.836-2.403.836zm2.82 21.592h-5.711V26.95h5.711z" id="path33" />
|
||||
<path fill="#1a1a1a" d="M232.931 45.582h-5.712V34.96c0-2.716-1.01-4.074-2.995-4.074-.94 0-1.706.418-2.298 1.219-.592.835-.906 1.845-.906 3.03v10.447h-5.746V34.856c0-2.647-.975-3.97-2.926-3.97-.975 0-1.776.383-2.368 1.184-.592.766-.87 1.81-.87 3.134v10.378h-5.747V26.95h5.747v2.926h.069c.592-1.01 1.428-1.811 2.508-2.438a6.822 6.822 0 0 1 3.517-.94c2.612 0 4.423 1.149 5.398 3.482 1.428-2.333 3.518-3.483 6.269-3.483 4.04 0 6.06 2.508 6.06 7.488z" id="path35" />
|
||||
<path fill="#1a1a1a" d="M254 37.886h-12.154c.209 2.716 1.881 4.074 5.119 4.074 2.02 0 3.831-.487 5.364-1.463v4.145c-1.707.905-3.936 1.358-6.687 1.358-2.995 0-5.328-.801-7-2.473-1.672-1.671-2.507-4.005-2.507-6.965 0-3.1.905-5.537 2.716-7.348 1.776-1.811 3.97-2.716 6.617-2.716 2.716 0 4.806.8 6.303 2.402 1.463 1.637 2.229 3.831 2.229 6.583zm-5.328-3.518c0-2.681-1.08-4.005-3.239-4.005-.94 0-1.741.383-2.403 1.15-.662.766-1.08 1.706-1.219 2.855z" id="path37" />
|
||||
</g>
|
||||
<g id="g859">
|
||||
<path fill="#1a1a1a" d="M37.993 16.107c3.32 0 6.36 1.198 8.706 3.179l-3.438 3.444a8.687 8.687 0 0 0-10.522 0l-3.438-3.444a13.443 13.443 0 0 1 8.692-3.179zm2.08 26.966L41.711 57h-7.437l1.653-13.927a13.44 13.44 0 0 1-6.626-3.016l3.438-3.444a8.72 8.72 0 0 0 4.412 1.73v-1.73h-.84c-1.034 0-1.875-.858-1.875-1.893v-8.072c0-1.035.841-1.892 1.874-1.892h3.38c1.033 0 1.874.857 1.874 1.892v8.072c0 1.035-.84 1.893-1.874 1.893h-.84v1.73a8.72 8.72 0 0 0 4.411-1.73l3.438 3.444a13.44 13.44 0 0 1-6.626 3.016zm.118-17.312c.4 0 .723.31.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.4.325-.71.708-.71zm-1.859.222c.28 0 .502.222.502.488 0 .28-.222.488-.502.488a.482.482 0 0 1-.487-.488c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm4.796 1.7c.4 0 .723.326.723.725 0 .384-.324.71-.723.71a.719.719 0 0 1-.708-.71c0-.4.325-.725.708-.725zm-1.859.222a.496.496 0 1 1 .014.989.496.496 0 0 1-.014-.988zm-1.55.089c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.089c.178 0 .31.147.31.325 0 .162-.132.31-.31.31a.312.312 0 0 1-.31-.31c0-.178.133-.325.31-.325zm4.796 1.7a.725.725 0 0 1 0 1.449.722.722 0 0 1-.708-.725c0-.399.325-.724.708-.724zm-1.859.236c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.104c.178 0 .31.133.31.31 0 .178-.132.31-.31.31a.303.303 0 0 1-.31-.31c0-.177.133-.31.31-.31zm4.796 1.7c.4 0 .723.325.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.385.325-.71.708-.71zm-1.859.222a.495.495 0 1 1 .014.99.495.495 0 0 1-.014-.99zm-1.55.074c.222 0 .414.192.414.414a.426.426 0 0 1-.413.428.416.416 0 0 1-.414-.428c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.148.31.31a.315.315 0 0 1-.31.326.315.315 0 0 1-.31-.325c0-.163.133-.31.31-.31zm4.796 1.7a.725.725 0 0 1 0 1.45.722.722 0 0 1-.708-.725c0-.4.325-.725.708-.725zm-1.859.237c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm-3.54-11.073a8.653 8.653 0 0 0-2.554 6.15c0 2.41.974 4.583 2.553 6.165l-3.424 3.43a13.53 13.53 0 0 1-3.97-9.595c0-3.74 1.52-7.126 3.97-9.58zm15.715-3.43a13.522 13.522 0 0 1 3.97 9.58c0 3.755-1.52 7.14-3.97 9.595l-3.424-3.43a8.69 8.69 0 0 0 2.553-6.165 8.654 8.654 0 0 0-2.553-6.15z" id="path2" />
|
||||
<path fill="#1a1a1a" d="M25.317 42.364a17.903 17.903 0 0 1-5.254-12.7 17.93 17.93 0 0 1 5.254-12.7l-3.424-3.43c-4.117 4.14-6.67 9.832-6.67 16.13a22.77 22.77 0 0 0 6.67 16.13z" id="path4" />
|
||||
<path fill="#1a1a1a" d="M18.794 48.913a27.151 27.151 0 0 1-7.954-19.249c0-7.51 3.04-14.311 7.954-19.234L15.371 7a31.975 31.975 0 0 0-9.37 22.664 31.984 31.984 0 0 0 9.37 22.679Zm31.89-31.948a17.917 17.917 0 0 1 5.24 12.7 17.89 17.89 0 0 1-5.24 12.699l3.423 3.43a22.77 22.77 0 0 0 6.67-16.13c0-6.298-2.553-11.99-6.67-16.13z" id="path6" />
|
||||
<path fill="#1a1a1a" d="M57.206 10.43a27.143 27.143 0 0 1 7.954 19.234c0 7.525-3.04 14.326-7.954 19.25l3.423 3.429A31.985 31.985 0 0 0 70 29.664C70 20.824 66.43 12.81 60.63 7z" id="path8" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 12 KiB |
|
@ -1,19 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.1" clip-rule="evenodd" fill-rule="evenodd" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" viewBox="0 0 260 64">
|
||||
<g id="g936">
|
||||
<path fill="#f9f9f9" id="polygon21" d="M90.18 40.811h9.646v4.771H84.294V19.497h5.885z" />
|
||||
<path fill="#f9f9f9" d="M106.234 23.99c-.975 0-1.776-.278-2.368-.836-.627-.592-.941-1.288-.941-2.124 0-.87.314-1.567.941-2.124.592-.558 1.393-.836 2.368-.836.975 0 1.776.278 2.403.836.627.557.905 1.253.905 2.124 0 .87-.278 1.567-.905 2.124-.627.558-1.428.836-2.403.836zm2.821 21.592h-5.712V26.95h5.712z" id="path23" />
|
||||
<path fill="#f9f9f9" d="M119.154 43.388h-.069v2.194h-5.747V18h5.747v11.771h.069c1.428-2.194 3.448-3.274 6.06-3.274 2.403 0 4.249.836 5.537 2.473 1.289 1.637 1.951 3.9 1.951 6.756 0 3.1-.767 5.607-2.264 7.453-1.532 1.88-3.552 2.821-6.095 2.821-2.263 0-4.005-.87-5.189-2.612zm-.139-7.836v1.916c0 1.184.348 2.194 1.01 2.96.697.8 1.602 1.184 2.682 1.184 1.288 0 2.298-.488 3.029-1.498.732-1.01 1.08-2.437 1.08-4.318 0-1.532-.313-2.751-.975-3.587-.662-.87-1.602-1.323-2.821-1.323-1.184 0-2.124.452-2.891 1.288-.731.87-1.114 1.985-1.114 3.378z" id="path25" />
|
||||
<path fill="#f9f9f9" d="M148.582 32.14c-.696-.384-1.497-.558-2.438-.558-1.253 0-2.228.453-2.925 1.358-.696.906-1.045 2.16-1.045 3.727v8.915h-5.746V26.95h5.746v3.448h.07c.905-2.507 2.542-3.796 4.91-3.796.592 0 1.08.07 1.428.244z" id="path27" />
|
||||
<path fill="#f9f9f9" d="M167.98 37.886h-12.154c.209 2.716 1.915 4.074 5.119 4.074 2.055 0 3.831-.487 5.398-1.463v4.145c-1.741.905-3.97 1.358-6.721 1.358-2.995 0-5.328-.801-7-2.473-1.637-1.671-2.473-4.005-2.473-6.965 0-3.1.906-5.537 2.682-7.348 1.811-1.811 4.005-2.716 6.617-2.716 2.716 0 4.806.8 6.303 2.402 1.463 1.637 2.229 3.831 2.229 6.583zm-5.328-3.518c0-2.681-1.08-4.005-3.239-4.005-.905 0-1.706.383-2.403 1.15-.662.766-1.08 1.706-1.219 2.855z" id="path29" />
|
||||
<path fill="#f9f9f9" id="polygon31" d="M176.965 24.269h-7.418v-4.771h20.722v4.77h-7.453v21.314h-5.851z" />
|
||||
<path fill="#f9f9f9" d="M196.12 23.99c-.976 0-1.777-.278-2.369-.836-.626-.592-.94-1.288-.94-2.124 0-.87.314-1.567.94-2.124.592-.558 1.393-.836 2.369-.836.975 0 1.776.278 2.403.836.626.557.905 1.253.905 2.124 0 .87-.279 1.567-.905 2.124-.627.558-1.428.836-2.403.836zm2.82 21.592h-5.711V26.95h5.711z" id="path33" />
|
||||
<path fill="#f9f9f9" d="M232.931 45.582h-5.712V34.96c0-2.716-1.01-4.074-2.995-4.074-.94 0-1.706.418-2.298 1.219-.592.835-.906 1.845-.906 3.03v10.447h-5.746V34.856c0-2.647-.975-3.97-2.926-3.97-.975 0-1.776.383-2.368 1.184-.592.766-.87 1.81-.87 3.134v10.378h-5.747V26.95h5.747v2.926h.069c.592-1.01 1.428-1.811 2.508-2.438a6.822 6.822 0 0 1 3.517-.94c2.612 0 4.423 1.149 5.398 3.482 1.428-2.333 3.518-3.483 6.269-3.483 4.04 0 6.06 2.508 6.06 7.488z" id="path35" />
|
||||
<path fill="#f9f9f9" d="M254 37.886h-12.154c.209 2.716 1.881 4.074 5.119 4.074 2.02 0 3.831-.487 5.364-1.463v4.145c-1.707.905-3.936 1.358-6.687 1.358-2.995 0-5.328-.801-7-2.473-1.672-1.671-2.507-4.005-2.507-6.965 0-3.1.905-5.537 2.716-7.348 1.776-1.811 3.97-2.716 6.617-2.716 2.716 0 4.806.8 6.303 2.402 1.463 1.637 2.229 3.831 2.229 6.583zm-5.328-3.518c0-2.681-1.08-4.005-3.239-4.005-.94 0-1.741.383-2.403 1.15-.662.766-1.08 1.706-1.219 2.855z" id="path37" />
|
||||
</g>
|
||||
<g id="g859">
|
||||
<path fill="#f9f9f9" d="M37.993 16.107c3.32 0 6.36 1.198 8.706 3.179l-3.438 3.444a8.687 8.687 0 0 0-10.522 0l-3.438-3.444a13.443 13.443 0 0 1 8.692-3.179zm2.08 26.966L41.711 57h-7.437l1.653-13.927a13.44 13.44 0 0 1-6.626-3.016l3.438-3.444a8.72 8.72 0 0 0 4.412 1.73v-1.73h-.84c-1.034 0-1.875-.858-1.875-1.893v-8.072c0-1.035.841-1.892 1.874-1.892h3.38c1.033 0 1.874.857 1.874 1.892v8.072c0 1.035-.84 1.893-1.874 1.893h-.84v1.73a8.72 8.72 0 0 0 4.411-1.73l3.438 3.444a13.44 13.44 0 0 1-6.626 3.016zm.118-17.312c.4 0 .723.31.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.4.325-.71.708-.71zm-1.859.222c.28 0 .502.222.502.488 0 .28-.222.488-.502.488a.482.482 0 0 1-.487-.488c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm4.796 1.7c.4 0 .723.326.723.725 0 .384-.324.71-.723.71a.719.719 0 0 1-.708-.71c0-.4.325-.725.708-.725zm-1.859.222a.496.496 0 1 1 .014.989.496.496 0 0 1-.014-.988zm-1.55.089c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.089c.178 0 .31.147.31.325 0 .162-.132.31-.31.31a.312.312 0 0 1-.31-.31c0-.178.133-.325.31-.325zm4.796 1.7a.725.725 0 0 1 0 1.449.722.722 0 0 1-.708-.725c0-.399.325-.724.708-.724zm-1.859.236c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.104c.178 0 .31.133.31.31 0 .178-.132.31-.31.31a.303.303 0 0 1-.31-.31c0-.177.133-.31.31-.31zm4.796 1.7c.4 0 .723.325.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.385.325-.71.708-.71zm-1.859.222a.495.495 0 1 1 .014.99.495.495 0 0 1-.014-.99zm-1.55.074c.222 0 .414.192.414.414a.426.426 0 0 1-.413.428.416.416 0 0 1-.414-.428c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.148.31.31a.315.315 0 0 1-.31.326.315.315 0 0 1-.31-.325c0-.163.133-.31.31-.31zm4.796 1.7a.725.725 0 0 1 0 1.45.722.722 0 0 1-.708-.725c0-.4.325-.725.708-.725zm-1.859.237c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm-3.54-11.073a8.653 8.653 0 0 0-2.554 6.15c0 2.41.974 4.583 2.553 6.165l-3.424 3.43a13.53 13.53 0 0 1-3.97-9.595c0-3.74 1.52-7.126 3.97-9.58zm15.715-3.43a13.522 13.522 0 0 1 3.97 9.58c0 3.755-1.52 7.14-3.97 9.595l-3.424-3.43a8.69 8.69 0 0 0 2.553-6.165 8.654 8.654 0 0 0-2.553-6.15z" id="path2" />
|
||||
<path fill="#f9f9f9" d="M25.317 42.364a17.903 17.903 0 0 1-5.254-12.7 17.93 17.93 0 0 1 5.254-12.7l-3.424-3.43c-4.117 4.14-6.67 9.832-6.67 16.13a22.77 22.77 0 0 0 6.67 16.13z" id="path4" />
|
||||
<path fill="#f9f9f9" d="M18.794 48.913a27.151 27.151 0 0 1-7.954-19.249c0-7.51 3.04-14.311 7.954-19.234L15.371 7a31.975 31.975 0 0 0-9.37 22.664 31.984 31.984 0 0 0 9.37 22.679Zm31.89-31.948a17.917 17.917 0 0 1 5.24 12.7 17.89 17.89 0 0 1-5.24 12.699l3.423 3.43a22.77 22.77 0 0 0 6.67-16.13c0-6.298-2.553-11.99-6.67-16.13z" id="path6" />
|
||||
<path fill="#f9f9f9" d="M57.206 10.43a27.143 27.143 0 0 1 7.954 19.234c0 7.525-3.04 14.326-7.954 19.25l3.423 3.429A31.985 31.985 0 0 0 70 29.664C70 20.824 66.43 12.81 60.63 7z" id="path8" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.6 KiB |
|
@ -1,19 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.1" clip-rule="evenodd" fill-rule="evenodd" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" viewBox="0 0 260 64">
|
||||
<g id="g936">
|
||||
<path fill="#474443" id="polygon21" d="M90.18 40.811h9.646v4.771H84.294V19.497h5.885z" />
|
||||
<path fill="#474443" d="M106.234 23.99c-.975 0-1.776-.278-2.368-.836-.627-.592-.941-1.288-.941-2.124 0-.87.314-1.567.941-2.124.592-.558 1.393-.836 2.368-.836.975 0 1.776.278 2.403.836.627.557.905 1.253.905 2.124 0 .87-.278 1.567-.905 2.124-.627.558-1.428.836-2.403.836zm2.821 21.592h-5.712V26.95h5.712z" id="path23" />
|
||||
<path fill="#474443" d="M119.154 43.388h-.069v2.194h-5.747V18h5.747v11.771h.069c1.428-2.194 3.448-3.274 6.06-3.274 2.403 0 4.249.836 5.537 2.473 1.289 1.637 1.951 3.9 1.951 6.756 0 3.1-.767 5.607-2.264 7.453-1.532 1.88-3.552 2.821-6.095 2.821-2.263 0-4.005-.87-5.189-2.612zm-.139-7.836v1.916c0 1.184.348 2.194 1.01 2.96.697.8 1.602 1.184 2.682 1.184 1.288 0 2.298-.488 3.029-1.498.732-1.01 1.08-2.437 1.08-4.318 0-1.532-.313-2.751-.975-3.587-.662-.87-1.602-1.323-2.821-1.323-1.184 0-2.124.452-2.891 1.288-.731.87-1.114 1.985-1.114 3.378z" id="path25" />
|
||||
<path fill="#474443" d="M148.582 32.14c-.696-.384-1.497-.558-2.438-.558-1.253 0-2.228.453-2.925 1.358-.696.906-1.045 2.16-1.045 3.727v8.915h-5.746V26.95h5.746v3.448h.07c.905-2.507 2.542-3.796 4.91-3.796.592 0 1.08.07 1.428.244z" id="path27" />
|
||||
<path fill="#474443" d="M167.98 37.886h-12.154c.209 2.716 1.915 4.074 5.119 4.074 2.055 0 3.831-.487 5.398-1.463v4.145c-1.741.905-3.97 1.358-6.721 1.358-2.995 0-5.328-.801-7-2.473-1.637-1.671-2.473-4.005-2.473-6.965 0-3.1.906-5.537 2.682-7.348 1.811-1.811 4.005-2.716 6.617-2.716 2.716 0 4.806.8 6.303 2.402 1.463 1.637 2.229 3.831 2.229 6.583zm-5.328-3.518c0-2.681-1.08-4.005-3.239-4.005-.905 0-1.706.383-2.403 1.15-.662.766-1.08 1.706-1.219 2.855z" id="path29" />
|
||||
<path fill="#e62129" id="polygon31" d="M176.965 24.269h-7.418v-4.771h20.722v4.77h-7.453v21.314h-5.851z" />
|
||||
<path fill="#e62129" d="M196.12 23.99c-.976 0-1.777-.278-2.369-.836-.626-.592-.94-1.288-.94-2.124 0-.87.314-1.567.94-2.124.592-.558 1.393-.836 2.369-.836.975 0 1.776.278 2.403.836.626.557.905 1.253.905 2.124 0 .87-.279 1.567-.905 2.124-.627.558-1.428.836-2.403.836zm2.82 21.592h-5.711V26.95h5.711z" id="path33" />
|
||||
<path fill="#e62129" d="M232.931 45.582h-5.712V34.96c0-2.716-1.01-4.074-2.995-4.074-.94 0-1.706.418-2.298 1.219-.592.835-.906 1.845-.906 3.03v10.447h-5.746V34.856c0-2.647-.975-3.97-2.926-3.97-.975 0-1.776.383-2.368 1.184-.592.766-.87 1.81-.87 3.134v10.378h-5.747V26.95h5.747v2.926h.069c.592-1.01 1.428-1.811 2.508-2.438a6.822 6.822 0 0 1 3.517-.94c2.612 0 4.423 1.149 5.398 3.482 1.428-2.333 3.518-3.483 6.269-3.483 4.04 0 6.06 2.508 6.06 7.488z" id="path35" />
|
||||
<path fill="#e62129" d="M254 37.886h-12.154c.209 2.716 1.881 4.074 5.119 4.074 2.02 0 3.831-.487 5.364-1.463v4.145c-1.707.905-3.936 1.358-6.687 1.358-2.995 0-5.328-.801-7-2.473-1.672-1.671-2.507-4.005-2.507-6.965 0-3.1.905-5.537 2.716-7.348 1.776-1.811 3.97-2.716 6.617-2.716 2.716 0 4.806.8 6.303 2.402 1.463 1.637 2.229 3.831 2.229 6.583zm-5.328-3.518c0-2.681-1.08-4.005-3.239-4.005-.94 0-1.741.383-2.403 1.15-.662.766-1.08 1.706-1.219 2.855z" id="path37" />
|
||||
</g>
|
||||
<g id="g859">
|
||||
<path fill="#474443" d="M37.993 16.107c3.32 0 6.36 1.198 8.706 3.179l-3.438 3.444a8.687 8.687 0 0 0-10.522 0l-3.438-3.444a13.443 13.443 0 0 1 8.692-3.179zm2.08 26.966L41.711 57h-7.437l1.653-13.927a13.44 13.44 0 0 1-6.626-3.016l3.438-3.444a8.72 8.72 0 0 0 4.412 1.73v-1.73h-.84c-1.034 0-1.875-.858-1.875-1.893v-8.072c0-1.035.841-1.892 1.874-1.892h3.38c1.033 0 1.874.857 1.874 1.892v8.072c0 1.035-.84 1.893-1.874 1.893h-.84v1.73a8.72 8.72 0 0 0 4.411-1.73l3.438 3.444a13.44 13.44 0 0 1-6.626 3.016zm.118-17.312c.4 0 .723.31.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.4.325-.71.708-.71zm-1.859.222c.28 0 .502.222.502.488 0 .28-.222.488-.502.488a.482.482 0 0 1-.487-.488c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm4.796 1.7c.4 0 .723.326.723.725 0 .384-.324.71-.723.71a.719.719 0 0 1-.708-.71c0-.4.325-.725.708-.725zm-1.859.222a.496.496 0 1 1 .014.989.496.496 0 0 1-.014-.988zm-1.55.089c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.089c.178 0 .31.147.31.325 0 .162-.132.31-.31.31a.312.312 0 0 1-.31-.31c0-.178.133-.325.31-.325zm4.796 1.7a.725.725 0 0 1 0 1.449.722.722 0 0 1-.708-.725c0-.399.325-.724.708-.724zm-1.859.236c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.192.414.414a.413.413 0 0 1-.413.414.404.404 0 0 1-.414-.414c0-.222.177-.414.414-.414zm-1.387.104c.178 0 .31.133.31.31 0 .178-.132.31-.31.31a.303.303 0 0 1-.31-.31c0-.177.133-.31.31-.31zm4.796 1.7c.4 0 .723.325.723.71a.724.724 0 0 1-.723.724.722.722 0 0 1-.708-.724c0-.385.325-.71.708-.71zm-1.859.222a.495.495 0 1 1 .014.99.495.495 0 0 1-.014-.99zm-1.55.074c.222 0 .414.192.414.414a.426.426 0 0 1-.413.428.416.416 0 0 1-.414-.428c0-.222.177-.414.414-.414zm-1.387.103c.178 0 .31.148.31.31a.315.315 0 0 1-.31.326.315.315 0 0 1-.31-.325c0-.163.133-.31.31-.31zm4.796 1.7a.725.725 0 0 1 0 1.45.722.722 0 0 1-.708-.725c0-.4.325-.725.708-.725zm-1.859.237c.28 0 .502.222.502.488a.495.495 0 0 1-.989 0c0-.266.221-.488.487-.488zm-1.55.074c.222 0 .414.177.414.414a.423.423 0 0 1-.413.414.413.413 0 0 1-.414-.414c0-.237.177-.414.414-.414zm-1.387.103c.178 0 .31.133.31.31a.303.303 0 0 1-.31.311.303.303 0 0 1-.31-.31c0-.178.133-.31.31-.31zm-3.54-11.073a8.653 8.653 0 0 0-2.554 6.15c0 2.41.974 4.583 2.553 6.165l-3.424 3.43a13.53 13.53 0 0 1-3.97-9.595c0-3.74 1.52-7.126 3.97-9.58zm15.715-3.43a13.522 13.522 0 0 1 3.97 9.58c0 3.755-1.52 7.14-3.97 9.595l-3.424-3.43a8.69 8.69 0 0 0 2.553-6.165 8.654 8.654 0 0 0-2.553-6.15z" id="path2" />
|
||||
<path fill="#e62129" d="M25.317 42.364a17.903 17.903 0 0 1-5.254-12.7 17.93 17.93 0 0 1 5.254-12.7l-3.424-3.43c-4.117 4.14-6.67 9.832-6.67 16.13a22.77 22.77 0 0 0 6.67 16.13z" id="path4" />
|
||||
<path fill="#e62129" d="M18.794 48.913a27.151 27.151 0 0 1-7.954-19.249c0-7.51 3.04-14.311 7.954-19.234L15.371 7a31.975 31.975 0 0 0-9.37 22.664 31.984 31.984 0 0 0 9.37 22.679Zm31.89-31.948a17.917 17.917 0 0 1 5.24 12.7 17.89 17.89 0 0 1-5.24 12.699l3.423 3.43a22.77 22.77 0 0 0 6.67-16.13c0-6.298-2.553-11.99-6.67-16.13z" id="path6" />
|
||||
<path fill="#e62129" d="M57.206 10.43a27.143 27.143 0 0 1 7.954 19.234c0 7.525-3.04 14.326-7.954 19.25l3.423 3.429A31.985 31.985 0 0 0 70 29.664C70 20.824 66.43 12.81 60.63 7z" id="path8" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB |
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"extends": "@tsconfig/docusaurus/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"jsx": "react",
|
||||
"baseUrl": "."
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
module.exports = {
|
||||
title: "LibreTime",
|
||||
description: "Radio Broadcast & Automation Platform",
|
||||
version: "3.0.0",
|
||||
website: "https://libretime.org",
|
||||
|
||||
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" },
|
||||
],
|
||||
},
|
||||
|
||||
doc: {
|
||||
sections: [
|
||||
{ label: "Admin manual", to: "/docs/admin-manual" },
|
||||
{ label: "User manual", to: "/docs/user-manual" },
|
||||
{ label: "Developer manual", to: "/docs/developer-manual" },
|
||||
],
|
||||
},
|
||||
};
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
title: Welcome
|
||||
sidebar_position: 10
|
||||
---
|
||||
|
||||
Welcome to the **LibreTime documentation**, you should find everything you need to know about LibreTime.
|
||||
|
||||
## 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)
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
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)
|
|
@ -1,2 +0,0 @@
|
|||
label: Admin manual
|
||||
position: 20
|
|
@ -1,88 +0,0 @@
|
|||
---
|
||||
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 aren't 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/libretime` 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
|
||||
```
|
||||
|
||||
:::note
|
||||
|
||||
Consider using the `--no-owner` and `--no-privileges` flags to ignore roles
|
||||
and permissions details about the database. This can be useful when restoring
|
||||
to database or role that have different names.
|
||||
|
||||
:::
|
||||
|
||||
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 is defined in the [configuration](./setup/configuration.md) file.
|
||||
|
||||
## Restore a backup
|
||||
|
||||
### Install or cleanup
|
||||
|
||||
If you are restoring a backup on a fresh system, we recommend that you first [install LibreTime](./setup/install.md), and **stop before the [setup tasks](./setup/install.md#setup)**.
|
||||
|
||||
If you are restoring a backup on an existing system, make sure to clean the old **database** and **files storage**.
|
||||
|
||||
### Restore the configuration
|
||||
|
||||
Copy the backed configuration files back to the [configuration](./setup/configuration.md) folder.
|
||||
|
||||
If you are upgrading LibreTime, edit the configuration file to match the new configuration schema and update any changed values. See the [configuration](./setup/configuration.md) documentation for more details.
|
||||
|
||||
### Restore the database
|
||||
|
||||
Restore the database by using the following command:
|
||||
|
||||
```bash
|
||||
sudo -u postgres pg_restore --dbname=libretime libretime.sql
|
||||
```
|
||||
|
||||
:::note
|
||||
|
||||
Consider using the `--no-owner` and `--no-privileges` flags to ignore roles
|
||||
and permissions details about the database. This can be useful when restoring
|
||||
to database or role that have different names.
|
||||
|
||||
:::
|
||||
|
||||
If you are upgrading LibreTime, make sure to apply the [database migration](./setup/upgrade.md#apply-migrations).
|
||||
|
||||
### Restore the storage
|
||||
|
||||
Copy the entire backed file storage back to the storage path.
|
||||
|
||||
The path to your storage is defined in the [configuration](./setup/configuration.md) file.
|
|
@ -1,115 +0,0 @@
|
|||
---
|
||||
title: Custom authentication
|
||||
sidebar_position: 40
|
||||
---
|
||||
|
||||
:::warning
|
||||
|
||||
Since LibreTime v3.0.0-alpha.13, this documentation is out of date, as it relies on the Apache2 web server and the default web server installed by LibreTime is now NGINX.
|
||||
|
||||
:::
|
||||
|
||||
## 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
|
||||
|
||||
After installing the needed modules you can set up Apache to intercept form logins and
|
||||
check them against pam.
|
||||
|
||||
```apacheconf
|
||||
<Location /login>
|
||||
InterceptFormPAMService http-libretime
|
||||
InterceptFormLogin username
|
||||
InterceptFormPassword password
|
||||
InterceptFormLoginSkip admin
|
||||
InterceptFormPasswordRedact on
|
||||
InterceptFormLoginRealms INT.RABE.CH
|
||||
Require pam-account http-libretime
|
||||
</Location>
|
||||
|
||||
<Location />
|
||||
<RequireAny>
|
||||
<RequireAny>
|
||||
Require pam-account http-libretime
|
||||
Require all granted
|
||||
</RequireAny>
|
||||
<RequireAll>
|
||||
Require expr %{REQUEST_URI} =~ /(index.php|login|favicon.ico|js|css|locale)/
|
||||
Require all granted
|
||||
</RequireAll>
|
||||
</RequireAny>
|
||||
</Location>
|
||||
```
|
||||
|
||||
### PAM configuration
|
||||
|
||||
The above configuration expects a PAM configuration for the `http-libretime` service.
|
||||
|
||||
To confiure this you need to create the file `/etc/pam.d/http-libretime` with the following contents.
|
||||
|
||||
```
|
||||
auth required pam_sss.so
|
||||
account required pam_sss.so
|
||||
```
|
||||
|
||||
### 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
|
||||
set up beforehand.
|
||||
|
||||
You can configure everything pertaining to how LibreTime accesses LDAP in
|
||||
`/etc/libretime/config.yml`. The default file has the following values you need to change.
|
||||
|
||||
```yml
|
||||
#
|
||||
# ----------------------------------------------------------------------
|
||||
# L D A P
|
||||
# ----------------------------------------------------------------------
|
||||
#
|
||||
# hostname: Hostname of LDAP server
|
||||
#
|
||||
# binddn: Complete DN of user used to bind to LDAP
|
||||
#
|
||||
# password: Password for binddn user
|
||||
#
|
||||
# account_domain: Domain part of username
|
||||
#
|
||||
# basedn: base search DN
|
||||
#
|
||||
# filter_field: Name of the uid field for searching
|
||||
# Usually uid, may be cn
|
||||
#
|
||||
# groupmap_*: Map LibreTime user types to LDAP groups
|
||||
# Lets LibreTime assign user types based on the
|
||||
# group a given user is in.
|
||||
#
|
||||
ldap:
|
||||
hostname: ldap.example.org
|
||||
binddn: "uid=libretime,cn=sysaccounts,cn=etc,dc=int,dc=example,dc=org"
|
||||
password: hackme
|
||||
account_domain: INT.EXAMPLE.ORG
|
||||
basedn: "cn=users,cn=accounts,dc=int,dc=example,dc=org"
|
||||
filter_field: uid
|
||||
groupmap_guest: "cn=guest,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
groupmap_host: "cn=host,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
groupmap_program_manager: "cn=program_manager,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
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
|
||||
|
||||
After everything is set up properly you can enable FreeIPA auth in `config.yml`:
|
||||
|
||||
```yml
|
||||
general:
|
||||
auth: LibreTime_Auth_Adaptor_FreeIpa
|
||||
```
|
||||
|
||||
You should now be able to use your FreeIPA credentials to log in to LibreTime.
|
|
@ -1,64 +0,0 @@
|
|||
---
|
||||
title: Change default passwords
|
||||
sidebar_position: 80
|
||||
---
|
||||
|
||||
## LibreTime
|
||||
|
||||
To change the password of the current user:
|
||||
|
||||
1. Log in to LibreTime
|
||||
2. Click on the username in the upper right corner (next to Log Out)
|
||||
3. Enter the new password twice and click **Save**
|
||||
|
||||
To change the password for a different user (requires _Administrator_ privileges):
|
||||
|
||||
1. Log in to LibreTime
|
||||
2. Go to **Settings** > **Manage Users**
|
||||
3. Select the user, enter the new password twice, and click **Save**
|
||||
|
||||
## PostgreSQL
|
||||
|
||||
Two of the most important passwords that should be changed _immediately_ after installation
|
||||
are the passwords used by the PostgreSQL database.
|
||||
It's strongly recommended that you do this before exposing your server to the internet beyond your internal network.
|
||||
|
||||
1. Login to PostgreSQL with `sudo -u postgres psql`. The PostgreSQL shell - `postgres=#` - means that you have logged in successfully.
|
||||
2. Change the admin password with `ALTER USER postgres PASSWORD 'myPassword';`, where `myPassword` is the new password.
|
||||
Make sure to include the semicolon at the end! A response of `ALTER ROLE` means that the command ran successfully.
|
||||
3. Change the password for the _airtime_ user with `ALTER USER airtime WITH PASSWORD 'new_password';`
|
||||
A response of `ALTER ROLE` means that the command ran successfully.
|
||||
4. If all is successful, logout of PostgreSQL with `\q`, go back to `/etc/libretime/config.yml` to edit the password
|
||||
in the config file, and restart all services mentioned in the previous section.
|
||||
|
||||
## Icecast
|
||||
|
||||
Random passwords are generated for Icecast during the installation. To look up and change the passwords, edit `/etc/icecast2/icecast.xml`.
|
||||
|
||||
Replace the admin and _changeme_ fields below.
|
||||
|
||||
```xml
|
||||
<authentication>
|
||||
<!-- Sources log in with username 'source' -->
|
||||
<source-password>changeme</source-password>
|
||||
<!-- Relays log in with username 'relay' -->
|
||||
<relay-password>changeme</relay-password>
|
||||
<!-- Admin logs in with the username given below -->
|
||||
<admin-user>admin</admin-user>
|
||||
<admin-password>changeme</admin-password>
|
||||
</authentication>
|
||||
```
|
||||
|
||||
Then, restart your icecast2 service with `sudo systemctl restart icecast2`.
|
||||
|
||||
> Note: If you change the source password, you may need to manually configure LibreTime to use the new password: go to **Settings** > **Streams**, set the streaming server to **Custom** and fill out the **Additional Options** below Stream 1.
|
||||
|
||||
## RabbitMQ
|
||||
|
||||
To change the default password for RabbitMQ, run the following command
|
||||
|
||||
```bash
|
||||
sudo rabbitmqctl change_password airtime newpassword
|
||||
```
|
||||
|
||||
and then update the `/etc/libretime/config.yml` file with the new password.
|
Before Width: | Height: | Size: 74 KiB |
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
title: Library management
|
||||
sidebar_position: 30
|
||||
---
|
||||
|
||||
This page describe the available options to manage the LibreTime library.
|
||||
|
||||
## Files bulk import
|
||||
|
||||
To scan a directory and import the files into the library, you can use the following command:
|
||||
|
||||
```bash
|
||||
sudo -u libretime libretime-api bulk_import --path PATH_THE_DIRECTORY_TO_SCAN
|
||||
```
|
||||
|
||||
See the command usage to get available options.
|
|
@ -1,2 +0,0 @@
|
|||
label: Setup
|
||||
position: 00
|
|
@ -1,479 +0,0 @@
|
|||
---
|
||||
title: Configuration
|
||||
sidebar_position: 20
|
||||
---
|
||||
|
||||
To configure LibreTime, you need to edit the `/etc/libretime/config.yml` file. This page describe the available options to configure your installation.
|
||||
|
||||
Don't forget to restart the services after you made changes to the configuration file:
|
||||
|
||||
```
|
||||
sudo systemctl restart libretime.target
|
||||
```
|
||||
|
||||
:::tip
|
||||
|
||||
When upgrading, if [`yq`](https://mikefarah.gitbook.io/yq/) is installed on your system, you can easily keep your configuration file schema in sync, without losing your configuration values:
|
||||
|
||||
```bash
|
||||
# Load your existing configuration values and merge them on top
|
||||
# of the default configuration file
|
||||
yq '. *= (load("/etc/libretime/config.yml") | ... comments="")' \
|
||||
installer/config.yml > update-config.yml
|
||||
|
||||
# Check what has been updated
|
||||
diff -y /etc/libretime/config.yml update-config.yml
|
||||
|
||||
# Move the updated configuration file in place
|
||||
sudo cp update-config.yml /etc/libretime/config.yml
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## General
|
||||
|
||||
The `general` section configure anything related to the legacy and API services.
|
||||
|
||||
```yml
|
||||
general:
|
||||
# The public url.
|
||||
# > this field is REQUIRED
|
||||
public_url: "https://example.com"
|
||||
# The internal API authentication key.
|
||||
# > this field is REQUIRED
|
||||
api_key: "some_random_generated_secret!"
|
||||
|
||||
# List of origins allowed to access resources on the server,
|
||||
# the [general.public_url] origin is automatically included.
|
||||
# > default is []
|
||||
allowed_cors_origins: []
|
||||
|
||||
# The server timezone, should be a lookup key in the IANA time zone database,
|
||||
# for example Europe/Berlin.
|
||||
# > default is UTC
|
||||
timezone: UTC
|
||||
|
||||
# How many hours ahead Playout should cache scheduled media files.
|
||||
# > default is 1
|
||||
cache_ahead_hours: 1
|
||||
|
||||
# Authentication adaptor to use for the legacy service, specify a class like
|
||||
# LibreTime_Auth_Adaptor_FreeIpa to replace the built-in adaptor.
|
||||
# > default is local
|
||||
auth: "local"
|
||||
```
|
||||
|
||||
## Storage
|
||||
|
||||
The `storage` section configure the project storage.
|
||||
|
||||
```yml
|
||||
storage:
|
||||
# Path of the storage directory.
|
||||
# > default is /srv/libretime
|
||||
path: "/srv/libretime"
|
||||
```
|
||||
|
||||
## Database
|
||||
|
||||
The `database` section configure the PostgreSQL connection.
|
||||
|
||||
:::caution
|
||||
|
||||
Before editing this section be sure to update the PostgreSQL server with the desired values.
|
||||
|
||||
#### Changing a PostgreSQL user password
|
||||
|
||||
You can change the `libretime` PostgreSQL user password using:
|
||||
|
||||
```bash
|
||||
sudo -u postgres psql -c "ALTER USER libretime PASSWORD 'new-password';"
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
```yml
|
||||
database:
|
||||
# The hostname of the PostgreSQL server.
|
||||
# > default is localhost
|
||||
host: "localhost"
|
||||
# The port of the PostgreSQL server.
|
||||
# > default is 5432
|
||||
port: 5432
|
||||
# The name of the PostgreSQL database.
|
||||
# > default is libretime
|
||||
name: "libretime"
|
||||
# The username of the PostgreSQL user.
|
||||
# > default is libretime
|
||||
user: "libretime"
|
||||
# The password of the PostgreSQL user.
|
||||
# > default is libretime
|
||||
password: "some_random_generated_secret!"
|
||||
```
|
||||
|
||||
## RabbitMQ
|
||||
|
||||
The `rabbitmq` section configure the RabbitMQ connection.
|
||||
|
||||
:::caution
|
||||
|
||||
Before editing this section be sure to update the RabbitMQ server with the desired values.
|
||||
|
||||
#### Changing a RabbitMq user password
|
||||
|
||||
You can change the `libretime` RabbitMQ user password using:
|
||||
|
||||
```bash
|
||||
sudo rabbitmqctl change_password "libretime" "new-password"
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
```yml
|
||||
rabbitmq:
|
||||
# The hostname of the RabbitMQ server.
|
||||
# > default is localhost
|
||||
host: "localhost"
|
||||
# The port of the RabbitMQ server.
|
||||
# > default is 5672
|
||||
port: 5672
|
||||
# The virtual host of RabbitMQ server.
|
||||
# > default is /libretime
|
||||
vhost: "/libretime"
|
||||
# The username of the RabbitMQ user.
|
||||
# > default is libretime
|
||||
user: "libretime"
|
||||
# The password of the RabbitMQ user.
|
||||
# > default is libretime
|
||||
password: "some_random_generated_secret!"
|
||||
```
|
||||
|
||||
## Playout
|
||||
|
||||
The `playout` section configure anything related to the playout service.
|
||||
|
||||
:::caution
|
||||
|
||||
When changing the `playout.liquidsoap_*` entries, make sure to also configure the `liquidsoap.server_listen_*` entries accordingly.
|
||||
|
||||
:::
|
||||
|
||||
```yml
|
||||
playout:
|
||||
# Liquidsoap connection host.
|
||||
# > default is localhost
|
||||
liquidsoap_host: "localhost"
|
||||
# Liquidsoap connection port.
|
||||
# > default is 1234
|
||||
liquidsoap_port: 1234
|
||||
|
||||
# The format for recordings.
|
||||
# > must be one of (ogg, mp3)
|
||||
# > default is ogg
|
||||
record_file_format: ogg
|
||||
# The bitrate for recordings.
|
||||
# > default is 256
|
||||
record_bitrate: 256
|
||||
# The samplerate for recordings.
|
||||
# > default is 44100
|
||||
record_samplerate: 44100
|
||||
# The number of channels for recordings.
|
||||
# > default is 2
|
||||
record_channels: 2
|
||||
# The sample size for recordings.
|
||||
# > default is 16
|
||||
record_sample_size: 16
|
||||
```
|
||||
|
||||
## Liquidsoap
|
||||
|
||||
The `liquidsoap` section configure anything related to the liquidsoap service.
|
||||
|
||||
:::caution
|
||||
|
||||
When changing the `liquidsoap.server_listen_*` entries, make sure to also configure the `playout.liquidsoap_*` entries accordingly.
|
||||
|
||||
:::
|
||||
|
||||
```yml
|
||||
liquidsoap:
|
||||
# Liquidsoap server listen address.
|
||||
# > default is 127.0.0.1
|
||||
server_listen_address: "127.0.0.1"
|
||||
# Liquidsoap server listen port.
|
||||
# > default is 1234
|
||||
server_listen_port: 1234
|
||||
|
||||
# Input harbor listen address.
|
||||
# > default is ["0.0.0.0"]
|
||||
harbor_listen_address: ["0.0.0.0"]
|
||||
```
|
||||
|
||||
## Stream
|
||||
|
||||
The `stream` section configures anything related to the input and output streams.
|
||||
|
||||
```yml
|
||||
stream:
|
||||
inputs: # See the [stream.inputs] section.
|
||||
outputs: # See the [stream.outputs] section.
|
||||
```
|
||||
|
||||
:::info
|
||||
|
||||
To help you simplify your stream configuration, you can use yaml anchors to define a common properties and reuse them in your output definitions:
|
||||
|
||||
```yml
|
||||
stream:
|
||||
outputs:
|
||||
# This can be reused to define multiple outputs without duplicating data
|
||||
.default_icecast_output: &default_icecast_output
|
||||
source_password: "hackme"
|
||||
admin_password: "hackme"
|
||||
name: "LibreTime!"
|
||||
description: "LibreTime Radio!"
|
||||
website: "https://libretime.org"
|
||||
genre: "various"
|
||||
|
||||
icecast:
|
||||
- <<: *default_icecast_output
|
||||
enabled: true
|
||||
mount: "main.ogg"
|
||||
audio:
|
||||
format: "ogg"
|
||||
bitrate: 256
|
||||
|
||||
- <<: *default_icecast_output
|
||||
enabled: true
|
||||
mount: "main.mp3"
|
||||
audio:
|
||||
format: "mp3"
|
||||
bitrate: 256
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Inputs
|
||||
|
||||
The `stream.inputs` section configures anything related to the input streams.
|
||||
|
||||
```yml
|
||||
stream:
|
||||
# Inputs sources.
|
||||
inputs:
|
||||
# Main harbor input.
|
||||
main:
|
||||
# Harbor input public url. If not defined, the value will be generated from
|
||||
# the [general.public_url] hostname, the input port and mount.
|
||||
public_url:
|
||||
# Mount point for the main harbor input.
|
||||
# > default is main
|
||||
mount: "main"
|
||||
# Listen port for the main harbor input.
|
||||
# > default is 8001
|
||||
port: 8001
|
||||
|
||||
# Show harbor input.
|
||||
show:
|
||||
# Harbor input public url. If not defined, the value will be generated from
|
||||
# the [general.public_url] hostname, the input port and mount.
|
||||
public_url:
|
||||
# Mount point for the show harbor input.
|
||||
# > default is show
|
||||
mount: "show"
|
||||
# Listen port for the show harbor input.
|
||||
# > default is 8002
|
||||
port: 8002
|
||||
```
|
||||
|
||||
### Outputs
|
||||
|
||||
The `stream.outputs` section configures anything related to the output streams.
|
||||
|
||||
```yml
|
||||
stream:
|
||||
# Output streams.
|
||||
outputs:
|
||||
icecast: # See the [stream.outputs.icecast] section.
|
||||
shoutcast: # See the [stream.outputs.shoutcast] section.
|
||||
system: # See the [stream.outputs.system] section.
|
||||
```
|
||||
|
||||
#### Icecast
|
||||
|
||||
The `stream.outputs.icecast` section configures the icecast output streams.
|
||||
|
||||
:::warning
|
||||
|
||||
If you configure more than 2 icecast stream on a **single icecast server**, make sure to raise the icecast sources limit:
|
||||
|
||||
```xml
|
||||
<icecast>
|
||||
<limits>
|
||||
<sources>2</sources>
|
||||
</limits>
|
||||
</icecast>
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
```yml
|
||||
stream:
|
||||
outputs:
|
||||
# Icecast output streams.
|
||||
# > max items is 3
|
||||
icecast:
|
||||
- # Whether the output is enabled.
|
||||
# > default is false
|
||||
enabled: false
|
||||
# Output public url, If not defined, the value will be generated from
|
||||
# the [general.public_url] hostname, the output port and mount.
|
||||
public_url:
|
||||
# Icecast server host.
|
||||
# > default is localhost
|
||||
host: "localhost"
|
||||
# Icecast server port.
|
||||
# > default is 8000
|
||||
port: 8000
|
||||
# Icecast server mount point.
|
||||
# > this field is REQUIRED
|
||||
mount: "main"
|
||||
# Icecast source user.
|
||||
# > default is source
|
||||
source_user: "source"
|
||||
# Icecast source password.
|
||||
# > this field is REQUIRED
|
||||
source_password: "hackme"
|
||||
# Icecast admin user.
|
||||
# > default is admin
|
||||
admin_user: "admin"
|
||||
# Icecast admin password. If not defined, statistics won't be collected.
|
||||
admin_password: "hackme"
|
||||
|
||||
# Icecast output audio.
|
||||
audio:
|
||||
# Icecast output audio format.
|
||||
# > must be one of (aac, mp3, ogg, opus)
|
||||
# > this field is REQUIRED
|
||||
format: "ogg"
|
||||
# Icecast output audio bitrate.
|
||||
# > must be one of (32, 48, 64, 96, 128, 160, 192, 224, 256, 320)
|
||||
# > this field is REQUIRED
|
||||
bitrate: 256
|
||||
|
||||
# format=ogg only field: Embed metadata (track title, artist, and show name)
|
||||
# in the output stream. Some bugged players will disconnect from the stream
|
||||
# after every songs when playing ogg streams that have metadata information
|
||||
# enabled.
|
||||
# > default is false
|
||||
enable_metadata: false
|
||||
|
||||
# Icecast stream name.
|
||||
name: "LibreTime!"
|
||||
# Icecast stream description.
|
||||
description: "LibreTime Radio!"
|
||||
# Icecast stream website.
|
||||
website: "https://libretime.org"
|
||||
# Icecast stream genre.
|
||||
genre: "various"
|
||||
```
|
||||
|
||||
#### Shoutcast
|
||||
|
||||
The `stream.outputs.shoutcast` section configures the shoutcast output streams.
|
||||
|
||||
```yml
|
||||
stream:
|
||||
outputs:
|
||||
# Shoutcast output streams.
|
||||
# > max items is 1
|
||||
shoutcast:
|
||||
- # Whether the output is enabled.
|
||||
# > default is false
|
||||
enabled: false
|
||||
# Output public url. If not defined, the value will be generated from
|
||||
# the [general.public_url] hostname and the output port.
|
||||
public_url:
|
||||
# Shoutcast server host.
|
||||
# > default is localhost
|
||||
host: "localhost"
|
||||
# Shoutcast server port.
|
||||
# > default is 8000
|
||||
port: 8000
|
||||
# Shoutcast source user.
|
||||
# > default is source
|
||||
source_user: "source"
|
||||
# Shoutcast source password.
|
||||
# > this field is REQUIRED
|
||||
source_password: "hackme"
|
||||
# Shoutcast admin user.
|
||||
# > default is admin
|
||||
admin_user: "admin"
|
||||
# Shoutcast admin password. If not defined, statistics won't be collected.
|
||||
admin_password: "hackme"
|
||||
|
||||
# Shoutcast output audio.
|
||||
audio:
|
||||
# Shoutcast output audio format.
|
||||
# > must be one of (aac, mp3)
|
||||
# > this field is REQUIRED
|
||||
format: "mp3"
|
||||
# Shoutcast output audio bitrate.
|
||||
# > must be one of (32, 48, 64, 96, 128, 160, 192, 224, 256, 320)
|
||||
# > this field is REQUIRED
|
||||
bitrate: 256
|
||||
|
||||
# Shoutcast stream name.
|
||||
name: "LibreTime!"
|
||||
# Shoutcast stream website.
|
||||
website: "https://libretime.org"
|
||||
# Shoutcast stream genre.
|
||||
genre: "various"
|
||||
```
|
||||
|
||||
#### System
|
||||
|
||||
The `stream.outputs.system` section configures the system outputs.
|
||||
|
||||
```yml
|
||||
stream:
|
||||
outputs:
|
||||
# System outputs.
|
||||
# > max items is 1
|
||||
system:
|
||||
- # Whether the output is enabled.
|
||||
# > default is false
|
||||
enabled: false
|
||||
# System output kind.
|
||||
# > must be one of (alsa, ao, oss, portaudio, pulseaudio)
|
||||
# > default is alsa
|
||||
kind: "alsa"
|
||||
```
|
||||
|
||||
## LDAP
|
||||
|
||||
The `ldap` section provide additional configuration for the authentication mechanism defined in `general.auth`, please see the [custom authentication documentation](../custom-authentication.md) for more details.
|
||||
|
||||
```yml
|
||||
ldap:
|
||||
# Hostname of LDAP server.
|
||||
hostname: "ldap.example.org"
|
||||
# Complete DN of user used to bind to LDAP.
|
||||
binddn: "uid=libretime,cn=sysaccounts,cn=etc,dc=int,dc=example,dc=org"
|
||||
# Password for binddn user.
|
||||
password: "hackme"
|
||||
# Domain part of username.
|
||||
account_domain: "INT.EXAMPLE.ORG"
|
||||
# Base search DN.
|
||||
basedn: "cn=users,cn=accounts,dc=int,dc=example,dc=org"
|
||||
# Name of the uid field for searching. Usually uid, may be cn.
|
||||
filter_field: "uid"
|
||||
|
||||
# Map user types to LDAP groups. Assign user types based on the group of a given user
|
||||
# Key format is groupmap_*.
|
||||
groupmap_superadmin: "cn=superadmin,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
groupmap_admin: "cn=admin,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
groupmap_program_manager: "cn=program_manager,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
groupmap_host: "cn=host,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
groupmap_guest: "cn=guest,cn=groups,cn=accounts,dc=int,dc=example,dc=org"
|
||||
```
|
|
@ -1,290 +0,0 @@
|
|||
---
|
||||
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)
|
||||
- [:rocket: Using docker-compose](#using-docker-compose)
|
||||
- :construction: Using ansible
|
||||
|
||||
### Minimum system requirements
|
||||
|
||||
- 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))
|
||||
|
||||
:::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 default ports to be open:
|
||||
|
||||
- `80` for the web interface,
|
||||
- `8000` for the Icecast streams,
|
||||
- `8001` and `8002` for the live stream input endpoint.
|
||||
|
||||
:::
|
||||
|
||||
## Using the installer
|
||||
|
||||
The installer is shipped in the released tarballs or directly in the project repository.
|
||||
|
||||
We recommend installing on one of the following [distribution releases](../../developer-manual/development/releases.md#distributions-releases-support):
|
||||
|
||||
- [Debian 11](https://www.debian.org/releases/)
|
||||
- [Ubuntu 20.04 LTS](https://wiki.ubuntu.com/Releases)
|
||||
|
||||
### Before installing
|
||||
|
||||
Before installing LibreTime, you need to make sure you operating system is properly configured.
|
||||
|
||||
#### Operating system time configuration
|
||||
|
||||
Check your operating system time configuration using the following command:
|
||||
|
||||
```bash
|
||||
timedatectl
|
||||
```
|
||||
|
||||
```
|
||||
Local time: Fri 2022-08-05 12:43:39 CEST
|
||||
Universal time: Fri 2022-08-05 10:43:39 UTC
|
||||
RTC time: Fri 2022-08-05 10:43:40
|
||||
Time zone: Europe/Berlin (CEST, +0200)
|
||||
System clock synchronized: yes
|
||||
NTP service: active
|
||||
RTC in local TZ: no
|
||||
```
|
||||
|
||||
Make sure that your time zone is properly configured, if not you can set it using the [`timedatectl set-timezone` command](https://www.freedesktop.org/software/systemd/man/timedatectl.html#set-timezone%20%5BTIMEZONE%5D).
|
||||
|
||||
If the NTP service is inactive, you should consider enabling it using the [`timedatectl set-ntp` command](https://www.freedesktop.org/software/systemd/man/timedatectl.html#set-ntp%20%5BBOOL%5D).
|
||||
|
||||
### Download
|
||||
|
||||
You can either download the latest released tarball or clone the repository.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Release tarball" value="tarball" default>
|
||||
|
||||
Download the [latest released](https://github.com/libretime/libretime/releases) tarball from Github.
|
||||
|
||||
Or directly from the command-line:
|
||||
|
||||
<CodeBlock language="bash">
|
||||
wget https://github.com/libretime/libretime/releases/download/{vars.version}/libretime-{vars.version}.tar.gz
|
||||
</CodeBlock>
|
||||
|
||||
And extract the tarball:
|
||||
|
||||
<CodeBlock language="bash">
|
||||
tar -xvf libretime-{vars.version}.tar.gz && cd libretime
|
||||
</CodeBlock>
|
||||
|
||||
</TabItem>
|
||||
<TabItem label="Git repository" value="git">
|
||||
|
||||
Clone the project repository:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/libretime/libretime
|
||||
cd libretime
|
||||
```
|
||||
|
||||
:::caution
|
||||
|
||||
Don't use the https://github.com/libretime/libretime-debian-packaging repository, it's only used to create LibreTime packages.
|
||||
|
||||
:::
|
||||
|
||||
:::info
|
||||
|
||||
When upgrading, you should clean the local repository, pull the latest changes and finally check out the desired version:
|
||||
|
||||
```bash
|
||||
cd libretime
|
||||
git clean -xdf
|
||||
git pull
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
And checkout the latest version:
|
||||
|
||||
<CodeBlock language="bash">
|
||||
git checkout {vars.version}
|
||||
</CodeBlock>
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
### Run the installer
|
||||
|
||||
Install LibreTime with the recommended options, be sure to replace `PUBLIC_URL` with the public url of your installation,
|
||||
for example `https://libretime.example.com` or `http://192.168.10.100:80`:
|
||||
|
||||
```bash
|
||||
sudo ./install PUBLIC_URL
|
||||
```
|
||||
|
||||
:::caution
|
||||
|
||||
When upgrading be sure to run the installer using the same arguments you used during the initial install.
|
||||
|
||||
:::
|
||||
|
||||
If you need to change some configuration, the install script can be configured using flags or environment variables. Changing the listening port of LibreTime or whether you want to install some dependency by yourself, you could run the following:
|
||||
|
||||
```bash
|
||||
# Install LibreTime on your system with the following tweaks:
|
||||
# - don't install the liquidsoap package (remember to install liquidsoap yourself)
|
||||
# - set the listen port to 8080
|
||||
# - don't run the PostgreSQL setup (remember to setup PostgreSQL yourself)
|
||||
sudo \
|
||||
LIBRETIME_PACKAGES_EXCLUDES='liquidsoap' \
|
||||
./install \
|
||||
--listen-port 8080 \
|
||||
--no-setup-postgresql \
|
||||
https://libretime.example.com
|
||||
```
|
||||
|
||||
You can persist the install configuration in a `.env` file next to the install script. For example, the above command could be persisted using the `.env` file below, and you should be able to run the install script without arguments:
|
||||
|
||||
```
|
||||
LIBRETIME_PACKAGES_EXCLUDES='liquidsoap'
|
||||
LIBRETIME_LISTEN_PORT='8080'
|
||||
LIBRETIME_SETUP_POSTGRESQL=false
|
||||
LIBRETIME_PUBLIC_URL='https://libretime.example.com'
|
||||
```
|
||||
|
||||
:::note
|
||||
|
||||
The install script will use randomly generated passwords to create the PostgreSQL user, RabbitMQ user and to update the default Icecast passwords. Those passwords will be saved to the configuration files.
|
||||
|
||||
:::
|
||||
|
||||
Feel free to run `./install --help` to get more details.
|
||||
|
||||
#### Using hardware audio output
|
||||
|
||||
If you plan to output analog audio directly to a mixing console or transmitter, the user running LibreTime needs to be added to the `audio` user group using the command below:
|
||||
|
||||
```bash
|
||||
sudo adduser libretime audio
|
||||
```
|
||||
|
||||
### Setup
|
||||
|
||||
Once the installation is completed, edit the [configuration file](./configuration.md) at `/etc/libretime/config.yml` to fill required information and to match your needs.
|
||||
|
||||
Next, run the following commands to setup the database:
|
||||
|
||||
```bash
|
||||
sudo -u libretime libretime-api migrate
|
||||
```
|
||||
|
||||
Finally, start the services, and check that they're running properly using the following commands:
|
||||
|
||||
```bash
|
||||
sudo systemctl start libretime.target
|
||||
|
||||
sudo systemctl --all --plain | grep libretime
|
||||
```
|
||||
|
||||
Next, continue by [configuring your installation](#configure).
|
||||
|
||||
## Using docker-compose
|
||||
|
||||
:::warning
|
||||
|
||||
The docker-compose install is still a work in progress and is **EXPERIMENTAL**, breaking changes may occur without notice.
|
||||
|
||||
:::
|
||||
|
||||
### Download
|
||||
|
||||
Pick the version you want to install:
|
||||
|
||||
<CodeBlock language="bash">
|
||||
echo LIBRETIME_VERSION="{vars.version}" > .env
|
||||
</CodeBlock>
|
||||
|
||||
Download the docker-compose files from the repository:
|
||||
|
||||
```bash
|
||||
# Load LIBRETIME_VERSION variable
|
||||
source .env
|
||||
|
||||
wget "https://raw.githubusercontent.com/libretime/libretime/$LIBRETIME_VERSION/docker-compose.yml"
|
||||
wget "https://raw.githubusercontent.com/libretime/libretime/$LIBRETIME_VERSION/docker/nginx.conf"
|
||||
wget "https://raw.githubusercontent.com/libretime/libretime/$LIBRETIME_VERSION/docker/config.yml"
|
||||
```
|
||||
|
||||
### Setup
|
||||
|
||||
Once the files are downloaded, edit the [configuration file](./configuration.md) at `./config.yml` to fill required information and to match your needs.
|
||||
|
||||
:::info
|
||||
|
||||
The `docker/config.yml` configuration file you previously downloaded already contains specific values required by the container setup, you shouldn't change them:
|
||||
|
||||
```yaml
|
||||
database:
|
||||
host: "postgres"
|
||||
rabbitmq:
|
||||
host: "rabbitmq"
|
||||
playout:
|
||||
liquidsoap_host: "liquidsoap"
|
||||
liquidsoap:
|
||||
server_listen_address: "0.0.0.0"
|
||||
stream:
|
||||
outputs:
|
||||
.default_icecast_output:
|
||||
host: "icecast"
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
Next, run the following commands to setup the database:
|
||||
|
||||
```bash
|
||||
docker-compose run --rm api libretime-api migrate
|
||||
```
|
||||
|
||||
Finally, start the services, and check that they're running properly using the following commands:
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
|
||||
docker-compose ps
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
Next, continue by [configuring your installation](#configure).
|
||||
|
||||
## Configure
|
||||
|
||||
Once the setup is completed, log in the interface (with the default user `admin` and password `admin`), and make sure to edit the project settings (go to **Settings** > **General**) to match your needs. Important settings are:
|
||||
|
||||
- First day of the week
|
||||
|
||||
## Next
|
||||
|
||||
Once completed, it's recommended to [install a reverse proxy](./reverse-proxy.md) to setup SSL termination and secure your installation.
|
|
@ -1,58 +0,0 @@
|
|||
---
|
||||
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
|
||||
|
||||
### 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=airtime.sql airtime
|
||||
```
|
||||
|
||||
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, the default storage path is `/srv/airtime/stor`.
|
||||
|
||||
## Install
|
||||
|
||||
Install LibreTime on a new system by [running the installer](./install.md#run-the-installer), and **don't run the setup tasks**.
|
||||
|
||||
## 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.
|
|
@ -1,150 +0,0 @@
|
|||
---
|
||||
title: Reverse proxy
|
||||
sidebar_position: 30
|
||||
---
|
||||
|
||||
This guide walk you though the steps required to setup a reverse proxy in front of LibreTime.
|
||||
|
||||
Setting a reverse proxy in front of LibreTime is recommended, it prevents LibreTime to be
|
||||
open to the Internet, adds security by enabling `https` and let's you manage your certificates in
|
||||
a single place.
|
||||
|
||||
:::warning
|
||||
|
||||
The current input and output streams are Icecast based protocols and doesn't support being behind a reverse proxy. **Don't attempt** to [reverse proxy Icecast](#icecast) or the Liquidsoap harbor inputs.
|
||||
|
||||
Modern protocols such as [HLS](https://en.wikipedia.org/wiki/HTTP_Live_Streaming) and [SRT](https://en.wikipedia.org/wiki/Secure_Reliable_Transport) will be implement in the future to fix those limitations.
|
||||
|
||||
:::
|
||||
|
||||
Below is a schema that illustrate the goals when setting up a reverse proxy in front of LibreTime:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
internet[Internet]
|
||||
|
||||
subgraph internal[Your system or private network]
|
||||
libretime[LibreTime service, listen on :8080]
|
||||
|
||||
icecast[Icecast service, listen on :8000]
|
||||
liquidsoap[Liquidsoap service, listen on :8001 and 8002]
|
||||
|
||||
subgraph proxy[Your reverse proxy]
|
||||
front_http[Listen on :80]
|
||||
front_https[Listen on :443]
|
||||
front_http -.-> |Redirect to https| front_https
|
||||
|
||||
router[Router]
|
||||
front_https --> |Terminate https| router
|
||||
end
|
||||
|
||||
router --> |If hostname is radio.example.com| libretime
|
||||
end
|
||||
|
||||
internet ==> front_http
|
||||
internet ==> front_https
|
||||
|
||||
internet ==> icecast
|
||||
internet ==> liquidsoap
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You need a domain name (`radio.example.com`) and a `tls` certificate for that domain. You can get certificates from Let's Encrypt by using [Certbot](https://certbot.eff.org/).
|
||||
|
||||
You need to identify the location of the services that should be exposed to the public:
|
||||
|
||||
- the LibreTime web server (usually `localhost:8080`, for documentation clarity we use `libretime:8080`).
|
||||
|
||||
:::info
|
||||
|
||||
If LibreTime is running on the same host as the reverse proxy, you need to change the LibreTime web server default listening port because the reverse proxy needs to listen on the `80`and `443` ports.
|
||||
|
||||
:::
|
||||
|
||||
:::caution
|
||||
|
||||
Be sure that your firewall and network allows communications from the reverse proxy to the services. You can use `ping`, `telnet` and `curl` to check that communication is working.
|
||||
|
||||
:::
|
||||
|
||||
## Install a reverse proxy
|
||||
|
||||
### Apache
|
||||
|
||||
:::info
|
||||
|
||||
You follow one of these guides to configure Apache with a Let's Encrypt certificate.
|
||||
|
||||
- [How To Secure Apache with Let's Encrypt on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-20-04)
|
||||
|
||||
:::
|
||||
|
||||
:construction:
|
||||
|
||||
### Nginx
|
||||
|
||||
:::info
|
||||
|
||||
You follow one of these guides to configure Nginx with a Let's Encrypt certificate.
|
||||
|
||||
- [How To Secure Nginx with Let's Encrypt on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04)
|
||||
|
||||
:::
|
||||
|
||||
Once you installed nginx and retrieved the required certificates, you can configure the reverse proxy to work with LibreTime.
|
||||
|
||||
Paste the following configuration in `/etc/nginx/sites-available/libretime.conf` and be sure to replace:
|
||||
|
||||
- `radio.example.com` with your own station url,
|
||||
- `libretime:8080` with the location of your LibreTime web server;
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name radio.example.com;
|
||||
location / {
|
||||
rewrite ^ https://$server_name$request_uri? permanent;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name radio.example.com;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/radio.example.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/radio.example.com/privkey.pem;
|
||||
|
||||
location / {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
|
||||
proxy_pass http://libretime:8080/;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Enable the nginx configuration and restart nginx using the commands below:
|
||||
|
||||
```bash
|
||||
ln -s /etc/nginx/sites-available/libretime.conf /etc/nginx/sites-enabled/
|
||||
sudo systemctl restart nginx
|
||||
```
|
||||
|
||||
## Icecast
|
||||
|
||||
:::warning
|
||||
|
||||
If you attempt to listen an insecure Icecast stream on a secure website, a
|
||||
[mixed content error](https://support.mozilla.org/en-US/kb/mixed-content-blocking-firefox)
|
||||
will be raised by your browser and should prevent your player from listening to the stream.
|
||||
|
||||
You follow one of these guides to configure a secure Icecast server with a Let's Encrypt certificate.
|
||||
|
||||
- [Icecast HTTPS/SSL with Let’s Encrypt](https://mediarealm.com.au/articles/icecast-https-ssl-setup-lets-encrypt/)
|
||||
|
||||
:::
|
|
@ -1,78 +0,0 @@
|
|||
---
|
||||
title: Upgrade
|
||||
sidebar_position: 80
|
||||
---
|
||||
|
||||
This guide walk you though the steps required to upgrade LibreTime.
|
||||
|
||||
:::tip
|
||||
|
||||
You should always have proper backups and a rollback scenario in place before updating. If the update doesn't go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure **broadcast continuity**.
|
||||
|
||||
:::
|
||||
|
||||
## Stop the services
|
||||
|
||||
Run the following commands to stop the services:
|
||||
|
||||
```bash
|
||||
sudo systemctl stop libretime.target
|
||||
# Or
|
||||
sudo systemctl stop libretime-analyzer.service
|
||||
sudo systemctl stop libretime-api.service
|
||||
sudo systemctl stop libretime-liquidsoap.service
|
||||
sudo systemctl stop libretime-playout.service
|
||||
sudo systemctl stop libretime-worker.service
|
||||
```
|
||||
|
||||
## Make a backup
|
||||
|
||||
Follow [the backup guide](../backup.md) to make an extra backup of your installation and prepare a rollback scenario in case of accidental data loss during the upgrade process.
|
||||
|
||||
## Apply upgrade instructions
|
||||
|
||||
Be sure to carefully read **all** the [releases notes](../../releases/README.md), from your current version to the targeted version, to apply upgrade or breaking changes instructions to your installation.
|
||||
|
||||
:::caution
|
||||
|
||||
You might need to run steps before and after the install procedure. Be sure to follow these steps thoroughly.
|
||||
|
||||
:::
|
||||
|
||||
## Install the new version
|
||||
|
||||
Follow [the install guide](./install.md#download) to download and install the new version, and re-run the `./install` script with the same arguments you used during the initial install.
|
||||
|
||||
## Apply migrations
|
||||
|
||||
Run the following command to apply the database migrations:
|
||||
|
||||
```bash
|
||||
sudo -u libretime libretime-api migrate
|
||||
```
|
||||
|
||||
## Restart the services
|
||||
|
||||
Restart all the services to make sure all the changes are applied.
|
||||
|
||||
```bash
|
||||
sudo systemctl restart libretime.target
|
||||
```
|
||||
|
||||
## Verify
|
||||
|
||||
Verify that all the services are still running after the install process:
|
||||
|
||||
```bash
|
||||
sudo systemctl --all --plain | egrep 'libretime|nginx|php.*-fpm'
|
||||
```
|
||||
|
||||
Verify for any error in the logs after the install process:
|
||||
|
||||
```bash
|
||||
sudo tail -f -n 100 "/var/log/syslog" | grep "libretime-"
|
||||
```
|
||||
|
||||
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.
|
|
@ -1,117 +0,0 @@
|
|||
---
|
||||
title: Stream configuration
|
||||
sidebar_position: 30
|
||||
---
|
||||
|
||||
LibreTime supports direct connection to two popular streaming media servers, the open source Icecast (https://www.icecast.org/) and the proprietary SHOUTcast (https://www.shoutcast.com). Apart from the software license, the main difference between these two servers is that Icecast supports simultaneous MP3, AAC, Ogg Vorbis or Ogg Opus streaming from LibreTime, whereas SHOUTcast only supports MP3 and AAC streams. The royalty-free Ogg Vorbis format has the advantage of better sound quality than MP3 at lower bitrates, which has a direct impact on the amount of bandwidth that your station will require to serve the same number of listeners. Ogg Opus also benefits from good sound quality at low bitrates, with the added advantage of lower latency than other streaming formats. Opus is now an [IETF standard](https://datatracker.ietf.org/doc/html/rfc6716) and requires Icecast 2.4 or later to be installed on the streaming server.
|
||||
|
||||
Ogg Vorbis playback is supported in most modern web browsers (see [this MDN article](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Audio_codecs#opus) for more information) and desktop players like [VLC](https://www.videolan.org/vlc/).
|
||||
|
||||
Streaming MP3 below a bitrate of 128kbps isn't recommended for music, because of a perceptible loss of high audio frequencies in the broadcast playout. A 96kbps or 64kbps MP3 stream may be acceptable for voice broadcasts if there is a requirement for compatibility with legacy hardware playback devices which don't support Ogg Vorbis or Opus streams.
|
||||
|
||||
Because LibreTime supports simultaneous streaming in multiple formats, it's possible to offer one or more streams via your website, and another independent stream for direct connection from hardware players. You can test whether Ogg streams sound better at low bitrates for yourself, by using the **LISTEN** button in LibreTime's **Master Panel** to switch between streaming formats.
|
||||
|
||||
:::tip
|
||||
|
||||
Setting a higher bitrate for your output stream will only benefit your listeners if you have high bitrate source material to play. LibreTime can convert bitrates down for lower-quality streams but _cannot_ convert up for higher-quality streams.
|
||||
|
||||
:::
|
||||
|
||||
## Icecast
|
||||
|
||||
### 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 doesn't 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:
|
||||
|
||||

|
||||
|
||||
The solution is to specify that the metadata for the MP3 mount point you are using should be interpreted using UTF-8 encoding. You can do this by adding the following stanza to the `/etc/icecast2/icecast.xml` file, where `libretime.mp3` is the name of your mount point:
|
||||
|
||||
```xml
|
||||
<mount>
|
||||
<mount-name>/libretime.mp3</mount-name>
|
||||
<charset>UTF-8</charset>
|
||||
</mount>
|
||||
```
|
||||
|
||||
After saving the `/etc/icecast2/icecast.xml` file, restart the Icecast server with `sudo systemctl restart icecast2`.
|
||||
|
||||
### Icecast handover configuration
|
||||
|
||||
In a typical radio station configuration, the live output from the broadcast studio and the scheduled output from LibreTime are mixed together before being sent further along the broadcast chain, to a transmitter or streaming media server on the Internet. (This may not be the case if your LibreTime server is remote from the studio, and you are using the **Show Source Mount Point** or **Master Source Mount Point** to mix live and scheduled content. See the _Stream Settings_ chapter for details).
|
||||
|
||||
If your Icecast server is hosted in a remote data centre, you may not have the option to handover the streaming media source manually, because you have no physical access to connect a broadcast mixer to the server. Disconnecting the stream and beginning another is less than ideal, because the audience's media players will also be disconnected when that happens.
|
||||
|
||||
The Icecast server has a _fallback-mount_ feature which can be used to move clients (media players used by listeners or viewers) from one source to another, as new sources become available. This makes it possible to handover from LibreTime output to a show from another source, and handover to LibreTime again once the other show has ended.
|
||||
|
||||
To enable fallback mounts, edit the main Icecast configuration file (`/etc/icecast2/icecast.xml`) to define the mount points you will use, and the relationship between them.
|
||||
|
||||
The example mount section provided in the `icecast.xml` file is commented out by default. Before or after the commented section, add three mount point definitions. The default mount point used by LibreTime is `/main` which is shown in the `/etc/libretime/liquidsoap.cfg` file. You must also define a mount point for the live source (ex. `/live.ogg`) and a mount point for the public to connect to (ex. `/stream.ogg`).
|
||||
|
||||
```xml title="/etc/icecast2/icecast.xml"
|
||||
<mount>
|
||||
<mount-name>/main</mount-name>
|
||||
<hidden>0</hidden>
|
||||
</mount>
|
||||
|
||||
<mount>
|
||||
<mount-name>/live.ogg</mount-name>
|
||||
<fallback-mount>/main</fallback-mount>
|
||||
<fallback-override>1</fallback-override>
|
||||
<hidden>0</hidden>
|
||||
</mount>
|
||||
|
||||
<mount>
|
||||
<mount-name>/stream.ogg</mount-name>
|
||||
<fallback-mount>/live.ogg</fallback-mount>
|
||||
<fallback-override>1</fallback-override>
|
||||
<hidden>0</hidden>
|
||||
</mount>
|
||||
```
|
||||
|
||||
These mount point definitions mean that a client connecting to a URL such as *http://icecast.example.com:8000/stream.ogg* will first fall back to the `/live.ogg` mount point if it's available. If not, the client will fall back in turn to the `/main` mount point for LibreTime playout.
|
||||
|
||||
Setting the value of _fallback-override_ to 1 (enabled) means that when the `/live.ogg` mount point becomes available again, the client will be re-connected to it. If you wish to hide the `/main` and `/live.ogg` mount points from the public Icecast web interface, set the value of _hidden_ in each of these definitions to 1.
|
||||
|
||||
### Source configuration
|
||||
|
||||
Connect the other source to the Icecast server with the same parameters defined in the `/etc/libretime/liquidsoap.cfg` file, except for the mount point. This should one of the mount points you have defined in the `/etc/icecast2/icecast.xml` file, such as `/live.ogg` in the example above.
|
||||
|
||||
:::tip Streaming with Mixxx
|
||||
|
||||
To configure Mixxx for streaming to Icecast, click _Options_, _Preferences_, then _Live Broadcasting_. For server _Type_, select the default of _Icecast 2_ when streaming to Debian or Ubuntu servers.
|
||||
|
||||
:::
|
||||
|
||||
By default, Icecast streams are buffered to guard against network problems, which causes latency for remote listeners. When monitoring the stream from a remote location, you may have to begin the live stream a few seconds before the previous stream ends to enable a smooth transition.
|
||||
|
||||
### Promoting your station
|
||||
|
||||
:::note
|
||||
|
||||
This section covers how to edit Icecast's configuration to broadcast your station's information to online radio station directories. If you aren't using Icecast (or don't want to edit the configuration file), many online directories will allow you to manually add your station to their listings.
|
||||
|
||||
:::
|
||||
|
||||
There are many online radio station directories you can add your station to for additional exposure.
|
||||
|
||||
On an Icecast server, you can uncomment the `directory` section in the `/etc/icecast2/icecast.xml` file to have
|
||||
your station automatically listed on the [Icecast directory website](https://dir.xiph.org/).
|
||||
|
||||
```xml
|
||||
<!-- Uncomment this if you want directory listings -->
|
||||
|
||||
<directory>
|
||||
<yp-url-timeout>15</yp-url-timeout>
|
||||
<yp-url>https://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
|
||||
</directory>
|
||||
```
|
||||
|
||||
The Indymedia stream directory at https://radio.indymedia.org links to grassroots independent radio projects around the world. You can add your station to their list with an additional _directory_ section, as follows:
|
||||
|
||||
```xml
|
||||
<directory>
|
||||
<yp-url-timeout>15</yp-url-timeout>
|
||||
<yp-url>https://radio.indymedia.org/cgi-bin/yp-cgi</yp-url>
|
||||
</directory>
|
||||
```
|
Before Width: | Height: | Size: 142 KiB |
|
@ -1,84 +0,0 @@
|
|||
---
|
||||
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.
|
||||
|
||||

|
||||
|
||||
Or directly from a terminal:
|
||||
|
||||
```bash
|
||||
sudo systemctl --all --plain | egrep 'libretime|nginx|php.*-fpm'
|
||||
```
|
||||
|
||||
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-worker
|
||||
```
|
||||
|
||||
:::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.
|
||||
|
||||
The `/var/log/syslog` file 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 follow the logs using:
|
||||
|
||||
```bash
|
||||
sudo tail -n 100 -f "/var/log/syslog"
|
||||
# Filter the logs
|
||||
sudo tail -n 100 -f "/var/log/syslog" | egrep 'libretime|nginx|php.*-fpm'
|
||||
```
|
||||
|
||||
On a common setup, to access LibreTime specific logs you should search for the following files:
|
||||
|
||||
- The `/var/log/libretime/analyzer.log` file contains logs from the analyzer,
|
||||
- The `/var/log/libretime/api.log` file contains logs from the api,
|
||||
- The `/var/log/libretime/legacy.log` file contains logs from the legacy app,
|
||||
- The `/var/log/libretime/liquidsoap.log` file contains logs from liquidsoap,
|
||||
- The `/var/log/libretime/playout.log` file contains logs from playout.
|
||||
- The `/var/log/libretime/worker.log` file contains logs from the worker.
|
||||
|
||||
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 libretime libretime-analyzer --config /etc/libretime/config.yml --log-level debug
|
||||
```
|
||||
|
||||
The `/var/log/nginx/libretime.error.log` file contains logs from the web server.
|
||||
|
||||
## Test the stream inputs
|
||||
|
||||
To test or debug your input streams, you can use the [`tools/test-stream-input.py`](https://github.com/libretime/libretime/blob/main/tools/test-stream-input.py) script to send a test sound to your stream inputs.
|
||||
|
||||
To test the `main` input stream, you can run the following command:
|
||||
|
||||
```bash
|
||||
./tools/test-stream-input.py \
|
||||
--host radio.example.org \
|
||||
--port 8001 \
|
||||
--mount main \
|
||||
--user source \
|
||||
--password hackme
|
||||
|
||||
# Or using the --url option
|
||||
./tools/test-stream-input.py --url source:hackme@radio.example.org:8001/main
|
||||
```
|
||||
|
||||
If you are hitting `HTTP error 401 Unauthorized` on the main input stream, make sure that you have configured a user and password in the **Settings** > **Streams settings** page.
|
||||
|
||||
If you are connected but don't hear anything streaming, make sure that the main input stream is connected and enabled. In addition, to automatically turn on/off the stream on connect/disconnect you can configure the input stream auto switch in the **Settings** > **Streams settings** page.
|
|
@ -1,4 +0,0 @@
|
|||
# Always add "How to" at the beginning of your tutorials title
|
||||
#
|
||||
label: Tutorials
|
||||
position: 99
|
|
@ -1,28 +0,0 @@
|
|||
---
|
||||
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
|
||||
```
|
|
@ -1,44 +0,0 @@
|
|||
---
|
||||
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
|
||||
```
|
|
@ -1,124 +0,0 @@
|
|||
---
|
||||
title: Uninstall
|
||||
sidebar_position: 91
|
||||
---
|
||||
|
||||
This guide provide some guidance to uninstall LibreTime from your system.
|
||||
|
||||
We recommend using **disposable devices** for your installations, so you can delete your old system and install on a fresh one easily without worrying about old files.
|
||||
|
||||
If you don't have a way use disposable devices, below are commands that should help you remove most of the LibreTime files from your system.
|
||||
|
||||
:::warning
|
||||
|
||||
Use these commands at your **own risk**, we can't guarantee that these commands are always up to date.
|
||||
|
||||
:::
|
||||
|
||||
Remove configuration directories:
|
||||
|
||||
```bash
|
||||
sudo rm -Rf /etc/airtime
|
||||
sudo rm -Rf /etc/libretime
|
||||
```
|
||||
|
||||
Remove logs directories:
|
||||
|
||||
```bash
|
||||
sudo rm -Rf /var/log/airtime
|
||||
sudo rm -Rf /var/log/libretime
|
||||
```
|
||||
|
||||
Remove runtime directories:
|
||||
|
||||
```bash
|
||||
sudo rm -Rf /var/lib/airtime
|
||||
sudo rm -Rf /var/lib/libretime
|
||||
```
|
||||
|
||||
Remove shared directories:
|
||||
|
||||
```bash
|
||||
sudo rm -Rf /usr/share/airtime
|
||||
sudo rm -Rf /usr/share/libretime
|
||||
```
|
||||
|
||||
Remove systemd services files:
|
||||
|
||||
```bash
|
||||
sudo rm -f /{etc,usr/lib}/systemd/system/airtime*
|
||||
sudo rm -f /{etc,usr/lib}/systemd/system/libretime*
|
||||
```
|
||||
|
||||
Remove nginx configuration files:
|
||||
|
||||
```bash
|
||||
sudo rm -f /etc/nginx/sites-{available,enabled}/airtime*
|
||||
sudo rm -f /etc/nginx/sites-{available,enabled}/libretime*
|
||||
```
|
||||
|
||||
Remove php-fpm configuration files:
|
||||
|
||||
```bash
|
||||
sudo rm -f /etc/php/*/fpm/pool.d/airtime*
|
||||
sudo rm -f /etc/php/*/fpm/pool.d/libretime*
|
||||
```
|
||||
|
||||
Remove logrotate configuration files:
|
||||
|
||||
```bash
|
||||
sudo rm -f /etc/logrotate.d/airtime*
|
||||
sudo rm -f /etc/logrotate.d/libretime*
|
||||
```
|
||||
|
||||
Remove python packages:
|
||||
|
||||
```bash
|
||||
sudo pip3 uninstall \
|
||||
libretime-analyzer \
|
||||
libretime-api \
|
||||
libretime-api-client \
|
||||
libretime-celery \
|
||||
libretime-playout \
|
||||
libretime-shared \
|
||||
libretime-worker
|
||||
|
||||
# Check if we forgot old python packages.
|
||||
# Remove packages that show up with this commands.
|
||||
sudo pip3 freeze | grep libretime
|
||||
sudo pip3 freeze | grep airtime
|
||||
```
|
||||
|
||||
Delete the postgresql database and user:
|
||||
|
||||
```bash
|
||||
sudo -u postgres dropdb airtime
|
||||
sudo -u postgres dropdb libretime
|
||||
|
||||
sudo -u postgres dropuser airtime
|
||||
sudo -u postgres dropuser libretime
|
||||
```
|
||||
|
||||
Delete the rabbitmq vhost and user:
|
||||
|
||||
```bash
|
||||
sudo rabbitmqctl delete_vhost airtime
|
||||
sudo rabbitmqctl delete_vhost libretime
|
||||
|
||||
sudo rabbitmqctl delete_user airtime
|
||||
sudo rabbitmqctl delete_user libretime
|
||||
```
|
||||
|
||||
Delete the file storage (you probably don't want that):
|
||||
|
||||
```bash
|
||||
sudo rm -Rf /srv/airtime
|
||||
sudo rm -Rf /srv/libretime
|
||||
```
|
||||
|
||||
Search for remaining files:
|
||||
|
||||
```bash
|
||||
sudo find / -name "libretime*"
|
||||
sudo find / -name "airtime*"
|
||||
```
|
|
@ -1,2 +0,0 @@
|
|||
label: Appendix
|
||||
position: 70
|
|
@ -1,316 +0,0 @@
|
|||
---
|
||||
title: HD Audio modules
|
||||
---
|
||||
|
||||
This listing is provided to help ensure that the correct model parameter is passed to the ALSA kernel module for an Intel HDA soundcard, if one is fitted to your LibreTime server.
|
||||
|
||||
```
|
||||
Model name Description
|
||||
---------- -----------
|
||||
ALC880
|
||||
======
|
||||
3stack 3-jack in back and a headphone out
|
||||
3stack-digout 3-jack in back, a HP out and a SPDIF out
|
||||
5stack 5-jack in back, 2-jack in front
|
||||
5stack-digout 5-jack in back, 2-jack in front, a SPDIF out
|
||||
6stack 6-jack in back, 2-jack in front
|
||||
6stack-digout 6-jack with a SPDIF out
|
||||
|
||||
ALC260
|
||||
======
|
||||
N/A
|
||||
|
||||
ALC262
|
||||
======
|
||||
inv-dmic Inverted internal mic workaround
|
||||
|
||||
ALC267/268
|
||||
==========
|
||||
inv-dmic Inverted internal mic workaround
|
||||
|
||||
ALC269/270/275/276/28x/29x
|
||||
======
|
||||
laptop-amic Laptops with analog-mic input
|
||||
laptop-dmic Laptops with digital-mic input
|
||||
alc269-dmic Enable ALC269(VA) digital mic workaround
|
||||
alc271-dmic Enable ALC271X digital mic workaround
|
||||
inv-dmic Inverted internal mic workaround
|
||||
headset-mic Indicates a combined headset (headphone+mic) jack
|
||||
lenovo-dock Enables docking station I/O for some Lenovos
|
||||
dell-headset-multi Headset jack, which can also be used as mic-in
|
||||
dell-headset-dock Headset jack (without mic-in), and also dock I/O
|
||||
|
||||
ALC66x/67x/892
|
||||
==============
|
||||
mario Chromebook mario model fixup
|
||||
asus-mode1 ASUS
|
||||
asus-mode2 ASUS
|
||||
asus-mode3 ASUS
|
||||
asus-mode4 ASUS
|
||||
asus-mode5 ASUS
|
||||
asus-mode6 ASUS
|
||||
asus-mode7 ASUS
|
||||
asus-mode8 ASUS
|
||||
inv-dmic Inverted internal mic workaround
|
||||
dell-headset-multi Headset jack, which can also be used as mic-in
|
||||
|
||||
ALC680
|
||||
======
|
||||
N/A
|
||||
|
||||
ALC88x/898/1150
|
||||
======================
|
||||
acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G
|
||||
acer-aspire-8930g Acer Aspire 8330G/6935G
|
||||
acer-aspire Acer Aspire others
|
||||
inv-dmic Inverted internal mic workaround
|
||||
no-primary-hp VAIO Z/VGC-LN51JGB workaround (for fixed speaker DAC)
|
||||
|
||||
ALC861/660
|
||||
==========
|
||||
N/A
|
||||
|
||||
ALC861VD/660VD
|
||||
==============
|
||||
N/A
|
||||
|
||||
CMI9880
|
||||
=======
|
||||
minimal 3-jack in back
|
||||
min_fp 3-jack in back, 2-jack in front
|
||||
full 6-jack in back, 2-jack in front
|
||||
full_dig 6-jack in back, 2-jack in front, SPDIF I/O
|
||||
allout 5-jack in back, 2-jack in front, SPDIF out
|
||||
auto auto-config reading BIOS (default)
|
||||
|
||||
AD1882 / AD1882A
|
||||
================
|
||||
3stack 3-stack mode
|
||||
3stack-automute 3-stack with automute front HP (default)
|
||||
6stack 6-stack mode
|
||||
|
||||
AD1884A / AD1883 / AD1984A / AD1984B
|
||||
====================================
|
||||
desktop 3-stack desktop (default)
|
||||
laptop laptop with HP jack sensing
|
||||
mobile mobile devices with HP jack sensing
|
||||
thinkpad Lenovo Thinkpad X300
|
||||
touchsmart HP Touchsmart
|
||||
|
||||
AD1884
|
||||
======
|
||||
N/A
|
||||
|
||||
AD1981
|
||||
======
|
||||
basic 3-jack (default)
|
||||
hp HP nx6320
|
||||
thinkpad Lenovo Thinkpad T60/X60/Z60
|
||||
toshiba Toshiba U205
|
||||
|
||||
AD1983
|
||||
======
|
||||
N/A
|
||||
|
||||
AD1984
|
||||
======
|
||||
basic default configuration
|
||||
thinkpad Lenovo Thinkpad T61/X61
|
||||
dell_desktop Dell T3400
|
||||
|
||||
AD1986A
|
||||
=======
|
||||
6stack 6-jack, separate surrounds (default)
|
||||
3stack 3-stack, shared surrounds
|
||||
laptop 2-channel only (FSC V2060, Samsung M50)
|
||||
laptop-eapd 2-channel with EAPD (ASUS A6J)
|
||||
laptop-automute 2-channel with EAPD and HP-automute (Lenovo N100)
|
||||
ultra 2-channel with EAPD (Samsung Ultra tablet PC)
|
||||
samsung 2-channel with EAPD (Samsung R65)
|
||||
samsung-p50 2-channel with HP-automute (Samsung P50)
|
||||
|
||||
AD1988/AD1988B/AD1989A/AD1989B
|
||||
==============================
|
||||
6stack 6-jack
|
||||
6stack-dig ditto with SPDIF
|
||||
3stack 3-jack
|
||||
3stack-dig ditto with SPDIF
|
||||
laptop 3-jack with hp-jack automute
|
||||
laptop-dig ditto with SPDIF
|
||||
auto auto-config reading BIOS (default)
|
||||
|
||||
Conexant 5045
|
||||
=============
|
||||
laptop-hpsense Laptop with HP sense (old model laptop)
|
||||
laptop-micsense Laptop with Mic sense (old model fujitsu)
|
||||
laptop-hpmicsense Laptop with HP and Mic senses
|
||||
benq Benq R55E
|
||||
laptop-hp530 HP 530 laptop
|
||||
test for testing/debugging purpose, almost all controls
|
||||
can be adjusted. Appearing only when compiled with
|
||||
$CONFIG_SND_DEBUG=y
|
||||
|
||||
Conexant 5047
|
||||
=============
|
||||
laptop Basic Laptop config
|
||||
laptop-hp Laptop config for some HP models (subdevice 30A5)
|
||||
laptop-eapd Laptop config with EAPD support
|
||||
test for testing/debugging purpose, almost all controls
|
||||
can be adjusted. Appearing only when compiled with
|
||||
$CONFIG_SND_DEBUG=y
|
||||
|
||||
Conexant 5051
|
||||
=============
|
||||
laptop Basic Laptop config (default)
|
||||
hp HP Spartan laptop
|
||||
hp-dv6736 HP dv6736
|
||||
hp-f700 HP Compaq Presario F700
|
||||
ideapad Lenovo IdeaPad laptop
|
||||
toshiba Toshiba Satellite M300
|
||||
|
||||
Conexant 5066
|
||||
=============
|
||||
laptop Basic Laptop config (default)
|
||||
hp-laptop HP laptops, e g G60
|
||||
asus Asus K52JU, Lenovo G560
|
||||
dell-laptop Dell laptops
|
||||
dell-vostro Dell Vostro
|
||||
olpc-xo-1_5 OLPC XO 1.5
|
||||
ideapad Lenovo IdeaPad U150
|
||||
thinkpad Lenovo Thinkpad
|
||||
|
||||
STAC9200
|
||||
========
|
||||
ref Reference board
|
||||
oqo OQO Model 2
|
||||
dell-d21 Dell (unknown)
|
||||
dell-d22 Dell (unknown)
|
||||
dell-d23 Dell (unknown)
|
||||
dell-m21 Dell Inspiron 630m, Dell Inspiron 640m
|
||||
dell-m22 Dell Latitude D620, Dell Latitude D820
|
||||
dell-m23 Dell XPS M1710, Dell Precision M90
|
||||
dell-m24 Dell Latitude 120L
|
||||
dell-m25 Dell Inspiron E1505n
|
||||
dell-m26 Dell Inspiron 1501
|
||||
dell-m27 Dell Inspiron E1705/9400
|
||||
gateway-m4 Gateway laptops with EAPD control
|
||||
gateway-m4-2 Gateway laptops with EAPD control
|
||||
panasonic Panasonic CF-74
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9205/9254
|
||||
=============
|
||||
ref Reference board
|
||||
dell-m42 Dell (unknown)
|
||||
dell-m43 Dell Precision
|
||||
dell-m44 Dell Inspiron
|
||||
eapd Keep EAPD on (e.g. Gateway T1616)
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9220/9221
|
||||
=============
|
||||
ref Reference board
|
||||
3stack D945 3stack
|
||||
5stack D945 5stack + SPDIF
|
||||
intel-mac-v1 Intel Mac Type 1
|
||||
intel-mac-v2 Intel Mac Type 2
|
||||
intel-mac-v3 Intel Mac Type 3
|
||||
intel-mac-v4 Intel Mac Type 4
|
||||
intel-mac-v5 Intel Mac Type 5
|
||||
intel-mac-auto Intel Mac (detect type according to subsystem id)
|
||||
macmini Intel Mac Mini (equivalent with type 3)
|
||||
macbook Intel Mac Book (eq. type 5)
|
||||
macbook-pro-v1 Intel Mac Book Pro 1st generation (eq. type 3)
|
||||
macbook-pro Intel Mac Book Pro 2nd generation (eq. type 3)
|
||||
imac-intel Intel iMac (eq. type 2)
|
||||
imac-intel-20 Intel iMac (newer version) (eq. type 3)
|
||||
ecs202 ECS/PC chips
|
||||
dell-d81 Dell (unknown)
|
||||
dell-d82 Dell (unknown)
|
||||
dell-m81 Dell (unknown)
|
||||
dell-m82 Dell XPS M1210
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9202/9250/9251
|
||||
==================
|
||||
ref Reference board, base config
|
||||
m1 Some Gateway MX series laptops (NX560XL)
|
||||
m1-2 Some Gateway MX series laptops (MX6453)
|
||||
m2 Some Gateway MX series laptops (M255)
|
||||
m2-2 Some Gateway MX series laptops
|
||||
m3 Some Gateway MX series laptops
|
||||
m5 Some Gateway MX series laptops (MP6954)
|
||||
m6 Some Gateway NX series laptops
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9227/9228/9229/927x
|
||||
=======================
|
||||
ref Reference board
|
||||
ref-no-jd Reference board without HP/Mic jack detection
|
||||
3stack D965 3stack
|
||||
5stack D965 5stack + SPDIF
|
||||
5stack-no-fp D965 5stack without front panel
|
||||
dell-3stack Dell Dimension E520
|
||||
dell-bios Fixes with Dell BIOS setup
|
||||
dell-bios-amic Fixes with Dell BIOS setup including analog mic
|
||||
volknob Fixes with volume-knob widget 0x24
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC92HD71B*
|
||||
============
|
||||
ref Reference board
|
||||
dell-m4-1 Dell desktops
|
||||
dell-m4-2 Dell desktops
|
||||
dell-m4-3 Dell desktops
|
||||
hp-m4 HP mini 1000
|
||||
hp-dv5 HP dv series
|
||||
hp-hdx HP HDX series
|
||||
hp-dv4-1222nr HP dv4-1222nr (with LED support)
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC92HD73*
|
||||
===========
|
||||
ref Reference board
|
||||
no-jd BIOS setup but without jack-detection
|
||||
intel Intel DG45* mobos
|
||||
dell-m6-amic Dell desktops/laptops with analog mics
|
||||
dell-m6-dmic Dell desktops/laptops with digital mics
|
||||
dell-m6 Dell desktops/laptops with both type of mics
|
||||
dell-eq Dell desktops/laptops
|
||||
alienware Alienware M17x
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC92HD83*
|
||||
===========
|
||||
ref Reference board
|
||||
mic-ref Reference board with power management for ports
|
||||
dell-s14 Dell laptop
|
||||
dell-vostro-3500 Dell Vostro 3500 laptop
|
||||
hp-dv7-4000 HP dv-7 4000
|
||||
hp_cNB11_intquad HP CNB models with 4 speakers
|
||||
hp-zephyr HP Zephyr
|
||||
hp-led HP with broken BIOS for mute LED
|
||||
hp-inv-led HP with broken BIOS for inverted mute LED
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9872
|
||||
========
|
||||
vaio VAIO laptop without SPDIF
|
||||
auto BIOS setup (default)
|
||||
|
||||
Cirrus Logic CS4206/4207
|
||||
========================
|
||||
mbp55 MacBook Pro 5,5
|
||||
imac27 IMac 27 Inch
|
||||
auto BIOS setup (default)
|
||||
|
||||
Cirrus Logic CS4208
|
||||
===================
|
||||
mba6 MacBook Air 6,1 and 6,2
|
||||
gpio0 Enable GPIO 0 amp
|
||||
auto BIOS setup (default)
|
||||
|
||||
VIA VT17xx/VT18xx/VT20xx
|
||||
========================
|
||||
auto BIOS setup (default)
|
||||
```
|
|
@ -1,84 +0,0 @@
|
|||
---
|
||||
title: Rights and royalties
|
||||
---
|
||||
|
||||
If you're new to broadcasting, or haven't streamed your station online before,
|
||||
reading the following brief explanation of compensation rules for songwriters,
|
||||
musicians and other copyright holders may save you a great deal of trouble
|
||||
later.
|
||||
|
||||
Independent music radio on the Internet has faced royalty demands from
|
||||
SoundExchange in the USA, and similar organizations in other territories. These
|
||||
organizations are usually membership societies or government-sanctioned national
|
||||
authorities which are intended to collect money from broadcasters to compensate
|
||||
copyright holders. The royalty collection societies require payment before you
|
||||
can stream just about any music released commercially to the general public -
|
||||
whether you make any money out of streaming, or not. It's not so much the
|
||||
percentage of revenue demanded, but that there are usually annual minimum fees
|
||||
to pay, which can hurt small stations disproportionately.
|
||||
|
||||
For example, in the UK, the MCPS-PRS Limited Online Music Licence covers
|
||||
non-commercial music streaming by groups and individuals, as long as their gross
|
||||
revenue is less then £12,500 per year. The cost is on a sliding scale, up to
|
||||
£1,120 plus 20% tax per year for delivering up to 450,000 individual streams or
|
||||
serving 25,000 files; after that, you have to apply for a full MCPS-PRS Online
|
||||
Music Licence. That doesn't sound too bad at first, but 25,000 files per year
|
||||
works out at less than four downloads per hour for a round-the-clock website.
|
||||
This particular licence only covers publishing (songwriter) rights, not
|
||||
recording (record label and musician's performance) rights, so you have to
|
||||
negotiate an additional licence from Phonographic Performance Limited (PPL) to
|
||||
play music online, including digital recordings converted from commercially
|
||||
released CDs, vinyl or tape.
|
||||
|
||||
Typically, you have to provide full statistical details to the royalty society
|
||||
of all music streamed or downloaded from your site, which can be onerous. Even
|
||||
if your radio station is mostly speech, there are many limitations in the small
|
||||
print of these music licences. For instance, you can't use music for
|
||||
promotional purposes, and you can't stream a whole opera, without negotiating
|
||||
separate licences. Weirdly, you aren't allowed to play a piece of music in a
|
||||
'derogatory context' to the writer or performers; no drummer jokes allowed,
|
||||
then.
|
||||
|
||||
However, the biggest pitfall is that these MCPS-PRS licences for publishing
|
||||
rights only cover listeners in the UK. For recording rights, PPL is a member of
|
||||
the IFPI reciprocal scheme for webcasters, which means its licenses cover
|
||||
listeners in some European countries, Australia, New Zealand and a few other
|
||||
countries, but not listeners in the USA or Canada. So if your Internet station
|
||||
picked up a significant number of listeners in countries not covered by the
|
||||
MCPS-PRS licences or the IFPI reciprocal scheme, you would have to pay for
|
||||
similar music licences in those countries as well. It's no wonder that many
|
||||
not-for-profit radio stations have disappeared from the virtual airwaves over
|
||||
the last few years, since not having the right licences could leave the operator
|
||||
liable to legal action.
|
||||
|
||||
If you want to go down the commercial music route, check out the
|
||||
https://www.prsformusic.com and https://www.ppluk.com websites for UK licence
|
||||
details. In the USA, the https://www.soundexchange.com website currently quotes
|
||||
a 500 dollar minimum annual fee for non-commercial webcasters, plus a usage fee
|
||||
above a certain number of listener hours, for the right to stream music
|
||||
recordings to listeners. See the websites of [ASCAP](https://www.ascap.com),
|
||||
[BMI](https://www.bmi.com) and [SESAC](https://www.sesac.com) for details of music
|
||||
publishing royalties payable by webcasters streaming to the USA.
|
||||
|
||||
Free content streaming offers an alternative for DIY Internet radio. Since
|
||||
royalty collection societies like MCPS-PRS and SoundExchange can only represent
|
||||
the interests of their own members, it follows that if you aren't a member, you
|
||||
can stream your own self-produced content without paying for their licences. If
|
||||
you state somewhere on your website that the stream is of your own copyrighted
|
||||
material, and is made available to the public under a specific licence, then
|
||||
no-one should misunderstand your intentions.
|
||||
|
||||
You might be able to persuade other people to allow you to stream their content
|
||||
too, as long as they don't have a conflicting legal obligation, such as having
|
||||
previously joined one of the many royalty collection societies around the world.
|
||||
You can ask for permission to stream when website visitors upload their own
|
||||
music files to you via a HTML form, much as the likes of SoundCloud do. Or you
|
||||
can collect files licensed under an appropriate Creative Commons licence
|
||||
(https://www.creativecommons.org) or other free content licence.
|
||||
|
||||
Explicit permission to stream on your particular server is always going to be
|
||||
the ideal, so think about your own terms and conditions before you accept files
|
||||
from third parties for streaming. How, for example, would you know if someone
|
||||
uploaded a file to your online radio station that unknown to you, had been
|
||||
ripped from a commercially released CD? That's the kind of thing that could get
|
||||
you in trouble with the licensing authorities and copyright holders.
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
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
|
||||
|
||||
- Learn about the [architecture of LibreTime](./design/architecture.md)
|
||||
- Learn about the [database migrations](./design/database-migrations.md)
|
|
@ -1,2 +0,0 @@
|
|||
label: Developer manual
|
||||
position: 40
|
|
@ -1 +0,0 @@
|
|||
label: Design
|
|
@ -1,108 +0,0 @@
|
|||
---
|
||||
title: Architecture
|
||||
---
|
||||
|
||||
This document explains the design details and goals for the architecture of LibreTime. It describes the result of a [discussion that happened on Github](https://github.com/libretime/libretime/issues/1610).
|
||||
|
||||
## Previous architecture
|
||||
|
||||
The previous architecture of LibreTime (based on AirTime) was missing a proper separation of concerns. It was build around a legacy MVC app written in PHP, and services in Python to accomplish specific tasks.
|
||||
|
||||
## New architecture
|
||||
|
||||
Below is the new architecture goal of LibreTime, with a proper separation of concerns.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
users([Users])
|
||||
public([Public])
|
||||
|
||||
subgraph create_schedule[Create the schedule]
|
||||
webapp[Web app]
|
||||
subgraph core[Backend]
|
||||
message_api[Message API]
|
||||
api[Web API]
|
||||
worker[Worker]
|
||||
end
|
||||
end
|
||||
|
||||
subgraph play_schedule[Play the schedule]
|
||||
playout[Playout]
|
||||
liquidsoap[[Liquidsoap]]
|
||||
icecast[[Icecast]]
|
||||
hls[[HLS]]
|
||||
end
|
||||
|
||||
message_queue[[Message Queue]]
|
||||
database[[Database]]
|
||||
storage[[Storage]]
|
||||
|
||||
users --> |Edit| webapp
|
||||
|
||||
webapp --> api
|
||||
api --> database
|
||||
api --> storage
|
||||
api --> message_queue
|
||||
|
||||
message_queue <--> worker
|
||||
worker --> database
|
||||
worker --> storage
|
||||
|
||||
message_queue <--> message_api
|
||||
message_api --> database
|
||||
|
||||
message_queue <--> playout
|
||||
playout <-. via message queue .-> message_api
|
||||
playout --> |e.g. download file| api
|
||||
playout <--> liquidsoap
|
||||
liquidsoap --> icecast
|
||||
liquidsoap --> hls
|
||||
|
||||
public --> webapp
|
||||
public --> |Listen| icecast
|
||||
public --> |Listen| hls
|
||||
```
|
||||
|
||||
The LibreTime architecture is split into 2 main monolithic blocks `Create the schedule` and `Play the schedule`. Both blocks must be able to scale horizontally.
|
||||
|
||||
:::note
|
||||
|
||||
A microservice architecture was rejected as it won't fix or improve any aspect of LibreTime.
|
||||
|
||||
:::
|
||||
|
||||
:::warning
|
||||
|
||||
This document tries to focus on creating and playing a schedule, it doesn't consider features such as monitoring, logging or archiving.
|
||||
|
||||
:::
|
||||
|
||||
### Create the schedule
|
||||
|
||||
This block contains the following components:
|
||||
|
||||
- a web API,
|
||||
- a worker to run background tasks,
|
||||
- a message API to communicate with the `Play the schedule` block, and other services,
|
||||
- a web app to interface with the users.
|
||||
|
||||
The web API, the worker and the message API rely on the [Django framework](https://www.djangoproject.com/) to handle database, message queue and storage access.
|
||||
|
||||
### Play the schedule
|
||||
|
||||
Since the `Play the schedule` has its own requirements in terms of logic and uptime, it's handled separately from the `Create the schedule` block. This block needs to be able to be duplicated in a high availability context.
|
||||
|
||||
This block contains the following components:
|
||||
|
||||
- a Playout app that communicates with the `Play the schedule` block to gather the schedule,
|
||||
- a Liquisoap app that plays and mixes the scheduled items, and dispatch them to the delivery services,
|
||||
- an Icecast server that delivers a legacy audio stream to the public,
|
||||
- a HLS stream that delivers a modern audio stream to the public.
|
||||
|
||||
### One setup per radio station
|
||||
|
||||
LibreTime isn't meant to be used in a multi-tenant architecture, and an entire LibreTime installation should be dedicated to a single radio station. Previous SAAS or multi-tenant features from Airtime should be deprecated or removed.
|
||||
|
||||
### Separation of concerns
|
||||
|
||||
The `Create the schedule` block must only prepare a schedule, and the `Play the schedule` must only play that schedule. A strong separation of concerns is required between the 2 blocks to allow the `Play the schedule` block to meet its uptime requirements while not depending on the `Create the schedule` in case of a failure. Development will be simplified if both blocks share a single and properly defined protocol.
|
|
@ -1,51 +0,0 @@
|
|||
# Database schema creation and migrations
|
||||
|
||||
The method to maintain the database schema, is to write both a migration file for already installed databases and to update a `schema.sql` file for fresh databases. On fresh installation, the database is filled with the `schema.sql` and `data.sql` files and LibreTime won't run any sql migration on top of it. Previously, when LibreTime was upgraded, the missing migrations were run using a custom php based migration tool, those migrations are now handled by Django. The missing migrations are tracked using both a `schema_version` field in the `cc_pref` table and a Django migration id.
|
||||
|
||||
:::note
|
||||
|
||||
Since LibreTime forked, the `schema_version` in the `schema.sql` was locked on `3.0.0-alpha` and all the migrations were run during the first user connection. This has been fixed during the move to the Django based migrations.
|
||||
|
||||
:::
|
||||
|
||||
Django doesn't maintain a `schema.sql` file, it applies every migrations until it reaches the targeted schema represented by the code. The legacy `schema_version` has to be tracked until we remove the Propel schema generation and let Django handle all the schema migrations. Until then Propel generate the schema and Django handle migrations from already installed databases.
|
||||
|
||||
:::info
|
||||
|
||||
The first Django migration is the initial schema creation using the `schema.sql` and `data.sql` files.
|
||||
|
||||
:::
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
state is_django_migration_applied <<choice>>
|
||||
[*] --> is_django_migration_applied: Is the django migration ID in the DB ?
|
||||
|
||||
is_django_migration_applied --> [*]: Yes, ignoring...
|
||||
|
||||
state "Apply django migration" as apply_django_migration
|
||||
is_django_migration_applied --> apply_django_migration: No
|
||||
|
||||
state apply_django_migration {
|
||||
state is_legacy_migration <<choice>>
|
||||
[*] --> is_legacy_migration: Is it a legacy migration ?
|
||||
|
||||
state "Run django migration" as run_django_migration
|
||||
state "Apply changes" as run_django_migration
|
||||
state "Save migration ID in DB" as run_django_migration
|
||||
is_legacy_migration --> run_django_migration: No
|
||||
run_legacy_migration --> run_django_migration
|
||||
run_django_migration --> [*]
|
||||
|
||||
state is_legacy_migration_applied <<choice>>
|
||||
is_legacy_migration_applied --> [*]: Yes, ignoring...
|
||||
|
||||
state "Run legacy migration" as run_legacy_migration
|
||||
state "Apply changes" as run_legacy_migration
|
||||
state "Bump legacy schema version" as run_legacy_migration
|
||||
is_legacy_migration_applied --> run_legacy_migration: No
|
||||
is_legacy_migration --> is_legacy_migration_applied: Yes, is the DB schema version >= legacy migration schema version ?
|
||||
}
|
||||
|
||||
apply_django_migration --> [*]
|
||||
```
|
|
@ -1 +0,0 @@
|
|||
label: Development
|
|
@ -1,149 +0,0 @@
|
|||
---
|
||||
title: Development environment
|
||||
---
|
||||
|
||||
## Docker-compose
|
||||
|
||||
To setup a docker-compose development environment, run the following commands:
|
||||
|
||||
```bash
|
||||
# Clean and build
|
||||
make clean
|
||||
cp .env.dev .env
|
||||
docker-compose build
|
||||
|
||||
# Setup
|
||||
docker-compose run --rm legacy make build
|
||||
docker-compose run --rm api libretime-api migrate
|
||||
|
||||
# Run
|
||||
docker-compose up -d
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
## Vagrant
|
||||
|
||||
To use Vagrant, you need to install a virtualization engine: [VirtualBox](https://www.virtualbox.org) or Libvirt. The [vagrant-vbguest] package on Github can help maintain guest extensions on host systems using VirtualBox.
|
||||
|
||||
:::tip
|
||||
|
||||
If you try run a libvirt provided box after using a VirtualBox one, you will receive an
|
||||
error:
|
||||
|
||||
```
|
||||
Error while activating network:
|
||||
Call to virNetworkCreate failed: internal error: Network is already in use by interface vboxnet0.
|
||||
```
|
||||
|
||||
This is fixed by stopping virtualbox and re-creating the vagrant box:
|
||||
|
||||
```bash
|
||||
sudo systemctl stop virtualbox
|
||||
vagrant destroy bionic
|
||||
vagrant up bionic --provider=libvirt
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Installing Libvirt
|
||||
|
||||
On Debian and Ubuntu:
|
||||
|
||||
1. Install Vagrant
|
||||
|
||||
```bash
|
||||
sudo apt install vagrant vagrant-libvirt libvirt-daemon-system vagrant-mutate libvirt-dev
|
||||
sudo usermod -aG libvirt $USER
|
||||
```
|
||||
|
||||
2. Reboot your computer, and then run
|
||||
|
||||
```bash
|
||||
vagrant box add bento/ubuntu-18.04 --provider=virtualbox
|
||||
vagrant mutate bento/ubuntu-18.04 libvirt
|
||||
vagrant up bionic --provider=libvirt
|
||||
```
|
||||
|
||||
On other distributions, you will need to install [libvirt](https://libvirt.org/) and `vagrant-mutate` and then run
|
||||
|
||||
```bash
|
||||
vagrant plugin install vagrant-libvirt
|
||||
sudo usermod -a -G libvirt $USER
|
||||
|
||||
# Reboot
|
||||
|
||||
vagrant plugin install vagrant-mutate
|
||||
vagrant box fetch bento/ubuntu-18.04
|
||||
vagrant mutate bento/ubuntu-18.04 libvirt
|
||||
vagrant up bionic --provider=libvirt
|
||||
```
|
||||
|
||||
### Starting LibreTime Vagrant
|
||||
|
||||
To get started you clone the repo and run `vagrant up`. The command accepts a parameter to
|
||||
change the default provider if you have multiple installed. This can be done by appending
|
||||
`--provider=virtualbox` or `--provider=libvirt` as applicable.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/libretime/libretime
|
||||
cd libretime
|
||||
vagrant up bionic
|
||||
```
|
||||
|
||||
If everything works out, you will find LibreTime on [port 8080](http://localhost:8080)
|
||||
and Icecast on [port 8000](http://localhost:8000).
|
||||
|
||||
Once you reach the web setup GUI you can click through it using the default values. To
|
||||
connect to the vagrant machine you can run `vagrant ssh bionic` in the libretime
|
||||
directory.
|
||||
|
||||
### Alternative OS installations
|
||||
|
||||
With the above instructions LibreTime is installed on Ubuntu Bionic. The Vagrant setup
|
||||
offers the option to choose a different operation system according to you needs.
|
||||
|
||||
| OS | Command | Comment |
|
||||
| ------------ | --------------------- | -------------------------------- |
|
||||
| Debian 10 | `vagrant up buster` | Install on Debian Buster. |
|
||||
| Debian 11 | `vagrant up bullseye` | Install on Debian Bullseye. |
|
||||
| Ubuntu 18.04 | `vagrant up bionic` | Install on Ubuntu Bionic Beaver. |
|
||||
| Ubuntu 20.04 | `vagrant up focal` | Install on Ubuntu Focal Fossa. |
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
If anything fails during the initial provisioning step you can try running `vagrant provision`
|
||||
to re-run the installer.
|
||||
|
||||
If you only want to re-run parts of the installer, use `--provision-with $step`. The
|
||||
supported steps are `prepare` and `install`.
|
||||
|
||||
## Multipass
|
||||
|
||||
[Multipass](https://multipass.run) is a tool for easily setting up Ubuntu VMs on Windows, Mac, and Linux.
|
||||
Similar to Docker, Multipass works through a CLI. To use, clone this repo and then create a new Multipass VM.
|
||||
|
||||
```
|
||||
git clone https://github.com/libretime/libretime
|
||||
cd libretime
|
||||
multipass launch bionic -n ltTEST --cloud-init cloud-init.yaml
|
||||
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](../../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.
|
||||
|
||||
You can stop the VM with `multipass stop ltTEST` and restart with `multipass start ltTEST`.
|
||||
If you want to delete the image and start again, run `multipass delete ltTEST && multipass purge`.
|
||||
|
||||
### Cloud-init options in cloud-init.yaml
|
||||
|
||||
You may wish to change the below fields as per your location.
|
||||
|
||||
```yaml
|
||||
timezone: America/New York # change as needed
|
||||
ntp:
|
||||
pools: ["north-america.pool.ntp.org"]
|
||||
servers: ["0.north-america.pool.ntp.org", "0.pool.ntp.org"]
|
||||
```
|
|
@ -1,168 +0,0 @@
|
|||
---
|
||||
title: Releases
|
||||
---
|
||||
|
||||
## Distributions releases support
|
||||
|
||||
New releases target the current stable distributions release, and development should prepare for future stable distributions releases.
|
||||
|
||||
- We recommend installing LibreTime on the current stable distributions.
|
||||
- Maintenance only releases will provide bug and security fixes for stable and old stable distributions.
|
||||
|
||||
| | Ubuntu 18.04 | Debian 10 | Ubuntu 20.04 | Debian 11 |
|
||||
| ------------ | :----------: | :---------: | :----------: | :---------: |
|
||||
| Release date | 2018-04-26 | 2019-07-06 | 2020-04-23 | 2021-08-14 |
|
||||
| End of life | 2023-04 | 2024-06 | 2025-04 | 2026-06 |
|
||||
| Versions | | | | |
|
||||
| 3.0.x | maintenance | maintenance | recommended | recommended |
|
||||
|
||||
## Versioning schema
|
||||
|
||||
We follow the [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standards.
|
||||
|
||||
In a nutshell, given a version number `MAJOR.MINOR.PATCH` we increment the:
|
||||
|
||||
1. `MAJOR` version when we make incompatible API changes,
|
||||
2. `MINOR` version when we add functionality in a backwards-compatible manner, and
|
||||
3. `PATCH` version when we make backwards-compatible bug fixes.
|
||||
|
||||
## Releasing a new version
|
||||
|
||||
This guide walks you through the steps required to release a new version of LibreTime.
|
||||
|
||||
:::caution
|
||||
|
||||
This guide is still a work in progress, and doesn't cover every use cases. Depending on
|
||||
the version bump, some steps might be wrong. For example, in case of a patch release,
|
||||
the documentation requires different changes.
|
||||
|
||||
:::
|
||||
|
||||
Before releasing a new version, make sure linter don't fail and tests are passing.
|
||||
|
||||
Start by cleaning the repository and make sure you don't have uncommitted changes:
|
||||
|
||||
```
|
||||
git checkout main
|
||||
make clean
|
||||
git status
|
||||
```
|
||||
|
||||
Choose the next version based the our [versioning schema](#versioning-schema):
|
||||
|
||||
```bash
|
||||
export VERSION=3.0.0-beta.0
|
||||
```
|
||||
|
||||
Create a new `release-$VERSION` branch and release commit to prepare a release pull request:
|
||||
|
||||
```bash
|
||||
git checkout -b "release-$VERSION"
|
||||
export COMMIT_MESSAGE="chore: release $VERSION"
|
||||
git commit --allow-empty --message="$COMMIT_MESSAGE"
|
||||
```
|
||||
|
||||
### 1. Version bump
|
||||
|
||||
Write the new `$VERSION` to the VERSION file, and bump the python packages version:
|
||||
|
||||
```bash
|
||||
bash tools/bump-python-version.sh "$VERSION"
|
||||
|
||||
git add .
|
||||
git commit --fixup ":/$COMMIT_MESSAGE"
|
||||
```
|
||||
|
||||
### 2. Release note
|
||||
|
||||
Prepare a new release note based on the `docs/releases/unreleased.md` file. Be sure that
|
||||
the filename match the releases notes naming conventions:
|
||||
|
||||
```bash
|
||||
ls -l docs/releases/
|
||||
cp docs/releases/unreleased.md docs/releases/$VERSION.md
|
||||
```
|
||||
|
||||
The release note file must be updated with:
|
||||
|
||||
- the version and date of this release,
|
||||
- an auto generated features and bug fixes changelog,
|
||||
- instructions for upgrading,
|
||||
- deprecation notices,
|
||||
- remove empty sections.
|
||||
|
||||
Reset and clean the `docs/releases/unreleased.md` file for a future version.
|
||||
|
||||
Update the Github release creation job to use the new release note file in `.github/workflows/release.yml`.
|
||||
|
||||
Commit the release note changes:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit --fixup ":/$COMMIT_MESSAGE"
|
||||
```
|
||||
|
||||
### 3. Website and docs
|
||||
|
||||
Update the version in the website files, the files that need changing are:
|
||||
|
||||
- `website/vars.js`
|
||||
- `website/versions.json`
|
||||
|
||||
Replace the old versioned docs with the current docs:
|
||||
|
||||
```bash
|
||||
mv website/versioned_sidebars/version-*-sidebars.json website/versioned_sidebars/version-$VERSION-sidebars.json
|
||||
|
||||
rm -R website/versioned_docs/version-*
|
||||
cp -R docs website/versioned_docs/version-$VERSION
|
||||
```
|
||||
|
||||
Commit the website and docs changes:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit --fixup ":/$COMMIT_MESSAGE"
|
||||
```
|
||||
|
||||
### 4. Create a new pull request
|
||||
|
||||
Squash the changes and open a pull request for others to review:
|
||||
|
||||
```bash
|
||||
git rebase --autosquash --interactive main
|
||||
```
|
||||
|
||||
Merge the pull request when it's reviewed and ready.
|
||||
|
||||
### 5. Create and push a tag
|
||||
|
||||
Pull the merged release commit:
|
||||
|
||||
```bash
|
||||
git checkout main
|
||||
git pull upstream main
|
||||
```
|
||||
|
||||
Make sure `HEAD` is the previously merged release commit and tag it with the new version:
|
||||
|
||||
```bash
|
||||
git show --quiet
|
||||
|
||||
git tag -a -m "$VERSION" "$VERSION"
|
||||
```
|
||||
|
||||
Generate the changelog for the newly tagged version:
|
||||
|
||||
```bash
|
||||
make changelog
|
||||
|
||||
git add .
|
||||
git commit -m "chore: generate changelog for $VERSION"
|
||||
```
|
||||
|
||||
Push the tag upstream to finalize the release process:
|
||||
|
||||
```bash
|
||||
git push upstream main --follow-tags
|
||||
```
|
|
@ -1,70 +0,0 @@
|
|||
---
|
||||
title: LibreTime API usage
|
||||
---
|
||||
|
||||
:::info
|
||||
|
||||
We're in the process of rewriting LibreTime's API. This page contains the instructions for the current version, written in PHP.
|
||||
|
||||
:::
|
||||
|
||||
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/libretime/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's 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.
|
||||
|
||||
The format of API requests is:
|
||||
|
||||
```
|
||||
https://libretime.example.com/api/api-action/format/json/api_key/XXXXXX
|
||||
```
|
||||
|
||||
where api-action is the type of request and XXXXXX is the secret API key. Available actions include:
|
||||
|
||||
- on-air-light - return true if the station is on air
|
||||
- status - get the status of LibreTime components and resource usage
|
||||
- version - returns the version of LibreTime installed
|
||||
- get-files-without-silan-value - list files for which silence detection hasn't yet been performed
|
||||
- get-stream-setting - gets the settings of LibreTime output streams
|
||||
- get-stream-parameters - gets the parameters of LibreTime output streams
|
||||
|
||||
For example, using the action _get-stream-setting_ returns the following output for the first configured stream:
|
||||
|
||||
```json
|
||||
{"keyname":"s1_type","value":"ogg","type":"string"},
|
||||
|
||||
{"keyname":"s1_host","value":"streaming.example.com","type":"string"},
|
||||
|
||||
{"keyname":"s1_port","value":"8000","type":"integer"},
|
||||
|
||||
{"keyname":"s1_mount","value":"main","type":"string"},
|
||||
|
||||
{"keyname":"s1_url","value":"http:\/\/airtime.sourcefabric.org","type":"string"},
|
||||
|
||||
{"keyname":"s1_description","value":"Airtime Radio! Stream #1","type":"string"},
|
||||
|
||||
{"keyname":"s1_genre","value":"Screamo","type":"string"},
|
||||
```
|
||||
|
||||
which is enough information to construct a player widget dynamically. (s1_url is the station's homepage, not the stream URL). The same information is provided with an s2\_ prefix for the second stream, and s3\_ prefix for the third stream.
|
||||
|
||||
Some API requests require the directory ID number to be specified as _dir_id_ including:
|
||||
|
||||
- list-all-files - list files in the specified directory
|
||||
- get-files-without-replay-gain - list files in the specified directory for which ReplayGain hasn't been calculated yet
|
||||
|
||||
For example, using a request such as:
|
||||
|
||||
```
|
||||
http://libretime.example.com/api/list-all-files/format/json/api_key/XXXXXX/dir_id/1/
|
||||
```
|
||||
|
||||
returns the full path to each media file in the LibreTime storage directory:
|
||||
|
||||
```json
|
||||
{
|
||||
"files": [
|
||||
"imported/1/Mark Ronson feat. Saigon/Here Comes the Fuzz/7-Diduntdidunt-unknown.flac",
|
||||
"imported/1/Jimi Tenor & Tony Allen/Inspiration Information/3-Selfish Gene-128kbps.mp3"
|
||||
]
|
||||
}
|
||||
```
|
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 94 KiB |
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
title: Widgets
|
||||
---
|
||||
|
||||
Bring your LibreTime broadcast to your website with embeddable widgets. LibreTime comes with two widgets: a streaming player and a schedule. Both widgets use iframes to display and can be placed wherever embeddable code can on a website.
|
||||
|
||||
## Getting started
|
||||
|
||||
Before using the widgets, make sure LibreTime's Public API is enabled in **Settings** > **General**.
|
||||
|
||||

|
||||
|
||||
:::tip Note
|
||||
|
||||
LibreTime widgets can't function through VPNs or SSH tunneling. The instance must be accessible from the internet for the widgets to work.
|
||||
|
||||
:::
|
||||
|
||||
## Streaming player widget
|
||||
|
||||
The streaming player widget inserts your LibreTime stream into your website. One example is from [WRCS Community Radio](https://wcrsfm.org/) in Columbus, Ohio, USA.
|
||||
|
||||
<iframe frameborder="0" width="400" height="235" src="http://broadcast.wcrsfm.org/embed/player?stream=auto&title=Now Playing"></iframe>
|
||||
|
||||

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

|
||||
|
||||
The show schedule widget displays the upcoming shows for the next seven days. There are no customizable settings for this widget.
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2017-03-15" version="3.0.0-alpha"/>
|
||||
|
||||
The first release from the LibreTime Community.
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Working installer for Debian and Ubuntu
|
||||
- Automated Vagrant setup for developers on either Debian, Ubuntu or CentOS
|
||||
- Removed visible legacy upstream branding
|
||||
- Disable most legacy upstream "pro" SaaS integrations
|
||||
- "pro" widgets for everyone
|
||||
- AutoDJ support for shows
|
||||
- Tons of bugfixes like working silan cue cuts and more
|
||||
|
||||
Some features that went missing in legacy upstream "pro" branch have been back-ported while others are still waiting for such treatment.
|
||||
|
||||
The attached debian package is considered unstable as it hasn't had any serious testing at all. It mainly demonstrates that we're able to build one.
|
|
@ -1,96 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 1
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2017-04-20" version="3.0.0-alpha.1"/>
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Make overriding of album tag in downloaded Podcasts configurable
|
||||
- Configurable master and show sources in settings
|
||||
- Version check on main interface against Github
|
||||
- updated i18n strings (complete ru_RU translation)
|
||||
- Allow closing "Scheduled Shows" tab in Showbuilder
|
||||
- FreeIPA Auth Adaptor
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Use `restart=always` in systemd installs
|
||||
- Don't depend on hardcoded admin password for autoplaylist feature
|
||||
- more legacy upstream branding removal
|
||||
- restore table settings (ie. columns and sort) on login
|
||||
- translatable radio page
|
||||
- line-in recording almost works again
|
||||
- no more oopsing on week info API
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
- The `ubuntu` Vagrant box has been replaced with `ubuntu-xenial` and `ubuntu-trusty`. The `debian` box has been replaced with `debian-jessie` and `debian-wheezy`. Users of the old boxes should switch to a new box so we can drop the old box after this release.
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan on all Debian based Platforms (ie. Ubuntu). This affects all distros supported by the installer except CentOS which doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
You can check the version of silan by running with `silan --version` which should report `0.3.3` or with `sudo dpkg -s silan | awk '/Version/ {print $2}'` that will show the exact package version you installed. Please include this information if you file bugs concerning silan.
|
||||
|
||||
There are multiple workarounds to this issue and [a bug against the upstream](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855319) has been opened with Debian. Until this is sorted you should pre-install silan from a source you trust. If your distro hasn't updated to 0.3.3 yet you can also help by asking your distros maintainers for a bump.
|
||||
|
||||
The following solutions have been reported to work.
|
||||
|
||||
#### Silan from OBS build (https://github.com/libretime/libretime/issues/177#issuecomment-299195796)
|
||||
|
||||
Works for all relevant Debian and Ubuntu distros and installs silan `0.3.3~nmu1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
# install package signing key from obs
|
||||
wget -qO- https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_7.0/Release.key \
|
||||
| apt-key add -
|
||||
|
||||
# add OBS repo to sources list (pick the distro you need)
|
||||
|
||||
# Debian Wheezy
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_7.0 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Debian Jessie
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_8.0 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Trusty
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_14.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Xenial
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_16.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
|
||||
# update local package database
|
||||
apt-get update
|
||||
|
||||
# install silan 0.3.3 from obs packages
|
||||
apt-get install silan
|
||||
```
|
||||
|
||||
#### Legacy upstream silan packages (https://github.com/libretime/libretime/issues/197)
|
||||
|
||||
Legacy Upstream hosts patched packages for Ubuntu Trusty on `apt.sourcefabric.org`. They install as `0.3.2~trusty~sfo-1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
sudo tee -a /etc/apt/sources.list <<EOD
|
||||
deb https://apt.sourcefabric.org/ trusty main
|
||||
EOD
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install sourcefabric-keyring
|
||||
sudo apt-get update
|
||||
sudo apt-get install --reinstall silan=0.3.2~trusty~sfo-1
|
||||
```
|
|
@ -1,157 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 2
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2017-07-11" version="3.0.0-alpha.2"/>
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Updated [upgrade docs](https://libretime.org/docs/admin-manual/setup/upgrade/)
|
||||
- PHP 7.0 support
|
||||
- Native systemd unit files on all supported distributions
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Fix reversed name & description fields in stream 3 additional options
|
||||
- Use file-magic instead of python-magic for working install with distribution packages
|
||||
- Use local angular install on radio page instead of cdn
|
||||
- Allow deleting of initial admin user
|
||||
- Fix git attribute issues with the docs
|
||||
- and some more small stuff
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
- The installer distribution selection process has been upgraded and the `--distribution` and `--release` parameters aren't needed anymore. They're still supported for the time being but their use isn't recommended.
|
||||
|
||||
### Deprecation of Debian 7 (Wheezy)
|
||||
|
||||
This info is an early warning that we're deprecating a major os version.
|
||||
|
||||
Debian 9 (Stretch) is now available and installing LibreTime on Wheezy probably never worked properly out of the box.
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan on all Debian based Platforms (ie. Ubuntu). This affects all distros supported by the installer except CentOS which doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
You can check the version of silan by running with `silan --version` which should report `0.3.3` or with `sudo dpkg -s silan | awk '/Version/ {print $2}'` that will show the exact package version you installed. Please include this information if you file bugs concerning silan.
|
||||
|
||||
There are multiple workarounds to this issue and [a bug against the upstream](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855319) has been opened with Debian. Until this is sorted you should pre-install silan from a source you trust. If your distro hasn't updated to 0.3.3 yet you can also help by asking your distros maintainers for a bump.
|
||||
|
||||
LibreTime is looking for a Debian Maintainer willing to adopt silan. This would be a much appreciated good deed to the open source broadcast community, both terrestrial and online. Your contribution to silan could literally make a difference to millions of listeners daily.
|
||||
|
||||
The following solutions have been reported to work.
|
||||
|
||||
#### Silan from OBS build (https://github.com/libretime/libretime/issues/177#issuecomment-299195796)
|
||||
|
||||
Works for all relevant Debian and Ubuntu distros and installs silan `0.3.3~nmu1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
# install package signing key from obs
|
||||
wget -qO- https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_7.0/Release.key \
|
||||
| apt-key add -
|
||||
|
||||
# add OBS repo to sources list (pick the distro you need)
|
||||
|
||||
# Debian Wheezy
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_7.0 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Debian Jessie
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_8.0 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Trusty
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_14.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Xenial
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_16.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
|
||||
# update local package database
|
||||
apt-get update
|
||||
|
||||
# install silan 0.3.3 from obs packages
|
||||
apt-get install silan
|
||||
```
|
||||
|
||||
#### Local armhf builds for Raspberry Pi 3 (https://github.com/libretime/libretime/issues/214#issuecomment-305988355)
|
||||
|
||||
Since build.opensuse.org can't build Debian packages on arm due to missing dependencies, the `0.3.3~nmu1` arm package was built in a docker crossdev environment. This is reported to work on Debian Jessie on a Raspberry Pi 3 Model B.
|
||||
|
||||
```bash
|
||||
curl -L -O https://github.com/libretime/libretime/files/1049738/silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
tar xvf silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
sudo dpkg -i silan_0.3.3~nmu1_armhf.deb
|
||||
```
|
||||
|
||||
#### Legacy upstream silan packages (https://github.com/libretime/libretime/issues/197)
|
||||
|
||||
Legacy upstream hosts patched packages for Ubuntu Trusty on `apt.sourcefabric.org`. They install as `0.3.2~trusty~sfo-1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
sudo tee -a /etc/apt/sources.list <<EOD
|
||||
deb https://apt.sourcefabric.org/ trusty main
|
||||
EOD
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install sourcefabric-keyring
|
||||
sudo apt-get update
|
||||
sudo apt-get install --reinstall silan=0.3.2~trusty~sfo-1
|
||||
```
|
||||
|
||||
#### Remove silan completely (https://github.com/libretime/libretime/issues/193#issuecomment-299174997)
|
||||
|
||||
It's worth mentioning that you can disable cue point detection by removing silan from the system.
|
||||
|
||||
```bash
|
||||
sudo apt-get uninstall silan
|
||||
```
|
||||
|
||||
Reportedly this might wake the :cat2: ( _aww_) or have other [side effects](https://github.com/libretime/libretime/issues/214#issuecomment-305748757).
|
||||
|
||||
### Liquidsoap >= 1.3.0 Support
|
||||
|
||||
LibreTime currently only supports liquidsoap `< 1.3.0` out of the box. If you install a current version of liquidsoap [using OPAM](https://www.liquidsoap.info/) or through the [Rabe Liquidsoap Distribution for CentOS (RaBe LSD)](https://build.opensuse.org/project/show/home:radiorabe:liquidsoap) you will most likely have liquidsoap `1.3.1` installed.
|
||||
|
||||
You can check your liquidsoap version by running `liquidsoap --version`.
|
||||
|
||||
If you already have liquidsoap >= 1.3.0 you have a couple of options.
|
||||
|
||||
#### Liquidsoap 1.3.0 Patchset (#192)
|
||||
|
||||
You can patch your installation of LibreTime to support liquidsoap 1.3.0.
|
||||
|
||||
An up to date patch is available through GitHub and can be applied to an unpacked tarball as follows.
|
||||
|
||||
```bash
|
||||
cd libretime-3.0.0-alpha.2/
|
||||
curl -L https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0.patch | patch -p1
|
||||
```
|
||||
|
||||
Git users can pull from the branch at https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0 directly.
|
||||
|
||||
#### Install old liquidsoap from opam (#192)
|
||||
|
||||
You can downgrade an OPAM install of liquidsoap by running the following command.
|
||||
|
||||
```bash
|
||||
opam install "liquidsoap<1.3.0"
|
||||
```
|
||||
|
||||
## :memo: Colophon
|
||||
|
||||
I made some [git of theseus graphs](https://erikbern.com/2016/12/05/the-half-life-of-code.html) on the history of LibreTime. What makes these interesting is that the project started in CVS, was migrated to Subversion and then to Git the commit history always being preserved. Let's have a look down the shoulders of the giants we're standing on.
|
||||
|
||||

|
||||
|
||||
[More GoT graphs](https://github.com/libretime/libretime/wiki/Git-of-Theseus) can be found in [the wiki](https://github.com/libretime/libretime/wiki). I didn't originally know that the code started out as not much PHP (`0e968e62887f3f87f5e90845867dd90c8950deb1`), with C++ making an early entry soon after (`9c60b17e7e9e9830f103d387780bee555c0283b4`). At the time (2004) LibreTime seems to have been called livesupport. In 2006(ish) it was rebranded to CampCaster (`fe31d2dfabc83f57d7a5dbb1864022dca76fd604`), with the rename to Airtime being worked on somewhere in 2010 (`169c4ec214659876d797c025793cb8bd45e088c3`).
|
|
@ -1,215 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 3
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2017-10-18" version="3.0.0-alpha.3"/>
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Debian 9 support in installer shell script
|
||||
- Simplify configuration file structure
|
||||
- Lots of work on Hungarian (hu_HU) translation
|
||||
- Automatic Creation of Smartblocks and Playlists for new Podcasts
|
||||
- Duplicate Smartblock functionality in context menu
|
||||
- Better server preparation docs with firewall infos
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- CORS responses work for all browsers and with TLS or on non default ports
|
||||
- Fix update warning for pre-release candidates
|
||||
- Dont install dev packages in installer for faster installs
|
||||
- Some php 7.1 patches
|
||||
- Better logging for analyzer and pypo
|
||||
- Fix chunked podcast downloading
|
||||
- Fix TLS timestamp updating
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
- Dropped support for Debian Wheezy
|
||||
|
||||
## :arrow_up: Upgrading
|
||||
|
||||
### Configuration files merging
|
||||
|
||||
The contents of `/etc/airtime/cloud_storage.conf` and `/etc/airtime/rabbitmq-analyzer.ini` have been moved to the main `/etc/airtime/airtime.ini` file and the env specific symlink is no longer needed. See below for instructions on how to migrate from a pre-release that created those files.
|
||||
|
||||
The configuration file structure has changed. Please move the contents of the `/etc/airtime/cloud_storage.conf` and `/etc/airtime/rabbitmq-analyzer.ini` files into the main `/etc/airtime/airtime.ini`. In all known cases you need to add the following sections to the file.
|
||||
|
||||
```ini
|
||||
[current_backend]
|
||||
storage_backend=file
|
||||
|
||||
[amazon_S3]
|
||||
provider=amazon_S3
|
||||
bucket=0
|
||||
api_key=0
|
||||
api_key_secret=0
|
||||
```
|
||||
|
||||
You can then remove the files and the symlink.
|
||||
|
||||
```bash
|
||||
rm -f \
|
||||
/etc/airtime/cloud_storage.conf \
|
||||
/etc/airtime/rabbitmq-analyzer.ini \
|
||||
/etc/airtime/production
|
||||
```
|
||||
|
||||
Analyzer grabs all the needed info from the main `airtime.ini` file starting with `3.0.0-alpha.3`.
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan on most Debian based Platforms (ie. Ubuntu). This affects all distros supported by the installer except Debian unstable which has the silan 0.3.3 and CentOS which doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
You can check the version of silan by running with `silan --version` which should report `0.3.3` or with `sudo dpkg -s silan | awk '/Version/ {print $2}'` that will show the exact package version you installed. Please include this information if you file bugs concerning silan.
|
||||
|
||||
There are multiple workarounds to this issue and [a bug against the upstream](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855319) has been opened with Debian. Until this is sorted you should pre-install silan from a source you trust. If your distro hasn't updated to 0.3.3 yet you can also help by asking your distros maintainers for a bump.
|
||||
|
||||
Kyle Robbertze @paddatrapper has taken over maintainership of the silan packages in Debian as he is currently packaging LibreTime for Debian. Thank you very much Kyle.
|
||||
|
||||
The following solutions have been reported to work.
|
||||
|
||||
#### Silan from OBS build (https://github.com/libretime/libretime/issues/177#issuecomment-299195796)
|
||||
|
||||
Works for all relevant Debian and Ubuntu distros and installs silan `0.3.3~nmu1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
# install package signing key from obs
|
||||
wget -qO- https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_7.0/Release.key \
|
||||
| apt-key add -
|
||||
|
||||
# add OBS repo to sources list (pick the distro you need)
|
||||
|
||||
# Debian Stretch
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_9.0_standard/ ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Debian Jessie
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_8.0 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Xenial
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_16.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Trusty
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_14.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
|
||||
# update local package database
|
||||
apt-get update
|
||||
|
||||
# install silan 0.3.3 from obs packages
|
||||
apt-get install silan
|
||||
```
|
||||
|
||||
#### Local armhf builds for Raspberry Pi 3 (https://github.com/libretime/libretime/issues/214#issuecomment-305988355)
|
||||
|
||||
Since build.opensuse.org can't build Debian packages on arm due to missing dependencies, the `0.3.3~nmu1` arm package was built in a docker crossdev environment. This is reported to work on Debian Jessie on a Raspberry Pi 3 Model B.
|
||||
|
||||
```bash
|
||||
curl -L -O https://github.com/libretime/libretime/files/1049738/silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
tar xvf silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
sudo dpkg -i silan_0.3.3~nmu1_armhf.deb
|
||||
```
|
||||
|
||||
#### Legacy upstream silan packages (https://github.com/libretime/libretime/issues/197)
|
||||
|
||||
Legacy upstream hosts patched packages for Ubuntu Trusty on `apt.sourcefabric.org`. They install as `0.3.2~trusty~sfo-1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
sudo tee -a /etc/apt/sources.list <<EOD
|
||||
deb https://apt.sourcefabric.org/ trusty main
|
||||
EOD
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install sourcefabric-keyring
|
||||
sudo apt-get update
|
||||
sudo apt-get install --reinstall silan=0.3.2~trusty~sfo-1
|
||||
```
|
||||
|
||||
#### Remove silan completely (https://github.com/libretime/libretime/issues/193#issuecomment-299174997)
|
||||
|
||||
It's worth mentioning that you can disable cue point detection by removing silan from the system.
|
||||
|
||||
```bash
|
||||
sudo apt-get uninstall silan
|
||||
```
|
||||
|
||||
Reportedly this might wake the :cat2: ( _aww_) or have other [side effects](https://github.com/libretime/libretime/issues/214#issuecomment-305748757).
|
||||
|
||||
### Liquidsoap >= 1.3.0 Support
|
||||
|
||||
LibreTime currently only supports liquidsoap `< 1.3.0` out of the box. If you install a current version of liquidsoap [using OPAM](https://www.liquidsoap.info/) or through the [Rabe Liquidsoap Distribution for CentOS (RaBe LSD)](https://build.opensuse.org/project/show/home:radiorabe:liquidsoap) you will most likely have liquidsoap `1.3.1` installed.
|
||||
|
||||
You can check your liquidsoap version by running `liquidsoap --version`.
|
||||
|
||||
If you already have liquidsoap >= 1.3.0 you have a couple of options.
|
||||
|
||||
#### Liquidsoap 1.3.0 Patchset (#192)
|
||||
|
||||
You can patch your installation of LibreTime to support liquidsoap 1.3.0.
|
||||
|
||||
An up to date patch is available through GitHub and can be applied to an unpacked tarball as follows.
|
||||
|
||||
```bash
|
||||
cd libretime-3.0.0-alpha.3/
|
||||
curl -L https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0.patch | patch -p1
|
||||
```
|
||||
|
||||
Git users can pull from the branch at https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0 directly.
|
||||
|
||||
#### Install old liquidsoap from opam (#192)
|
||||
|
||||
You can downgrade an OPAM install of liquidsoap by running the following command.
|
||||
|
||||
```bash
|
||||
opam install "liquidsoap<1.3.0"
|
||||
```
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature.
|
||||
|
||||
### No line in support
|
||||
|
||||
Line In recording can be enabled in the UI but doesn't currently work. This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording.
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided.
|
||||
|
||||
You can set up the locale using a combination of the following command. 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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
these instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
||||
|
||||
## :memo: Colophon
|
||||
|
||||
It's been awesome to see that the interest in LibreTime isn't dying off.
|
||||
|
||||
I recently did some cleaning up of the labels and milestones in the issue tracker and would like to ask everyone to help out with tagging issues and managing milestones.
|
||||
|
||||
Currently the milestones only contain issues likely to be finished in the development window of the respective version. This includes things that already have a pull-request or issues with a high priority due to their sensible or blocking nature. Feel free to request new labels and unversioned milestones if you feel you can use them.
|
||||
|
||||
That's all for these release notes. I'd also like to note that I plan on doing releases more often. They will be smaller but there will be less changes per release.
|
|
@ -1,179 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 4
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2018-02-01" version="3.0.0-alpha.4"/>
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Updated Hungarian translations
|
||||
- Preview tracks in generated SmartBlocks
|
||||
- New icon to mark autoplaylist based show on calendar page
|
||||
- Relative date filters for Smartblocks
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Fix updating track information from pypo on TLS only setups
|
||||
- Fix seeking in track preview
|
||||
- Fix advanced search in calendar mode
|
||||
- Validate contents of VERSION file to fix non-enriched git tarball install
|
||||
- dead code removal of legacy media-monitor code base
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan on most Debian based Platforms (ie. Ubuntu). This affects all distros supported by the installer except Debian unstable which has the silan 0.3.3 and CentOS which doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
You can check the version of silan by running with `silan --version` which should report `0.3.3` or with `sudo dpkg -s silan | awk '/Version/ {print $2}'` that will show the exact package version you installed. Please include this information if you file bugs concerning silan.
|
||||
|
||||
There are multiple workarounds to this issue and [a bug against the upstream](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855319) has been fixed. Kyle Robbertze @paddatrapper has taken over maintainership of the silan packages in Debian as he is currently packaging LibreTime for Debian. The silan package is in testing as can be seen in the [Debian PTS](https://tracker.debian.org/pkg/silan). This section will get updated once the package is in stable.
|
||||
|
||||
Until this is sorted you should pre-install silan from a source you trust. If your distro hasn't updated to 0.3.3 yet you can also help by asking your distros maintainers for a bump.
|
||||
|
||||
The following solutions have been reported to work.
|
||||
|
||||
#### Silan from OBS build (https://github.com/libretime/libretime/issues/177#issuecomment-299195796)
|
||||
|
||||
Works for all relevant Debian and Ubuntu distros and installs silan `0.3.3~nmu1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
# install package signing key from obs
|
||||
wget -qO- https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_7.0/Release.key \
|
||||
| apt-key add -
|
||||
|
||||
# add OBS repo to sources list (pick the distro you need)
|
||||
|
||||
# Debian Stretch
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_9.0_standard/ ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Debian Jessie
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_8.0 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Xenial
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_16.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Trusty
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_14.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
|
||||
# update local package database
|
||||
apt-get update
|
||||
|
||||
# install silan 0.3.3 from obs packages
|
||||
apt-get install silan
|
||||
```
|
||||
|
||||
#### Local armhf builds for Raspberry Pi 3 (https://github.com/libretime/libretime/issues/214#issuecomment-305988355)
|
||||
|
||||
Since build.opensuse.org can't build Debian packages on arm due to missing dependencies, the `0.3.3~nmu1` arm package was built in a docker crossdev environment. This is reported to work on Debian Jessie on a Raspberry Pi 3 Model B.
|
||||
|
||||
```bash
|
||||
curl -L -O https://github.com/libretime/libretime/files/1049738/silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
tar xvf silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
sudo dpkg -i silan_0.3.3~nmu1_armhf.deb
|
||||
```
|
||||
|
||||
#### Legacy upstream silan packages (https://github.com/libretime/libretime/issues/197)
|
||||
|
||||
Legacy upstream hosts patched packages for Ubuntu Trusty on `apt.sourcefabric.org`. They install as `0.3.2~trusty~sfo-1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
sudo tee -a /etc/apt/sources.list <<EOD
|
||||
deb https://apt.sourcefabric.org/ trusty main
|
||||
EOD
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install sourcefabric-keyring
|
||||
sudo apt-get update
|
||||
sudo apt-get install --reinstall silan=0.3.2~trusty~sfo-1
|
||||
```
|
||||
|
||||
#### Remove silan completely (https://github.com/libretime/libretime/issues/193#issuecomment-299174997)
|
||||
|
||||
It's worth mentioning that you can disable cue point detection by removing silan from the system.
|
||||
|
||||
```bash
|
||||
sudo apt-get uninstall silan
|
||||
```
|
||||
|
||||
Reportedly this might have [side effects](https://github.com/libretime/libretime/issues/214#issuecomment-305748757).
|
||||
|
||||
### Liquidsoap Support
|
||||
|
||||
LibreTime currently only supports liquidsoap `< 1.3.0` out of the box. If you install a current version of liquidsoap [using OPAM](https://www.liquidsoap.info/) or through the [Rabe Liquidsoap Distribution for CentOS (RaBe LSD)](https://build.opensuse.org/project/show/home:radiorabe:liquidsoap) you will most likely have liquidsoap `1.3.2` or `1.3.3` installed.
|
||||
|
||||
#352 reports that liquidsoap `< 1.3.0` can exhibit issues on some Debian based installs. One fix for the issue is to install liquidsoap `1.3.0` and to use the following patching steps. Kyle from silan fame is taking the needed steps to get liquidsoap maintained again in Debian so we expect the situation to improve over time.
|
||||
|
||||
You can check your liquidsoap version by running `liquidsoap --version`.
|
||||
|
||||
If you already have liquidsoap >= 1.3.0 you have a couple of options.
|
||||
|
||||
#### Liquidsoap 1.3.0 Patchset (#192)
|
||||
|
||||
You can patch your installation of LibreTime to support liquidsoap 1.3.0.
|
||||
|
||||
An up to date patch is available through GitHub and can be applied to an unpacked tarball as follows.
|
||||
|
||||
```bash
|
||||
cd libretime-3.0.0-alpha.4/
|
||||
curl -L https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0.patch | patch -p1
|
||||
```
|
||||
|
||||
Git users can pull from the branch at https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0 directly.
|
||||
|
||||
#### Install old liquidsoap from opam (#192)
|
||||
|
||||
You can downgrade an OPAM install of liquidsoap by running the following command.
|
||||
|
||||
```bash
|
||||
opam install "liquidsoap<1.3.0"
|
||||
```
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature.
|
||||
|
||||
### No line in support
|
||||
|
||||
Line In recording can be enabled in the UI but doesn't currently work. This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording.
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided.
|
||||
|
||||
You can set up the locale using a combination of the following command. 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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
These instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
||||
|
||||
### Lack of i18n toolchain is disturbing
|
||||
|
||||
Some translations might miss the tarball. They didn't get lost but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we proabably want to support bidirectional translation syncing with zanata.
|
||||
|
||||
## :memo: Colophon
|
||||
|
||||
This is the first release that contains code contributions from more than 5 developers. Also, we reached :100: :star2: a while ago and this is the fifth release since we forked almost a year ago. I'm looking forward to celebrating the one year anniversary of LibreTime soon.
|
||||
|
||||
A large thanks from RelEng goes to everyone who put their hard work into LibreTime both here on [GitHub](https://github.com/libretime/libretime) as well as on our [Discourse](https://discourse.libretime.org/). Cutting these releases wouldn't be half as rewarding without the constant feedback from the community.
|
|
@ -1,199 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 5
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2018-10-12" version="3.0.0-alpha.5"/>
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Interface improvements
|
||||
- Raspbian 9 support in installer script
|
||||
- Allow skipping RabbitMQ and PostgreSQL install in installer script with `--no-rabbitmq ` and `--no-postgres`
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Remove `[media-monitor]` section from default install
|
||||
- Fix last help links that pointed to sourcefabric and update others to point to discourse
|
||||
- Fix for ShoutCAST DNAS rejecting title updates when artist is missing
|
||||
- Initial fixes for native IPv6 support
|
||||
- Support modern pika versions
|
||||
- Disable podcast subscription limit
|
||||
- Return proper `Content-Length` for legacy database entries missing the info
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
- Removed Amazon S3 storage support
|
||||
|
||||
### Deprecation of Ubuntu 14.04 (Trusty)
|
||||
|
||||
This info is an early warning that we're deprecating a major os version.
|
||||
|
||||
Ubuntu 16.04 (Xenial) and Ubuntu 18.04 (Bionic) are now available and Trusty is EOL in April 2019.
|
||||
|
||||
## :arrow_up: Upgrading
|
||||
|
||||
### S3 storage support removal
|
||||
|
||||
The configuration file structure has changed. Remove the `amazon_s3` configuration section from the `/etc/airtime/airtime.conf` file, as S3 storage support has been removed.
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Media-Monitor config needs manual removing
|
||||
|
||||
If you are using the `install` script you should most likely remove the `[media-monitor]` config section from your `/etc/airtime/airtime.conf` file to ensure you don't run into the problems described in
|
||||
https://github.com/libretime/libretime/issues/450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan on most Debian based Platforms (ie. Ubuntu). This affects all distros supported by the installer except Debian unstable which has the silan 0.3.3 and CentOS which doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
You can check the version of silan by running with `silan --version` which should report `0.3.3` or with `sudo dpkg -s silan | awk '/Version/ {print $2}'` that will show the exact package version you installed. Please include this information if you file bugs concerning silan.
|
||||
|
||||
There are multiple workarounds to this issue and [a bug against the upstream](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855319) has been fixed. Kyle Robbertze @paddatrapper has taken over maintainership of the silan packages in Debian as he is currently packaging LibreTime for Debian. The silan package is in testing as can be seen in the [Debian PTS](https://tracker.debian.org/pkg/silan). This section will get updated once the package is in stable.
|
||||
|
||||
Until this is sorted you should pre-install silan from a source you trust. If your distro hasn't updated to 0.3.3 yet you can also help by asking your distros maintainers for a bump.
|
||||
|
||||
The following solutions have been reported to work. If they don't work, please note that it's your responsibility to get working silan packages.
|
||||
|
||||
#### Silan from OBS build (https://github.com/libretime/libretime/issues/177#issuecomment-299195796)
|
||||
|
||||
Works for all relevant Debian and Ubuntu distros and installs silan `0.3.3~nmu1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
# install package signing key from obs
|
||||
wget -qO- https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_7.0/Release.key \
|
||||
| apt-key add -
|
||||
|
||||
# add OBS repo to sources list (pick the distro you need)
|
||||
|
||||
# Debian Stretch
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_9.0_standard/ ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Debian Jessie
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Debian_8.0 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Xenial
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/xUbuntu_16.04 ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
# Ubuntu Trusty (14.04) EOL in April 2019
|
||||
echo 'deb https://download.opensuse.org/repositories/home:/hairmare:/silan/Ubuntu_14.10_standard/ ./' \
|
||||
> /etc/apt/sources.list.d/hairmare_silan.list
|
||||
|
||||
# update local package database
|
||||
apt-get update
|
||||
|
||||
# install silan 0.3.3 from obs packages
|
||||
apt-get install silan
|
||||
```
|
||||
|
||||
#### Local armhf builds for Raspberry Pi 3 (https://github.com/libretime/libretime/issues/214#issuecomment-305988355)
|
||||
|
||||
Since build.opensuse.org can't build Debian packages on arm due to missing dependencies, the `0.3.3~nmu1` arm package was built in a docker crossdev environment. This is reported to work on Debian Jessie on a Raspberry Pi 3 Model B.
|
||||
|
||||
```bash
|
||||
curl -L -O https://github.com/libretime/libretime/files/1049738/silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
tar xvf silan_0.3.3.nmu1_armhf.deb.tar.gz
|
||||
sudo dpkg -i silan_0.3.3~nmu1_armhf.deb
|
||||
```
|
||||
|
||||
#### Legacy upstream silan packages (https://github.com/libretime/libretime/issues/197)
|
||||
|
||||
Legacy upstream hosts patched packages for Ubuntu Trusty on `apt.sourcefabric.org`. They install as `0.3.2~trusty~sfo-1`.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install apt-transport-https
|
||||
|
||||
sudo tee -a /etc/apt/sources.list <<EOD
|
||||
deb https://apt.sourcefabric.org/ trusty main
|
||||
EOD
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install sourcefabric-keyring
|
||||
sudo apt-get update
|
||||
sudo apt-get install --reinstall silan=0.3.2~trusty~sfo-1
|
||||
```
|
||||
|
||||
#### Remove silan completely (https://github.com/libretime/libretime/issues/193#issuecomment-299174997)
|
||||
|
||||
It's worth mentioning that you can disable cue point detection by removing silan from the system.
|
||||
|
||||
```bash
|
||||
sudo apt-get uninstall silan
|
||||
```
|
||||
|
||||
Reportedly this might have [side effects](https://github.com/libretime/libretime/issues/214#issuecomment-305748757).
|
||||
|
||||
### Liquidsoap Support
|
||||
|
||||
LibreTime currently only supports liquidsoap `< 1.3.0` out of the box. If you install a current version of liquidsoap [using OPAM](https://www.liquidsoap.info/) or through the [Rabe Liquidsoap Distribution for CentOS (RaBe LSD)](https://build.opensuse.org/project/show/home:radiorabe:liquidsoap) you will most likely have liquidsoap `1.3.2` or `1.3.3` installed.
|
||||
|
||||
#352 reports that liquidsoap `< 1.3.0` can exhibit issues on some Debian based installs. One fix for the issue is to install liquidsoap `1.3.0` and to use the following patching steps. Kyle from silan fame is taking the needed steps to get liquidsoap maintained again in Debian so we expect the situation to improve over time.
|
||||
|
||||
You can check your liquidsoap version by running `liquidsoap --version`.
|
||||
|
||||
If you already have liquidsoap >= 1.3.0 you have a couple of options.
|
||||
|
||||
#### Liquidsoap 1.3.0 Patchset (#192)
|
||||
|
||||
You can patch your installation of LibreTime to support liquidsoap 1.3.0.
|
||||
|
||||
An up to date patch is available through GitHub and can be applied to an unpacked tarball as follows.
|
||||
|
||||
```bash
|
||||
cd libretime-3.0.0-alpha.5/
|
||||
curl -L https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0.patch | patch -p1
|
||||
```
|
||||
|
||||
Git users can pull from the branch at https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0 directly.
|
||||
|
||||
#### Install old liquidsoap from opam (#192)
|
||||
|
||||
You can downgrade an OPAM install of liquidsoap by running the following command.
|
||||
|
||||
```bash
|
||||
opam install "liquidsoap<1.3.0"
|
||||
```
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature.
|
||||
|
||||
### No line in support
|
||||
|
||||
Line In recording can be enabled in the UI but doesn't currently work. This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording.
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided.
|
||||
|
||||
You can set up the locale using a combination of the following command. 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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
These instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
||||
|
||||
### Lack of i18n toolchain is disturbing
|
||||
|
||||
Some translations might miss the tarball. They didn't get lost but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we proabably want to support bidirectional translation syncing with zanata.
|
||||
|
||||
## :memo: Colophon
|
||||
|
||||
Sorry for the _late_ release, RelEng has been busy with adulting and generally having a life as of lately. I'm still very much committed to LibreTime but can only find a limited amount of time to look into Issues due to being busy qualifying LibreTime for production workloads at my station. I plan on re-shifting my focus on pull request reviews and RelEng to address my lack of time going further.
|
|
@ -1,138 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 6
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2018-12-23" version="3.0.0-alpha.6"/>
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Turn on the podcast album override by default on new installs.
|
||||
- Ubuntu 18.04 (Bionic) **developer** tooling.
|
||||
- Collapse advanced configuration in show edit form.
|
||||
- Clock icon in calendar for autoloading playlists.
|
||||
- Let user edit podcast name.
|
||||
- Default to creating dynamic smartblock when creating new smartblocks.
|
||||
- Move advanced smartblock configuration to collapsed "Advanced options" section.
|
||||
- Assume "Y" as answer for questions during installer.
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Fix sizing for playlist and smart block on shorter screens.
|
||||
- Increased celery timeout to 1800 seconds (affects podcast downloads and other tasks like things related to the soundcloud integration).
|
||||
- remove some obsolete scripts from `utils/`.
|
||||
- Fix version check for cases where GitHub isn't available or temporarily fails.
|
||||
- Clarify wording for "Autoloading Playlist" (used to be called "Auto Schedule" or other names).
|
||||
- Remove "Record & Rebroadcast" from ui.
|
||||
- Fix scrolling issue in "Add Show" dialog.
|
||||
- Allow ampersand in smartblock search criteria.
|
||||
- Fix display of selected tracks in Smartblock criteria.
|
||||
- Add docs into enriched tarball for packagers.
|
||||
- Improve filling smartblocks, they shouldn't get overscheduled rather than not getting filled up all the way.
|
||||
- Remove broken ReCaptcha.
|
||||
- Fix reading metadata from non-mp3 sources (in podcasts and uploads).
|
||||
- Update mutagen to fix some edge cases when reading metadata from files in analyzer.
|
||||
- Fix shuffling playlists that contain a smart block.
|
||||
- Remove unused zfdebug from dev environment.
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
- Dropped support for Ubuntu 14.04 (Trusty) as it's end-of-life
|
||||
- Remove "Record & Rebroadcast" from ui.
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Installer Issues
|
||||
|
||||
The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state.
|
||||
|
||||
For now the installer distro selection is pretty good at auto detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use isn't recommended.
|
||||
|
||||
The ui works best if you don't use it in an opinionated fashion and change just the bare minimal.
|
||||
|
||||
If you want to skip the installer GUI completely you can configure LibreTime using `airtime_mvc/build/airtime.example.conf` as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second `install -fiap` install on a non productive system for reference can help with this type of bootstrap.
|
||||
|
||||
### Media-Monitor config needs manual removing
|
||||
|
||||
If you are using the `install` script you should most likely remove the `[media-monitor]` config section from your `/etc/airtime/airtime.conf` file to ensure you don't run into the problems described in
|
||||
https://github.com/libretime/libretime/issues/450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan on some Debian based Platforms (ie. Ubuntu). This affects all distros supported by the installer except Debian testing which has the silan 0.3.3 and CentOS which doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
Check your version of silan by running `silan --version`. This should report `0.3.3` or higher. If not please see the [Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation) wiki page for more details & workarounds.
|
||||
|
||||
To date silan 0.3.3 or higher is in Debian testing & Ubuntu Bionic. You can check the upstream progress the [Debian PTS](https://tracker.debian.org/pkg/silan) and [Ubuntu launchpad](https://launchpad.net/ubuntu/+source/silan). This section will get removed once the package is in stable.
|
||||
|
||||
tldr: **[Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation)**
|
||||
|
||||
### Liquidsoap Support
|
||||
|
||||
LibreTime currently only supports liquidsoap `< 1.3.0` out of the box. If you install a current version of liquidsoap [using OPAM](https://www.liquidsoap.info/) or through the [Rabe Liquidsoap Distribution for CentOS (RaBe LSD)](https://build.opensuse.org/project/show/home:radiorabe:liquidsoap) you will most likely have liquidsoap `1.3.2` or `1.3.3` installed.
|
||||
|
||||
#352 reports that liquidsoap `< 1.3.0` can exhibit issues on some Debian based installs. One fix for the issue is to install liquidsoap `1.3.0` and to use the following patching steps. Kyle from silan fame is taking the needed steps to get liquidsoap maintained again in Debian so we expect the situation to improve over time.
|
||||
|
||||
You can check your liquidsoap version by running `liquidsoap --version`.
|
||||
|
||||
If you already have liquidsoap >= 1.3.0 you have a couple of options.
|
||||
|
||||
#### Liquidsoap 1.3.0 Patchset (#192)
|
||||
|
||||
You can patch your installation of LibreTime to support liquidsoap 1.3.0.
|
||||
|
||||
An up to date patch is available through GitHub and can be applied to an unpacked tarball as follows.
|
||||
|
||||
```bash
|
||||
cd libretime-3.0.0-alpha.6/
|
||||
curl -L https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0.patch | patch -p1
|
||||
```
|
||||
|
||||
Git users can pull from the branch at https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0 directly.
|
||||
|
||||
#### Install old liquidsoap from opam (#192)
|
||||
|
||||
You can downgrade an OPAM install of liquidsoap by running the following command.
|
||||
|
||||
```bash
|
||||
opam install "liquidsoap<1.3.0"
|
||||
```
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature.
|
||||
|
||||
### No line in support
|
||||
|
||||
This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording.
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided.
|
||||
|
||||
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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
These instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
||||
|
||||
### Lack of i18n toolchain is disturbing
|
||||
|
||||
Some translations might miss the tarball. They didn't get lost but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we probably want to support bidirectional translation syncing with zanata.
|
||||
|
||||
## :memo: Colophon
|
||||
|
||||
I would like to use this space to extend a warm welcome to our new Maintainers @paddatrapper, @frecuencialibre and @ned-kelly. We're happy to have you on board. Thank you very much for helping maintain LibreTime ❤️
|
|
@ -1,160 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 7
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2019-04-22" version="3.0.0-alpha.7"/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for contributing to this release:
|
||||
|
||||
- @robbt
|
||||
- @frecuencialibre
|
||||
- @detobate
|
||||
- @greenjon
|
||||
- @xabispacebiker
|
||||
- @mikeopensauce
|
||||
- @paddatrapper
|
||||
- @hairmare
|
||||
- @ryanrain
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Set default focus to search field on library page.
|
||||
- PHP 7.2 and 7.3 compatibility (for Ubuntu 18.04.1 LTS (Bionic Beaver) and other modern distros)
|
||||
- "Podcast Album Override" is now "Podcast Metadata Override " and additionally overrides the track title with the title from the RSS feed. The artist field is set to the podcast name in LibreTime.
|
||||
- Allowed users to customize the title of podcasts
|
||||
- Disabled the creation of smartblocks and playlists for new podcasts by default and added a generate button under the edit podcast tab
|
||||
- Better libvirt integration in Vagrant setup.
|
||||
- Debian 11 (Buster) support
|
||||
- Add columns for uploaded and genre to default library view, sorts it by uploaded and removes album column by default
|
||||
- Add more details to the information returned by the API `onAirLightAction` call
|
||||
- Update Spanish translations
|
||||
- Allow admins to edit the owner of a track
|
||||
- Added system-wide intro and outro playlists for autoloading playlists
|
||||
- Added show-source info to live-info-v2 API
|
||||
- Update much of the documentation
|
||||
- Allow program managers to view listeners statistics
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Fix DOS line-endings in vendorized PHP dependencies for packaging.
|
||||
- Fix overlapping show names if show doesn't fit in calendar.
|
||||
- Fall back to treating file as MP3 if it isn't recognized by mutagen.
|
||||
- Remove defunct support-setting page.
|
||||
- Remove legacy AAC code, fix AAC support for SHOUTcast.
|
||||
- Display Settings menu for all users.
|
||||
- Make "Time Remaining" Smartblock work in Playlist.
|
||||
- Fix non-audio enclosure crash when importing badly formed podcast feeds
|
||||
- Fix flac files not playing out
|
||||
- Fix 500 error when making API call `onAirLightAction`
|
||||
- Fix warning message shown in `schedule` API call
|
||||
- Fix bug where many empty playlists were created when using autoloading
|
||||
- Passed show variable to smartblocks loaded via playlist to fix time remaining smartblocks with autoloading playlists.
|
||||
- Restore top right user setting link and logout link to UI
|
||||
- Fix an unnecessary type conversion to seconds that caused errors with PHP 7.2
|
||||
- Fix import errors on podcast episodes with long descriptions
|
||||
- Fix issue with multiple time remaining smartblocks in a single playlist not detecting remaining time correctly
|
||||
- Fix occasional empty administration page due to null previous file reference
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
### Deprecation of Debian 8 (Jessie)
|
||||
|
||||
This info is an early warning that we're deprecating a major os version.
|
||||
|
||||
Debian 9 (Stretch) is now available and Jessie is EOL since June 2018.
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Installer Issues
|
||||
|
||||
The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state.
|
||||
|
||||
For now the installer distro selection is pretty good at auto detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use isn't recommended.
|
||||
|
||||
The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.
|
||||
|
||||
If you want to skip the installer GUI completely you can configure LibreTime using `airtime_mvc/build/airtime.example.conf` as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second `install -fiap` install on a non productive system for reference can help with this type of bootstrap.
|
||||
|
||||
### Media-Monitor config needs manual removing
|
||||
|
||||
If you are using the `install` script you should most likely remove the `[media-monitor]` config section from your `/etc/airtime/airtime.conf` file to ensure you don't run into the problems described in
|
||||
https://github.com/libretime/libretime/issues/450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan (0.3.2) on some Debian based Platforms (ie. Ubuntu). This affects Ubuntu 16.04, Debian Jessie and Debian Stretch. CentOS doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
Check your version of silan by running `silan --version`. This should report `0.3.3` or higher. If not please see the [Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation) wiki page for more details & workarounds.
|
||||
|
||||
To date silan 0.3.3 or higher is in Debian testing & Ubuntu Bionic. You can check the upstream progress the [Debian PTS](https://tracker.debian.org/pkg/silan) and [Ubuntu launchpad](https://launchpad.net/ubuntu/+source/silan). This section will get removed once the package is in stable.
|
||||
|
||||
tldr: **[Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation)**
|
||||
|
||||
### Liquidsoap Support
|
||||
|
||||
LibreTime currently only supports liquidsoap `< 1.3.0` out of the box. If you install a current version of liquidsoap [using OPAM](https://www.liquidsoap.info/) or through the [Rabe Liquidsoap Distribution for CentOS (RaBe LSD)](https://build.opensuse.org/project/show/home:radiorabe:liquidsoap) you will most likely have liquidsoap `1.3.2` or `1.3.3` installed.
|
||||
|
||||
#352 reports that liquidsoap `< 1.3.0` can exhibit issues on Debian Stretch installs. One fix for the issue is to install liquidsoap `1.3.0` and to use the following patching steps.
|
||||
|
||||
You can check your liquidsoap version by running `liquidsoap --version`.
|
||||
|
||||
If you already have liquidsoap >= 1.3.0 you have a couple of options.
|
||||
|
||||
#### Liquidsoap 1.3.0 Patchset (#192)
|
||||
|
||||
You can patch your installation of LibreTime to support liquidsoap 1.3.0.
|
||||
|
||||
An up to date patch is available through GitHub and can be applied to an unpacked tarball as follows.
|
||||
|
||||
```bash
|
||||
cd libretime-3.0.0-alpha.7/
|
||||
curl -L https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0.patch | patch -p1
|
||||
```
|
||||
|
||||
Git users can pull from the branch at https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3.0 directly.
|
||||
|
||||
#### Install old liquidsoap from opam (#192)
|
||||
|
||||
You can downgrade an OPAM install of liquidsoap by running the following command.
|
||||
|
||||
```bash
|
||||
opam install "liquidsoap<1.3.0"
|
||||
```
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature.
|
||||
|
||||
### No line in support
|
||||
|
||||
This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording.
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided.
|
||||
|
||||
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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
These instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
||||
|
||||
### Lack of i18n toolchain is disturbing
|
||||
|
||||
Some translations might miss the tarball. They didn't get lost, but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we probably want to support bidirectional translation syncing with zanata.
|
|
@ -1,132 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 8
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2019-08-02" version="3.0.0-alpha.8"/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for contributing to this release:
|
||||
|
||||
- @ciaby
|
||||
- @hairmare
|
||||
- @learning-more
|
||||
- @mirzazulfan
|
||||
- @paddatrapper
|
||||
- @Robbt
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- The LibreTime project now has a proper logo.
|
||||
- New "Show Listener Stats" in "Analytics" contains listeners statistics on specific shows.
|
||||
- Display time of last podcast import in downloaded podcasts view.
|
||||
- Allow sorting by last play date in smartblocks, makes creating playlists that play the least played track possible.
|
||||
- Preliminary support for Debian Buster (Remember to [patch the liquidsoap scripts](https://github.com/libretime/libretime/releases#issues-liquidsoap-3.0.0-alpha.8) if you use Buster).
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Widgets now use user specified timezones as they should.
|
||||
- Podcast view now display proper number of downloaded podcasts rather than just the first 25 podcasts.
|
||||
- Fix using non-ascii characters in podcast publishing service.
|
||||
- Fix canceling current show for "linked" shows.
|
||||
- Fix empty schedule page when previous track is empty.
|
||||
- Fix focus jumping to search in advanced search.
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
- Dropped support for Debian Jessie as it's end-of-life
|
||||
- Liquidsoap 1.1.1 support. 3.0.0-alpha.8 is most likely the last version to support liquidsoap 1.1.1 out of the box. The number of distros that install a current version of liquidsoap are gaining the majority and once Ubuntu releases a version of their distro that has liquidsoap 1.3.x we will switch to native liquidsoap 1.3.x support. Users still on liquidsoap 1.1.1 will need to apply a patch to their liquidsoap scripts (or update liquidsoap).
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Installer Issues
|
||||
|
||||
The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state.
|
||||
|
||||
For now the installer distro selection is pretty good at auto detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use isn't recommended.
|
||||
|
||||
The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.
|
||||
|
||||
If you want to skip the installer GUI completely you can configure LibreTime using `airtime_mvc/build/airtime.example.conf` as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second `install -fiap` install on a non productive system for reference can help with this type of bootstrap.
|
||||
|
||||
### Media-Monitor config needs manual removing
|
||||
|
||||
If you are using the `install` script you should most likely remove the `[media-monitor]` config section from your `/etc/airtime/airtime.conf` file to ensure you don't run into the problems described in
|
||||
https://github.com/libretime/libretime/issues/450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan (0.3.2) on some Debian based Platforms (ie. Ubuntu). This affects Ubuntu 16.04, Debian Jessie and Debian Stretch. CentOS doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
Check your version of silan by running `silan --version`. This should report `0.3.3` or higher. If not please see the [Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation) wiki page for more details & workarounds.
|
||||
|
||||
To date silan 0.3.3 or higher is in Debian testing & Ubuntu Bionic. You can check the upstream progress the [Debian PTS](https://tracker.debian.org/pkg/silan) and [Ubuntu launchpad](https://launchpad.net/ubuntu/+source/silan). This section will get removed once the package is in stable.
|
||||
|
||||
tldr: **[Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation)**
|
||||
|
||||
### Liquidsoap Support
|
||||
|
||||
LibreTime currently only supports liquidsoap `< 1.3.0` out of the box. If you install a current version of liquidsoap [using OPAM](https://www.liquidsoap.info/) or through the [Rabe Liquidsoap Distribution for CentOS (RaBe LSD)](https://build.opensuse.org/project/show/home:radiorabe:liquidsoap) you will most likely have liquidsoap `1.3.2` or `1.3.3` installed.
|
||||
|
||||
#352 reports that liquidsoap `< 1.3.0` can exhibit issues on Debian Stretch installs. One fix for the issue is to install liquidsoap `1.3.0` and to use the following patching steps.
|
||||
|
||||
You can check your liquidsoap version by running `liquidsoap --version`.
|
||||
|
||||
If you already have liquidsoap >= 1.3.0 you have a couple of options.
|
||||
|
||||
#### Liquidsoap 1.3.0 Patchset (#192)
|
||||
|
||||
You can patch your installation of LibreTime to support liquidsoap 1.3.0.
|
||||
|
||||
An up to date patch is available through GitHub and can be applied to an unpacked tarball as follows.
|
||||
|
||||
```bash
|
||||
cd libretime-3.0.0-alpha.8/
|
||||
curl -L https://github.com/libretime/libretime/compare/master...radiorabe:feature/liquidsoap-1.3-for-3.0.0-alpha.7.patch | patch -p1
|
||||
```
|
||||
|
||||
Git users can pull from the branch at https://github.com/libretime/libretime/compare/main...radiorabe:feature/liquidsoap-1.3-for-3.0.0-alpha.7 directly.
|
||||
|
||||
#### Install old liquidsoap from opam (#192)
|
||||
|
||||
You can downgrade an OPAM install of liquidsoap by running the following command.
|
||||
|
||||
```bash
|
||||
opam install "liquidsoap<1.3.0"
|
||||
```
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature.
|
||||
|
||||
### No line in support
|
||||
|
||||
This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording.
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided.
|
||||
|
||||
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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
These instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
||||
|
||||
### Lack of i18n toolchain is disturbing
|
||||
|
||||
Some translations might miss the tarball. They didn't get lost, but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we probably want to support bidirectional translation syncing with zanata.
|
|
@ -1,114 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 9
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2021-01-05" version="3.0.0-alpha.9"/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for contributing to this release:
|
||||
|
||||
- @caveman99
|
||||
- @codenift
|
||||
- @farggus
|
||||
- glibloc
|
||||
- @hairmare
|
||||
- @jeromelebleu
|
||||
- @kmahelona
|
||||
- @monkeywithacupcake
|
||||
- @Numerico
|
||||
- @paddatrapper
|
||||
- @q84fh
|
||||
- @rjhelms
|
||||
- @Robbt
|
||||
- @samkitk
|
||||
- @teotikalki
|
||||
- @valerio
|
||||
- @xabispacebiker
|
||||
- @zklosko
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Display artwork from ID3 tags if available
|
||||
- Expose track metadata or artwork in new API endpoint
|
||||
- "Track Type" feature to classify tracks for auto DJ
|
||||
- support liquidsoap versions 1.1.1, 1.3.x and 1.4.x out of the box
|
||||
- Improved French translation
|
||||
- Updated jquery.cookie to js.cookie
|
||||
- `forceSSL` config to support TLS on non default ports
|
||||
- macOS Catalina support for Vagrant
|
||||
- CentOS 8 Support
|
||||
- Installer creates a secure icecast password on first run
|
||||
- Support Multipass as an alternative to Vagrant dev environments
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Fix using outro playlist in "repeat until full" smartblock
|
||||
- Switch to reliable message consumption to prevent RabbitMQ connections getting dropped side-effects
|
||||
- Replace absolute css and js URLs with relative URLs
|
||||
- remove legacy upstream conversion tracking, provisioning, and billing code
|
||||
- disabled version notification to avoid confusion, users can check current version in Settings > Status.
|
||||
- Swap out MusesPlayer for HTML5Player for playout
|
||||
- Make lots of untranslatable strings translatable
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Installer Issues
|
||||
|
||||
The installer is generally a bit unstable, we hope to be able to offer some reasonable packages at some point. Some of the GUI driven parts before the first login are also in a somewhat questionable state.
|
||||
|
||||
For now the installer distro selection is pretty good at auto detecting your os and usually does an ok job depending on your distro. You should usually not need to pass a --distribution and --release parameter, those are still supported for the time being but their use isn't recommended.
|
||||
|
||||
The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.
|
||||
|
||||
If you want to skip the installer GUI completely you can configure LibreTime using `airtime_mvc/build/airtime.example.conf` as an template. Due to some python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second `install -fiap` install on a non productive system for reference can help with this type of bootstrap.
|
||||
f
|
||||
|
||||
### Media-Monitor config needs manual removing
|
||||
|
||||
If you are using the `install` script you should most likely remove the `[media-monitor]` config section from your `/etc/airtime/airtime.conf` file to ensure you don't run into the problems described in
|
||||
https://github.com/libretime/libretime/issues/450. We recommend you do this before running the update since there are no known LibreTime releases that depend on the config value.
|
||||
|
||||
### Outdated silan reports unreliable cue in/out information
|
||||
|
||||
Out of the box the installer installs a broken, outdated version of silan (0.3.2) on some Ubuntu 16.04. CentOS doesn't have upstream packages and you may either install from source or use the [0.3.3 packages](https://github.com/radiorabe/centos-rpm-silan) from [RaBe APEL](https://build.opensuse.org/project/show/home:radiorabe:audio).
|
||||
|
||||
Check your version of silan by running `silan --version`. This should report `0.3.3` or higher. If not please see the [Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation) wiki page for more details & workarounds.
|
||||
|
||||
tldr: **[Silan Installation](https://github.com/libretime/libretime/wiki/Silan-Installation)**
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature.
|
||||
|
||||
### No line in support
|
||||
|
||||
This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording.
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided.
|
||||
|
||||
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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
These instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
||||
|
||||
### Lack of i18n toolchain is disturbing
|
||||
|
||||
Some translations might miss the tarball. They didn't get lost, but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we probably want to support bidirectional translation syncing with zanata.
|
|
@ -1,138 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 10
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date="2021-10-15" version="3.0.0-alpha.10"/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for contributing to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
- @xabispacebiker
|
||||
- @malespiaut
|
||||
- @zklosko
|
||||
- @brekemeier
|
||||
- @jeromelebleu
|
||||
- @danielhjames
|
||||
- @rjhelms
|
||||
- @hairmare
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Support `force_ssl` configuration option in Python applications
|
||||
- Move `airtime_mvc` to `legacy` and move all PHP related files under it
|
||||
- Support `Authorization: Api-Key` header in API v1
|
||||
- Use pip for LibreTime Python package installation
|
||||
- Move Python scripts into `/usr/local/bin`
|
||||
- Add API v2 (unstable and subject to change)
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- Renamed `airtime_analyzer` to `libretime-analyzer`
|
||||
- Prevent auto load playlists running on deleted show instances
|
||||
- Playout history can be exported as CSV and PDF
|
||||
- Explicitly fail if the HTTP requests made by the Python applications fail
|
||||
- Fix API v2 schedule endpoint item filtering and overlapping playout
|
||||
- Fix pypo overlapping track playout
|
||||
- Fix installation when Icecast is already installed
|
||||
- Request 1Gb of memory on libvirt Vagrant boxes
|
||||
- Clean up CORS setup in the installer
|
||||
- Pin the `setuptools` version to ensure older versions of LibreTime can still be installed
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
- Removed broken Soundcloud integration
|
||||
- Dropped support for Ubuntu Xenial as it's end-of-life
|
||||
- Dropped support for Debian Stretch as it's end-of-life
|
||||
- Removed SysV and Upstart init system files
|
||||
- Removed broken My Podcasts feature
|
||||
|
||||
## :arrow_up: Upgrading
|
||||
|
||||
### Packages renaming and new install paths
|
||||
|
||||
Once the upgrade has taken place, you need to run the following commands to clean up old scripts and configuration:
|
||||
|
||||
```bash
|
||||
# Remove the old packages
|
||||
sudo pip3 uninstall \
|
||||
airtime-playout \
|
||||
airtime-celery \
|
||||
api_clients
|
||||
|
||||
# Remove old entrypoints
|
||||
sudo rm -f \
|
||||
/usr/bin/airtime-liquidsoap \
|
||||
/usr/bin/airtime-playout \
|
||||
/usr/bin/pyponotify
|
||||
|
||||
# Remove old config files
|
||||
sudo rm -f \
|
||||
/etc/logrotate.d/airtime-liquidsoap
|
||||
|
||||
# Remove the old runtime and PHP directories
|
||||
sudo rm -rf \
|
||||
/var/run/airtime \
|
||||
/run/airtime \
|
||||
/usr/share/airtime/php/airtime_mvc
|
||||
|
||||
# Remove old python libraries entrypoints
|
||||
sudo rm -f \
|
||||
/usr/bin/airtime-liquidsoap \
|
||||
/usr/bin/airtime-playout \
|
||||
/usr/bin/libretime-analyzer \
|
||||
/usr/bin/libretime-api \
|
||||
/usr/bin/collectiongain \
|
||||
/usr/bin/django-admin \
|
||||
/usr/bin/django-admin.py \
|
||||
/usr/bin/markdown_py \
|
||||
/usr/bin/mid3cp \
|
||||
/usr/bin/mid3iconv \
|
||||
/usr/bin/mid3v2 \
|
||||
/usr/bin/moggsplit \
|
||||
/usr/bin/mutagen-inspect \
|
||||
/usr/bin/mutagen-pony \
|
||||
/usr/bin/pyponotify \
|
||||
/usr/bin/replaygain \
|
||||
/usr/bin/sqlformat
|
||||
```
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Interface Customization Issues
|
||||
|
||||
The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.
|
||||
|
||||
### No watched folder support
|
||||
|
||||
Currently LibreTime doesn't support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature. This is tracked in [#70](https://github.com/libretime/libretime/issues/70).
|
||||
|
||||
### No line in support
|
||||
|
||||
This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording. This is tracked in [#42](https://github.com/libretime/libretime/issues/42).
|
||||
|
||||
### Playout won't work if locale is missing
|
||||
|
||||
Some minimal OS installs don't have a default locale configured. This only seems to affect some VPS installs as they often don't have a locale setup in the default images provided. This is tracked in [#317](https://github.com/libretime/libretime/issues/317).
|
||||
|
||||
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.
|
||||
|
||||
```bash
|
||||
# Set locale using systemds localectl
|
||||
localectl set-locale LANG="en_US.utf8"
|
||||
```
|
||||
|
||||
These instructions don't seem to work on all Debian based distros so you might need to use `update-locale` as follows.
|
||||
|
||||
```bash
|
||||
#Purge all locales but en_US.UTF-8
|
||||
sudo locale-gen --purge en_US.UTF-8
|
||||
#Populate LANGUAGE=
|
||||
sudo update-locale LANGUAGE="en_US.UTF-8"
|
||||
```
|
|
@ -1,298 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 11
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date='2022-03-28' version='3.0.0-alpha.11'/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
|
||||
<!-- vale off -->
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- Use setuptools entrypoints ([#1409](https://github.com/libretime/libretime/issues/1409))
|
||||
- Support php7.4 ([#1354](https://github.com/libretime/libretime/issues/1354))
|
||||
- run API tests in CI ([#1421](https://github.com/libretime/libretime/issues/1421))
|
||||
- add support for Ubuntu Focal 20.04 ([#1168](https://github.com/libretime/libretime/issues/1168))
|
||||
- debian 11 support ([#1292](https://github.com/libretime/libretime/issues/1292))
|
||||
- create libretime_shared package ([#1349](https://github.com/libretime/libretime/issues/1349))
|
||||
- enhance libretime shared ([#1491](https://github.com/libretime/libretime/issues/1491))
|
||||
- **shared:** let user provide the log level ([#1493](https://github.com/libretime/libretime/issues/1493))
|
||||
- replace verbosity flag with log-level flag ([#1496](https://github.com/libretime/libretime/issues/1496))
|
||||
- **playout:** enhance playout logging ([#1495](https://github.com/libretime/libretime/issues/1495))
|
||||
- **api:** update env var settings loading
|
||||
- **api:** allow to run without log file for dev
|
||||
- **analyzer:** enhance analyzer cli and logging ([#1507](https://github.com/libretime/libretime/issues/1507))
|
||||
- **playout:** migrate notify cli to click ([#1519](https://github.com/libretime/libretime/issues/1519))
|
||||
- **shared:** allow loading from ini config file
|
||||
- **shared:** allow cli parametrized decorators ([#1527](https://github.com/libretime/libretime/issues/1527))
|
||||
- **shared:** add suffix to shared config models
|
||||
- **analyzer:** load config using shared helpers
|
||||
- **playout:** change playout working directory
|
||||
- **playout:** load config using shared helpers
|
||||
- **analyzer:** analyze replaygain using ffmpeg
|
||||
- **analyzer:** analyze cuepoint using ffmpeg
|
||||
- **playout:** change liquidsoap working dir ([#1547](https://github.com/libretime/libretime/issues/1547))
|
||||
- **legacy:** rename log filepath ([#1551](https://github.com/libretime/libretime/issues/1551))
|
||||
- **shared:** add url/dsn property to config classes ([#1553](https://github.com/libretime/libretime/issues/1553))
|
||||
- remove locale generation from installer ([#1560](https://github.com/libretime/libretime/issues/1560))
|
||||
- **legacy:** consolidate constants ([#1558](https://github.com/libretime/libretime/issues/1558))
|
||||
- **legacy:** add db config defaults and allow custom port ([#1559](https://github.com/libretime/libretime/issues/1559))
|
||||
- remove unused ubuntu ppa ([#1591](https://github.com/libretime/libretime/issues/1591))
|
||||
- **analyzer:** do verify ssl certs on requests
|
||||
- **analyzer:** rework analyze_metadata step
|
||||
- **api:** improve uwsgi systemd integration ([#1614](https://github.com/libretime/libretime/issues/1614))
|
||||
- **analyzer:** rework organise_file using pathlib
|
||||
- **shared:** load config from str filepath
|
||||
- **shared:** create general config model
|
||||
- **shared:** create time functions
|
||||
- **shared:** return log level and filepath
|
||||
- remove unused web_server_user config entry
|
||||
- **legacy:** clean config parsing and add defaults
|
||||
- **api_client:** load config using shared helpers
|
||||
- **worker:** load config using shared helpers
|
||||
- **shared:** do not exit on missing config file
|
||||
- **api:** remove admin app and static files
|
||||
- **api:** load config using shared helpers
|
||||
- **legacy:** replace massivescale/celery-php with jooola/celery-php
|
||||
- **worker:** set celery timezone to UTC
|
||||
- **api:** include id in file/webstream serializers
|
||||
- remove uninstall script ([#1682](https://github.com/libretime/libretime/issues/1682))
|
||||
- **worker:** add service log filepath ([#1640](https://github.com/libretime/libretime/issues/1640))
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- remove rogue buster reference
|
||||
- correct vagrantfile function call
|
||||
- declare pypo.notify module
|
||||
- revert removal of eval for shell commands
|
||||
- add missing dependencies to celery module
|
||||
- assume api client is installed
|
||||
- **shared:** fix tests
|
||||
- change filepath options type to pathlib.Path ([#1506](https://github.com/libretime/libretime/issues/1506))
|
||||
- **legacy:** validate id param in show image controller ([#1510](https://github.com/libretime/libretime/issues/1510))
|
||||
- **playout:** optional log_file for liquidsoap
|
||||
- **shared:** require click >=8.0.3
|
||||
- **legacy:** correct linting issues
|
||||
- make vagrant source.list update idempotent ([#1520](https://github.com/libretime/libretime/issues/1520))
|
||||
- **api:** duplicate exception raising and close file
|
||||
- **legacy:** api migration config variable name ([#1522](https://github.com/libretime/libretime/issues/1522))
|
||||
- **shared:** prevent child override by empty dict
|
||||
- **shared:** tmp_path fixture type mismatch
|
||||
- **analyzer:** install missing steps package
|
||||
- **shared:** type is required for default config submodel ([#1536](https://github.com/libretime/libretime/issues/1536))
|
||||
- **legacy:** default values when array is null
|
||||
- **legacy:** do not catch too broad exceptions
|
||||
- **legacy:** add more null check in api live info
|
||||
- **legacy:** only render if img creation succeed ([#1540](https://github.com/libretime/libretime/issues/1540))
|
||||
- **shared:** pin loguru version
|
||||
- **legacy:** clean sql migrations files ([#1545](https://github.com/libretime/libretime/issues/1545))
|
||||
- **shared:** set logger encoding and dont assume encoding
|
||||
- **playout:** proper logger format string
|
||||
- **playout:** only exclude ended file event
|
||||
- **api_client:** use same date format as schedule key
|
||||
- **api_client:** properly enclose events in media dict
|
||||
- **playout:** properly populate scheduled_now_webstream
|
||||
- **legacy:** revert default storage path ([#1563](https://github.com/libretime/libretime/issues/1563))
|
||||
- **legacy:** update setup with new db config schema ([#1567](https://github.com/libretime/libretime/issues/1567))
|
||||
- **shared:** do not strip vhost slash ([#1594](https://github.com/libretime/libretime/issues/1594))
|
||||
- **analyzer:** remove bad attributes in shutdown handler ([#1605](https://github.com/libretime/libretime/issues/1605))
|
||||
- **analyzer:** update docstring for organise_file
|
||||
- **shared:** fix missing port in public_url
|
||||
- change celery user in worker service file ([#1638](https://github.com/libretime/libretime/issues/1638))
|
||||
- **api:** model_bakery is a dev dependency
|
||||
- **api:** static_url settings is required in dev mode ([#1662](https://github.com/libretime/libretime/issues/1662))
|
||||
- **api_client:** comply to legacy schedule events
|
||||
- **playout:** remove stream_buffer_start in event dispatch
|
||||
- add PPA for newer liquidsoap version on Ubuntu
|
||||
- upgrade python packages during install ([#1707](https://github.com/libretime/libretime/issues/1707))
|
||||
- **installer:** test and create correct log path
|
||||
- **installer:** remove rougue reference to /var/log/airtime ([#1710](https://github.com/libretime/libretime/issues/1710))
|
||||
- **installer:** remove /var/tmp/airtime reference
|
||||
- **worker:** drop logfile reference until environment variable expansion works correctly
|
||||
|
||||
<!-- vale on -->
|
||||
|
||||
## :arrow_up: Upgrading
|
||||
|
||||
### Analyzer certificate verification
|
||||
|
||||
Analyzer no longer ignore certificate verification when performing a request. We recommend using Let's Encrypt to get a certificate. If you do rely on self signed certificate, please read the [requests](https://requests.readthedocs.io/) documentation to provide a CA Bundle to verify the cert using environment variables.
|
||||
|
||||
### Analyzer new command line interface
|
||||
|
||||
The Analyzer command line interface has been reworked and uses new flags.
|
||||
|
||||
- `--debug` flag becomes `--log-level <level>`
|
||||
- `--rmq-config-file` flag becomes `--config <filepath>`
|
||||
- `--http-retry-queue-file` flag becomes `--retry-queue-filepath`.
|
||||
- `retry-queue-filepath` default value changed from `/tmp/airtime_analyzer_http_retries` to `retry_queue` in the working directory.
|
||||
|
||||
### New configuration schema and validation
|
||||
|
||||
The configuration file parsing was improved with validation and the configuration schema was updated. Some deprecated fields were removed and other were renamed.
|
||||
|
||||
The `general` section has been changed:
|
||||
|
||||
- the `general.web_server_user` entry was removed
|
||||
- the `general.cache_ahead_hours` entry now defaults to 1
|
||||
- the `general.airtime_dir` entry is deprecated and can be removed
|
||||
- the `general.station_id` entry is deprecated and can be removed
|
||||
- the `general.protocol` (`http` or `https`) entry is recommended over the `general.force_ssl` entry.
|
||||
- the `general.force_ssl` entry should either be removed or set to a value (`true` or `false`), an empty value will fail validation.
|
||||
|
||||
The storage (`current_backend`) section has been changed:
|
||||
|
||||
- the `current_backend.storage_backend` entry now defaults to the only valid value `file`.
|
||||
|
||||
:::note
|
||||
|
||||
You can remove the entire `current_backend` section from your configuration file.
|
||||
|
||||
:::
|
||||
|
||||
The `database` section has been changed:
|
||||
|
||||
- the `database.*` entries now have defaults
|
||||
- the `database.port` entry was added and defaults to `5432`
|
||||
- the `database.dbname` entry was renamed to `database.name`
|
||||
- the `database.dbuser` entry was renamed to `database.user`
|
||||
- the `database.dbpass` entry was renamed to `database.password`
|
||||
|
||||
The `rabbitmq` section has been changed:
|
||||
|
||||
- the `rabbitmq.*` entries now have defaults
|
||||
|
||||
The `pypo` section has been changed:
|
||||
|
||||
- the `pypo` section was renamed to `playout`
|
||||
- the `pypo.ls_*` entries were renamed to `playout.liquidsoap_*`
|
||||
- the `pypo.*_dir` entries were removed
|
||||
- the `pypo.api_client` entry was removed
|
||||
- the `pypo.record_file_type` entry was renamed to `playout.record_file_format`
|
||||
- the `pypo.base_recorded_files` entry was removed
|
||||
- the `pypo.poll_interval` entry was removed
|
||||
- the `pypo.push_interval` entry was removed
|
||||
- the `pypo.cue_style` entry was removed
|
||||
|
||||
The deprecated sections `monit` and `facebook` are unused, they can be removed from your configuration file.
|
||||
|
||||
Unless you use a custom auth mechanism, the `ldap` section can be removed from your configuration file.
|
||||
|
||||
Remove any quoted values in your configuration file, validation might fail otherwise. See the following example:
|
||||
|
||||
```ini
|
||||
# The previously quoted value
|
||||
ls_port = '1234'
|
||||
# should become
|
||||
liquidsoap_port = 1234
|
||||
```
|
||||
|
||||
Please see the [configuration documentation](../admin-manual/setup/configuration.md) for more details.
|
||||
|
||||
### Environment variables
|
||||
|
||||
The API configuration environment variables names changed:
|
||||
|
||||
- `LIBRETIME_CONF_DIR` was removed
|
||||
- `LIBRETIME_CONF_FILE` was renamed to `LIBRETIME_CONFIG_FILEPATH`
|
||||
|
||||
The Analayzer configuration environment variables names changed:
|
||||
|
||||
- `LIBRETIME_CONF_DIR` environment variable was replaced with `LIBRETIME_CONFIG_FILEPATH`.
|
||||
|
||||
The Worker configuration environment variables names changed:
|
||||
|
||||
- `RMQ_CONFIG_FILE` was renamed to `LIBRETIME_CONFIG_FILEPATH`.
|
||||
|
||||
### Log files new paths
|
||||
|
||||
When running Playout from the command line, the service won't log to a file by default.
|
||||
When running Playout as a systemd service, the log file moved from `/var/log/airtime/pypo/pypo.log` to `/var/log/libretime/playout.log`
|
||||
|
||||
The Playout Notify log file at `/var/log/airtime/pypo-liquidsoap/notify.log` was removed and merged into the existing `/var/log/libretime/liquidsoap.log` log file.
|
||||
|
||||
When running Liquidsoap from the command line, the service won't log to a file by default.
|
||||
When running Liquidsoap as a systemd service, the log file moved from `/var/log/airtime/pypo-liquidsoap/ls_script.log` to `/var/log/libretime/liquidsoap.log`
|
||||
|
||||
The Legacy log file moved from `/var/log/airtime/zendphp.log` to `/var/log/libretime/legacy.log`
|
||||
|
||||
The API log file moved from `/var/log/airtime/api.log` to `/var/log/libretime/api.log`
|
||||
|
||||
Run the following command to create the new and clean the old log directory:
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /var/log/libretime
|
||||
sudo chown -R www-data:www-data /var/log/libretime
|
||||
|
||||
sudo rm -rf /var/log/airtime
|
||||
```
|
||||
|
||||
### Services new working directories
|
||||
|
||||
When running Playout as a systemd service, the working directory changed from `/var/tmp/airtime/pypo/` to `/var/lib/libretime/playout`. When running from the command line, the users current working directory is now used by default.
|
||||
|
||||
When running Liquidsoap as a systemd service, the working directory is now `/var/lib/libretime/playout`. When running from the command line, the users current working directory is now used by default.
|
||||
|
||||
When running Analyzer as a systemd service, the working directory is now `/var/lib/libretime/analyzer`.
|
||||
|
||||
When running Worker (celery) as a systemd service, the working directory changed from `/srv/airtime` to `/var/lib/libretime/worker`.
|
||||
|
||||
Run the following command to clean the old directory:
|
||||
|
||||
```bash
|
||||
sudo rm -rf /var/tmp/airtime/pypo/
|
||||
```
|
||||
|
||||
### Analyzer new `ffmpeg` based steps
|
||||
|
||||
The Analyzer now requires `ffmpeg`. The `silan` system dependency and the `rgain3` python package and it's system dependencies can be removed.
|
||||
|
||||
Run the following command to clean the old packages:
|
||||
|
||||
```bash
|
||||
sudo apt purge silan
|
||||
|
||||
sudo apt purge \
|
||||
gir1.2-gtk-3.0 \
|
||||
libcairo2-dev \
|
||||
libgirepository1.0-dev \
|
||||
libglib2.0-dev \
|
||||
pkg-config \
|
||||
python3-cairo \
|
||||
python3-dev \
|
||||
python3-gi \
|
||||
python3-gi-cairo \
|
||||
python3-gst-1.0
|
||||
sudo pip3 uninstall rgain3
|
||||
```
|
||||
|
||||
### No static files for the API
|
||||
|
||||
The API doesn't rely on static files in production anymore.
|
||||
|
||||
Run the following command to clean the old files:
|
||||
|
||||
```bash
|
||||
sudo rm -rf /usr/share/airtime/api
|
||||
```
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Ubuntu 18.04 Playout Status
|
||||
|
||||
The playout status notifications in the web interface aren't working. The issue
|
||||
is tracked in [#1606](https://github.com/libretime/libretime/issues/1606). The
|
||||
playout works correctly and can be heard in Icecast, however the **On Air**
|
||||
button is greyed out and the status reported on the **Streams** status page can
|
||||
report errors connecting to Liquidsoap. The current workaround is to upgrade the
|
||||
server to Ubuntu 20.04.
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 12
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date='2022-03-29' version='3.0.0-alpha.12'/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- **playout:** add locales to libretime-playout-notify calls ([#1715](https://github.com/libretime/libretime/issues/1715))
|
||||
- **worker:** enable logfile variable expansion in ExecStart ([#1717](https://github.com/libretime/libretime/issues/1717))
|
||||
|
||||
## :memo: Colophon
|
||||
|
||||
This release mainly fixes bugs present in the [3.0.0-alpha.11 release](./3.0.0-alpha.11.md).
|
|
@ -1,278 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 alpha 13
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date='2022-07-15' version='3.0.0-alpha.13'/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
- rinka
|
||||
- Maxime Leroy
|
||||
- Mykola
|
||||
|
||||
<!-- vale off -->
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- remove unused python3-venv package ([#1728](https://github.com/libretime/libretime/issues/1728))
|
||||
- **api:** split api into multiple apps ([#1626](https://github.com/libretime/libretime/issues/1626))
|
||||
- improve apache configuration ([#1784](https://github.com/libretime/libretime/issues/1784))
|
||||
- **api:** replace uwsgi with gunicorn ([#1785](https://github.com/libretime/libretime/issues/1785))
|
||||
- replace exploded base\_\* with public_url
|
||||
- **shared:** compress logs with gz ([#1827](https://github.com/libretime/libretime/issues/1827))
|
||||
- **shared:** remove unused abstract app ([#1828](https://github.com/libretime/libretime/issues/1828))
|
||||
- replace click envar with auto_envvar_prefix ([#1829](https://github.com/libretime/libretime/issues/1829))
|
||||
- **shared:** allow to disable log rotate/retention
|
||||
- **legacy:** change logrotate config deploy path
|
||||
- rotate logs using libretime user
|
||||
- **legacy:** improve rabbitmq check ([#1839](https://github.com/libretime/libretime/issues/1839))
|
||||
- **worker:** don't run with a dedicated user
|
||||
- **playout:** remove unused liquidsoap_prepare_terminate.py ([#1854](https://github.com/libretime/libretime/issues/1854))
|
||||
- **legacy:** check services using systemctl ([#1856](https://github.com/libretime/libretime/issues/1856))
|
||||
- change config file format to yaml
|
||||
- change config filename to config.yml
|
||||
- change config dir path to /etc/libretime
|
||||
- **installer:** rewrite install script
|
||||
- replace php migration with django migration
|
||||
- drop cc_locale table
|
||||
- **api:** create set_icecast_passwords command
|
||||
- **installer:** post install setup instructions
|
||||
- add systemd libretime.target
|
||||
- move allowed cors url to configuration file
|
||||
- remove php web installer
|
||||
- move storage path setting to configuration file
|
||||
- **installer:** rename shared files path to /usr/share/libretime
|
||||
- **shared:** add config trailing slash sanitizer ([#1870](https://github.com/libretime/libretime/issues/1870))
|
||||
- rename default stream mount point to main
|
||||
- **api:** rename user model fields ([#1902](https://github.com/libretime/libretime/issues/1902))
|
||||
- remove unused cc_sess table ([#1907](https://github.com/libretime/libretime/issues/1907))
|
||||
- remove unused cc_perms table ([#1909](https://github.com/libretime/libretime/issues/1909))
|
||||
- **api:** rename podcasts models fields ([#1910](https://github.com/libretime/libretime/issues/1910))
|
||||
- **analyzer:** move compute_md5 to shared library
|
||||
- **api:** create bulk_import command
|
||||
- **legacy:** compute md5 during early upload
|
||||
- **api:** rename track type to library
|
||||
- **legacy:** add Ukrainian language
|
||||
- **legacy:** don't guess cors url from server
|
||||
- **installer:** load .env file to persistent install config
|
||||
- use dedicated 'libretime' user
|
||||
- replace apache2 with nginx + php-fpm
|
||||
- **api:** listen on unix socket with gunicorn
|
||||
- **api:** use uvicorn as asgi server with gunicorn
|
||||
- set default locale to en_US
|
||||
- remove unused cc_country table
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- add gettext for legacy locale generation ([#1720](https://github.com/libretime/libretime/issues/1720))
|
||||
- **installer:** install software-properties-common when required
|
||||
- **installer:** always install fresh packages
|
||||
- **api:** prevent timing attacke on api key ([#1771](https://github.com/libretime/libretime/issues/1771))
|
||||
- **legacy:** load vendors during config init
|
||||
- **legacy:** bypass config validation during django migration
|
||||
- **legacy:** the ini config parser requires a .conf ext
|
||||
- **playout:** disable playout-notify log rotation
|
||||
- don't set log folder permissions recursively
|
||||
- **shared:** allow list settings ([#1837](https://github.com/libretime/libretime/issues/1837))
|
||||
- **legacy:** station url always has a trailing slash ([#1838](https://github.com/libretime/libretime/issues/1838))
|
||||
- **legacy:** check if libretime-api is running ([#1841](https://github.com/libretime/libretime/issues/1841))
|
||||
- don't add track types only on migration
|
||||
- correct cc_file.artwork column size
|
||||
- **legacy:** remove not null constraint when using default
|
||||
- **api:** missing build-essential to build psycopg2
|
||||
- drop unused sequences
|
||||
- **api:** allow updating default_icecast_password ([#1872](https://github.com/libretime/libretime/issues/1872))
|
||||
- **deps:** update dependency [@cmfcmf](https://github.com/cmfcmf)/docusaurus-search-local to ^0.11.0 ([#1873](https://github.com/libretime/libretime/issues/1873))
|
||||
- **legacy:** remove file directory metadata ([#1887](https://github.com/libretime/libretime/issues/1887))
|
||||
- **api:** update model fields in set_icecast_passwords ([#1903](https://github.com/libretime/libretime/issues/1903))
|
||||
- **api:** cascade when dropping table ([#1908](https://github.com/libretime/libretime/issues/1908))
|
||||
- **legacy:** station-metadata api endpoint
|
||||
- **legacy:** don't log 'could not obtain lock' exception ([#1943](https://github.com/libretime/libretime/issues/1943))
|
||||
- **legacy:** check empty before iteration on files
|
||||
- use constrained foreign key for files track_type
|
||||
- **deps:** update dependency mermaid to v9.1.2 [security] ([#1948](https://github.com/libretime/libretime/issues/1948))
|
||||
- **installer:** update version file unless tarball ([#1950](https://github.com/libretime/libretime/issues/1950))
|
||||
- prevent data loose on track_types_id migration ([#1949](https://github.com/libretime/libretime/issues/1949))
|
||||
- use track_type_id in smartblock criteria
|
||||
- **legacy:** no invalid track type in smartblock criteria
|
||||
|
||||
<!-- vale on -->
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
### Allowed CORS origins configuration location
|
||||
|
||||
The allowed CORS origins configuration moved from the database to the configuration file. The field in the general preference form is deprecated and will be removed in the next release. Be sure to move your allowed CORS origins configuration to the [configuration file](../admin-manual/setup/configuration.md).
|
||||
|
||||
## :arrow_up: Before upgrading
|
||||
|
||||
:::caution
|
||||
|
||||
Please run this **before the upgrade procedure**.
|
||||
|
||||
:::
|
||||
|
||||
### Repair broken track types
|
||||
|
||||
The database files track type field was previously not constrained and this might have lead to files referencing a now renamed or missing track type. To preserve as much data as possible during the database migration process, you need to check whether some files have broken or missing track type references and fix them accordingly. To list broken track type references, you can run the following command:
|
||||
|
||||
```bash
|
||||
sudo -u www-data libretime-api dbshell --command="
|
||||
SELECT f.id, f.track_type, f.track_title, f.artist_name, f.filepath
|
||||
FROM cc_files f
|
||||
WHERE NOT EXISTS (
|
||||
SELECT FROM cc_track_types tt
|
||||
WHERE tt.code = f.track_type
|
||||
)
|
||||
AND f.track_type IS NOT NULL
|
||||
AND f.track_type <> '';"
|
||||
```
|
||||
|
||||
If the above command outputs the following, no file needs fixing.
|
||||
|
||||
```
|
||||
id | track_type | track_title | artist_name | filepath
|
||||
----+------------+-------------+-------------+----------
|
||||
(0 rows)
|
||||
```
|
||||
|
||||
In addition, the database smart block criteria value was previously referencing track types using codes, and should now reference track types using ids. You need to check whether some smart block have broken track type references and fix them accordingly. To list broken track type references, you can run the following command:
|
||||
|
||||
```bash
|
||||
sudo -u www-data libretime-api dbshell --command="
|
||||
SELECT b.name, c.criteria, c.modifier, c.value
|
||||
FROM cc_blockcriteria c, cc_block b
|
||||
WHERE c.block_id = b.id
|
||||
AND NOT EXISTS (
|
||||
SELECT FROM cc_track_types tt
|
||||
WHERE tt.code = c.value
|
||||
)
|
||||
AND criteria = 'track_type';"
|
||||
```
|
||||
|
||||
If the above command outputs the following, no smart block needs fixing.
|
||||
|
||||
```
|
||||
name | criteria | modifier | value
|
||||
------+----------+----------+-------
|
||||
(0 rows)
|
||||
```
|
||||
|
||||
### New configuration file
|
||||
|
||||
The configuration file name changed from `airtime.conf` to `config.yml`. Please rename your configuration file using the following command:
|
||||
|
||||
```bash
|
||||
sudo mv /etc/airtime/airtime.conf /etc/airtime/config.yml
|
||||
```
|
||||
|
||||
The configuration directory changed from `/etc/airtime` to `/etc/libretime`. Please rename your configuration directory using the following command:
|
||||
|
||||
```bash
|
||||
sudo mv /etc/airtime /etc/libretime
|
||||
```
|
||||
|
||||
The configuration file format changed to `yml` and the configuration schema changed. Please rewrite your [configuration file](../admin-manual/setup/configuration.md) using the [yaml format](https://yaml.org/). An example configuration file `installer/config.yml` is present in the sources.
|
||||
|
||||
The `general` section has been changed:
|
||||
|
||||
- the `general.protocol`, `general.base_url`, `general.base_port`, `general.base_dir` and `general.force_ssl` entries were replaced with a single `general.public_url` entry, be sure to use a valid url with the new configuration entry.
|
||||
|
||||
A new `storage` section has been added:
|
||||
|
||||
- the `storage.path` entry was added to move the storage configuration from the database to the configuration file, be sure to edit your configuration with the path to your storage. The default storage path value is `/srv/libretime`.
|
||||
|
||||
### Nginx, Apache and PHP
|
||||
|
||||
The `apache2` web server has been replaced with `nginx` and `php-fpm`, be sure to uninstall `apache2` and clean related configuration files:
|
||||
|
||||
```bash
|
||||
sudo rm -f /etc/apache2/sites-*/{airtime,libretime}*
|
||||
sudo rm -f /etc/php/*/apache2/conf.d/{airtime,libretime}*
|
||||
|
||||
sudo apt purge 'apache2' 'libapache2-mod-php*'
|
||||
|
||||
sudo find /var/lib/php/sessions -name 'sess_*' -delete
|
||||
```
|
||||
|
||||
### Shared files path
|
||||
|
||||
The shared files path changed from `/usr/share/airtime` to `/usr/share/libretime`. The directory must be renamed:
|
||||
|
||||
```bash
|
||||
sudo mv /usr/share/airtime /usr/share/libretime
|
||||
```
|
||||
|
||||
### Systemd services path
|
||||
|
||||
The systemd services path changed from `/etc/systemd/system/libretime*` to `/usr/lib/systemd/system/libretime*`. The services must be moved:
|
||||
|
||||
```bash
|
||||
sudo mv /etc/systemd/system/libretime* /usr/lib/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
```
|
||||
|
||||
### Replaced uWSGI with Gunicorn
|
||||
|
||||
[uWSGI](https://uwsgi-docs.readthedocs.io) was replaced by [Gunicorn](https://gunicorn.org/), the packages and configuration file should be removed from the system:
|
||||
|
||||
```bash
|
||||
# Remove the configuration file
|
||||
sudo rm -f /etc/{airtime,libretime}/libretime-api.ini
|
||||
|
||||
# Remove the packages
|
||||
sudo apt purge \
|
||||
uwsgi \
|
||||
uwsgi-plugin-python3
|
||||
```
|
||||
|
||||
### Logrotate config filepath
|
||||
|
||||
The legacy logrotate config filepath was changed from `/etc/logrotate.d/airtime-php` to `/etc/logrotate.d/libretime-legacy`. The old configuration file must be removed:
|
||||
|
||||
```bash
|
||||
# Remove the configuration file
|
||||
sudo rm -f /etc/logrotate.d/airtime-php
|
||||
```
|
||||
|
||||
### Worker user
|
||||
|
||||
The worker service no longer uses a dedicated `celery` user to run. The old `celery` user can be removed from the system:
|
||||
|
||||
```bash
|
||||
# Remove the celery user
|
||||
sudo deluser celery
|
||||
```
|
||||
|
||||
## :arrow_up: Upgrading
|
||||
|
||||
### New installer
|
||||
|
||||
:::warning
|
||||
|
||||
Please be careful when running this new installer, it might not be bug free.
|
||||
|
||||
:::
|
||||
|
||||
The [bash installer](../admin-manual/setup/install.md#run-the-installer) has been rewritten, the flags and options changed, please run `./install --help` to get more details.
|
||||
|
||||
### LibreTime user
|
||||
|
||||
The LibreTime services now run using a dedicated `libretime` user instead of the default `www-data` user. Be sure to change the ownership of the LibreTime files:
|
||||
|
||||
```bash
|
||||
# Configuration directory
|
||||
sudo chown -R libretime:libretime /etc/libretime
|
||||
# Logs directory
|
||||
sudo chown -R libretime:libretime /var/log/libretime
|
||||
# Runtime directory
|
||||
sudo chown -R libretime:libretime /var/lib/libretime
|
||||
# Storage directory
|
||||
sudo chown -R libretime:libretime /srv/libretime
|
||||
```
|
|
@ -1,192 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 beta 0
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date='2022-09-16' version='3.0.0-beta.0'/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
- Milo Ivir
|
||||
|
||||
<!-- vale off -->
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- **playout:** use liquidsoap version functions
|
||||
- **playout:** replace pytz with zoneinfo ([#1969](https://github.com/libretime/libretime/issues/1969))
|
||||
- **installer:** remove allow-restart flag ([#1970](https://github.com/libretime/libretime/issues/1970))
|
||||
- rename AirtimeApiClient to ApiClient
|
||||
- **playout:** use single clients instance ([#1980](https://github.com/libretime/libretime/issues/1980))
|
||||
- **api:** don't use trailing slashes ([#1982](https://github.com/libretime/libretime/issues/1982))
|
||||
- **api:** cast StreamSetting raw_value to value ([#1991](https://github.com/libretime/libretime/issues/1991))
|
||||
- **worker:** load callback details from config ([#1994](https://github.com/libretime/libretime/issues/1994))
|
||||
- **analyzer:** load callback details from config and file_id ([#1993](https://github.com/libretime/libretime/issues/1993))
|
||||
- **api-client:** rewrite api-client v2
|
||||
- **playout:** integrate api-client v2 calls
|
||||
- **api:** don't use hyperlinked serializers ([#1984](https://github.com/libretime/libretime/issues/1984))
|
||||
- **shared:** load env config using jsonschema
|
||||
- **installer:** use ed for config update ([#2013](https://github.com/libretime/libretime/issues/2013))
|
||||
- move off_air_meta stream setting to pref table ([#2023](https://github.com/libretime/libretime/issues/2023))
|
||||
- move stream liquisoap status to pref table
|
||||
- move stream stats status to pref table
|
||||
- **analyzer:** override paths using env variables
|
||||
- **playout:** rewrite stats collector ([#2028](https://github.com/libretime/libretime/issues/2028))
|
||||
- **legacy:** setup config schema validation
|
||||
- **legacy:** add config dot notation access
|
||||
- **shared:** pass config data via init ([#2042](https://github.com/libretime/libretime/issues/2042))
|
||||
- **playout:** create liquidsoap client
|
||||
- **playout:** integrate new liquisoap client
|
||||
- **worker:** rename service and package to libretime-worker ([#2065](https://github.com/libretime/libretime/issues/2065))
|
||||
- **playout:** improve generate\_\*\_events ([#2088](https://github.com/libretime/libretime/issues/2088))
|
||||
- **api:** remove set passwords command
|
||||
- remove cc_stream_setting models
|
||||
- **installer:** deploy stream config
|
||||
- **legacy:** read stream config from file
|
||||
- **api:** add /info and /stream/\* endpoints
|
||||
- **shared:** create stream config models
|
||||
- **playout:** build liquidsoap entrypoint with stream config
|
||||
- **playout:** stats collector using stream config
|
||||
- **playout:** allow updating message_offline value
|
||||
- **playout:** remove stream_setting update handler
|
||||
- **playout:** liquidsoap bootstrap using new api endpoints
|
||||
- **playout:** allow liquidsoap listen address configuration
|
||||
- **api:** move /api-auth to /api/browser ([#2094](https://github.com/libretime/libretime/issues/2094))
|
||||
- add container setup
|
||||
- move timezone preference to config file ([#2096](https://github.com/libretime/libretime/issues/2096))
|
||||
- **playout:** move message handling to main thread
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- **api-client:** get status_code from response
|
||||
- **analyzer:** remove outdated urllib3 workaround
|
||||
- **api-client:** fix base_url joining for client v2 ([#1998](https://github.com/libretime/libretime/issues/1998))
|
||||
- **api:** update set_icecast_passwords StreamSetting fields ([#2001](https://github.com/libretime/libretime/issues/2001))
|
||||
- **legacy:** get local logo file ([#1999](https://github.com/libretime/libretime/issues/1999))
|
||||
- **installer:** clean legacy files before copying ([#2002](https://github.com/libretime/libretime/issues/2002))
|
||||
- **legacy:** sanitize track_type_id when updating file ([#2003](https://github.com/libretime/libretime/issues/2003))
|
||||
- **shared:** validator value type can be wrong
|
||||
- **shared:** remove unused field from rabbitmq config ([#2012](https://github.com/libretime/libretime/issues/2012))
|
||||
- **playout:** replace deprecated harbor.bind_addr ([#2025](https://github.com/libretime/libretime/issues/2025))
|
||||
- **legacy:** do not rely on undefined SERVER_NAME ([#2031](https://github.com/libretime/libretime/issues/2031))
|
||||
- **api-client:** remove unused v1 methods
|
||||
- **playout:** use stream download when fetching files ([#2048](https://github.com/libretime/libretime/issues/2048))
|
||||
- **playout:** add thread names ([#2056](https://github.com/libretime/libretime/issues/2056))
|
||||
- **legacy:** args comma syntax error
|
||||
- **legacy:** 404 on listeners stats
|
||||
- **deps:** update dependency mdx-mermaid to v1.3.0 [security]
|
||||
- **playout:** py36 compatibility broken typings
|
||||
- **playout:** py39 compatibility zoneinfo import
|
||||
- **api:** install gunicorn from pip for bionic
|
||||
- **installer:** only upgrade pip packages if needed
|
||||
- **installer:** fix compatibility with bionic
|
||||
- **legacy:** look in /legacy for a VERSION file
|
||||
- **playout:** missing live show events ([#2087](https://github.com/libretime/libretime/issues/2087))
|
||||
- **legacy:** config default values are not sanitized
|
||||
- **installer:** add liquidsoap config section
|
||||
- **installer:** move non reusable fields from default output
|
||||
- **legacy:** consistent with docs in outputs public_url generation
|
||||
- **playout:** also shutdown on SIGTERM ([#2104](https://github.com/libretime/libretime/issues/2104))
|
||||
- **installer:** simplify distro support notice ([#2106](https://github.com/libretime/libretime/issues/2106))
|
||||
- **shared:** install tzdata distributions package ([#2105](https://github.com/libretime/libretime/issues/2105))
|
||||
- **installer:** config dir should be read only
|
||||
- **installer:** config should not be world readable
|
||||
- **legacy:** track_type_id should cast to int not text ([#2112](https://github.com/libretime/libretime/issues/2112))
|
||||
- **worker:** rewrite podcast download task
|
||||
- **shared:** load env from oneOf union schema
|
||||
- **deps:** update dependency friendsofphp/php-cs-fixer to <3.11.1
|
||||
- nginx depends on legacy in docker-compose ([#2147](https://github.com/libretime/libretime/issues/2147))
|
||||
- **playout:** remove shutdown_handler
|
||||
|
||||
<!-- vale on -->
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
### Ubuntu Bionic support deprecation
|
||||
|
||||
Support for Ubuntu Bionic is being deprecated, and will be removed in LibreTime v3.1.0. Maintenance only versions (3.0.x) for Ubuntu Bionic will be provided until the distribution release reaches its end of life. Please see the [supported distributions release policy](../developer-manual/development/releases.md#distributions-releases-support) for details.
|
||||
|
||||
Along with the Ubuntu Bionic deprecation, the following dependencies versions are also being deprecated:
|
||||
|
||||
- [liquidsoap 1.1.1](https://packages.ubuntu.com/bionic/liquidsoap)
|
||||
- [php7.2](https://packages.ubuntu.com/bionic/php7.2)
|
||||
- [python3.6](https://packages.ubuntu.com/bionic/python3)
|
||||
|
||||
### Debian Buster support deprecation
|
||||
|
||||
Support for Debian Buster is being deprecated, and will be removed in LibreTime v3.1.0. Maintenance only versions (3.0.x) for Debian Buster will be provided until the distribution release reaches its end of life. Please see the [supported distributions release policy](../developer-manual/development/releases.md#distributions-releases-support) for details.
|
||||
|
||||
Along with the Debian Buster deprecation, the following dependencies versions are also being deprecated:
|
||||
|
||||
- [liquidsoap 1.3.3](https://packages.debian.org/buster/liquidsoap)
|
||||
- [php7.3](https://packages.debian.org/buster/php7.3)
|
||||
- [python3.7](https://packages.debian.org/buster/python3)
|
||||
|
||||
## :arrow_up: Before upgrading
|
||||
|
||||
:::caution
|
||||
|
||||
Please follow this **before the upgrade procedure**.
|
||||
|
||||
:::
|
||||
|
||||
### File based stream configuration
|
||||
|
||||
The stream configuration moved from the database to the [configuration](../admin-manual/setup/configuration.md#stream) file. A configuration sample can be found in the project folder under `installer/config.yml`. Make sure to save your existing stream config to the configuration file.
|
||||
|
||||
:::info
|
||||
|
||||
To prevent accidental data loss during upgrade, the stream configuration data will only be removed from the database in future releases. You can view the data using the following commands:
|
||||
|
||||
```bash
|
||||
sudo -u libretime libretime-api dbshell --command="
|
||||
SELECT *
|
||||
FROM cc_stream_setting
|
||||
ORDER BY keyname;"
|
||||
|
||||
sudo -u libretime libretime-api dbshell --command="
|
||||
SELECT *
|
||||
FROM cc_pref
|
||||
WHERE keystr IN (
|
||||
'default_icecast_password',
|
||||
'default_stream_mount_point',
|
||||
'live_dj_connection_url_override',
|
||||
'live_dj_source_connection_url',
|
||||
'master_dj_connection_url_override',
|
||||
'master_dj_source_connection_url'
|
||||
)
|
||||
ORDER BY keystr;"
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Timezone configuration
|
||||
|
||||
The timezone preference moved from the database to the [configuration](../admin-manual/setup/configuration.md#general) file. Make sure to save your existing timezone preference to the configuration file.
|
||||
|
||||
:::info
|
||||
|
||||
To prevent accidental data loss during upgrade, the timezone preference will only be removed from the database in future releases. You can view the data using the following commands:
|
||||
|
||||
```bash
|
||||
sudo -u libretime libretime-api dbshell --command="SELECT * FROM cc_pref WHERE keystr = 'timezone'";
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Worker python package and service
|
||||
|
||||
The `libretime-celery` python package and service was renamed to `libretime-worker`. Make sure to remove the old python package and service using the following command:
|
||||
|
||||
```bash
|
||||
sudo pip3 uninstall libretime-celery
|
||||
|
||||
sudo rm -f \
|
||||
/etc/systemd/system/libretime-celery.service \
|
||||
/usr/lib/systemd/system/libretime-celery.service
|
||||
```
|
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 beta 1
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date='2022-09-23' version='3.0.0-beta.1'/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- **legacy:** disable services check when missing systemctl ([#2160](https://github.com/libretime/libretime/issues/2160))
|
||||
- **legacy:** invalidate cached assets using md5sum ([#2161](https://github.com/libretime/libretime/issues/2161))
|
||||
- use libretime/icecast container image ([#2165](https://github.com/libretime/libretime/issues/2165))
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- **legacy:** number of tracks displayed initially ([#2168](https://github.com/libretime/libretime/issues/2168))
|
||||
- **legacy:** rebuild favicon ([#2167](https://github.com/libretime/libretime/issues/2167))
|
||||
- **worker:** configure celery timezone ([#2169](https://github.com/libretime/libretime/issues/2169))
|
||||
- **legacy:** update or remove broken links
|
||||
- **legacy:** prepend file id in tmp upload filename ([#2173](https://github.com/libretime/libretime/issues/2173))
|
||||
- **legacy:** fail when uploading wma files ([#2172](https://github.com/libretime/libretime/issues/2172))
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0 beta 2
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date='2022-10-03' version='3.0.0-beta.2'/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
- systemd service hardening ([#2186](https://github.com/libretime/libretime/issues/2186))
|
||||
- extra systemd service hardening ([#2197](https://github.com/libretime/libretime/issues/2197))
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- start playout service after liquidsoap ([#2164](https://github.com/libretime/libretime/issues/2164))
|
||||
- include version variable inside containers
|
||||
- change version format
|
||||
- **legacy:** add play button to stream player ([#2190](https://github.com/libretime/libretime/issues/2190))
|
||||
- **legacy:** correct log levels ([#2196](https://github.com/libretime/libretime/issues/2196))
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
title: LibreTime 3.0.0
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<ReleaseHead date='2022-10-10' version='3.0.0'/>
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
- @jooola
|
||||
- @paddatrapper
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
- clean exit by catching keyboard interrupt ([#2206](https://github.com/libretime/libretime/issues/2206))
|
||||
- **legacy:** missing plupload uk_UA translation
|
||||
- **legacy:** jquery i18n translations for plupload
|
||||
- **legacy:** gracefully handle missing asset checksum
|
||||
- disable some systemd security features on bionic ([#2219](https://github.com/libretime/libretime/issues/2219))
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
### Missing AAC encoder for Liquidsoap
|
||||
|
||||
AAC streams are not working out of the box because the [current distributions packages of Liquidsoap are lacking a AAC encoder](https://github.com/libretime/libretime/issues/2184). If you need AAC streams, you need to [install Liquidsoap differently](https://www.liquidsoap.info/doc-1.4.4/install.html).
|
||||
|
||||
### On Ubuntu Bionic, analyzing some FLAC files fails
|
||||
|
||||
[On Ubuntu Bionic, analyzing some FLAC files fails with `UnplayableFileError`](https://github.com/libretime/libretime/issues/2218) because of an upstream bug in Liquidsoap. If you encounter this, you should [upgrade to a more recent distribution version](../developer-manual/development/releases.md#distributions-releases-support).
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
title: Releases
|
||||
---
|
||||
|
||||
:::info
|
||||
|
||||
LibreTime is following [semantic versioning](https://semver.org/).
|
||||
|
||||
:::
|
||||
|
||||
:::note
|
||||
|
||||
:sparkles: New LibreTime versions are released when it's ready :tm:.
|
||||
|
||||
:::
|
|
@ -1,2 +0,0 @@
|
|||
label: Releases
|
||||
position: 50
|
|
@ -1,16 +0,0 @@
|
|||
import TarballLink from '@site/src/components/TarballLink';
|
||||
|
||||
<p>This version was released the <strong>{props.date}</strong>.</p>
|
||||
|
||||
:::info
|
||||
|
||||
Please report new issues and/or feature requests in [the issue tracker](https://github.com/libretime/libretime/issues).
|
||||
|
||||
For general discussion or if you need help, you can join the [discourse](https://discourse.libretime.org/) forum or chat on the [mattermost](https://chat.libretime.org/) server.
|
||||
|
||||
:::
|
||||
|
||||
<p>
|
||||
The full tarball for the <code>{props.version}</code> release of
|
||||
LibreTime is available <TarballLink version={props.version}>here</TarballLink>.
|
||||
</p>
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
title: Unreleased
|
||||
---
|
||||
|
||||
import ReleaseHead from './\_release-head.md';
|
||||
|
||||
<!-- <ReleaseHead date='2022-01-01' version='3.0.0-alpha.11'/> -->
|
||||
|
||||
## :sparkling_heart: Contributors
|
||||
|
||||
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
|
||||
|
||||
## :rocket: Features
|
||||
|
||||
## :bug: Bug fixes
|
||||
|
||||
## :fire: Deprecation and removal
|
||||
|
||||
## :arrow_up: Before upgrading
|
||||
|
||||
:::caution
|
||||
|
||||
Please follow this **before the upgrade procedure**.
|
||||
|
||||
:::
|
||||
|
||||
## :arrow_up: Upgrading
|
||||
|
||||
## :warning: Known issues
|
||||
|
||||
The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
|
||||
|
||||
## :memo: Colophon
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
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:
|
|
@ -1,2 +0,0 @@
|
|||
label: User manual
|
||||
position: 30
|
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 9.6 KiB |