
Listune은 로컬 파일과 S3 버킷, Google Drive의 음악을 재생하고 Soulseek에서 음악을 검색·다운로드하는 모바일 중심 음악 플레이어다. Vue 3와 Quasar로 만든 프로그레시브 웹 앱(PWA)이며, 재생목록과 오디오 시각화 기능도 제공한다.
로컬 폴더는 업로드 없이 추가할 수 있고, Google Drive는 OAuth 인증을 거쳐 백엔드에서 스트리밍한다. S3는 AWS SigV4 사전 서명 URL을 사용한다. 서버 폴더를 음악 라이브러리로 지정할 수도 있으며, 태그가 없는 트랙은 오디오 지문으로 식별해 AcoustID와 MusicBrainz에서 정보를 조회하는 기능을 제공한다. 이 기능에는 백엔드의 fpcalc가 필요하다.
설치와 실행에는 Node.js 22 이상(저장소는 Soulseek 브리지에 Node 24 이상을 권장), Go 1.22 이상이 필요하다. Google 로그인과 Drive, 오디오 식별을 설정하려면 백엔드 환경 변수에 Google 및 AcoustID 인증 정보를 지정해야 한다.
# Ubuntu/Debian
sudo apt install libchromaprint-tools libsecret-1-dev
# macOS
brew install chromaprint
npm install
quasar dev
cd server
cp .env.example .env
# Set GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, ACOUSTID_API_KEY
go run .
백엔드는 기본적으로 :8090에서 실행되며, 프런트엔드는 기본 주소 http://localhost:8090을 사용한다. 주소는 VITE_BACKEND_URL 환경 변수로 바꿀 수 있다. Soulseek 기능을 쓰려면 브리지 의존성도 설치해야 한다.
cd server/soulseek-bridge && npm install
Soulseek 인증 정보는 시스템 키체인에 저장하거나 SOULSEEK_ACCOUNT와 SOULSEEK_PASSWORD 환경 변수로 지정한다. Linux에서 키체인을 사용하려면 libsecret 또는 GNOME Keyring이 필요하다. PWA는 앱 화면을 오프라인용으로 캐시하지만 오디오 스트림은 캐시하지 않는다.
quasar build
cd server && go build -o listune-server .
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요