Navidrome: 실행 파일 하나로 음악 서버를 열고 집 음원을 밖에서 듣는다

요약

Go로 쓰고 GPL v3로 공개한 Navidrome은 Subsonic 규약에 맞춰 연결 지점을 열어 이미 있는 클라이언트 102개가 그대로 붙는다. 변환, 여러 보관함, 플러그인을 갖추었고 지금 판은 0.64.2다.

추천
이름
Navidrome
버전
0.64.2
요금
무료
오픈소스
오픈소스
운영체제
WindowsLinuxmacOS
공식 사이트
https://www.navidrome.org/
업데이트
2026-10-21 12:39

Navidrome는 Go로 쓴 음악 서버다. 디스크의 음악 폴더가 어디서나 닿는 개인 스트리밍 보관함이 된다. 스스로 휴대전화 클라이언트를 만들지 않고, Subsonic 규약을 따라 연결 지점을 열어 이미 있는 재생기를 붙인다.

하나의 프로세스, 두 개의 폴더

설치의 모양은 소박하다. 공식 사이트가 플랫폼별로 빌드한 실행 파일을 내놓고 Linux, Windows, macOS, ARM 기판까지 포함한다. 같은 식으로 공식 컨테이너 이미지도 있어 x86과 ARM의 v6, v7, v8을 지원한다. 돌리는 데 필요한 것은 두 자리뿐이다. 하나는 데이터베이스와 캐시를 두는 곳, 다른 하나는 음악 폴더를 가리키는 곳이며, 4533 포트를 하나 쓴다.

바깥에 요구하는 단단한 의존은 ffmpeg 하나이고 변환을 그것이 맡는다. 설정으로 들어가는 길은 셋이다. 환경 변수, 명령줄 인수, 그리고 toml 형식의 설정 파일이며, 둘 다 적으면 환경 변수가 이기고, 컨테이너에서는 프로그램이 데이터 폴더에서 그 toml을 스스로 찾는다.

화면

폴더를 한 번 훑으면 보관함이 생긴다

처음 시작하면 보관함을 만들고 음악 폴더를 훑는다. 공식 사이트가 걸리는 시간을 구체적으로 알려 주고, 그 뒤로는 훑기를 정해진 간격으로 다시 돌리도록 예약할 수 있다.

보관함 규모

첫 훑기 걸리는 시간

1천 곡까지

1분 이내

1천에서 1만 곡

1분에서 5분

1만에서 5만 곡

5분에서 15분

5만 곡 이상

15분부터

보관함은 태그로 만들고 폴더로 만들지 않는다. 자주 묻는 질문이 그것을 분명히 적는다. 폴더로 훑는 방식을 넣는 것은 기술적으로 가능하지만 대부분 부품의 속을 건드려야 하고, 이 제품은 첫날부터 태그 쪽으로 방향을 정했다. 곡이 앨범에 들어가고 앨범이 연주자에 매달리는 것은 모두 파일 안의 태그로 정해지며, 태그를 잘못 쓰면 화면이 엉킨다. 공식 사이트는 훑는 기능을 약 90만 곡짜리 보관함에서 시험했다고 적고, 그중 3분의 2가 FLAC이며 이 규모도 작은 기판에서 돈다고 한다.

규약이 문이고 클라이언트는 남이 만든다

자체 웹 재생기를 갖추고 있지만 실제로 받쳐 주는 것은 규약 호환이다. 문서는 Subsonic API 1.16.1에 맞춘다고 밝히고 몇몇 연결 지점은 다르며 OpenSubsonic 확장을 꾸준히 채운다. 차이도 공개한다. 영상과 관련된 기능은 만들지 않는다. 폴더로 훑는 방식을 만들지 않아 색인을 청하는 요청에는 흉내 낸 나무를 돌려준다. 재생 요청 자체는 재생 기록이 되지 않고 클라이언트가 보고해야 비로소 세어진다.

규약이 통하면 클라이언트를 직접 쓸 필요가 없다. 공식 사이트의 목록은 응용 102개를 늘어놓고 안드로이드, iOS, 데스크톱, 웹, 텔레비전 상자를 모두 덮으며, Subsonic이나 OpenSubsonic이라고 적힌 것은 다 붙는다.

화면

여러 보관함, 권한, 분리

여러 음악 보관함은 0.58.0판부터 쓸 수 있다. 시작할 때 설정의 음악 폴더로 기본 보관함 하나를 만들고 이미 있는 사용자에게는 권한이 자동으로 붙는다. 관리자는 모든 보관함을 보고 일반 사용자는 하나씩 허락을 받아 화면의 선택기로 바꾼다. 앨범은 한 보관함에만 속하고 연주자는 여러 보관함에 걸칠 수 있으며 통계는 전체로 모아 센다. 재생 목록은 여러 보관함의 곡을 섞을 수 있지만 각 보관함에 권한이 있을 때만 가능하다. 음악과 오디오북을 나누고, 무손실과 압축을 나누고, 가족마다 자기 수집을 남기는 일이 모두 설정 문제가 된다.

변환, 캐시, 나누기

재생할 때 변환할 수 있다. 서버는 재생기에서 정한 형식에 맞춰 파일을 알맞은 전송량으로 바꿔 보내므로 통신과 해독 부담이 줄고, 변환 결과는 캐시에 들어가며 쓸 수 있는 상한을 정할 수 있다. 나누기는 다른 길이다. 어떤 사용자든 곡 하나, 앨범 한 장, 연주자 한 명, 목록 하나에 대해 연결을 만들 수 있고 계정이 없는 사람도 들을 수 있으며, 연결은 기본으로 1년 뒤 끊기고 길이를 바꿀 수 있거나 기능 자체를 끌 수 있다.

똑똑한 목록과 들은 기록

똑똑한 목록은 아직 시험 단계이고 규칙을 JSON으로 써서 nsp 파일로 보관함 폴더에 넣는다. 규칙에는 항목, 연산자, 정렬, 개수 상한이 있다. 최근 30일에 들은 것 상위 100곡, 80년대에 별 셋보다 높은 평가를 연도 역순으로 25곡 하는 식이다. 상대 시간 조건에 비율 상한을 붙이면 매일 바뀌는 하루 추천 목록이 만들어진다.

같은 문법이 다른 곳에도 쓰인다. 0.64.0부터 사용자마다 거르는 규칙을 하나 둘 수 있어 어떤 곡을 들은 기록에서 뺄 수 있다. 명절 음악을 막거나 별 넷 이상만 추천에 넣는 식이고, 막힌 곡도 기기 안 재생 횟수로는 세므로 기록에 구멍이 나지 않는다.

플러그인과 Jellyfin 연결 지점

플러그인은 WebAssembly 모래 상자 안에서 돌고 먼저 자기가 어떤 종류의 힘을 내는지 밝힌다. 연주자 소개와 앨범 표지를 가져오기, 들은 기록을 다른 서비스로 보내기, 정해진 작업 돌리기, 재생 사건에 응답하기 같은 것이다. 넣는 방법은 플러그인 파일을 정해진 폴더에 두고 웹 화면에서 켜고 권한을 나눠 주는 것이다. 기본으로는 네트워크 권한이 없고 구역 네트워크 안의 서비스에 닿으려면 그 주소 범위를 목록에 적어야 한다.

0.64.0판은 시험적인 Jellyfin 연결 지점도 열었다. 기본은 꺼짐이다. 켜면 서버가 따로 된 경로에서 Jellyfin 계열 음악 클라이언트의 요청에 응답하고 기기 계정과 암호로 들어가며, 모든 장치가 재생기로 설정에 나타난다. 구역 네트워크 자동 발견은 UDP 7359를 쓰고 기본은 꺼져 있는데, 같은 기계에 진짜 Jellyfin 서버가 있으면 둘이 같은 포트를 다투기 때문이다.

0.64 일련의 판이 고친 것

0.64.0은 큰 판이고 가장 중요한 변경은 보이지 않는 곳에 숨어 있다. 내부 번호를 모두 128비트의 같은 형식으로 다시 썼고 이 이전이 모든 표를 건드리며, 올리기 전에 데이터베이스를 백업해야 하고 번호를 캐시한 클라이언트는 다시 맞춰야 할 수 있다. 플러그인을 쓰는 사람은 모래 상자의 HTTP 힘이 꺼져 요청이 호스트 연결 지점을 거쳐야 한다는 점을 알아야 한다.

0.64.1은 보안판으로 구멍 다섯을 한 번에 막았다. 가장 무거운 것은 Subsonic 연결 지점에 있었고 로그인 실패에 속도 제한이 없어 공격자가 전속으로 암호를 맞힐 수 있었으며 위험도는 7.4로 평가됐다. 다른 하나는 재생 목록의 바깥 표지 주소가 안쪽 네트워크를 가리켜 서버를 안쪽을 훑는 발판으로 만드는 것이었다. 0.64.2가 끝을 맺으며 느린 저장 장치의 문제를 다룬다. USB 메모리나 네트워크 드라이브를 훑을 때 데이터베이스가 잠겼다는 오류가 쏟아져 전체 훑기가 실패했고, 이 판은 훑는 동안 표지 작업을 멈춘다.

누구에게 맞는가

수백 GB의 무손실을 모아 두고 매달 구독료를 내고 싶지 않은 사람이 전형적인 사용자다. 늘 켜 두는 작은 기판, 놀고 있는 낡은 노트북, 또는 NAS 위의 컨테이너, 그것으로 보관함이 살아난다. 그래픽 카드를 먹지 않고 시스템을 가리지 않으며, 빌드한 실행 파일 하나를 올리면 돈다.

Navidrome은 일을 좁게 만드는 길을 간다. 음악 서버만, 태그로만 조직하고, Subsonic 한 벌의 규약에만 겨누며 나머지는 102개 클라이언트가 저마다 솜씨를 내는 데 맡긴다. 코드는 GNU GPL 제3판으로 나왔고 소스 저장소는 2만 4천 개가 넘는 별을 모았으며 판 번호는 0.64.2까지 걸어왔다. 기기 안 음악 보관함을 언제든 손이 닿는 것으로 바꾸고 싶다면 이 선택을 빼고 갈 수 없다.

Navidrome다운로드
지원 운영체제: Windows Linux macOS