Docker로 구동한 Navidrome를 웹에서 접속한 모습

Self-Hosted 음악 스트리밍 서버 Navidrome을 Docker-compose로 설치하기

컴퓨터, 소프트웨어 2023년 10월 9일

Self-Hosted란?

진정한 컴덕이라면 컴퓨터 조립하고 OS갖고 노는 것이 지겨워질 때쯤 슬슬 코딩을 하든지 서버를 돌리게 됩니다. Self-Hosted는 외부 업체의 서버를 이용하지 않고 자신의 기기에서 직접 서버를 돌리는 것을 말합니다.

윈도우에서 IIS등을 이용해 서버를 구동할 수 있지만 윈도우는 서버용 OS가 따로 있고(게다가 비싸고) 일반 윈도우는 접속 클라이언트 수에 제한이 있어서 다수의 클라이언트를 대상으로 하는 서버를 돌리기에는 부족한 점이 많습니다.

그래서 Self-Hosted용 소프트웨어는 대부분 리눅스용이 많습니다. 노량진 수산시장 방문해주신 리누스 토발즈 만세!!!

Navidrome은 Self-hosted 음악 서버, 스트리머 소프트웨어입니다. 잘 모르는 분들을 위해 설명하자면(그런 분들이 리눅스에서 docker를 쓸 일은 없을 것 같지만)자신이 가지고 있는 음악파일(Wav, mp3, aac 등)을 이용해 spotify같은 음악 스트리밍 웹사이트를 만들어 주는 거라고 생각하면 됩니다. 오디오 파일 다운로드도 가능합니다.

About Navidrome
Personal Music Streamer

Navidrome 공식 홈페이지

Navidrome Demo
Personal Music Streamer

Navidrome 데모 웹사이트 안내(ID, PW : demo)

비슷한 역할을 하는 소프트웨어는 여러가지가 있고 사실 저는 음악, 영상 감상용 서버로는 Plex를 사용합니다. Plex music도 영상만큼 잘 되어 있어서 영상 서버와 동시에 관리가 가능합니다.

Navidrome을 사용하려는 목적은 음악 작업용(작곡) 오디오 샘플의 관리와 공유를 위한 것입니다. emby, ampache, jellyfin, koel, airsonic advanced, subsonic, madsonic, beets 등을 써봤는데 UI가 그지 같거나 방향키로 다음 오디오 듣기가 안되거나, 앨범이나 폴더별 다운로드가 안되거나 하는 등의 이유로 대부분 탈락하고 최종적으로 navidrome을 선택했습니다. navidrome자체로는 태그 관리가 안되서 겁나 귀찮긴 합니다.

그런데 Navidrome을 아주 오래 전에 설치해두고 한국어가 안되서 방치해두고 있었습니다.(제가 영어를 못해서 그런 건 아니구요...) 그러다가 얼마 전에 제가 Github에 navidrome 한국어로 번역해서 Pull request했는데 개발자가 한참 뒤에 한국어 추가해줬네요. 암튼 그래서 이제 한국어를 지원합니다. ChatGPT이용해서 번역하고 대충만 확인해서 좀 맘에 안드는 부분이 있긴하지만 사용에는 문제 없습니다.

Navidrome은 한국어를 지원합니다

Docker-compse로 Navidrome 설치하기

제가 Navidrome을 돌리는 서버는 오라클 클라우드 A1입니다. 이게 무료라니 또라이지만 멋있는 래리 엘리슨 형님 사랑합니다!!

도커-컴포즈를 이용해서 Navidrome을 설치하는 방법은 다음과 같습니다. docker 및 docker-compose 설치, nano 에디터 설치는 다른 곳에 많이 나와 있으니 생략합니다.

참고
- 저는 도커로 설치하는 소프트웨어는 모두 /home/docker/안에서 관리합니다.
# navidrome 폴더 생성
mkdir /home/docker/navidrome

# navidrome 폴더로 이동
cd /home/docker/navidrome

# docker-compose.yml 파일 생성 및 편집
nano docker-compose.yml

docker-compose.yml 파일의 내용

version: "3"
services:
  navidrome:
    image: deluan/navidrome:develop
    ports:
      - "4040:4040"
    restart: unless-stopped
    environment:
      # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      ND_LASTFM_ENABLED: false
      ND_PORT: 4040
      ND_SEARCHFULLSTRING: true
      ND_LASTFM_ENABLED: false
      ND_LISTENBRAINZ_ENABLED: false
      ND_ENABLEEXTERNALSERVICES: false
    volumes:
      - "./data:/data"
      - "/home/ubuntu/mount/Gdrive02/Samples:/music:ro" #오디오 파일이 있는 경로 

volumes:에 있는 경로는 각자 상황에 맞게 편집해서 사용해야 합니다. 저는 구글드라이브에 샘플을 넣고 rclone으로 마운트해서 사용합니다. :ro는 읽기 전용(read only)을 뜻합니다.

docker-compose up -d

위의 명령을 이용해 도커를 데몬으로 구동하면 navidrome이 시작됩니다. 브라우저에서 아이피와 포트를 입력하면 navidrome 웹페이지에 접속이 가능합니다.(포트 열려 있어야 함)

NPM(NginX Proxy Manager)에서 리버스 프록시 설정

Self-Hosted로 돌리는 서버가 많은데 포트를 죄다 열어 놓기도 그렇고, 도메인도 활용하다보니 리버스 프록시를 사용합니다. 프록시 서버도 여러 가지가 있지만 저는 그냥 무난한 NPM을 사용합니다.

NPM에서 navidrome 리버스 프록시

뭐 도커 gateway만 알면 설정은 딱히 어려울게 없습니다. SSL은 와일드카드 인증서를 쓰고 있어서 딱히 보여줄게 없습니다.

마치며...

오디오 샘플을 그냥 혼자만 쓴다면 큐베이스에서 Mediabay쓰는게 훨 낫습니다. 아니면 비슷한 오디오 관리툴도 좋습니다. 작곡팀을 하거나 공동작업을 하시는 분들은 공유가 필요하기도 하겠지만 저는 컴덕이라 이러고 노는 거고, 보통은 그냥 splice가입해서 음악에 집중하는게 생산성은 훨씬 좋을 겁니다.

태그

BoniK

협업, 작업의뢰, 레슨 및 기타 문의 : mail@bonik.me