Self-Hosted 음악 스트리밍 서버 Navidrome을 Docker-compose로 설치하기
Self-Hosted란?
진정한 컴덕이라면 컴퓨터 조립하고 OS갖고 노는 것이 지겨워질 때쯤 슬슬 코딩을 하든지 서버를 돌리게 됩니다. Self-Hosted
는 외부 업체의 서버를 이용하지 않고 자신의 기기에서 직접 서버를 돌리는 것을 말합니다.
윈도우에서 IIS등을 이용해 서버를 구동할 수 있지만 윈도우는 서버용 OS가 따로 있고(게다가 비싸고) 일반 윈도우는 접속 클라이언트 수에 제한이 있어서 다수의 클라이언트를 대상으로 하는 서버를 돌리기에는 부족한 점이 많습니다.
그래서 Self-Hosted용 소프트웨어는 대부분 리눅스용이 많습니다. 노량진 수산시장 방문해주신 리누스 토발즈 만세!!!
Navidrome이란?
Navidrome
은 Self-hosted 음악 서버, 스트리머 소프트웨어입니다. 잘 모르는 분들을 위해 설명하자면(그런 분들이 리눅스에서 docker를 쓸 일은 없을 것 같지만)자신이 가지고 있는 음악파일(Wav, mp3, aac 등)을 이용해 spotify같은 음악 스트리밍 웹사이트를 만들어 주는 거라고 생각하면 됩니다. 오디오 파일 다운로드도 가능합니다.
Navidrome을 사용하는 개인적인 목적
비슷한 역할을 하는 소프트웨어는 여러가지가 있고 사실 저는 음악, 영상 감상용 서버로는 Plex를 사용합니다. Plex music
도 영상만큼 잘 되어 있어서 영상 서버와 동시에 관리가 가능합니다.
Navidrome
을 사용하려는 목적은 음악 작업용(작곡) 오디오 샘플의 관리와 공유를 위한 것입니다. emby, ampache, jellyfin, koel, airsonic advanced, subsonic, madsonic, beets 등을 써봤는데 UI가 그지 같거나 방향키로 다음 오디오 듣기가 안되거나, 앨범이나 폴더별 다운로드가 안되거나 하는 등의 이유로 대부분 탈락하고 최종적으로 navidrome을 선택했습니다. navidrome자체로는 태그 관리가 안되서 겁나 귀찮긴 합니다.
그런데 Navidrome을 아주 오래 전에 설치해두고 한국어가 안되서 방치해두고 있었습니다.(제가 영어를 못해서 그런 건 아니구요...) 그러다가 얼마 전에 제가 Github에 navidrome 한국어로 번역해서 Pull request했는데 개발자가 한참 뒤에 한국어 추가해줬네요. 암튼 그래서 이제 한국어를 지원합니다. ChatGPT이용해서 번역하고 대충만 확인해서 좀 맘에 안드는 부분이 있긴하지만 사용에는 문제 없습니다.
Docker-compse로 Navidrome 설치하기
제가 Navidrome을 돌리는 서버는 오라클 클라우드 A1입니다. 이게 무료라니 또라이지만 멋있는 래리 엘리슨 형님 사랑합니다!!
도커-컴포즈를 이용해서 Navidrome을 설치하는 방법은 다음과 같습니다. docker 및 docker-compose 설치, nano 에디터 설치는 다른 곳에 많이 나와 있으니 생략합니다.
navidrome 폴더 및 도커 컴포즈 파일 생성
# 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_LISTENBRAINZ_ENABLED: false
ND_ENABLEEXTERNALSERVICES: false
volumes:
- "./data:/data"
- "/home/ubuntu/mount/Gdrive02/Samples:/music:ro" #오디오 파일이 있는 경로
volumes:
에 있는 경로는 각자 상황에 맞게 편집해서 사용해야 합니다. 저는 구글드라이브에 샘플을 넣고 rclone으로 마운트해서 사용합니다. :ro
는 읽기 전용(read only)을 뜻합니다.
navidrome 시작
docker-compose up -d
위의 명령을 이용해 도커를 데몬으로 구동하면 navidrome이 시작됩니다. 브라우저에서 아이피와 포트를 입력하면 navidrome 웹페이지에 접속이 가능합니다.(포트 열려 있어야 함)
NPM(NginX Proxy Manager)에서 리버스 프록시 설정
Self-Hosted로 돌리는 서버가 많은데 포트를 죄다 열어 놓기도 그렇고, 도메인도 활용하다보니 리버스 프록시를 사용합니다. 프록시 서버도 여러 가지가 있지만 저는 그냥 무난한 NPM을 사용합니다.
뭐 도커 gateway만 알면 설정은 딱히 어려울게 없습니다. SSL은 와일드카드 인증서를 쓰고 있어서 딱히 보여줄게 없습니다.
마치며...
오디오 샘플을 그냥 혼자만 쓴다면 큐베이스에서 Mediabay쓰는게 훨 낫습니다. 아니면 비슷한 오디오 관리툴도 좋습니다. 작곡팀을 하거나 공동작업을 하시는 분들은 공유가 필요하기도 하겠지만 저는 컴덕이라 이러고 노는 거고, 보통은 그냥 splice가입해서 음악에 집중하는게 생산성은 훨씬 좋을 겁니다.