나만의 음악 서버 만들기: Oracle Cloud에 Navidrome 구축하기

안녕하세요. 미뇽입니다.

오늘은 직접 개인 서버에 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

[중요!] 이제 scpftp 등 편한 방법을 사용하여 준비해둔 여러분의 음악 파일들을 방금 생성한 /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 호환 앱을 설치하여 내 손안에서 음악 서버를 즐기는 것입니다. 이 방법은 다음 포스팅에서 자세히 다루도록 하겠습니다.

읽어주셔서 감사합니다. 🙂

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤