Calcifer/output/configurer-pulseaudio-sur-s...

90 lines
6.2 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Couac.tv - Configurer Pulseaudio sur son serveur de musique.</title>
<link rel="stylesheet" type="text/css" href="http://couac.tv/theme/css/main.css" />
<link rel="stylesheet" href="https://fonts.ppsfleet.navy/Josephin_sans/style.css" />
<link rel="stylesheet" href="https://fonts.ppsfleet.navy/arimo/arimo.css" />
<link rel="alternate" type="application/rss+xml" href="http://couac.tv/feeds/all.atom.xml" />
<meta property="og:site_name" content="Couac.tv">
<meta name="author" content="Tom Darboux">
<meta name="description" content="Il y a deux ans, j'ai fait un article pour installer une jukebox sous Linux. J'avais présenté comment faire fonctionner Pulseaudio. Ca fonctionnait, mais de façon bien peu optimale. Pulseaudio par défaut attend une activation par un socket. Quand il n'y a rien, pulseaudio se désactive. Sous Fedora le socket …" />
<meta property="og:description" content="Il y a deux ans, j'ai fait un article pour installer une jukebox sous Linux. J'avais présenté comment faire fonctionner Pulseaudio. Ca fonctionnait, mais de façon bien peu optimale. Pulseaudio par défaut attend une activation par un socket. Quand il n'y a rien, pulseaudio se désactive. Sous Fedora le socket …">
<meta property="og:title" content="Configurer Pulseaudio sur son serveur de musique.">
</head>
<body>
<header>
<h1>
<a href="http://couac.tv/">Couac.tv</a>
</h1>
<aside>
</aside>
<nav>
<ul>
<li><a href="https://pixelfed.social/tjiho">Quelques Photos</a></li>
<li><a href="http://tom.darboux.me">A propos de moi</a></li>
</ul>
</nav>
</header>
<main>
<article class="post">
<div>
<h1><a href="http://couac.tv/configurer-pulseaudio-sur-son-serveur-de-musique.html" rel="bookmark">Configurer Pulseaudio sur son serveur de musique.</a></h1>
<div class="meta">
<p>
Posted on <time datetime="2022-07-13T00:00:00+02:00">mer. 13 juillet 2022</time> in <a href="http://couac.tv/category/iot.html">Iot</a> by <a class="url fn" href="http://couac.tv/author/tom-darboux.html">Tom Darboux</a>
. </p>
</div> </div>
<div>
<p>Il y a deux ans, j'ai fait un article pour installer une jukebox sous Linux. J'avais présenté comment faire fonctionner Pulseaudio. Ca fonctionnait, mais de façon bien peu optimale.</p>
<p>Pulseaudio par défaut attend une activation par un socket. Quand il n'y a rien, pulseaudio se désactive.<br>
Sous Fedora le socket est dans <code>/usr/lib/systemd/user/pulseaudio.socket</code> avec le code suivant:</p>
<div class="highlight"><pre><span></span><code><span class="k">[Unit]</span><span class="w"></span>
<span class="na">Description</span><span class="o">=</span><span class="s">Sound System</span><span class="w"></span>
<span class="na">ConditionUser</span><span class="o">=</span><span class="s">!root</span><span class="w"></span>
<span class="k">[Socket]</span><span class="w"></span>
<span class="na">Priority</span><span class="o">=</span><span class="s">6</span><span class="w"></span>
<span class="na">Backlog</span><span class="o">=</span><span class="s">5</span><span class="w"></span>
<span class="na">ListenStream</span><span class="o">=</span><span class="s">%t/pulse/native</span><span class="w"></span>
<span class="k">[Install]</span><span class="w"></span>
<span class="na">WantedBy</span><span class="o">=</span><span class="s">sockets.target</span><span class="w"></span>
</code></pre></div>
<p>Il écoute dans <code>/run/pulse/native</code> et ne doit pas être lancer en root. Il se charge ensuite de demmarer pulseaudio via son service dans <code>pulseaudio.service</code></p>
<p>Sur un ordinateur avec une interface graphique, l'interface graphique se charge de la besogne. Elle démarre une instance de systemd en tant que l'utilisateur qui lance l'interface graphique avec <code>systemd --user</code>, puis active le socket.</p>
<p>Sur un serveur on pourrait faire la même chose. Mais quels sont nos alternatives ?</p>
<h2>Pulseaudio en mode 'system' lancé en root (mauvaise idée)</h2>
<p>De nombreux articles proposent de lancer Pulseaudio avec l'option <code>--system</code>. Ça permet de sauter ce problème d'utilisateur et de socket.</p>
<p>Pourquoi c'est pas terrible ?</p>
<ul>
<li>Déjà, ca demande de lancer Pulseaudio avec les droits root (en réalité, ca dure pas longtemps, pulseaudio se fork avec son propre utilisateur), c'est déconseillé dans la doc.</li>
<li>Et par sécurité, pulseaudio va désactiver plein de plugins, l'expérience risque de pas être optimal.</li>
</ul>
<p>Par contre, un avantage est de pouvoir utiliser Pulseaudio avec plusieurs utilisateurs à la fois.</p>
<h2>Lancer pulseaudio en tant qu'un utilisateur pré-définie</h2>
<p>Au lieu qu'une interface graphique se charge de lancer Pulseaudio, on va configurer le socket pour qu'il se lance seul au démarrage, avec l'utilisateur mopidy.</p>
<div class="highlight"><pre><span></span><code>cp /usr/lib/systemd/user/pulseaudio.service /etc/systemd/system/pulseaudio.service
cp /usr/lib/systemd/user/pulseaudio.socket /etc/systemd/system/pulseaudio.socket
</code></pre></div>
<p>on va éditer <code>/etc/systemd/system/pulseaudio.socket</code> en enlevant le <code>ConditionUser=!root</code> et en ajoutant <code>SocketUser=mopidy</code>.</p>
<p>on va faire la même chose pour le service <code>/etc/systemd/system/pulseaudio.service</code>, on enlève <code>ConditionUser=!root</code> et on ajoute <code>User=mopidy</code>.</p>
<p>on désactive l'ancienne configuration: </p>
<div class="highlight"><pre><span></span><code>systemctl --global disable pulseaudio.service pulseaudio.socket
</code></pre></div>
<p>On active la nouvelle: </p>
<div class="highlight"><pre><span></span><code>systemctl enable pulseaudio.socket
</code></pre></div>
<p>Voila ! Vous avez une installation propre de Pulseaudio sur votre serveur. Vous ne pouvez par contre jouer du son que avec l'utilsateur mopidy (à vérifier), ce qui peut être limitant.</p>
</div>
</article>
</main>
</body>
</html>