안녕하세요. 미뇽입니다.
오늘은 직접 개인 서버에 Navidrome을 설치하여 24시간 동작하는 나만의 음악 서버를 구축하는 가이드를 준비했습니다.
다양한 설치 방법이 있지만, 오늘은 Oracle Cloud에서 제공하는 무료 VM(가상 머신) 인스턴스에 Docker와 docker-compose
를 이용하여 가장 간편하고 체계적으로 설치하는 방법을 단계별로 안내해 드리겠습니다. docker-compose
는 설정 파일을 통해 컨테이너의 옵션을 관리할 수 있어 초보자도 쉽게 따라 할 수 있고, 향후 관리도 매우 편리합니다.
시작 전 준비물
본격적인 설치에 앞서 아래 사항들이 준비되어 있어야 합니다.
Oracle Cloud VM 인스턴스: 서버 역할을 할 가상 머신이 생성되어 있어야 합니다. Ubuntu OS를 기준으로 설명하겠습니다.

Docker 및 Docker Compose 설치: VM 인스턴스에 Docker Engine과 Docker Compose가 미리 설치되어 있어야 합니다.

음악 파일: 스트리밍할 음원 파일들을 미리 준비해 주세요.
‘docker-compose’ 를 이용한 설치
이제 본격적으로 Navidrome 서버를 구축해 보겠습니다.
Navidrome을 위한 디렉토리 생성
먼저, Navidrome이 사용할 설정 파일과 실제 음악 파일을 저장할 두 개의 폴더를 VM 인스턴스 내에 생성합니다. 터미널에 접속하여 아래 명령어를 실행해 주세요.
# Navidrome 관련 파일을 모아둘 상위 폴더 생성
mkdir -p /home/ubuntu/navidrome
# Navidrome의 설정, DB 등이 저장될 데이터 폴더 생성
mkdir -p /home/ubuntu/navidrome/data
# 음악 파일을 저장할 뮤직 폴더 생성
mkdir -p /home/ubuntu/navidrome/music
[중요!] 이제 scp
나 ftp
등 편한 방법을 사용하여 준비해둔 여러분의 음악 파일들을 방금 생성한 /home/ubuntu/navidrome/music
폴더 안으로 업로드해 주세요.
docker-compose.yml
파일 작성
다음으로, Navidrome 컨테이너의 설계도 역할을 할 docker-compose.yml
파일을 생성합니다. 1단계에서 생성한 navidrome
폴더로 이동한 후, 텍스트 편집기(nano, vi 등)로 파일 생성합니다.
cd /home/ubuntu/navidrome
nano docker-compose.yml
파일 내용은 아래 처럼 입력합니다.
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
restart: unless-stopped
ports:
# 호스트의 4533번 포트를 컨테이너의 4533번 포트로 연결합니다.
# 만약 4533번 포트를 다른 서비스가 사용 중이라면 왼쪽 포트를 다른 번호로 변경하세요. (예: "5533:4533")
- "4533:4533"
environment:
# Navidrome의 로그 레벨 설정 (선택 사항)
ND_LOGLEVEL: "info"
# 음악 라이브러리 스캔 주기 설정 (예: 1h, 15m, 24h) (선택 사항)
ND_SCANSCHEDULE: "1h"
# 웹 UI 세션 타임아웃 시간 설정 (선택 사항)
ND_SESSIONTIMEOUT: "24h"
# 트랜스코딩 캐시 크기 설정 (기본값: 100MB) (선택 사항)
ND_TRANSCODINGCACHESIZE: "500MB"
volumes:
# 1단계에서 생성한 실제 음악 폴더 경로를 지정합니다.
# :ro 옵션은 Navidrome이 원본 파일을 수정/삭제하는 것을 방지하는 읽기 전용 설정입니다. (권장)
- "/home/ubuntu/navidrome/music:/music:ro"
# 1단계에서 생성한 실제 데이터 폴더 경로를 지정합니다.
- "/home/ubuntu/navidrome/data:/data"
Navidrome 서버 실행하기
docker-compose.yml
파일 작성이 완료되었다면, 이제 아래 명령어를 실행하여 Navidrome 서버를 백그라운드에서 구동합니다.
docker-compose up -d
-d
옵션은 컨테이너를 터미널 세션과 분리하여 백그라운드에서 계속 실행하라는 의미입니다.
이 명령을 실행하면 Docker가 Navidrome 이미지를 다운로드하고(로컬에 없는 경우), docker-compose.yml
파일에 정의된 설정대로 컨테이너를 생성하여 실행합니다. docker-compose ps
명령어로 navidrome
컨테이너가 정상적으로 실행 중인지 확인할 수 있습니다.
Oracle Cloud 방화벽 설정 (포트 4533 열기)
Navidrome 서버에 외부에서 접속하기 위해서는 Oracle Cloud의 방화벽에서 4533
번 포트를 열어주어야 합니다.
Oracle Cloud 대시보드에서 VM 인스턴스가 속한 VCN(가상 클라우드 네트워크)의 네트워크 보안 그룹(NSG) 또는 보안 목록(Security List) 설정으로 이동하여 아래와 같은 수신 규칙(Ingress Rule)을 추가합니다.
- 프로토콜: TCP
- 소스 유형: CIDR
- 소스 CIDR:
0.0.0.0/0
(모든 IP에서 접속을 허용하려면) - 대상 포트 범위:
4533
(만약docker-compose.yml
에서 호스트 포트를 변경했다면 해당 포트 번호를 입력)
Oracle Cloud에서 수신 규칙을 추가하는 자세한 방법은 이전에 제가 작성했던 ‘Oracle Cloud Instance에 수신 규칙 추가하기’ 관련 글을 참고하시면 도움이 될 것입니다.

Navidrome 초기 설정
이제 모든 준비가 끝났습니다. 웹 브라우저를 통해 Navidrome 서버에 접속하고 초기 설정을 진행해 보겠습니다.
웹 브라우저로 접속
웹 브라우저 주소창에 http://<내 서버의 공인 IP 주소>:4533
을 입력하여 접속합니다.
관리자 계정 생성
Navidrome에 처음 접속하면 관리자 계정을 생성하는 화면이 나타납니다. 앞으로 사용할 사용자 이름과 비밀번호를 입력하고 [CREATE ADMIN] 버튼을 눌러 계정을 만드세요.

음악 라이브러리 스캔 및 확인
관리자 계정으로 로그인하면, Navidrome이 docker-compose.yml
파일에 설정된 음악 폴더(/music
)를 자동으로 스캔하기 시작합니다.

음악 파일의 양에 따라 스캔에는 다소 시간이 걸릴 수 있습니다. 화면 오른쪽 상단의 톱니바퀴 아이콘(Settings) 옆에 있는 Activity 패널을 통해 스캔 진행 상황을 실시간으로 확인할 수 있습니다.
스캔이 완료되면, 웹 UI를 통해 앨범, 아티스트별로 음악을 탐색하고, 나만의 재생 목록을 만들며 자유롭게 음악을 즐길 수 있습니다.
마치며
축하합니다! 이제 여러분만의 완벽한 개인 음악 스트리밍 서버가 준비되었습니다. 더 이상 월정액 요금이나 서비스 종료에 대한 걱정 없이, 24시간 언제 어디서든 내가 소장한 음악 컬렉션을 마음껏 즐길 수 있는 환경이 마련된 것이죠.
다음 단계는 스마트폰에 Ultrasonic 과 같은 Subsonic 호환 앱을 설치하여 내 손안에서 음악 서버를 즐기는 것입니다. 이 방법은 다음 포스팅에서 자세히 다루도록 하겠습니다.
읽어주셔서 감사합니다. 🙂
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."