Announcement

Collapse
No announcement yet.

Running in Docker on MacOS without access to Host mode (?)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Running in Docker on MacOS without access to Host mode (?)

    > Recently I've decided to port my entire LMS installation over to docker
    > for more flexibility in the event that I decide to change server
    > hardware.


    You seem to do this the hard way: you want to use a feature which isn't
    supported on your current platform, just to prepare for the case you'd
    have to switch to another platform? Sounds like a lot of trouble :-)

    > (Also because spotty stopped working for me on MacOS Mojave
    > recently)


    How does it fail? Maybe we should try to fix this first?


    #2
    Running in Docker on MacOS without access to Host mode (?)

    Greetings,

    Recently I've decided to port my entire LMS installation over to docker for more flexibility in the event that I decide to change server hardware. (Also because spotty stopped working for me on MacOS Mojave recently)
    While I am able to get the library scanner to work and the new LMS instance can connect to the same squeezebox players (boom, etc.), none of the plugins that require advanced networking resources appear to function.

    Namely Squeeze2Raop & Spotty

    In @philippe_44 's documentation for the airplay plugin, there is a section that mentions docker:
    Firewall: The firewall must let sq2r open various ports (3 UDP and 1 TCP) whose start and range can be set using -a command line or <ports> option (random ports by default). In Windows, just create a new rule for c:\programdata\squeezecenter\cache\installedplugin s\plugins\raopbridge\bin\squeeze2raop-win.exe in the firewall. If you use docker, you must set network to host mode
    The last part about setting 'network mode' to 'host mode' is not currently possible on MacOS because docker itself runs within a virtual machine. As a result I am attempting to use docker-compose with the various ports options to allow these services to still function on my local network. Here's my docker-compose file:
    Code:
    version: '3'
    services:
      lms:
        container_name: lms
        image: lmscommunity/logitechmediaserver
        volumes:
          - ~/Desktop/squeezebox_server/config:/config:rw
          - /Volumes/Dominic/Media/Audio/Music:/music:ro
          - ~/Desktop/squeezebox_server/playlists:/playlist:rw
          - ~/etc/localtime:/etc/localtime:ro
          - ~/etc/timezone:/etc/timezone:ro
        ports:
          - 9000:9000/tcp
          - 9090:9090/tcp
          - 3483:3483/tcp
          - 3483:3483/udp
          - 4070:4070/tcp
          - 4070:4070/udp
          - 5353:5353/tcp
          - 5353:5353/udp
          - 9010:9010/tcp
          - 9010:9010/udp
          - 9011:9011/tcp
          - 9011:9011/udp
          - 9012:9012/tcp
          - 9012:9012/udp
          - 9013:9013/tcp
          - 9013:9013/udp
          - 9014:9014/tcp
          - 9014:9014/udp
          - 9015:9015/tcp
          - 9015:9015/udp
          - 9016:9016/tcp
          - 9016:9016/udp
        restart: always
    You can see I'm manually opening ports 9010 to 9016 on both UDP and TCP because in the Squeeze2Raop configuration I have set Authorized ports to 9010:6.
    In spite of doing this, it is unable to find any of the airplay renderers on my network that the MacOS installation can find.
    I have enabled debug mode 'all items below' but still the log messages are unhelpful:
    Code:
    Starting Squeeze2raop: /config/cache/InstalledPlugins/Plugins/RaopBridge/Bin/squeeze2raop-x86-64-static -Z -I -b 172.18.0.2 -f /config/logs/raopbridge.log -d all=debug -x /config/prefs/raopbridge.xml
    [12:11:32.148758] main:1572 Starting squeeze2raop version: v0.4.63.1 (Feb 21 2022 @ 18:43:45)
    
    [12:11:32.150523] register_pcm:306 using pcm to decode aif,pcm
    [12:11:32.150979] register_mad:429 using mad to decode mp3
    [12:11:32.151389] register_alac:533 using alac to decode alc
    [12:11:32.151804] register_flac:308 using flac to decode flc
    [12:11:32.152225] register_faad:648 using faad to decode aac
    [12:11:32.152558] register_vorbis:339 using vorbis to decode ogg
    [12:11:32.152980] register_opus:282 using opus to decode ops
    [12:11:32.153320] register_soxr:391 using soxr for resampling
    [12:11:32.153694] register_soxr:391 using soxr for resampling
    [12:11:32.168830] Start:1314 Binding to 172.18.0.2
    [12:11:32.169482] StartActiveRemote:1202 DACP port: 9011
    The actual IP of the host machine is 192.168.1.42 but if I set it to that it does not work :/
    Code:
    [11:43:31.260904] Start:1318 Cannot start mDNS searcher
    [11:43:31.261407] main:1609 Cannot start, exiting
    With Spotty, there is no built in documentation that refers to the ports required to complete the authorization handshake process.
    I have found this form post that mentions having 4070 & 5353/UDP open, but when I add 5353 to my port mapping I find that docker-compose can no longer start because, well, that port is used on MacOS by Bonjour's MDNS responder:
    Code:
    ╰─ docker-compose up
    Recreating lms ... error
    ERROR: for lms  Cannot start service lms: Ports are not available: listen udp 0.0.0.0:5353: bind: address already in use
    
    ╰─ sudo lsof -i :5353
    COMMAND   PID           USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    mDNSRespo 190 _mdnsresponder    7u  IPv4 0xe7c7cf8622705569      0t0  UDP *:mdns
    mDNSRespo 190 _mdnsresponder    8u  IPv6 0xe7c7cf86227052a9      0t0  UDP *:mdns
    I'm not sure how to proceed here unfortunately. If anyone has any ideas, please let me know.

    Comment

    Working...
    X