Kyle Robbertze
6f5275176e
chore: update docker compose commands ( #3132 )
...
### Description
Upstream has renamed docker-compose to docker compose for all commands
**This is a new feature**:
_Do the changes in this PR implement a new feature?_
**I have updated the documentation to reflect these changes**:
Yes
2025-01-09 16:09:28 +00:00
dakriy
2985d8554a
feat(legacy): trused header sso auth ( #3095 )
...
### Description
Allows LibreTime to support Trusted Header SSO Authentication.
**This is a new feature**:
Yes
**I have updated the documentation to reflect these changes**:
Yes
### Testing Notes
**What I did:**
I spun up an Authelia/Traefik pair and configured them to protect
LibreTime according to Authelia's documentation, I then tested that you
could log in via the trusted headers, and tested that old methods of
authentication were not affected.
**How you can replicate my testing:**
Using the following `docker-compose.yml` file
```yml
services:
postgres:
image: postgres:15
networks:
- internal
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER:-libretime}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-libretime} # Change me !
healthcheck:
test: pg_isready -U libretime
rabbitmq:
image: rabbitmq:3.13-alpine
networks:
- internal
environment:
RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_DEFAULT_VHOST:-/libretime}
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-libretime}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-libretime} # Change me !
healthcheck:
test: nc -z 127.0.0.1 5672
playout:
image: ghcr.io/libretime/libretime-playout:${LIBRETIME_VERSION:-latest}
networks:
- internal
init: true
ulimits:
nofile: 1024
depends_on:
- rabbitmq
volumes:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_playout:/app
environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
liquidsoap:
image: ghcr.io/libretime/libretime-playout:${LIBRETIME_VERSION:-latest}
networks:
- internal
command: /usr/local/bin/libretime-liquidsoap
init: true
ulimits:
nofile: 1024
ports:
- 8001:8001
- 8002:8002
depends_on:
- rabbitmq
volumes:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_playout:/app
environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
analyzer:
image: ghcr.io/libretime/libretime-analyzer:${LIBRETIME_VERSION:-latest}
networks:
- internal
init: true
ulimits:
nofile: 1024
depends_on:
- rabbitmq
volumes:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_storage:/srv/libretime
environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
worker:
image: ghcr.io/libretime/libretime-worker:${LIBRETIME_VERSION:-latest}
networks:
- internal
init: true
ulimits:
nofile: 1024
depends_on:
- rabbitmq
volumes:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
api:
image: ghcr.io/libretime/libretime-api:${LIBRETIME_VERSION:-latest}
networks:
- internal
init: true
ulimits:
nofile: 1024
depends_on:
- postgres
- rabbitmq
volumes:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_storage:/srv/libretime
legacy:
image: ghcr.io/libretime/libretime-legacy:${LIBRETIME_VERSION:-latest}
networks:
- internal
init: true
ulimits:
nofile: 1024
depends_on:
- postgres
- rabbitmq
volumes:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_assets:/var/www/html
- libretime_storage:/srv/libretime
nginx:
image: nginx
networks:
- internal
- net
ports:
- 8080:8080
depends_on:
- legacy
volumes:
- libretime_assets:/var/www/html:ro
- libretime_storage:/srv/libretime:ro
- ${NGINX_CONFIG_FILEPATH:-./nginx.conf}:/etc/nginx/conf.d/default.conf:ro
labels:
- 'traefik.enable=true'
- 'traefik.docker.network=libretime_net'
- 'traefik.http.routers.libretime.rule=Host(`libretime.example.com`)'
- 'traefik.http.routers.libretime.entrypoints=https'
- 'traefik.http.routers.libretime.tls=true'
- 'traefik.http.routers.libretime.tls.options=default'
- 'traefik.http.routers.libretime.middlewares=authelia@docker'
- 'traefik.http.services.libretime.loadbalancer.server.port=8080'
icecast:
image: ghcr.io/libretime/icecast:2.4.4
networks:
- internal
ports:
- 8000:8000
environment:
ICECAST_SOURCE_PASSWORD: ${ICECAST_SOURCE_PASSWORD:-hackme} # Change me !
ICECAST_ADMIN_PASSWORD: ${ICECAST_ADMIN_PASSWORD:-hackme} # Change me !
ICECAST_RELAY_PASSWORD: ${ICECAST_RELAY_PASSWORD:-hackme} # Change me !
traefik:
image: traefik:v2.11.12
container_name: traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- net
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.api.rule=Host(`traefik.example.com`)'
- 'traefik.http.routers.api.entrypoints=https'
- 'traefik.http.routers.api.service=api@internal'
- 'traefik.http.routers.api.tls=true'
- 'traefik.http.routers.api.tls.options=default'
- 'traefik.http.routers.api.middlewares=authelia@docker'
ports:
- '80:80'
- '443:443'
command:
- '--api'
- '--providers.docker=true'
- '--providers.docker.exposedByDefault=false'
- '--entrypoints.http=true'
- '--entrypoints.http.address=:80'
- '--entrypoints.http.http.redirections.entrypoint.to=https'
- '--entrypoints.http.http.redirections.entrypoint.scheme=https'
- '--entrypoints.https=true'
- '--entrypoints.https.address=:443'
- '--log=true'
- '--log.level=DEBUG'
authelia:
image: authelia/authelia
container_name: authelia
networks:
- net
volumes:
- ./authelia:/config
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.authelia.rule=Host(`auth.example.com`)'
- 'traefik.http.routers.authelia.entrypoints=https'
- 'traefik.http.routers.authelia.tls=true'
- 'traefik.http.routers.authelia.tls.options=default'
- 'traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/authz/forward-auth ' # yamllint disable-line rule:line-length
- 'traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true'
- 'traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email' # yamllint disable-line rule:line-length
- 'traefik.http.services.authelia.loadbalancer.server.port=9091'
restart: unless-stopped
environment:
- TZ=America/Los_Angeles
volumes:
postgres_data: {}
libretime_storage: {}
libretime_assets: {}
libretime_playout: {}
networks:
internal:
net:
```
The following libretime dev config modification:
```yml
general:
public_url: https://libretime.example.com
auth: LibreTime_Auth_Adaptor_Header
header_auth:
group_map:
host: lt-host
program_manager: lt-pm
admin: lt-admin
superadmin: lt-superadmin
```
And the following authelia config file:
```yml
---
###############################################################
# Authelia configuration #
###############################################################
server:
address: 'tcp://:9091'
buffers:
read: 16384
write: 16384
log:
level: 'debug'
totp:
issuer: 'authelia.com'
identity_validation:
reset_password:
jwt_secret: 'a_very_important_secret'
authentication_backend:
file:
path: '/config/users_database.yml'
access_control:
default_policy: 'deny'
rules:
- domain: 'traefik.example.com'
policy: 'one_factor'
- domain: 'libretime.example.com'
policy: 'one_factor'
session:
secret: 'insecure_session_secret'
cookies:
- name: 'authelia_session'
domain: 'example.com' # Should match whatever your root protected domain is
authelia_url: 'https://auth.example.com '
expiration: '1 hour' # 1 hour
inactivity: '5 minutes' # 5 minutes
regulation:
max_retries: 3
find_time: '2 minutes'
ban_time: '5 minutes'
storage:
encryption_key: 'you_must_generate_a_random_string_of_more_than_twenty_chars_and_configure_this'
local:
path: '/config/db.sqlite3'
notifier:
filesystem:
filename: '/config/notification.txt'
...
```
And the following authelia users database:
```yml
---
###############################################################
# Users Database #
###############################################################
# This file can be used if you do not have an LDAP set up.
# List of users
users:
test:
disabled: false
displayname: "First Last"
password: "$argon2id$v=19$m=16,t=2,p=1$SWVVVzcySlRLUEFkWWh2eA$qPs1ZmzmDXR/9WckDzIN9Q"
email: test@example.com
groups:
- admins
- dev
- lt-admin
...
```
add the following entries to your `hosts` file:
```
127.0.0.1 traefik.example.com
127.0.0.1 auth.example.com
127.0.0.1 libretime.example.com
```
Then visit `libretime.example.com` in your browser, and login as the
user `test` with password of `password`. You should then be taken to the
LibreTime homepage, and when you click on login, you should be
automatically logged in.
### **Links**
https://www.authelia.com/integration/trusted-header-sso/introduction/
https://doc.traefik.io/traefik/middlewares/http/forwardauth/
---------
Co-authored-by: Kyle Robbertze <paddatrapper@users.noreply.github.com>
2024-12-07 10:21:57 +00:00
Thomas Göttgens
299be3c142
feat: use custom intro/outro playlists per show ( #2941 )
...
### Description
Having a global intro and outro playlist in settings is not very
flexible for special programming. This adds an override intro/outro
playlist per show. If it is not set, the global one is used. also it's
ignored if there's no autloading at all.
**I have updated the documentation to reflect these changes**:
Yes
### Testing Notes
**What I did:**
Schedule 2 shows, one without defining custom lists, one with defining
custom lists. one hour before the show starts it should be populated
correctly. If you define a global list it shojuld be replaced with the
per-show list.
---------
Co-authored-by: Thomas Göttgens <tgoettgens@mail.com>
2024-10-14 21:07:41 +01:00
cdr78621
e344154d42
docs: update SoundExchange costs ( #3070 )
...
updated the minimum SoundExchange royalties for
non-profits/non-commercial
### Description
_Short summary of what is the issue and the solution._
**This is a new feature**:
_Do the changes in this PR implement a new feature?_
**I have updated the documentation to reflect these changes**:
_Are there documentation changes required as a result of these changes?
See
https://github.com/libretime/libretime/wiki/Documentation-Requirements_
### Testing Notes
**What I did:**
_What did you do to validate this PR?_
**How you can replicate my testing:**
_How can the reviewer validate this PR?_
### **Links**
_Issues links or other related resources. Use the line Closes:
#bug_number to
link a bug in the issue tracker._
2024-08-29 08:57:12 +01:00
Harry W
70735d4431
docs: use new docker compose command ( #3054 )
...
Improve the Docker install documentation, along with the `docker
compose` commands.
2024-07-06 10:48:30 +01:00
Jonas L
63572fdab9
docs: add missing v4.2.0 release note ( #3044 )
...
Forgot to prepare the release note for v4.2.0.
2024-06-22 22:58:15 +02:00
dakriy
451652bc40
feat(legacy): add current date macro to string block criteria ( #3013 )
...
### Description
It is useful to be able to automatically filter tracks to a certain date
or day when scheduling tracks for playback. This adds the ability to do
just that in any string filter with the `date{format}` macro.
Closes: #3012
2024-06-22 11:19:21 +02:00
Kyle Robbertze
6432efd791
docs: fix typo ( #3027 )
...
Minor typo that was being picked up by pre-commit
2024-06-05 16:54:12 +01:00
libretime-bot
1a985a4b37
chore(main): release 4.1.0 ( #2893 )
...
🤖 I have created a release *beep* *boop*
---
## [4.1.0](https://github.com/libretime/libretime/compare/4.0.0...4.1.0 )
(2024-05-05)
### Features
* **api:** implement file deletion
([#2960 ](https://github.com/libretime/libretime/issues/2960 ))
([9757b1b
](9757b1b78c
))
* build schedule events exclusively in playout
([#2946 ](https://github.com/libretime/libretime/issues/2946 ))
([40b4fc7
](40b4fc7f66
))
* **legacy:** add aac/opus support to dashboard player
([#2881 ](https://github.com/libretime/libretime/issues/2881 ))
([95283ef
](95283efc1f
))
* **legacy:** disable public radio page and redirect to login
([#2903 ](https://github.com/libretime/libretime/issues/2903 ))
([170d095
](170d09545e
))
* **legacy:** trim overbooked shows after autoloading a playlist
([#2897 ](https://github.com/libretime/libretime/issues/2897 ))
([a95ce3d
](a95ce3d229
))
* **legacy:** visual cue point editor
([#2947 ](https://github.com/libretime/libretime/issues/2947 ))
([da02e74
](da02e74f21
))
* start celery worker programmatically
([#2988 ](https://github.com/libretime/libretime/issues/2988 ))
([9c548b3
](9c548b365e
))
### Bug Fixes
* **analyzer:** backslash non utf-8 data when probing replaygain
([#2931 ](https://github.com/libretime/libretime/issues/2931 ))
([29f73e0
](29f73e0dcb
)),
closes [#2910 ](https://github.com/libretime/libretime/issues/2910 )
* apply replay gain preferences on scheduled files
([#2945 ](https://github.com/libretime/libretime/issues/2945 ))
([35d0dec
](35d0dec4a8
))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.49.1
([#2899 ](https://github.com/libretime/libretime/issues/2899 ))
([3e05748
](3e05748d2d
))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.51.1
([#2963 ](https://github.com/libretime/libretime/issues/2963 ))
([22c303c
](22c303cfff
))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.53.1
([#2972 ](https://github.com/libretime/libretime/issues/2972 ))
([9192aaa
](9192aaa2bb
))
* **deps:** update dependency gunicorn to v22 (security)
([#2993 ](https://github.com/libretime/libretime/issues/2993 ))
([a2cf769
](a2cf7697a9
))
* incorrect docker compose version
([#2975 ](https://github.com/libretime/libretime/issues/2975 ))
([634e6e2
](634e6e236d
))
* **installer:** setup the worker entrypoint
([#2996 ](https://github.com/libretime/libretime/issues/2996 ))
([71b20ae
](71b20ae3c9
))
* **legacy:** allow deleting file with api token
([#2995 ](https://github.com/libretime/libretime/issues/2995 ))
([86da46e
](86da46ee3a
))
* **legacy:** allow updating track types code
([#2955 ](https://github.com/libretime/libretime/issues/2955 ))
([270aa08
](270aa08ae6
))
* **legacy:** avoid crash when lot of streams in configuration
([#2915 ](https://github.com/libretime/libretime/issues/2915 ))
([12dd477
](12dd477312
))
* **legacy:** ensure validation is performed on the track type form
([#2985 ](https://github.com/libretime/libretime/issues/2985 ))
([5ad69bf
](5ad69bf0b7
))
* **legacy:** fix hidden fields in edit file form
([#2932 ](https://github.com/libretime/libretime/issues/2932 ))
([f4b260f
](f4b260fdf7
))
* **legacy:** replay_gain_modifier should be a system preference
([#2943 ](https://github.com/libretime/libretime/issues/2943 ))
([37d1a76
](37d1a7685e
))
* remove obsolete docker compose version
([#2982 ](https://github.com/libretime/libretime/issues/2982 ))
([fb0584b
](fb0584b021
))
* trigger legacy tasks manager every 5m
([#2987 ](https://github.com/libretime/libretime/issues/2987 ))
([7040d0e
](7040d0e4bd
))
* **worker:** ensure celery beat is started
([#3007 ](https://github.com/libretime/libretime/issues/3007 ))
([bfde17e
](bfde17edf7
))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please ). See
[documentation](https://github.com/googleapis/release-please#release-please ).
---------
Co-authored-by: jo <ljonas@riseup.net>
2024-05-05 23:45:39 +02:00
Jonas L
f1c7dd89f1
docs: prevent reverse proxy from constraining the upload limits ( #2984 )
...
### Description
The upload limits settings are configured in the libretime nginx config,
but must also be part of the reverse proxy.
2024-04-13 15:12:07 +02:00
Thomas Göttgens
feca75b28b
docs: get libfdk-aac from non-free source for debian 11 ( #2954 )
...
Co-authored-by: Jonas L <jooola@users.noreply.github.com>
2024-02-29 22:08:51 +01:00
Kyle Robbertze
4584b52121
docs: fix broken link
2024-02-19 08:27:23 +00:00
Jonas L
37d1a7685e
fix(legacy): replay_gain_modifier should be a system preference ( #2943 )
2024-02-08 19:48:49 +01:00
Thomas Göttgens
170d09545e
feat(legacy): disable public radio page and redirect to login ( #2903 )
...
### Description
Many people don't need the public page and use libretime purely for
playout management. This adds the ability to have libretime publicly
available but only present the login page to the user.
**I have updated the documentation to reflect these changes**:
no, but i will add documentation if this PR is accepted.
### Testing Notes
**What I did:**
Toggle the new ceckbox on the general settings, log out and back in and
check behaviour.
note: this may have conflicts with the trim overbooked PR since the
toggle sits in the same place. If both are accepted this needs to be
formatted nicely :-)
---------
Co-authored-by: Thomas Göttgens <tgoettgens@mail.com>
Co-authored-by: Jonas L. <jooola@users.noreply.github.com>
Co-authored-by: Kyle Robbertze <paddatrapper@users.noreply.github.com>
Co-authored-by: jo <ljonas@riseup.net>
2024-02-02 19:04:12 +01:00
Thomas Göttgens
b14469722e
docs(playout): close warning box properly ( #2911 )
2024-01-20 17:06:35 +00:00
Kyle Robbertze
54ec07d2bd
docs: fix broken link to install guide ( #2908 )
...
### Description
Follow up to #2904
2024-01-19 17:12:30 +00:00
Thomas Göttgens
b6c3ece7d9
docs(playout): add a tutorial to enable AAC in liquidsoap ( #2904 )
...
Documentation update regarding #2184
---------
Co-authored-by: Thomas Göttgens <tgoettgens@mail.com>
2024-01-19 16:58:22 +00:00
Jonas L
f6d57d5f2d
chore: introduce the stable-4.x branch ( #2888 )
...
### Description
Related to https://github.com/libretime/libretime/issues/2887
2024-01-13 12:50:51 +01:00
libretime-bot
4795170feb
chore(main): release 4.0.0 ( #2834 )
...
🤖 I have created a release *beep* *boop*
---
## [4.0.0](https://github.com/libretime/libretime/compare/3.2.0...4.0.0 )
(2024-01-07)
### ⚠ BREAKING CHANGES
* The media file serving is now handled by Nginx instead of the API
service. The `storage.path` field is now used in the Nginx
configuration, so make sure to update the Nginx configuration file if
you change it.
* **installer:** The default listen port for the installer is now
`8080`. We recommend that you put a reverse proxy in front of LibreTime.
* **installer:** The `--update-nginx` flag was removed from the
installer. The nginx configuration deployed by the installer will now
always be overwritten. Make sure to move your customizations to a
reverse proxy configuration.
* The default system output (`stream.outputs.system[].kind`) changed
from `alsa` to `pulseaudio`. Make sure to update your configuration file
if you rely on the default system output.
* The `general.secret_key` configuration field is now required. Make
sure to update your configuration file and add a secret key.
### Features
* default system output is now `pulseaudio`
([#2842 ](https://github.com/libretime/libretime/issues/2842 ))
([083ee3f
](083ee3f1dd
)),
closes [#2542 ](https://github.com/libretime/libretime/issues/2542 )
* disable uvicorn worker lifespan
([#2845 ](https://github.com/libretime/libretime/issues/2845 ))
([8743c84
](8743c84d0f
))
* **installer:** add the `--storage-path` flag
([#2865 ](https://github.com/libretime/libretime/issues/2865 ))
([5b23852
](5b23852f8d
))
* **installer:** change default listen port to 8080
([#2852 ](https://github.com/libretime/libretime/issues/2852 ))
([f72b7f9
](f72b7f9c97
))
* **installer:** remove the `--update-nginx` flag
([#2851 ](https://github.com/libretime/libretime/issues/2851 ))
([35d7eac
](35d7eace13
))
* **playout:** configure device for alsa and pulseaudio system outputs
([#2654 ](https://github.com/libretime/libretime/issues/2654 ))
([06af18b
](06af18b84e
))
* rewrite cloud-init config
([#2853 ](https://github.com/libretime/libretime/issues/2853 ))
([8406d52
](8406d520d7
))
* run python in optimized mode
([#2874 ](https://github.com/libretime/libretime/issues/2874 ))
([3f7fc99
](3f7fc99b6b
))
* the `general.secret_key` configuration field is now required
([#2841 ](https://github.com/libretime/libretime/issues/2841 ))
([0d2d1a2
](0d2d1a2673
)),
closes [#2426 ](https://github.com/libretime/libretime/issues/2426 )
* use nginx to serve media files
([#2860 ](https://github.com/libretime/libretime/issues/2860 ))
([4603c17
](4603c1759f
))
### Bug Fixes
* add parent function name in setValue exception
([#2777 ](https://github.com/libretime/libretime/issues/2777 ))
([c764a5a
](c764a5a648
))
* **api:** ensure non ascii paths are handled by X-Accel-Redirect
([#2861 ](https://github.com/libretime/libretime/issues/2861 ))
([0ce63f3
](0ce63f3bf0
))
* **api:** enum schema description
([#2803 ](https://github.com/libretime/libretime/issues/2803 ))
([976b70e
](976b70ed32
))
* **api:** let nginx handle the media file content type
([#2862 ](https://github.com/libretime/libretime/issues/2862 ))
([72268ad
](72268ad9bb
))
* **api:** move gunicorn worker config to python file
([#2854 ](https://github.com/libretime/libretime/issues/2854 ))
([43221d9
](43221d9d7f
))
* **api:** paths with question marks chars are handled by
X-Accel-Redirect
([#2875 ](https://github.com/libretime/libretime/issues/2875 ))
([b2c1ceb
](b2c1ceb89f
))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.42.1
(main) ([#2765 ](https://github.com/libretime/libretime/issues/2765 ))
([8ae4dce
](8ae4dce9e7
))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.43.2
(main) ([#2848 ](https://github.com/libretime/libretime/issues/2848 ))
([62e5f4d
](62e5f4dfbb
))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.45.1
(main) ([#2855 ](https://github.com/libretime/libretime/issues/2855 ))
([6f84328
](6f84328380
))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.46.1
(main) ([#2868 ](https://github.com/libretime/libretime/issues/2868 ))
([4827dbc
](4827dbce71
))
* **legacy:** allow uploading opus files
([#2804 ](https://github.com/libretime/libretime/issues/2804 ))
([f252a16
](f252a16637
))
* **legacy:** declare previously undeclared variable
([#2793 ](https://github.com/libretime/libretime/issues/2793 ))
([e2cfbf4
](e2cfbf4c03
))
* **legacy:** ensure last played criteria works with never played files
([#2840 ](https://github.com/libretime/libretime/issues/2840 ))
([24ee383
](24ee3830c2
))
* **playout:** increase file download chunk size to 8192 bytes
([#2863 ](https://github.com/libretime/libretime/issues/2863 ))
([7ed1be1
](7ed1be1816
))
* **playout:** remove empty file when the download request failed
([#2864 ](https://github.com/libretime/libretime/issues/2864 ))
([2facbfa
](2facbfaff2
))
* **worker:** unbound variable when episode url returns HTTP 404
([#2844 ](https://github.com/libretime/libretime/issues/2844 ))
([3f39689
](3f396895e5
))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please ). See
[documentation](https://github.com/googleapis/release-please#release-please ).
---------
Co-authored-by: jo <ljonas@riseup.net>
2024-01-07 16:56:33 +01:00
Jonas L
4603c1759f
feat!: use nginx to serve media files ( #2860 )
...
Closes #2522
To reduce the strain on the API service, we moved the media file serving
to the Nginx web server. The API is still handling the authentication,
but delegates the serving using the `X-Accel-Redirect` header.
BREAKING CHANGE: The media file serving is now handled by Nginx instead
of the API service. The `storage.path` field is now used in the Nginx
configuration, so make sure to update the Nginx configuration file if
you change it.
2023-12-30 18:59:15 +01:00
Jonas L
f72b7f9c97
feat(installer)!: change default listen port to 8080 ( #2852 )
...
Closes #2575
Closes #2543
BREAKING CHANGE: The default listen port for the installer is now
`8080`. We recommend that you put a reverse proxy in front of LibreTime.
2023-12-29 17:49:07 +01:00
Jonas L
35d7eace13
feat(installer)!: remove the `--update-nginx` flag ( #2851 )
...
### Description
Related to #2543
BREAKING CHANGE: The `--update-nginx` flag was removed from the
installer. The nginx configuration deployed by the installer will now
always be overwritten. Make sure to move your customizations to a
reverse proxy configuration.
2023-12-29 15:55:35 +01:00
maxtim
06af18b84e
feat(playout): configure device for alsa and pulseaudio system outputs ( #2654 )
...
### Description
Add hardware configuration to liquidsoap so that users may
set hardware output in config.yml.
---------
Co-authored-by: jo <ljonas@riseup.net>
2023-12-29 15:22:43 +01:00
Jonas L
083ee3f1dd
feat!: default system output is now `pulseaudio` ( #2842 )
...
BREAKING CHANGE: The default system output
(`stream.outputs.system[].kind`) changed from `alsa` to `pulseaudio`.
Make sure to update your configuration file if you rely on the default
system output.
Closes #2542
2023-12-27 18:23:40 +01:00
Jonas L
0d2d1a2673
feat!: the `general.secret_key` configuration field is now required ( #2841 )
...
BREAKING CHANGE: The `general.secret_key` configuration field is now
required. Make sure to update your configuration file and add a secret
key.
Closes #2426
2023-12-27 18:15:47 +01:00
Jonas L
d5dea88521
docs: fix release note title ( #2829 )
2023-12-22 21:32:20 +01:00
Jonas L
e7a678e91f
build: replace custom release script with release-please ( #2817 )
...
* build: replace custom release script with release-please
* include package-name
2023-12-22 19:19:12 +01:00
Jonas L
26737abad2
chore: release 3.2.0 ( #2754 )
2023-10-16 21:26:59 +02:00
Jonas L
b2e512cbcd
feat: add mobile devices stream config field ( #2744 )
2023-10-14 08:13:04 +01:00
Jonas L
132d64197e
docs: fix broken link ( #2616 )
2023-07-07 08:30:21 +01:00
jo
c2c0be1fbc
feat(api): add email configuration
2023-06-02 07:44:34 +01:00
Kyle Robbertze
2f32241351
docs: update chat links to point to matrix ( #2571 )
2023-05-30 11:49:37 +02:00
jo
08e2eec0a3
chore: release 3.1.0
2023-05-26 15:34:43 +02:00
jo
a7ed0697a1
docs: add 3.1.x distribution releases support
2023-05-26 15:34:43 +02:00
Jonas L
e207b6e388
docs: be consistent with example domain ( #2568 )
2023-05-26 14:00:34 +01:00
jo
17fb1c45df
docs: install using a reverse proxy by default
2023-05-26 13:46:46 +01:00
jo
f74062a622
docs: fix icecast certificates bundle command
2023-05-26 13:46:46 +01:00
jo
d25e0dd171
docs: remove setup without reverse proxy
2023-05-26 13:46:46 +01:00
Jonas L
d9663c0a4e
docs: split airtime migration into more steps ( #2565 )
2023-05-25 14:59:08 +01:00
Jonas L
a67a8a880c
docs: improve airtime migration guide ( #2564 )
2023-05-25 14:46:20 +01:00
jo
9edfd710e6
docs: add note about unused packages
2023-05-12 13:44:31 +01:00
jo
7b2939a7a6
chore: force docs sync
2023-05-12 13:44:31 +01:00
jo
d01edc4dce
Merge branch 'stable'
2023-05-01 10:16:56 +02:00
Jonas L
7f1492aac0
docs: fix broken link ( #2532 )
2023-04-28 12:07:45 +01:00
jo
b2fc3a5ecf
feat(playout): allow harbor ssl configuration
2023-04-24 14:58:34 +01:00
jo
8764feded9
docs: ensure example values are replaced
2023-04-24 14:58:34 +01:00
jo
2fd5b50229
docs: add certbot setup guide
2023-04-21 20:47:43 +01:00
jo
a375e5b917
docs: improve install guides
2023-04-21 20:47:43 +01:00
jo
ca449c1a3b
docs: improve reverse proxy docs
2023-04-21 20:47:43 +01:00
Jonas L
5a8e8d298d
docs: docker config template install with envsubst ( #2517 )
2023-04-21 17:35:01 +01:00