PanikDB - gestion radio

Installation de panikweb

Comme pour panikdb, la plus simple et la seule méthode qui va être détaillée ici est l’installation à base de paquets .deb sur un système Debian à jour (à l’heure actuelle = Debian 11).

La configuration des dépôts suit celle de panikdb (cf la section correspondante).

Installation des paquets

L’installation se fait via apt install panikweb, si l’installation se fait sur le même serveur que panikdb et que la configuration de la base de données n’a pas été manuellement modifiée, l’installation se déroulera sans accroche. Dans le cas contraire elle se terminera sur le service panikweb ne pouvant pas démarrer et il faudra configurer la base de données.

Validation de l’installation

Comme pour panikdb la vérification de l’installation peut se faire en utilisant la commande whatsonair,

# sudo -u panikdb panikweb-manage whatsonair
found episode: None
found emission: None
found nonstop: None

Configuration du serveur web

Le serveur nginx a normalement déjà été installé il reste à le configurer, pour cela il faut créer un fichier /etc/nginx/sites-enabled/panikweb avec le contenu suivant :

map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}

server {
listen 80;
server_name nom-de-domaine;
access_log /var/log/nginx/panikweb-access.log combined;
error_log /var/log/nginx/panikweb-error.log;

location /static {
alias /var/lib/panikweb/static;
gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain
text/css
application/json
application/javascript
text/xml application/xml
application/xml+rss
text/javascript;
}

location ~ ^/media/cache/(.+)$ {
root /;
set $orig_uri $1;
set $webp_uri $orig_uri$webp_suffix;
try_files /var/lib/panikweb/media/cache/$webp_uri
/var/lib/panikweb/media/cache/$orig_uri
=404;
expires 365d;
add_header Cache-Control "public";
}

location /media {
alias /var/lib/panikweb/media;
limit_rate_after 10m;
limit_rate 5000k;
}

location /robots.txt {
return 200 "";
}

location / {
proxy_pass http://unix:/run/panikweb/panikweb.sock;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
}

Pour l’installation initiale ça peut rester ainsi, pour une exploitation réelle il faudra y configurer l’accès HTTPS.

Il est nécessaire de préciser aussi au niveau de l’application Django le nom de domaine qui sera utilisé, pour cela il faut déposer un fichier dans le répertoire /etc/panikweb/settings.d/, par exemple /etc/panikweb/settings.d/local.py, avec le nom de domaine choisi :

ALLOWED_HOSTS = ['nom-de-domaine']

Démarrage de l’application

Il reste à re/démarrer le tout,

systemctl restart panikweb

et la commande systemctl status panikweb permet de voir que le service est OK :

# systemctl status panikweb
* panikweb.service - PanikWeb
Loaded: loaded (/lib/systemd/system/panikweb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-10-01 18:01:17 UTC; 2s ago
Process: 237595 ExecStartPre=/usr/bin/panikweb-manage migrate --noinput --verbosity 1 (code=exited, status=0/SUCCESS)
Process: 237615 ExecStartPre=/usr/bin/panikweb-manage collectstatic --noinput (code=exited, status=0/SUCCESS)
Main PID: 237634 (uwsgi)
Status: "uWSGI is ready"
Tasks: 11 (limit: 193286)
Memory: 52.0M
CPU: 6.922s
CGroup: /system.slice/panikweb.service
|-237634 panikweb uWSGI master
|-237654 panikweb uWSGI worker 1
|-237655 panikweb uWSGI worker 2
|-237657 panikweb uWSGI worker 3
|-237659 panikweb uWSGI worker 4
`-237661 panikweb uWSGI worker 5

oct 01 18:01:17 test uwsgi[237634]: spawned uWSGI worker 2 (pid: 237655, cores: 1)
oct 01 18:01:17 test uwsgi[237634]: spawned uWSGI worker 3 (pid: 237657, cores: 1)
oct 01 18:01:17 test uwsgi[237657]: python tracebacker for worker 3 available on /run/panikweb/py-tracebacker.sock.3

Il est maintenant possible de visiter la page http://nom-de-domaine/ et la page d’accueil du site doit s’afficher.

Configuration de base

Une fois validé que l’application répond bien, quelques éléments sont essentiels à configurer, de manière très basique déjà, le nom de la radio :) Cela se passe dans un fichier dans le répertoire /etc/panikweb/settings.d/, par exemple /etc/panikweb/settings.d/local.py.

Essentiellement, la configuration de base peut se faire ainsi :

RADIO_NAME = 'Example Radio'
RADIO_LONG_NAME = 'Example Radio'
RADIO_META_DESCRIPTION = 'Une radio de démonstration'
RADIO_META_DEFAULT_IMAGE_PATH = None
WEBSITE_BASE_URL = 'https://www.example.net/'
PODCASTS_DEFAULT_IMAGE_PATH = ''

Il faut également configurer l’adresse du ou des streams pour la diffusion audio :

RADIO_STREAM_URLS = [
{
'id': 'ogg',
'm3u_url': 'https://streaming-server/example.ogg.m3u',
'url': 'https://streaming-server/example.ogg',
'type': 'audio/ogg',
},
{
'id': 'mp3',
'm3u_url': 'https://streaming-server/example.mp3.m3u',
'url': 'https://streaming-server/example.mp3',
'type': 'audio/mpeg',
},
]

Quelques paramètres permettent également de contrôler les éléments de la page d’accueil,

HOME_EMISSIONS_COUNT = 3
HOME_FOCUS_COUNT = 3
HOME_NEWSITEMS_COUNT = 3
HOME_PODCASTS_COUNT = 3

Pour la suite, pour une personnalisation graphique avancée, il est temps de passer à la personnalisation du site.

Dernière modification : 16 décembre 2023, 11:53