<div dir="ltr"><div><div><div><div><div><div><div><div><div><div>Last week I'd posted to the alias 1 method I'd done to get a working Desktop in an LXC container with sound/clipboard/printing.    That post was just part of figuring out out how to get sound working from a container desktop and isn't necessarily the best 'remote desktop' solution nor the only one (x2go is great & guacamole also works).<br></div><br></div>Anyway audio/sound has always been a problem for me with LXC containers.<br><br>I found that Pulseaudio's TCP module can make it simple & easy to support audio/sound from a container.<br><br></div>The container has to have pulseaudio installed.<br>Your Container User acct also will need to have the following Environment variable set for you at login:<br><br></div><b>PULSE_SERVER=10.0.3.1</b><br><br></div>That will tell the container pulseaudio to redirect any audio/sound to the Host (which in the container is at 10.0.3.1).   You can just put that in your .bashrc file in the Container.<br><br></div><div>The above IP could also be the IP address of an actual remote machine if you were doing some kind of remote desktop to a linux machine's and/or its containers.<br></div><div><br></div><div>In the container you also will want to make sure your UserID is a member of the <br>following "groups":<br><br></div><div><b>pulse<br></b></div><div><b>pulse-access<br></b></div><div><b>audio</b><br></div><div><br></div>In the Host, the setup is also very simple.   <br><br>All you need to do is add the following 2 lines to the Host's Pulseaudio configuration file located at - /etc/pulse/<a href="http://system.pa">system.pa</a>.<br><br>Once that's done either kill the Pulseaudio daemon (it automatically restarts to pick up the 2 lines) or wait till your next reboot.<br><br><b>load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;<a href="http://10.0.3.0/24">10.0.3.0/24</a><br>load-module module-zeroconf-publish</b><br><br></div><div>reference the Pulseaudio section on Authorization:<br></div><div><a href="http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/">http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/</a><br></div><br>The 1st line above tells Pulseaudio in the Host to load its TCP module at startup (its not by default) and also to apply that access list (ACL) which says to accept sound connections ONLY from the localhost and also from any host on the 10.0.3.x network.   <br><br>You can be as restrictive with the ACL as you want but this will let any container play sound on the host.<br><br></div>That's it... sound will work from the container.<br><br></div>A couple extra tips for container Desktop users are these:<br><br></div>With the "load-module" the  ACL can accept pulseaudio connections from anywhere given the right ACL and that PulseAudio's Port 4713 is open in the network.   So you could have 2 containers, one playing sound to your Host and another redirecting sound to a laptop on your deck?<br><br><div><div><div><div><div>If you have a Desktop environment installed in the container you might also want to install 2 pulseaudio mgmt tools:<br><br></div><div>pavucontrol<br></div><div>paprefs<br><br></div><div>If you want to use Firefox in the Container Desktop environment I did find & report what I considered a bug.<br></div><div><br>Executing firefox from a terminal in the container (with the above configuration) sound would work & play on the Host's speakers.<br></div><div><br>Executing firefox from a menu in the Container's Desktop did not.   I found that executing Firefox from the menu didn't directly execute the firefox binary but a script (/user/lib/firefox/firefox.sh) which I guess did not inherit the User's environment & thus the PULSE_SERVER setting.<br><br></div><div>If you add <b>PULSE_SERVER=10.0.3.1 </b>to the top of that firefox.sh script that will fix it.<b><br></b></div><div><br></div></div></div></div></div></div>