본문 바로가기
스마트폰 (Mobile)

Home Assistant 음악 생태계 강화 Music Assistant 2.7 핵심 변화

by 날으는물고기 2025. 12. 20.

Home Assistant 음악 생태계 강화 Music Assistant 2.7 핵심 변화

728x90

Music Assistant(MA)는 여러 음원 소스(스트리밍/로컬 파일/라디오/팟캐스트)와 다양한 재생 기기(스피커/캐스트/에어플레이 등)를 한 곳에서 묶어 “내 음악을 내 기기에서, 자동화까지” 하도록 만든 오픈소스 음악 플랫폼입니다. “Home Assistant(HA)와 나란히 쓰는 것”을 전제로 자동화 친화적으로 설계되어 있고, HA에는 공식 통합(Integration)으로 연결됩니다.

2.7의 핵심 변화

1) 프로젝트 운영: 전담 인력 합류

Music Assistant 프로젝트에 Open Home Foundation의 첫 전담(풀타임) 구성원이 합류하고, 프로젝트 운영을 주도할 예정이라는 소식이 포함됩니다.

2) UI/UX “비주얼 오버홀”

2.7에서 UI/UX 대개편의 시작을 선언합니다.

  • 좌측 접히는 내비게이션 바(사이드바) 도입
  • 설정 페이지 브레드크럼(현재 위치 경로) 로 탐색 개선
  • 특히 눈에 띄는 변화: 브라우저에서 바로 재생 가능한 “Built-in Player”(내장 웹 플레이어)

3) 로그인/사용자 프로필/권한

로그인/인증 기능이 추가되어, 다음이 가능해졌습니다.

  • 사용자별 프로필(각자 다른 음악 제공자 계정 구성 가능)
  • 스피커(플레이어) 접근 권한 을 사용자별로 제한 가능
  • Home Assistant 계정으로 SSO(싱글사인온)처럼 쓰는 흐름도 언급

4) 원격 음악 스트리밍(외부에서도 MA 사용)

원격 접속용 웹앱을 통해, 인터넷이 되는 곳이면 MA 음악을 재생할 수 있는 기능을 소개합니다.

  • Home Assistant Cloud의 멀티미디어 스트리밍(WebRTC) 기능을 활용해 오디오 라우팅
  • 구독 없이도 사용 가능(인프라를 제공받는 구조)
  • 연결은 P2P + 종단간 암호화(E2EE) 라고 설명합니다

5) Sendspin 소개: MA가 직접 “새 스트리밍/동기화 프로토콜” 만든 이유

2.7의 가장 큰 기술 포인트 중 하나가 Sendspin입니다.

  • MA에 내장(native)된 재생/제어/동기화 프로토콜
  • 샘플 정확도(sample-accurate) 수준의 멀티룸 동기 재생을 목표
  • 오디오뿐 아니라 아트워크/메타데이터/시각화(향후) 같은 “음악 경험” 전체를 다루려는 방향
  • 오픈소스/라이선스 프리, 스펙도 공개(실험적/프리뷰 성격)
300x250

Sendspin 문서에 정리된 기능

  • 멀티룸 동기 재생, 자동 발견(mDNS), 기기별 DSP/볼륨
  • 클라이언트의 양방향 제어(재생/일시정지/스킵 등)
  • 브라우저 웹 플레이어는 로컬이면 WebSocket 우선, 아니면 WebRTC 폴백

6) AirPlay 강화

AirPlay 관련으로는 다음 흐름을 말합니다.

  • 외부 오디오 소스 입력(예: Spotify Connect)을 서버로 받아서 다른 기기로 뿌리는 방향이 있었고
  • 이제 AirPlay 오디오를 MA로 “보내기(입력)” 할 수 있게 확장
  • 또한 AirPlay 2 스피커를 플레이어 제공자로 지원

7) 가사(Lyrics) 지원 확장

2.6부터 가사 표시가 가능했고, 2.7 글에서는 가사 제공자/싱크(카라오케처럼 타임드 싱크)가 확장되는 흐름을 설명합니다.

  • LRCLIB → Tidal lyric sync, Genius, 로컬 LRC 등

8) Smart Fading(더 자연스러운 크로스페이드)

곡 BPM 등을 고려해 곡 전환 크로스페이드를 자연스럽게 하는 “Smart fading” 추가. 설정에서 Enable Smart Fades로 켜는 방식이 안내됩니다.

9) 기타(“Hot 100” 묶음 업데이트)

중요도 높은 항목들

  • DSP 프리셋 저장/적용
  • 청취 이력/스코블링(LastFM, ListenBrainz, Subsonic)
  • 신규 플레이어 제공자: Yamaha MusicCast, Roku
  • 신규 입력 제공자: VBAN
  • 라디오/팟캐스트 제공자 다수 추가(예: Radio Paradise, Podcast Index, BBC Sounds 등)
  • 기타: Internet Archive, Niconico 등 다양한 제공자 추가

설치/구성 관점 흐름

1) 권장: Home Assistant Add-on 방식

MA는 HA와 나란히 쓰는 구성이 권장되고, HAOS(Add-on Store) 환경이면 Add-on으로 설치하는 흐름이 가장 쉽다고 안내합니다. 또한 HA/MA 호스트와 플레이어 기기가 “같은 L2(같은 평면 네트워크)”여야 하며, 문서에서는 VLAN 없이(flat network)를 요구합니다. (mDNS/uPnP 등 멀티캐스트 기반 자동 발견 때문)

2) Docker 단독 실행

핵심 예시

docker run -v <dir>:/data --network host \
  --cap-add=DAC_READ_SEARCH --cap-add=SYS_ADMIN \
  --security-opt apparmor:unconfined \
  ghcr.io/music-assistant/server
  • host network 모드 필수
  • 데이터는 /data 볼륨에 영구 저장
  • SMB/NFS 같은 원격 공유를 컨테이너 내부에서 쓰려면 추가 권한이 필요하다고 설명

docker-compose 예시도 제공되며, network_mode: host, cap_add, security_opt, LOG_LEVEL 환경변수 등이 포함됩니다.

Home Assistant 연동(Integration)과 자동화

Integration 설치 요약

MA ↔ HA 연결은 HA core의 공식 컴포넌트이며, 보통 자동 발견 후 Configure로 진행합니다.

  • Settings → Devices & Services → Integrations → + Add Integration → Music Assistant
  • 서버 IP/포트(보통 8095) 입력
  • 서버 로그 예시로 Starting server on ...:8095 형태를 안내

엔티티 & 서비스(자동화에 쓰는 포인트)

Integration은 MA에서 지원하는 플레이어를 HA media_player 엔티티로 만들어 주고, 자동화/스크립트 타겟이 됩니다. 또한, MA 전용 서비스(커스텀 액션) 예시가 문서에 정리되어 있습니다.

  • music_assistant.play_media
  • music_assistant.play_announcement
  • music_assistant.transfer_queue
  • music_assistant.search
  • music_assistant.get_library
  • music_assistant.get_queue

자동화 예시(실전 감각용)

“퇴근 알림을 집 전체 스피커로” (Announcement)

service: music_assistant.play_announcement
data:
  entity_id: media_player.livingroom
  message: "퇴근 시간입니다. 오늘도 수고하셨어요!"

“집 도착 시 플레이리스트 재생”

service: music_assistant.play_media
data:
  entity_id: media_player.kitchen
  media_id: "playlist:MyArrivalMix"

※ 실제 entity_id, media_id 포맷은 사용 중인 제공자/라이브러리 구성에 따라 달라질 수 있어요.

활용 사례(2.7 기능이 특히 빛나는 시나리오)

가족/공용 환경

  • 사용자 프로필로 각자 계정/플레이리스트 분리
  • 아이 계정은 특정 스피커 접근 차단 같은 “가정 내 권한관리”

PC/브라우저 중심 사용자

  • UI 개편 + Built-in Player(웹에서 바로 재생) 로 탐색/선곡이 쉬워짐

외부(원격) 청취

  • 외출 중에도 웹앱으로 집의 MA 서버 음악(예: FLAC)을 스트리밍
  • E2EE/P2P를 강조하므로 “개인 음악 감상”에 심리적 장벽이 낮아짐

멀티룸/동기화

  • Sendspin으로 “브라우저 + 캐스트 + (향후) 다른 클라이언트” 동기 재생
  • 기기별 DSP/메타데이터/아트워크까지 확장 가능한 구조

보안 관점 가이드 점검 포인트

1) “로그인/프로필”이 보안에 미치는 의미

2.7에서 인증/로그인이 들어오면서, 최소한 다음이 가능해집니다.

  • “누가” 제어하는지 추적 가능한 구조(가정/조직 모두 유리)
  • 사용자별 제공자 계정 분리, 스피커 접근 제한

점검 포인트

  • 관리자/일반 사용자 분리(가능하면)
  • 스피커 접근 권한을 “기본 허용”이 아니라 필요 최소 허용으로
  • SSO(HA 로그인 연동)를 쓴다면 HA 계정 보안(2FA/강한 비밀번호)이 곧 MA 보안임

2) 원격 스트리밍: 위협 모델을 명확히

원격 스트리밍이 P2P + 종단간 암호화라고 설명합니다. 다만, 운영 관점에서는 아래를 같이 보셔야 합니다.

점검 포인트

  • 원격 접속용 웹앱 사용 시 계정 탈취(피싱/재사용 비밀번호) 가 가장 큰 리스크
  • 외부 노출되는 구성요소(웹서버/포트/리버스프록시)가 있다면 TLS/방화벽/접근제어 필수
  • 원격 기능을 안 쓰면 비활성화 옵션이 있는지(또는 외부 접근 경로를 닫을지) 정책으로 결정

3) 네트워크(특히 L2 요구사항)와 보안의 줄다리기

MA는 mDNS/uPnP 멀티캐스트 기반 자동 발견 때문에 같은 L2 네트워크를 강하게 요구합니다. 보안 관점에선 “망분리/VLAN 분리”와 충돌하기 쉬운 지점입니다.

실무적 절충 가이드(권장 방향)

  • MA/스피커 전용 가정 내 IoT 존을 만들되, 너무 과격한 분리로 자동발견이 깨지면 운영 난이도↑
  • 불가피하게 분리한다면 mDNS 리플렉터 등 우회가 필요할 수 있으나, 문서상 “VLAN 없이”를 전제로 하므로 지원/안정성 이슈 가능성을 감안

4) Docker 실행 시 “권한 과다” 이슈

문서 예시에는 --cap-add=SYS_ADMIN, apparmor:unconfined 같은 강한 권한이 포함됩니다. 이건 편의상(특히 SMB/NFS 마운트 등) 필요할 수 있지만, 컨테이너 격리 관점에서는 리스크가 큽니다.

보안 점검 포인트

  • 정말 원격 공유(SMB/NFS)를 컨테이너 내부에서 마운트해야 하는지(대안: 호스트에서 마운트 후 읽기전용 바인드)
  • 필요 없다면 capability/보안옵션 최소화
  • /data 및 음악 라이브러리 경로는 권한/소유자/백업/암호화(필요 시) 정책을 명확히

한 장으로 끝내는 2.7 체크리스트

기능 확인

  • 사용자 프로필/스피커 권한 정책 설계
  • 원격 스트리밍 사용 여부 결정(정책/가이드 포함)
  • Sendspin(기술 프리뷰) 적용 범위: 테스트 존부터 단계적 확대

운영 확인

  • HA Integration 엔티티/서비스 기반 자동화 표준 템플릿 정리
  • 네트워크 L2 요구사항 충족 여부(멀티캐스트)

보안 확인

  • 계정 보안(SSO면 HA 계정 보안 강화)
  • Docker 권한 최소화(특히 SYS_ADMIN/appArmor 완화 여부)
728x90
그리드형(광고전용)

댓글