Installation de 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 12).
Configuration des dépôts
Les différents paquets ne sont pas dans les dépôts officiels, il faut commencer par configurer les dépôts additionnels suivants, par exemple en créant un fichier /etc/apt/sources.list.d/panik.list avec le contenu suivant :
Le premier dépôt contient certaines dépendances obligatoires, il est configuré avec la clé de signature 27FF12846574F8A0EFFF7A84DF69CC342CCFEC25, qui peut être installée ainsi :
curl https://deb.entrouvert.org/entrouvert.gpg \
> /etc/apt/trusted.gpg.d/entrouvert.gpg
Le second dépôt contient panikdb à proprement dit, il n’est pas configuré avec une clé, de là la nécessité d’y ajouter [trusted=yes]
.
Après ajout de la configuration et exécution de la commande apt update
pour récupérer la liste des paquets, il faut ensuite faire apt install entrouvert-repository
Installation des paquets
De la manière la plus classique qui soit, l’installation se fait via apt install panikdb
, elle doit se terminer en erreur, le service n’arrivant pas à démarrer car la base de données n’est pas encore configurée.
Configuration de la base de données
Après l’installation de PostgreSQL (apt install postgresql
), il faut y créer un utilisateur et une base de données, la commande sudo -u postgres psql
permet d’ouvrir un shell superutilisateur dans la base de données, l’utilisateur et la base de données se créent alors ainsi:
-- création de l'utilisation de la base de données panikdb
postgres=# CREATE USER panikdb;
CREATE ROLE
# création de la base de données elle-même
postgres=# CREATE DATABASE panikdb WITH OWNER = panikdb
TEMPLATE = template0
LC_COLLATE = 'fr_BE.UTF-8'
LC_CTYPE = 'fr_BE.UTF-8';
CREATE DATABASE
Le nom donnée correspond à celui présent dans la configuration standard, dans le fichier /etc/panikdb/settings.py
, les lignes
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'panikdb',
},
}
Il reste maintenant à créer dans cette base les différentes tables pour les données, cela se fait par la commande :
sudo -u panikdb panikdb-manage migrate
Validation de l’installation
Il y a maintenant possibilité de vérifier que tout s’est bien passé jusqu’à présent en lançant une commande spécifique à panikdb, pour voir ce qui est actuellement programmé à la radio :
# sudo -u panikdb panikdb-manage whatsonair
found episode: None
found emission: None
found nonstop: None
(il n’y a encore rien dans la base de données)
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/panikdb
avec le contenu suivant :
server {
listen 80;
server_name nom-de-domaine;
access_log /var/log/nginx/panikdb-access.log combined;
error_log /var/log/nginx/panikdb-error.log;
client_max_body_size 450M;
location /static {
alias /var/lib/panikdb/static;
}
location /media {
alias /var/lib/panikdb/media;
}
location / {
proxy_pass http://unix:/run/panikdb/panikdb.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/panikdb/settings.d/
, par exemple /etc/panikdb/settings.d/local.py
, avec le nom de domaine choisi :
ALLOWED_HOSTS = ['nom-de-domaine']
Démarrage de l’application
Il reste à démarrer le tout,
systemctl restart panikdb
La commande systemctl status panikdb
permet de voir que le service est bien OK,
# systemctl status panikdb
â—Ź panikdb.service - PanikDB
Loaded: loaded (/lib/systemd/system/panikdb.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-07-14 11:29:35 CEST; 51s ago
Process: 8066 ExecStartPre=/usr/bin/panikdb-manage migrate --noinput --verbosity 1 (code=exited, status=0/SUCCESS)
Process: 8087 ExecStartPre=/usr/bin/panikdb-manage collectstatic --noinput (code=exited, status=0/SUCCESS)
Main PID: 8107 (uwsgi)
Status: "uWSGI is ready"
Tasks: 11 (limit: 33498)
Memory: 230.1M
CPU: 3.393s
CGroup: /system.slice/panikdb.service
├─8107 panikdb uWSGI master
├─8126 panikdb uWSGI worker 1
├─8128 panikdb uWSGI worker 2
├─8130 panikdb uWSGI worker 3
├─8132 panikdb uWSGI worker 4
└─8134 panikdb uWSGI worker 5
jui 14 11:29:35 server uwsgi[8107]: *** Stats server enabled on /run/panikdb/stats.sock fd: 50 ***
jui 14 11:29:35 server uwsgi[8134]: python tracebacker for worker 5 available on /run/panikdb/py-tracebacker.sock.5
jui 14 11:29:40 server uwsgi[8134]: [pid: 8134|app: 0|req: 1/1] 0.0.0.0 () {42 vars in 650 bytes} [Thu Jul 14 11:29:40 2022] GET / => g
Il est maintenant possible de visiter la page http://nom-de-domaine/ et l’écran de connexion doit apparaître.
Et pour se connecter, il y a un premier compte à créer,
sudo -u panikdb panikdb-manage createsuperuser
Configurations de base
Dans /etc/panikdb/settings.d/local.py
(ou tout autre fichier .py de ce répertoire), un paramètre peut être posé pour avoir un titre différent dans l’entête des pages, par exemple :
SITE_TITLE = 'Une autre radio'
Moins accessoire, quelques paramètres peuvent être posés pour dés/activer certaines fonctionnalités,
- HAS_MEMBERSHIP_SUPPORT, pour la gestion des cotisations des membres,
- HAS_NEWSLETTERS, pour la gestion de la rédaction et envoi d’une newsletter hebdomadaire,
- HAS_NONSTOP, pour la gestion de la diffusion automatique,
- HAS_PIGE, pour la possibilité de télécharger des extraits de la pige d’antenne,
- HAS_REGIE, pour une page de contrôle pouvant être placée en écran d’accueil d’un ordinateur en régie,
- HAS_WIKI, pour le wiki interne
Exemple :
HAS_NEWSLETTERS = False
HAS_NONSTOP = True
HAS_PIGE = False
Configuration pour les courriels
Des messages sont envoyés pour la gestion des comptes (inscription ou « mot de passe perdu ») et pour la récupération des enregistrements de pige, l’adresse d’origine de ces messages peut être configurée via un paramètre DEFAULT_FROM_EMAIL, ex :
DEFAULT_FROM_EMAIL = 'panikdb@example.net'
Pour que les envois puissent fonctionner il faut idéalement avoir un serveur SMTP local, alternativement l’envoi peut se faire via un serveur distant, ça se configure à travers les paramètres EMAIL_HOST, EMAIL_HOST_PASSWORD, etc. (il s’agit de paramètres standards Django, cf leur documentation).