https://gall.dcinside.com/mgallery/board/view/?id=vpngate&no=16034
본문은 상단 링크/텍스트의 스크랩 글입니다.
안녕 브붕이들아. matrix(메신저) -> nextcloud(클라우드) 순으로 소개했으니 이번에는 스트리밍에 관해 다루어보고자 해.
보통 음악 스트리밍 서비스라고하면 한국에서는 멜론, 벅스. 외국에서는 음질로 유명한 TIDAL이나 애플뮤직, 스포티파이 등이 있지.
하지만 이것들은 전부 제 3자의 서버를 이용하는 것들이야.
그래서 이번에는 자신이 스트리밍 서비스를 구축하고 호스팅할 수 있는 서비스들을 소개할게. 자작 나스에 넣으면 더할 나위 없이 좋지.
특히 무손실이나 Hi-Res을 선호하는 게이라면 오프라인에서 CD를 직접 사다 리핑해서 노래가 쌓여가는 재미도 느낄 수 있어
내가 소개하는 서비스들은 대부분 docker-compose를 이용해서 편안하게 올릴 수 있어. 아래에 docker-compose.yml를 같이 올려줄게
그럼 시작할게.
1~2. ~sonic 계열
1. subsonic
subsonic은 꽤 오래된 서비스야. 오래됬고, 제일 인기가 많았던 서비스였지. subsonic api라는 것을 지원해서 클라이언트 종류도 다양한 편이야.
하지만, 개발자가 돈번다고 저걸 유료화시킨 뒤에 업데이트도 뜸해져서 인기가 계속해서 식어가고 있어.
저걸 쓸 바에는 후술할 2번을 사용하는 것을 추천할게
2. airsonic
airsonic이야. 얘는 subsonic 프로젝트를 포크해서 만들어졌어 업데이트도 subsonic보다 자주하고 관리도 잘 되는 편이야.
dlna 지원 등의 기능도 많고, 폴더식으로 접근이 가능해서 사용법도 꽤 단순한 편인데다 얼마나 곡이 있는지 등의 정보를 자세히 기술해줘서 관리도 편리해.
단점이 있다면 디자인이 -틀- 냄새가 많이 나는게 단점이야.
docker-compose.yml
---
version: "2.1"
services:
airsonic:
image: lscr.io/linuxserver/airsonic
container_name: airsonic
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- CONTEXT_PATH=<URL_BASE> #optional
- JAVA_OPTS=<options> #optional
volumes:
- </path/to/config>:/config
- </path/to/music>:/music
- </path/to/playlists>:/playlists
- </path/to/podcasts>:/podcasts
- </path/to/other media>:/media #optional
ports:
- 4040:4040
devices:
- /dev/snd:/dev/snd #optional
restart: unless-stopped
linuxserver.io에서 제공하는 docker-compose를 사용하는 것을 추천함.
theme를 이용하면 이렇게 멋드러지게 수정할 수 있다는데, 나는 기본 테마로도 충분해서 굳이 테마를 바꾸려는 시도는 안해봤어.
아까 ~sonic류들은 subsonic api를 지원하기에 클라가 당연하다고 했었지? 클라이언트를 간단하게 알아보자.
전부 다 다루기에는 너무 많으니까 모바일의 대표적인 몇가지만 다뤄볼게
~sonic의 클라이언트들.
가. substreamer
안드로이드/iOS를 모두 지원하는 substreamer야. 다른 클라이언트들은 대부분 유료인데 얘는 무료라는게 장점이야.
세련되고 멋진 디자인을 가지고 있다는 장점도 있지. 단점이 있다면, 불안정하다는게 단점이야. 갑자기 이유 없이 멈추거나 튕겨버릴 때가 많아.
나. play:sub
아이폰/패드용으로 레딧에서 추천 많이하는 play:sub야. EQ 기능도 있고 디자인도 깔끔하고 안정적인게 특징이야.
단점은 유료..지만 돈값은 해
다. d-sub
d-sub는 안드로이드용 클라이언트야. 얘는 유료지만 f-droid에 가면 무료로 다운받을 수 있어.
디자인이 좆틀딱 메터리얼이지만 이 친구의 진가는 UAPP를 안정적으로 지원하는게 특징이야. (다른 클라이언트도 잘 지원할 수도 있겠지만, 개인적으로 d-sub가 제일 낫다고 생각함) 비트퍼펙트를 지원하는 UAPP를 쓰고 싶을 때 다른 클라들은 uapp dlna를 잘 인식못하는데 얘는 잘 인식하더라고.
3. Navidrome
최근에 갓나온 따끈따끈한 셀프호스팅 음원 스트리밍 서비스야 나온지 얼마 안됬는데 깃헙에서 별을 2.3k나 받을 정도로 관심이 뜨거운 편이야
디자인이 spotify를 보는것처럼 매우 깔쌈하지. 게다가 go 언어로 작성되서 스피드도 빠릿빠릿해.
후술할 jellyfin은 파일 색인이 존나게 느려서 답답해 뒤지는데, 얘는 좀 시원한 편이야. 다만, airsonic처럼 폴더를 탐색하는 방식이 아닌 태그로 음원을 관리하는 시스템이라 태그를 잘못 설정하면 앨범 한개가 수십개의 앨범으로 인식될 수 있다는 병신같은 단점이 있어.
subsonic api를 지원하기 때문에 위에 서술한 클라이언트로 들을 수도 있어
docker-compose.yml
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "/path/to/data:/data"
- "/path/to/your/music/folder:/music:ro"
공식 navidrome 이미지.
4. Jellyfin
Jellyfin은 Emby에서 떨어져나온 종합 스트리밍 서비스인데, 나만의 넷플릭스를 만들 수도 있지.
어플인 finamp와 조합하면 음악 스트리밍 서비스를 만들어낼 수 있어서 올려봤어
장점은 하나의 서비스로 음원, 영화 드라마 등 다양한 것들을 스트리밍할 수 있다는 장점이 있지만, 색인이 존나게 느리고 무겁다는 단점이 있어.
근데 얘 대안이 plex나 emby 박에 없어서 그냥 써야돼. 저 단점 제외하면 상당히 쓸만해
h.264로 인코딩해서 트랜스 코딩이 아니라 다이렉트 재생으로하면 성능 좆구린 타오나 라즈베리파이 4에서도 상당히 쓸만하게 동작하지.
(라즈 32bit에서는 트랜스 코딩 지원함)
finamp인데, 얘를 jellyfin 서버랑 연결시켜서 음악 스트리밍하는데 써먹을 수 있어.
flutter로 개발되서 멀티플랫폼 지원하고.. 무료라는 장점이 있지만 뜬금없이 튕기고 멈춘다는 점이 있어.
체감 상 subsonic 클라인 substreamer보다 더함.
docker-compose.yml
---
version: "2.1"
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- JELLYFIN_PublishedServerUrl=192.168.0.5 #optional
volumes:
- /path/to/library:/config
- /path/to/tvseries:/data/tvshows
- /path/to/movies:/data/movies
ports:
- 8096:8096
- 8920:8920 #optional
- 7359:7359/udp #optional
- 1900:1900/udp #optional
restart: unless-stopped
역시 linuxserver.io의 공식 이미지야.
이외에도 Ampache나 cherrymusic같은 스트리밍 서비스가 많지만, 업데이트가 끊기거나 불편한 점이 커서 그런가 채용픽이 점점 줄고 있어서 굳이 넣진 않았어.
다음에는 서비스 소개글 말고 다른 정보글로 돌아올게
긴글 읽어줘서 고마워