Installer NextCloud dans un Pod Podman

Cet article contient la procédure que j’ai utilisée pour mettre en place facilement une instance de NextCloud sur mon serveur domestique. Sa vocation principale est de me permettre de réitérer la procédure, sans aucune garantie d’adéquation avec un besoin autre.

Installation

On créé un pod « nextcloud », qui contient 2 conteneur : l’instance NextCloud, et une base de donnée MariaDB.

Les données des 2 conteneurs sont stockées dans les volumes respectifs « nextcloud_data » et « nextcloud_mariadb » pour permettre leur sauvegarde ultérieure.

Il suffit de 3 commandes :

# podman pod create --name nextcloud-pod -p 8080:80

# podman run -d --name mariadb \
  --pod nextcloud-pod \
  -e MARIADB_ROOT_PASSWORD=XXXXXXXXX \
  -e MARIADB_USER=nextcloud \
  -e MARIADB_PASSWORD=YYYYYYYYY \
  -e MARIADB_DATABASE=nextcloud \
  -v nextcloud_mariadb:/var/lib/mysql \
  docker.io/library/mariadb:latest

# podman run -d --name nextcloud \
  --pod nextcloud-pod  \
  -e MYSQL_HOST=mariadb \
  -e MYSQL_DATABASE=nextcloud \
  -e MYSQL_USER=nextcloud \
  -e MYSQL_PASSWORD=YYYYYYYYY \
  -v nextcloud_data:/var/www/html \
  docker.io/library/nextcloud:latest

Remplacer bien sûr XXXXXXXXX ainsi que YYYYYYYYY par des mots de passe fort.

Ensuite, l’installation se poursuit dans un navigateur, à l’adresse ZZZ.ZZZ.ZZZ.ZZZ:8080 (ZZZ.ZZZ.ZZZ.ZZZ étant l’adresse IP du serveur).

Cliquer, sur « Installer » . J’obtiens ensuite une erreur de récupération des applications recommandée, mais cela ne semble pas avoir d’impact, il suffit de saisir à nouveau l’URL pour retourner sur la page principale de NextCloud.

Démarrage automatique

# podman generate systemd --new --name mariadb -f
# podman generate systemd --new --name nextcloud -f
# mv container-* /etc/systemd/system/
# systemctl enable container-mariadb.service
# systemctl enable container-nextcloud.service

Sources :
https://www.ojambo.com/install-nextcloud-in-podman-container
https://hub.docker.com/_/mariadb

BEOTOOTH 5500 : Un récepteur Bluetooth compatible Datalink

Introduit en 1980 par le fabricant danois Bang & Olufsen avec le système Beolab 8000, le protocole Datalink 80 raccorde par un bus de données les différents appareils d’un même système , offrant à l’utilisateur un contrôle unifié sur ce dernier. Ainsi, une télécommande unique contrôle l’ensemble du système, et commencer la lecture sur un appareil provoque le basculement automatique de l’amplificateur sur l’entrée associée, ainsi que la mise en pause des autres appareils. Le protocole évolue au fil des années, voyant notamment, avec le Beosystem 5500, l’addition d’une transmission en temps réelle de l’état des appareils, alors affiché sur la télécommande (Master Control Panel 5500)

Master Control Panel 5500

Étant propriétaire d’un système 5500 (BEOMASTER 5500, BEOCORD 5500, BEOGRAM CD 5500, et MASTER CONTROL PANEL 5500), j’ai souhaité lui ajouter une fonction Bluetooth audio, qui, contrairement à un adaptateur Bluetooth Audio classique, exploiterait le protocole Datalink pour offrir la même interface de contrôle que les autres éléments du système.

Le BEOMASTER 5500 étant doté d’une entrée TP2 permettant le contrôle d’un second BEOCORD, j’ai entrepris de concevoir un récepteur Bluetooth capable de simuler un BEOCORD 5500 sur le bus Datalink. Ce récepteur relaie les commandes du système (PLAY/PAUSE, etc.) via Bluetooth et transmet les informations sur la piste en cours de lecture au système.

Après un premier prototype à base d’ESP32 ne me donnant par entièrement satisfaction (codec SBC seulement, et stabilité de la connexion marginale), j’ai remanié le projet autour d’un module BM83 de Microchip, et je suis parvenu à un résultat satisfaisant, que j’ai nommé le BEOTOOTH 5500.

Boitier BEOTOOTH 5500
Lire la suite

Linux Mint / Ubuntu : Transmettre les informations de lecture multimédia via Bluetooth (AVRCP TG)

Ayant récemment développé un projet de récepteur audio Bluetooth utilisant AVRCP pour récupérer les informations du lecteur multimédia actif, j’ai pu constater que Linux Mint ne communique aucune information sur le média en cours de lecture à travers la liaison Bluetooth.

Après quelques recherche, il s’avère que c’est le démon MPRIS-PROXY qui est chargé de cette fonction, mais celui-ci ne semble pas actif sous Mint. Pire, il est introuvable ni à son emplacement supposé (/bin), ni dans les paquets !

La frayeur est de courte durée, il est bien installé avec le paquet bluez, et se situe à /lib/bluetooth/mpris-proxy.

Il suffit pour l’activer de créer un fichier de configuration pour systemd en mode utilisateur :

$ mkdir ~/.config/systemd/user
$ nano ~/.config/systemd/user/mpris-proxy.service

Y ajouter le contenu suivant :

[Unit]
Description=Forward bluetooth media controls to MPRIS

[Service]
Type=simple
# For Linux Mint <= 21.3 or Ubuntu < 24.xx
#ExecStart=/lib/bluetooth/mpris-proxy
# For Linux Mint >= 22 or Ubuntu >= 24.xx
ExecStart=/bin/mpris-proxy

[Install]
WantedBy=default.target

Il ne reste plus qu’à l’activer :

$ systemctl --user start mpris-proxy.service
$ systemctl --user enable mpris-proxy.service

On peut vérifier son bon fonctionnement avec la commande suivante :

$ systemctl --user status mpris-proxy.service

Qui doit nous retourner cette réponse :

Et voilà, les informations de la lecture multimédia (état lecture / pause, piste en cours, et position) sont maintenant accessibles par les périphériques Bluetooth connectés.

Edit : Mise à jour pour Mint 22 / Ubuntu 24.xx

Codecs Bluetooth supplémentaires pour Linux Mint 21

Par défaut le seul codec audio disponible sous Linux Mint 21 est le codec SBC standard, de relativement faible qualité.

Il est cependant possible d’utiliser des codecs supplémentaires, en installant le module pulseaudio disponible ici :

https://github.com/EHfive/pulseaudio-modules-bt

(Instructions de compilations fournie sur la page).

Une application Kiosk Wayland, avec Weston

Cet article contient une synthèse de la procédure à suivre pour exécuter une application en mode Kiosk sous Debian, en utilisant le compositeur Weston.

Il existe le compositeur « cage » dédié à ce rôle, mais son manque de flexibilité est vite limitant (il est notamment impossible de désactiver une sortie video).

Le compositeur ainsi que l’application sont exécutés par un utilisateur « kiosk » avec des droits restreints, évitant de compromettre toute la sécurité du système en cas de crash du compositeur / retour au shell

1. Installer weston et seatd

seatd arbitre l’accès au matériel d’entrée / sortie ( écran / clavier + souris ), et est nécessaire à l’utilisation de weston.

# apt install tmux weston seatd  

2. Fichier de configuration weston.ini

On créé le fichier weston.ini, que l’on place dans le répertoire personnel de l’utilisateur « kiosk » , avec pour contenu suivant :

[core]
backend=drm-backend.so
idle-time=0

[output]
name=HDMI-A-1
mode=1920x1080
transform=rotate-90

[output]
name=eDP-1
mode=off

Le bloc [core] spécifie l’utilisation du pilote « drm », qui prend directement la main sur la carte graphique sans passer par un autre compositeur, et désactive l’écran de veille.

Les blocs [output] configurent les différentes sorties video. Dans ce cas l’une est désactivée, tandis que l’autre est en mode portrait. Le nom des sorties provient du répertoire /sys/class/drm.

3. Script de lancement

Créer le script start_kiosk.sh dans le répertoire personnel de l’utilisateur « kiosk ». Son contenu est le suivant :

#!/bin/bash
weston --config /home/kiosk/weston.ini &
sleep 5s # could be less
export WAYLAND_DISPLAY=wayland-1
export DISPLAY=:1
exec /home/kiosk/kiosk_app --platform wayland 2>log_kiosk.txt

Modifier la commande de lancement pour correspondre au chemin du fichier weston.ini

La ligne « sleep 5s » pourrait être modifiée pour attendre une notification de démarrage de weston. Des solutions existent utilisant systemd, mais je n’ai pas trouvé de solution simple adaptée à mon cas.

Dans mon cas, j’exécute une application Qt nommée « kiosk_app », pour Qt il est nécessaire de spécifier –platform wayland, sans quoi l’application ne démarre pas.

4. Login automatique de l’utilisateur « kiosk »

Créé le fichier /etc/systemd/system/getty@tty1.service.d/autologin.conf avec pour contenu

[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear -a kiosk %I $TERM
Type=simple
Environment=XDG_SESSION_TYPE=wayland

Il est nécessaire d’utiliser le tty1 plutôt que le traditionnel tty7 pour l’interface graphique, car le changement de terminal automatique n’est pas fiable.

5. Conclusion

Cette approche permet le lancement d’une application en mode kiosk, sans aucun bureau traditionnel installé. L’utilisation de Wayland améliore grandement la fluidité, et garanti notamment l’absence de « tearing » (affichage partiel de 2 images consécutives) qui est très visible voire dérangeant lors de la lecture de video avec X11.

Linux Mint : Compiler un noyau patché

Il existe beaucoup de documentation sur la façon de compiler un noyau Ubuntu / Linux Mint à partir des sources, mais il s’avère que la plupart sont incomplètes et/ou obsolètes. L’utilisation d’une méthode inadaptée n’est décelable qu’après plusieurs heures de compilation, découvrir la bonne méthode par tâtonnement peut s’avérer particulièrement frustrant.

Voici la bonne méthode (source en anglais), éditée par mes soins pour éviter de dérouler toute la procédure en super-utilisateur (root), car cela n’est pas nécessaire.

1. Activer les dépôts de sources.

Depuis le menu Mint, lancer le logiciel « Sources de logiciels », et activer « Dépôts de code source ».

Cliquer ensuite sur « Valider » pour mettre a jour le cache.

2. Installer les outils de compilation

Exécuter en console les commandes suivantes :

sudo apt update
sudo apt build-dep linux linux-image-$(uname -r)

sudo apt install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm build-essential libncurses5-dev gcc bc dwarves

3. Récupérer le code source du noyau

Le code source du noyau Linux est disponible sur le site http://kernel.org, mais ce qui nous intéresse ici est le noyau patché par Ubuntu, qui est utilisé par Linux Mint. Téléchargeons les sources dans un dossier créé à cette fin :

mkdir linux-src
cd linux-src
apt source linux-image-unsigned-$(uname -r)

Plaçons-nous dans le dossier téléchargé, et donnons les permissions d’exécutions au scripts :

cd linux-hwe-6.2-6.2.0  # A mettre à jour avec le nom de votre noyau
chmod a+x debian/scripts/*
chmod a+x -R ./scripts

4. Appliquer vos patches

En exécutant, pour chaque patch, la commande suivante

patch -p1 <CHEMIN_DU_FICHIER_PATCH>.patch

5. Copier la configuration

cp /boot/config-$(uname -r) ./.config

# update config for new kernel
make oldconfig

6. Lancer la compilation

En exécutant la commande suivante :

make -j16 deb-pkg LOCALVERSION=-custom

L’argument « -j16 » permet de sélectionner le nombre de tâches exécutées en parallèle, une valeur plus élevée nécessitant plus de ressources matérielles (RAM notamment). La valeur idéal correspond généralement au nombre de thread exécutables en parallèle sur le système (par exemple 4 dans le cas d’un processeur 2 core / 4 threads).

7. Installer le nouveau noyau

# change to parent dir
cd ..

dpkg -i *.deb

update-grub

8. Démarrer sur le nouveau noyau

Le nouveau noyau est maintenant disponible au démarrage, dans le menu du chargeur d’amorçage Grub. Attention, ce n’est pas forcément le choix par défaut ! Il est reconnaissable a son préfixe « custom ».

Programmer sur microcontrôleur CH55x avec SDCC sous Linux

Mes notes succinctes à ce sujet :

Installation

Récupérer la bibliothèque ch554_sdcc : https://github.com/Blinkinlabs/ch554_sdcc (copie ci dessous si disparition du repo)

Récupérer l’outil de programmation ch552_tool : https://github.com/MarsTechHAN/ch552tool (copie ci dessous si disparition du repo)

Installer sdcc

$ apt-get install sdcc

Copier un exemple et l’utiliser comme base (le Makefile pointe vers un Makefile.include qui contient le nécessaire pour compiler vers le MCU cible).

Flasher le code

Le MCU contient un bootloader USB, activé en connectant D+ au +5V à travers une résistance de 10kohms à la mise sous tension.

Utilisation de ch552tool :

$ sudo python3 ch55xtool/ch55xtool.py -f FIRMWARE.bin -r

Execution en root nécessaire. Crash après la programmation si l’option « -r » (reset avec flash) est utilisée, à cause de la déconnexion du device cible.

Acer Aspire R13 : Faire fonctionner l’entrée micro jack

Ajouter la ligne suivante à la fin du fichier /etc/modprobe.d/alsa-base.conf

options snd-hda-intel model=auto,dell-headset-multi

Réparation d’un « boitier à chaine » STILE RF

Le « boitier à chaine » STILE RF est un appareil permettant l’ouverture / fermeture d’une fenêtre battante à l’aide d’une télécommande.

Photo du STILE RF
Boitier à chaine STILE RF

L’exemplaire en ma possession refuse totalement de fonctionner, et ne donne aucun signe de vie. Voyons si il est possible de le réparer.

Lire la suite

Kit E-Paper pour Beolink 5000

Ma Beolink 5000, après le remplacement de son écran défaillant par un afficheur E-Paper

Produite entre 1991 et 1996 par le fabricant danois Bang & Olufsen, la Beolink 5000 est une télécommande permettant de contrôler les différents appareils de la marque, ainsi que de monitorer leur état grâce à l’écran LCD translucide présent à son extrémité. Ce modèle représentait en son temps l’état de l’art dans le domaine des télécommandes multimédia.

Malheureusement, bon nombre de ces télécommandes ont maintenant 30 ans d’age, et si certains composants vieillissants sont facilement remplacés ( notamment les condensateurs électrochimiques assurant la stabilité de la communication infrarouge ), les adhésifs chargés de maintenir en place l’écran et sa nappe montrent eux aussi des signes de faiblesse, avec pour conséquence un détachement partiel ou complet de la nappe de l’écran, ce dernier perdant de ce fait ses capacités d’affichage. La grande majorité des télécommandes encore existantes sont affectées par cette maladie. Certaines fonctions qui requièrent un écran fonctionnel, telles que le paramétrage de la télécommande, ou des équipements associés, deviennent alors inutilisables.

L’exemplaire en ma possession présentait un état encore plus dramatique, l’écran complètement séparé de la télécommande, la nappe le raccordant à son électronique de contrôle s’étant déchirée sous son poids. J’ai décidé de consacré une partie de mon temps libre de l’année dernière à la conception d’un remplacement.

Lire la suite