'synology'에 해당되는 글 3건

  1. 2020.12.19 Synology NAS에서 Torrent 사용하는 방법 총정리 (+Docker 활용) 11
  2. 2020.09.20 Synology NAS에 EBS 라디오 어학방송 녹음하기 2022년판 19
  3. 2016.12.05 Synology NAS에 EBS 라디오 어학방송 녹음하기 2016년판 49
2020. 12. 19. 23:26

Synology NAS에서 Torrent 사용하는 방법 총정리 (+Docker 활용)

NAS 사용자분들이 가장 흔하게 쓰시는 어플리케이션 중 하나가 BitTorrent, 보통은 토렌트라고 하는 파일 다운로드/공유 서비스일 텐데요.
Synology NAS에서 torrent client를 돌리는 방법은 대략 세 가지가 있는 것으로 보이는데, 제가 최근 들어 이 세 가지를 모두 경험해봤기에 정리 차원에서 한 번 글을 남겨봅니다.


그런데 요즘 같은 스마트 시대에는 BitTorrent client뿐 아니라 스마트폰에서 직접 torrent client를 원격 제어하고 모니터링할 수 있는 앱의 존재도 중요하죠. 스마트폰으로 웹서핑 하다가 토렌트 시드 파일이나 마그넷 주소를 클릭하면 자동으로 뿅하고 떠서 NAS에 다운로드 명령을 내려주고, 파일 전송 상황도 보기 편하게 정리해서 보여주는 앱이 참 편리합니다.

그런 이유로 torrent client와 그 컨트롤/모니터링 UI용 스마트폰 앱을 쌍으로 묶어 소개드리도록 하겠습니다.


그런데 애플 앱스토어에는 이런 UI 앱들이 없거나, 있었다가 내려간 것으로 알고 있습니다. 이렇게 원격 UI 앱이 없을 경우 스마트폰에서 NAS의 torrent client를 컨트롤하려면 NAS의 torrent 감시 폴더에 seed 파일을 올려서 다운로드를 시작하게 하고, 진행상황은 웹 브라우저로 NAS에 접속해서 모니터링하는 방법이 있기는 합니다. 좀 불편하지만요.

이런 감시 폴더 혹은 torrent 자동 추가 폴더 기능은 제가 소개 드릴 모든 torrent client에서 지원하고요. Seed 파일을 손수 올리시는 수고를 더는 방법으로는 Synology Drive를 이용해서 폰의 브라우저 다운로드 폴더를 NAS와 동기화시키고, NAS에서는 이 동기화된 폴더를 torrent 감시 폴더로 설정하는 방법도 있습니다.

1. Download Station / DS Get

Synology NAS에서 torrent를 쓰는 90%의 사용자가 사용하시는 프로그램이 바로 Download Station 아닐까 합니다. Synology 공식 다운로드 앱이고요. Synology NAS 패키지 프로그램들을 받을 수 있는 '패키지 센터'에 들어가시면 뭔가 다운로드하고 싶어지게 만드는 아래쪽 화살표 두 개짜리 아이콘이 있는데, 이걸 클릭하시면 설치되는데요.
Torrent 관련 기본적인 기능들은 다 되고, 성능도 꽤 잘 나오고 안정적입니다. 그래서 웬만한 분들은 얘 말고 딴 애들에 대한 필요성을 느끼지 못하실 겁니다.

 

스마트폰 원격 UI 앱으로는 역시 Synology 공식 앱인 DS Get이 있습니다. 토렌트 시드 파일이나 브라우저의 마그넷 링크로 다운로드를 시작하게 할 수 있고, 다운로드하는 파일들의 정보도 한 눈에 볼 수 있는 기본기에 충실합니다.
DS Get은 구글 플레이마켓에는 있습니다만, 앱스토어에서는 내려갔기 때문에 아이폰 사용자는 더이상 새로 설치하실 수 없습니다. 앱 없이 제가 위에서 설명한 감시 폴더와 웹브라우저를 이용한 원격 인터페이스를 쓸 수도 있고, DS Get의 대안으로 SynoDS라는 유료 앱이나 Download Station Mobile이라는 무료 앱도 있던데 쓸만한지 모르겠네요.


Download Station과 DS Get의 설치 및 사용법은 간단한 데다가 검색하시면 얼마든지 나오니 제가 굳이 자세히 설명하진 않겠습니다.

 

다른 torrent client 대비 Download Station의 특출난 장점이라면 torrent 검색 기능이 있습니다. 인터넷 검색으로는 백방으로 찾아봐도 도저히 구할 수 없어서 거의 포기했던 자료를 지푸라기라도 잡는 심정으로 Download Station에서 검색했더니 나왔던 경험이 한두 번 있었습니다. DLM 형식의 플러그인을 추가해주면 더 많은 서버의 자료를 검색할 수 있습니다. 인터넷에서 "Download Station DLM"으로 검색해서 DLM 파일 좀 추가 등록하면 torrent를 정말 잘 찾아줍니다.

그리고 크롬 웹 스토어에 보면 Synology Download Station이라는 확장 프로그램이 있어서 이걸 깔면 크롬에서 마그넷 주소 클릭했을 때 바로 다운로드 스테이션에서 다운로드시킬 수 있고, 크롬 주소창 우측에서 Download Station의 진행상황도 간략히 볼 수 있습니다. PC에서 크롬 브라우저 사용하시는 분들은 편리하게 이용하실 수 있습니다.

 
반면에 이 둘의 조합에 대해 개인적으로 답답한 불만 사항이 하나 있습니다.
DS Get의 모니터링 정보가 너무 빈약합니다. 남은 다운로드 시간처럼 꽤 중요하다고 생각되는 정보가 메인 화면에 표시되지 않습니다. 다른 건 그럭저럭 참을만 한데 다운로드 파일 네임 중간 부분이 안 보입니다. 보통 파일들 보면 파일이름 앞뒤에 뭔가 쓰잘데기 없는 정보들이 많이 붙어서 정작 중요한 내용은 한가운데 있을 경우가 많은데 DS Get은 아래 그림과 같은 식으로 파일명 중간부분을 '...'으로 생략하고 맙니다.

 

저 생략된 부분을 보려면 폰을 가로로 돌리고 생쑈를 하거나 그래도 원하는 부분이 안 보이면 파일을 지워버리겠다고 위협을 해야 오른쪽 그림처럼 풀 네임을 보여줍니다. 그러다가 손가락이라도 미끄러지면 며칠 걸려 90% 받던 도중의 파일을 그냥 날릴 수도 있는 거고요.

DS Get뿐만 아니라 Download Station 자체도 프로그레스 바, 시더/피어 수 같은 중요 정보가 메인 다운로드 모니터 화면에 일목요연하게 표시되지 않는 등, 보기 어렵게 디자인돼있는 편입니다.

 

어찌 보면 아주 사소한 단점이기는 한데, 아무튼 저는 이런 점이 답답하고 마음에 안 들어서 다른 BitTorrent Client를 깔아서 사용해왔습니다.

2. Transmission, Deluge, ruTorrent / Transmission Remote, Transdrone, nzb360

아마도 Download Station을 안 쓰시는 10%의 torrent 사용자 분들은 십중팔구 Transmission이나 Deluge를 쓰실 것 같습니다. 얘들은 Synology 공식 패키지 센터가 아닌 SynoCommunity 같은 서드파티 커뮤니티에서 받으실 수 있습니다. 

 

 

 

일단 다운로드를 받으시려면 패키지 센터 설정에서 패키지 소스로 http://package.synocommunity.com을 지정해주셔야 합니다. 그러면 패키지 센터에 커뮤니티 탭이 생기고, 아래처럼 Transmission이 보이죠.

 

 

 

SynoCommunity에는 Deluge와 ruTorrent도 있는데 제가 걔네들은 안 써봐서 Transmission 기준으로 설명드리겠습니다.
깔면 바로 쓸 수 있는 Download Station과는 달리 몇 가지 만져줘야 할 부분들이 있습니다. 일단 기억을 더듬어보자면 설치할 때 임시 다운로드 파일을 저장할 공유폴더를 물어봅니다. 저는 downloads라는 이름의 공유폴더를 새로 만들어서 거기로 지정해줬습니다. 그리고 NAS 계정의 ID/password와는 별도로 Transmission 용의 ID/password를 설정해줘야 합니다.


설치 후에는 폴더 권한 설정을 해줘야 하는데요. 위에서 만든 downloads 공유 폴더, 그리고 다운로드 파일을 최종적으로 저장하게 될 video 같은 기존 공유 폴더 몇 개에 대해 sc-download 그룹의 읽기/쓰기 권한을 활성화시켜 주셔야 합니다.

 

 

 

 

그리고 Transmission은 bit torrent의 기본 송수신 포트인 6881-6890을 쓰지 않고 51413을 씁니다. 유무선 인터넷 공유기에서 51413 포트를 TCP와 UDP 모두에 대해 NAS로 포트 포워딩 설정해주셔야 합니다. 그리고 외부에서 스마트폰 앱으로 컨트롤하기 위해서는 UI용 포트인 9091도 (TCP만) 추가로 포트 포워딩 설정해주셔야 합니다. 이렇게 하시고 나면 웹 브라우저에서 http://(NAS 주소):9091을 치면 Transmission에 접속할 수 있습니다.
Transmission은 Download Station과 비슷한 부분이 많습니다. Download Station이 Transmission을 기반으로 만들어졌다고 들었는데, 그래서 그런 것 같기도 합니다.

함께 쓸 수 있는 스마트폰 원격 UI 앱은 여러가지가 있는데요. Transmission 전용으로 Transmission Remote라는 앱도 있고요, 다양한 torrent client를 지원하는 앱들 중 구글 플레이스토어 다운로드 순위 및 리뷰 점수 상위권인 앱으로 Transdrone과 nzb360이라는 앱이 있습니다.
세팅 방식은 DS Get과 유사하긴 한데 몇 가지 다른 점도 있습니다. 일단 nzb360의 경우 torrent보다는 NZB쪽이 전문이다 보니 torrent 서비스를 사용한다는 것을 명시적으로 세팅해줘야 했습니다.

 

 

 

원격 control을 위해서 NAS 로그인 정보를 입력하는 설정 화면에서는 torrent client 프로그램 이름을 명시해줘야 되고, port 넘버도 넣어줘야 하는 점이 DS Get과는 다른 점입니다. Transdrone의 경우 Synology라는 옵션이 있던데 다운로드 스테이션도 지원해주나 시도해봤지만 안 되더군요. DS Get은 NAS 하나에만 접속할 수 있게 돼있는데, 이들 앱은 여러 대의 NAS도 설정할 수 있는 점도 다르고요.

 

그 외 특이한 옵션으로 집 Wi-Fi에 연결됐을 때는 자동으로 192.168.0.XX 같은 사설 IP로 접속해주는 것도 있습니다.

이들 앱의 메인 화면을 보시면 일단 각 다운로드의 예상 완료 시간, 피어 수 상황 같은 적절하게 중요한 정보들도 한 화면에 보여준다는 점이 너무나도 단출한 DS Get 화면과는 다릅니다. 아래 스크린샷 왼쪽이 Transdrone, 오른쪽이 nzb360입니다.
파일 이름 면에서는 Transdrone은 두 줄이 되든 세 줄이 되든 파일 이름을 생략하지 않고 보여주는 점이 좋고, nzb360은 파일 이름이 생략되기는 하지만 보여주는 글자 수가 많은 데다가 생략되는 부분이 파일 이름 중간이 아닌 끝부분이기 때문에 DS Get보다는 파일 구분하기가 훨씬 더 편합니다.

 

그런데 Transdrone은 왠지 UI가 좀 예쁘지 않고 어딘가 맹하고 허전한 감이 없지 않아 있고요.

nzb360은 UI 컬러가 제 맘에 쏙 들기는 하는데 마그넷 링크 다운로드 기능을 쓰려면 Pro 버전으로 업그레이드를 해야 합니다. 유료 Pro 버전이 한 2000원 하면 쾌척하려고 했는데 무려 9900원이나 합니다. 앱 이름에서도 알 수 있듯이 torrent보다는 NZB에 특화된 앱인데, 제가 쓰지도 않을 NZB 기능 때문에 만원이나 쓰기는 아깝더라고요.
그래서 저는 둘 다 깔아놓고 마그넷 링크 다운로드는 Transdrone에 묶어놓고, 모니터링은 nzb360 무료 버전으로 하고 있습니다.

하지만 아이폰 용으로는 Transmission Remote도, Transdrone도, nzb360도 없습니다. 앱스토어에서 NZB로 검색해보시면 앱이 많이 나오는데요. 그 중에서 bit torrent도 지원하는 앱을 아마도 찾으실 수 있을 겁니다. iOS 앱은 안 써봐서 어느 것이 좋은지 모르겠네요.

 

3. qBittorrent / Transdrone, nzb360

우선 말씀 드리자면 이 방법은 모델명 뒤에 +가 붙은 인텔 CPU 내장 Synology NAS에서만 적용할 수 있는 방법입니다. Plus 모델이 아니신 분은 굳이 읽으실 필요 없을 듯하네요.

그냥 Transmission에 만족하고 쓰고있던 중 2020년 12월 셋째주에 Synology DSM 7.0 베타 테스트 메일이 왔고, 저는 DSM 7.0에 추가된다는 Synology Photos라는 사진 관리 패키지에 혹해서 그만 베타 버전을 깔고 말았습니다. 그런데... Transmission을 포함해서 SynoCommunity에서 깔았던 많은 패키지들이 이딴 에러 메시지를 내면서 실행불가 상태가 돼버렸습니다.

 

그냥 몇 주 기다리면 SynoCommunity의 Transmission 패키지도 DSM 7.0을 지원하도록 업데이트되긴 하겠지요(생각해 보니 그렇게 되면 제가 위에 정리한 Transmission 설치법도 달라질 것 같습니다-_-). 그동안은 Download Station을 쓰면 되는 거고요. 그래도 뭔가 또다른 대안이 있을 것 같아서 검색을 해보니 Docker에다가 Transmission을 깔면 된다더라고요. 흠... 하지만 이왕 Docker를 써야 한다면 Transmission보다는 Docker에서만 쓸 수 있다는 qBittorrent에 한 번 도전해보자는 생각이 들었고요.

Docker라는 이름은 계속 들어왔지만 설명을 들어봐도 도통 어디에 어떻게 쓰는 놈인지 모르겠더라고요. 그래서 안 쓰고 있었는데, 이번 기회에 제대로 도전할 동기가 생긴 거죠.
DSM 도움말에 따르면, Docker란 격리된 소프트웨어 컨테이너 내에서 응용 프로그램을 빌드 및 실행하도록 하는 경량형 가상화 환경입니다. 흠... 전문용어를 더 많은 전문용어로 설명해봤자 아무런 이해가 안 되네요.

그래서 좀더 인터넷을 뒤져보고 공부해봤습니다. 그런데 파고들면 들수록 아무리 봐도 Docker란 것은 NAS에서 쓰라고 만든 게 아니라 대규모 데이터베이스 서버들을 계속 유지보수해가면서 쓰려는 용도로 만들어진 것 같더군요.


그런데 이걸 왜 NAS에서 써야 하느냐? 어디까지나 제 생각입니다만 원래 용도와는 관계 없이 단순히 NAS에서 Linux 프로그램을 돌리기 위해 Docker가 필요한 것이라는 결론을 내렸습니다.
Synology의 DSM OS는 Linux가 베이스이긴 하지만 NAS 관리에 특화되어 오랜 시간동안 별개로 진화해왔기 때문에 다른 메인스트림 Linux 배포판들과는 많이 달라졌습니다. 그래서 Linux 프로그램을 손쉽게 바로 빌드해서 사용할 수 없고, SynoCommunity 같은 곳에서 DSM 용으로 포팅한 패키지를 만들어주길 손가락 빨며 기다리고 있어야 했던 거죠.
그러다가 Synology에서 x86 CPU 탑재 모델에 한해 Docker를 쓸 수 있게 해준 것을 계기로, 이제 수많은 Linux 프로그램의 최신 버전을 NAS에서도 Docker 위에 올려서 돌릴 수 있게 된 겁니다.

그러니까 우리 같은 일반 NAS 사용자는 굳이 Docker의 심오한 원리와 전문적인 운용법까지 알 필요가 없습니다. 그냥 Docker에 프로그램을 깔아서 동작시킬 수 있는 수준 정도의 지식만 있으면 되는 거죠.

적어도 용어는 이해하고 넘어가야 할 것 같은데요. Docker에 보면 레지스트리니 이미지니 컨테이너니 볼륨이니 하는 생소한 용어들이 무지 많이 등장하는데요, 나름 저의 언어로 한 번 정리를 해봤습니다.
그 중 가장 중요한 건 '이미지' 같은데요. 이미지란 qBittorrent 실행 파일뿐만 아니라 그걸 실행하는 데 필요한 다른 프로그램들과 각종 환경들을 스냅샷 같은 걸 찍어서 저장해놓은 거라고 보면 될 듯합니다.
레지스트리란 다른 사람들이 이미 만들어놓은 수많은 이미지들을 모아놓은 저장소 같은 것이고요.
컨테이너란 Docker 상에 이미지를 실체화시켜 놓은 것이고, 얘가 바로 NAS 상에서 돌아가는 Linux 가상 머신입니다. 이미지가 붕어빵틀이라면 컨테이너는 붕어빵인 거죠. qBittorrent 이미지 붕어빵틀 하나로 qBittorrent 컨테이너 붕어빵을 여러 개 찍어내서 한 NAS 안에서 돌리는 것도 가능합니다. 그럴 필요성은 별로 없지만요.
볼륨은 NAS의 디스크 볼륨과 같은 단어를 사용해서 좀 헷갈리는 부분인데요. Docker는 일종의 가상 머신이기 때문에 실제 머신과의 접점이 필요합니다. Torrent를 열심히 다운로드 받았는데 그 파일이 가상머신 상에만 존재하다가 그 가상머신을 끌 때 사라져버린다면 아무 의미 없잖아요. 그래서 실제 머신의 특정 폴더를 가상머신에 마운트해서 거기다가 파일을 저장해야 하는데, 이런 폴더를 Docker에서는 볼륨이라고 부릅니다.
참 쉽죠? ㅎㅎ

 

 

잡설이 길었는데요. 이제부터 Docker에 qBittorrent 설치하는 방법을 차근차근 설명드리겠습니다.
가장 먼저 Docker부터 설치해야겠죠. 패키지 센터에 보면 네모난 컨테이너 여러 개를 지고 가는 고래 모양 아이콘의 Docker가 있는데 이걸 설치하세요.
Docker를 열어보면 일반적인 패키지와는 달리 이런 안내문인지 경고문이 뜹니다. 뭔가 범접할 수 없고 어려운 분위기를 내뿜죠.

 

 

 

Docker를 열면 지금은 아무 것도 없기 때문에 일단 qBittorrent의 이미지를 받아야 합니다. 다른 사람들이 만들어놓은 이미지는 어디에서 공유한다고 했죠? 바로 레지스트리입니다.

Docker 왼쪽 메뉴에서 레지스트리를 선택하고 검색 창에 qBittorrent를 입력해서 검색합니다. 그러면 qBittorrent 이미지만 해도 222 개나 있다는 것을 알 수 있습니다. 저는 그 중에서 가장 인기가 많은 linuxserver의 qBittorrent 이미지를 받았습니다. 다운로드 받을 때 태그를 물어보는데, 그냥 latest로 놔두시면 됩니다.

 

 

 

붕어빵틀 이미지 다운로드가 끝나고 나면 이번에는 붕어빵 컨테이너를 구울 차례입니다. Docker 왼쪽 메뉴에서 이미지를 선택하고, 오른쪽에서 linuxserver/qbittorrent를 선택한 후 '실행' 버튼을 누릅니다.
그러면 아래 그림과 같은 컨테이너 생성 마법사 창이 뜹니다. 컨테이너 이름은 그냥 qBittorrent로 하시면 됩니다. 붕어빵 여러 개 찍어내실 거 아니라면요.

 

 

 

Torrent는 특성 상 높은 권한이 필요한 어플리케이션은 아니고요. 리소스 제한도 일단은 하지 않고 진행하도록 해보시죠. 쓰시다가 나중에 torrent가 CPU와 RAM을 너무 많이 사용해서 다른 일을 못할 정도가 된다면 리소스 제한을 활성화하는 게 좋겠습니다. 여기서 '다음' 버튼을 누르고 싶으시겠지만 '고급 설정'에 설정해야 할 내용들이 한가득 있으니 먼저 고급 설정 버튼을 누르셔야 합니다.

 

 

 

'DSM 메인 메뉴 바로 가기 생성'을 해두면 DSM에서 qBittorrent Web UI 창을 바로 띄울 수 있으니 설정해주시면 좋습니다. http://(NAS 주소):8080이라고 해두시면 바로가기 클릭 시 qBittorrent 로그인 창이 뜨고요. Transmission Web UI가 9091 포트를 쓰듯이 qBittorrent Web UI는 8080 포트를 쓰기 때문에 맨 뒤에 붙여줍니다.

 

 

 

볼륨은 Docker container라는 가상 머신이 실제 NAS와 데이터를 주고 받기 위해 설정하는 건데요. qBittorrent 설정을 저장하기 위한 /config 폴더와 다운로드 결과를 저장하기 위한 /downloads의 두 폴더가 필요합니다.

폴더 추가 버튼을 누르셔서 위 그림의 예와 비슷한 폴더를 만들고 설정하시면 됩니다. 왼쪽의 실제 폴더 이름과 경로는 꼭 저처럼 하실 필요 없고 원하시는 아무 폴더나 지정하셔도 됩니다.

 

그 다음은 포트 설정인데요. NAS를 인터넷에 연결시켜주기 위해 유무선 공유기가 포트 포워딩을 해주듯, Docker 컨테이너가 네트워크에 연결되도록 하기 위해 NAS가 포트 포워딩을 해주는 거라고 생각하시면 됩니다.

 

 

 

로컬 포트(NAS의 포트 넘버)는 절대로 기본 세팅 대로 '자동'으로 놔두시면 안 되고요. 가급적 같은 포트로 연결해주시는 게 좋습니다. 컨테이너 포트 6881은 처음에는 로컬 포트 6881로 연결했었는데 이 포트는 다운로드 스테이션과 충돌 난다고 해서 저는 6890으로 바꿨습니다.

 

 

 

그리고 마지막으로 중요한 설정이 바로 환경 변수 설정입니다. 그 중 가장 중요한 것이 이 컨테이너를 돌리는 사용자가 누구인지 설정하는 겁니다. 변수 '추가' 버튼을 누른 후에 /config와 /downloads에 연결된 폴더들을 읽고쓸 권한이 있는 사용자의 PUID와 PGID를 기입해줘야 합니다. 이걸 세팅 안 하시면 qBittorrent 설정도 저장이 안 되고, 다운로드 파일도 세이브가 안 됩니다.
그런데 이게 NAS 계정의 username이 아니고 숫자를 넣어줘야 하더라고요. 만약 admin ID를 막지 않고 살려두셨다면 admin에 해당하는 PUID와 PGID인 1024, 101를 각각 넣어주시면 됩니다. 만약 해킹 방지를 위해 NAS에서 admin 계정을 비활성화해두셨다면 NAS에 SSH로 접속해서 administrators 그룹 권한을 가진 유저(이 글을 읽고 계신 분이겠죠)의 UID와 GID 숫자를 알아내셔야 합니다.

 

 

 

산 너머 산이라고 SSH는 또 뭐냐고요? 이건 ☞제 다른 글☜을 참고하시면 되겠습니다. 아무튼 NAS에 SSH로 접속하시고 나면 해야 할 일은 간단합니다. SSH 커맨드 프롬프트에


id (내 username)

 

라고 치시면 됩니다. 여기서 첫번째 나온 uid 숫자(제 경우 1026)를 PUID에 넣어주시고, PGID에는 101(administrators)을 넣어주시면 됩니다. 그리고 그 아래에 보면 LANGUAGE, LANG 설정이 있는데, 이걸 ko_KR.UTF-8로 바꿔주시면 Web UI 언어가 한글로 바뀝니다.
그리고 이제 적용 버튼 누르시고, 다음 버튼을 누르시면 다음과 같은 최종 요약 확인 창이 뜹니다.

 

 

 

세팅 입력을 제대로 했는지 다시 한 번 훑어보시고 완료 버튼을 누르시면 qBittorrent 컨테이너가 만들어지고 바로 실행됩니다.
Docker에서 '컨테이너' 메뉴에 들어가 보시면 이렇게 qBittorrent가 돌아가는 걸 보실 수 있습니다. 마치 패키지 센터에서 패키지 실행을 켜고 끄듯이 맨 오른쪽 버튼을 누르시면 컨테이너 실행을 켜고 끌 수 있습니다. 한동안 torrent 쓸 일 없을 때는 qBittorrent도 끄고 Docker 자체를 꺼둬도 됩니다.

 

 

 

이제 브라우저에서 새 창을 여시고 주소창에 (NAS의 내부 IP 주소):8080을 치시면 이렇게 qBittorrent의 한글 Web UI가 뜹니다.

 

 

 

초기 ID는 admin, password는 adminadmin입니다. 이런 알려진 값이기 때문에 외부로부터의 침입을 막기 위해 내부 IP주소로 접속하라고 말씀 드렸던 것이고, ID/패스워드를 바꾸시기 전까지는 공유기에서 8080 포트를 외부로 포워딩하지 않는 편이 안전합니다.
ID 패스워드 변경은 Web UI의 옵션 설정 메뉴에서 가능합니다. 메인 메뉴의 도구 > 옵션으로 들어가셔도 되고 그보다 오른쪽에 있는 톱니바퀴 모양 아이콘을 클릭하셔도 됩니다. 여러 개의 탭이 있는데 그 중 '웹 UI' 탭에서 암호 변경이 가능합니다. 이 탭의 아래쪽에 보시면 '교차-사이트 요청 위조 (CSRF) 보호 사용'이라는 옵션이 있는데 이걸 꺼야 DSM에서 qBittorrent Web UI를 띄울 수 있더라고요.

 

 

 

이 정도만 세팅해주면 이제부터 qBittorrent를 사용하실 수 있습니다.

그런데 최적화된 사용을 위해 좀더 조정을 해주는 것도 좋은데요. 다운로드 스테이션이나 Transmission과 비교해봤을 때 qBittorrent는 너무 후하게 퍼주는 경향이 있습니다. 다운로드 스테이션처럼 짜게 업로드하는 것이 보편적인 건지 qBittorrent처럼 후하게 올려주는 것이 정상적인 건지 잘 모르겠습니다만, qBittorrent는 정말 이렇게 열심히 업로드하면 다운로드가 방해받지 않을까 싶을 정도로 심하게, 다운로드보다 더 빨리 10 MB/s 이상의 속도로 업로드를 하더라고요.

아무튼 저희가 torrent 쓰는 목적이 업로드보다는 다운로드잖아요? 그런 의미에서 업로드 제한을 걸어두는 것이 좋겠습니다. 먼저 옵션 창에서 '속도' 탭을 엽니다.

 

 

 

전역 속도 제한의 '올리기'를 대략 1000 KB/s 전후로 제한하면 됩니다. 좀더 인색하게 100 KB/s 이하로 줘도 괜찮을 것 같기도 하고요, 기가빗 인터넷 사용 중이시면 좀더 후하게 5000 정도로 줘도 괜찮을 것 같긴 합니다. 그리고 (특히 올리기 속도 제한을 100 KB/s 이하로 하셨을 경우에는) 맨 아래 '속도 제한 설정' 칸의 선택을 모두 해제해놓는 것이 다운로드 속도에 좋다고 하더군요.

 

 

 

그리고 마지막으로 '비트 토런트' 탭인데요. 여기서 토런트 대기열과 배포 제한을 설정합니다.

가용성이 매우 낮은 오래된 토렌트를 한꺼번에 몇십 개 걸어놓아야 할 경우가 가끔 있는데요, 이럴 때 토런트 대기열이 문제가 될 수 있습니다. 다운로드 스테이션 같은 경우 동시에 받는 파일 수가 10개로 제한되어 있는데요 (옵션에서 바꿀 수는 있습니다), 10번째를 넘어가는 파일들은 다운로드를 아예 시작조차 하지 않는 대기상태에 남아 있습니다. 재수 없이 처음 다운로드 받기 시작한 파일 10개의 torrent 상태가 거의 죽어있는 경우라면 아무리 그 이후 파일들이 쌩쌩해도 그냥 그 상태로 꼼짝 없이 멈춰 버립니다. 가망 없는 애들을 일일이 수동으로 일시중지시키면 그제서야 다음 파일이 시작되긴 하는데요, 아무튼 불편합니다.

qBittorrent에는 그런 상태가 원천적으로 발생하지 않도록 하는 '이 제한에 느린 토런트는 계산하지 않음'이라는 옵션이 있습니다. 속도가 안 나오는 느린 torrent는 10개가 됐든 100개가 됐든 열외로 놓고 대기열 갯수로 안 쳐주기 때문에 그 다음 차례 쌩쌩한 파일에게 기회가 올 수 있는 겁니다. 저는 그래서 이 옵션을 켰고요. '최대 받기'와 '최대 활성 토런트' 갯수도 기본 설정 대비 키워줬습니다.

 

그리고 다운로드 스테이션 써보신 분은 아시겠지만 되게 얌체 같이 내 다운로드 끝나고 나면 업로드를 바로 딱 끊어버립니다. 내 볼 일 끝나면 끊어주는 게 합리적이긴 한 것 같아서 '배포 제한'을 걸어두긴 하려고 합니다만... 내가 받았다고 바로 입 싹 닦는 건 좀 심한 것 같아서 1시간 후에 끊는 걸로 해줬습니다.


이제 진짜 최종단계로 유무선 공유기에서 6890 (TCP + UDP)과 8080 (TCP) port를 NAS로 포워딩해주셔야 합니다. 그래야 qBittorrent 컨테이너의 포트가 인터넷으로 연결될 테니까요. 이제부터는 (DDNS 주소):8080로도 qBittorrent Web UI에 접속이 될 겁니다. 또, DSM의 시작 버튼을 눌러보시면 Docker와 동일한 고래 모양으로 qBittorrent 아이콘이 만들어진 것도 보이실 겁니다. 이걸 누르셔도 새 브라우저 창으로 qBittorrent Web UI가 뜹니다.

 

 

 

qBittorrent를 써보니, 다 좋은데 한 가지 Download Station과는 달리 다운로드 받을 폴더를 지정해줄 수 없다는 점이 아쉽네요. 다운로드 완료 후 파일을 직접 옮겨줘야 하는 귀찮음이 존재합니다. 사실 이건 qBittorrent의 문제가 아니고 Docker 상에 설치하는 모든 torrent client들의 공통된 단점일 듯합니다.

한 가지 팁을 드리자면 다운로드 폴더 downloads/를 파일이 최종적으로 옮겨져야 할 공유 폴더와 동일한 volume 안에 두시면 좋습니다. 그러면 파일을 옮길 때 실제 데이터를 옮기는 것이 아니라 파일의 위치 정보만 바꿔써주기 때문에 파일 이동에 걸리는 시간을 대폭 절약할 수 있거든요.

 

스마트폰 원격 UI 앱은 구글 플레이스토어에 qBittorrent Controller라는 전용 앱이 있습니다.

메인화면에 뭔가 깨알같이 많은 정보들이 보이고, 파일명을 생략하지 않고 다 보여주는 것은 좋습니다. 그런데 너무 많은 정보를 보여주려다 보니 오히려 원하는 정보가 눈에 잘 안 들어오는 단점도 있습니다. 그리고 다운로드 진행률을 시각적으로 표시해주는 프로그레스 바가 없어서 직관적으로 알아보기 불편하기도 하고요. 게다가 무료버전은 화면 아래쪽에 광고도 나오네요.

 

다운로드를 시작할 때 저장 폴더를 물어보는데요. 어차피 Docker에서는 폴더를 자유자재로 지정할 수 없어서 이 화면을 좀 안 보고 싶은데, 아무리 '이 대화상자 다시 표시하지 않기'를 선택해도 가볍게 씹고 이 화면을 끈질기게 보여줍니다. 앱이 약간 기본이 엉성하다는 느낌을 줍니다.

 

그냥 전용 앱 말고 위의 2번 항목에서 소개 드린 Transdrone이나 nzb360을 쓰시면 편합니다. 얘들도 qBittorrent를 지원하거든요.

 

 

 

그런데 Transdrone은 qBittorrent 접속 시에 간간히 이딴 메시지가 나오는 현상이 있습니다. 아무래도 이름처럼 Transmission에 최적화된 앱이라 그런지 qBittorrent와는 잘 안 맞는 부분이 있는 것 같네요. 이 현상은 qBittorrent 옵션의 웹 UI 탭에서 '클릭 가로채기 방지 사용', '호스트 헤더 유효성 검사 사용' 체크박스를 해제하면 빈도가 크게 줄어듭니다(아주 사라지지는 않는 것 같네요-_-).


애플 앱스토어의 경우 qBittorrent Controller, Transdrone, nzb360은 없고요. NZB로 검색해보시면 나오는 앱들 중에 qBittorrent의 원격 UI를 지원하는 앱도 있을 것 같습니다. 제가 해보지는 않았습니다.

 


 

이상, Synology NAS에서 BitTorrent client를 사용하는 방법 세 가지를 정리해봤습니다.


제 생각에는, plus 모델 NAS를 사용 중이시고 Linux에 대한 이해도가 어느 정도 되신다면 qBittorrent든 Transmission이든 Docker 상에 설치하는 세번째 방법이 가장 효율적이면서 안정적일 것 같습니다. DSM이 베타가 되든 뭐가 되든 Docker 이미지는 그 환경 그대로 꿋꿋이 안정적으로 유지될 테니까요. 다운로드 현황을 일목요연하게 잘 표시해주는 모바일 앱 지원은 덤이고요.
세팅 같은 거 신경 쓸 필요 없이 torrent client가 알아서 잘 동작하기만 하면 된다고 생각하시면 첫번째 다운로드 스테이션 추천 드립니다. Torrent 검색이 필요할 때 쏠쏠하게 도움이 되기도 합니다.
다운로드 스테이션에는 뭔가 부족함을 느끼지만 Docker를 지원하지 않는 NAS를 소유하신 분들께는 두번째 옵션의 Transmission이나 Deluge가 좋겠지요.

 

그런데 솔직히 세 방법 모두 기능과 성능은 대동소이합니다. 이미 잘 동작하는 torrent client가 셋업되어 있는 상황에서 굳이 추가로 에너지를 들여서 다른 것으로 바꿔야 할 만큼의 이득은 없는 것 같습니다. 그래서 다들 설치하기 편한 Download Station을 쓰시는 거겠죠. 호기심 많은 분들이나 Docker 같은 걸 건드려보는 거고요.

2020. 9. 20. 21:02

Synology NAS에 EBS 라디오 어학방송 녹음하기 2022년판

저는 DSM 6.0에서 Debian chroot를 사용해서 ☞이런 방법☜으로 EBS 라디오 어학방속 녹음을 잘 하고 있었는데요. 최신 DSM 7.0에서는 Debian chroot도 사용할 수 없고 그 외 여러가지로 세세하게 달라진 부분들이 많더라고요.

 

요즘은 무제한 통신요금도 보편화돼서 굳이 녹음하지 않고 EBS 반디 앱으로 실시간으로 들어도 되고, 애초에 EBS 방송보다 더 좋은 YouTube 채널이나 스마트폰 앱 등의 영어 공부 컨텐츠도 많이 생겨서 굳이 녹음 안 해도 될 것 같기는 한데요. 사실 저도 EBS 녹음한 걸 마지막으로 들은 게 언제였나 싶기도 합니다. 하지만 이렇게 포기하는 건 왠지 패배자의 변명처럼 들려서 결국 머리를 굴리고 굴려 DSM 7.0에서도 EBS FM 라디오 어학방송을 녹음하는 방법을 찾아냈습니다. 게다가 기존 방법 대비 몇 단계 더 간단해졌습니다.

 

애초에 Debian chroot를 사용했던 이유는 스트림을 파일로 저장해줄 수 있는 Libav 라이브러리를 DSM 상에 설치할 수 없어서 가상의 Debian 상에 깔고 돌렸던 거였거든요. 그런데 보니까 지금은 Libav과 동일한 기능을 가지는 FFmpeg을 DSM에 바로 설치할 수 있더라고요. 그래서 굳이 Debian chroot를 설치하고, 거기 들어가서 녹음하고, 그걸 또 꺼내오고 할 필요 없이 바로 DSM 상에서 녹음할 수 있게 됐습니다. 아무튼 이제부터 2022년 현재 Synology NAS에서 EBS 라디오 어학방송을 녹음할 수 있는 방법을 차근차근 단계별로 설명 드리겠습니다. 
 

1단계. SSH 환경 셋업

사실 Debian chroot를 사용할 게 아니면 SSH도 필요 없을지 모릅니다. 그렇지만 파일 권한 설정이라든지, 녹음이 잘 되는지 테스트해보는 건 SSH 상에서 하는 것이 훨씬 편하니까 SSH 환경을 셋업해두시는 편이 좋습니다. NAS의 파워유저시라면 SSH 환경 정도는 다 정비돼 있으실 테니 다음 단계로 바로 넘어가셔도 되고요.

 

 

일단 NAS DSM의 제어판 맨 아래의 '터미널 및 SNMP' 메뉴, '터미널' 탭에서 SSH 서비스를 활성화하셔야 합니다. 포트는 일반적으로 22번을 쓰게 되어 있는데요. SSH는 해킹과 공격의 주된 타겟이라서, 저는 집에서만 접속하고 외부에서는 접속이 안 되도록 공유기에서 포트 포워딩을 하지 않았습니다. 피치 못하게 외부에서 접속해야만 한다면 외부에서는 22번이 아닌 10022라든가 22222번 같은 다른 포트로 보이도록 포워딩하는 것이 좋습니다.
SSH는 최초 녹음 세팅 단계에서만 사용합니다. 굳이 SSH를 계속 사용해야 할 다른 용도가 없다면(지금까지 안 쓰셨다면 앞으로도 안 쓰실 듯) 녹음 설정 후 다시 꺼놓으시는 게 보안 상 좋습니다.

이제 SSH 접속을 위해 PC에 SSH 클라이언트 프로그램을 설치해야 되는데, PuTTY가 가장 널리 쓰입니다. 크롬이나 파이어폭스 웹 브라우저 이용자이시면 FireSSH 플러그인을 깔아서 쓰셔도 됩니다.

자 이제 SSH로 NAS에 한 번 접속해 보시죠.
PC에서 SSH 클라이언트를 띄워서 NAS 주소 넣으시고, SSH 포트 넘버 넣으시고, 사용자 ID와 패스워드를 넣으면 되는데요. SSH 설정화면의 설명에도 나오지만 SSH 접속 ID는 Administrators 그룹에 속한 사용자의 ID만 가능합니다. 맨 처음 접속하시면 무슨 키를 신뢰하겠냐느니, 저장하겠냐느니 물어볼 텐데, 그냥 그렇다고 대답하심 됩니다.

 

DSM 7.0으로 바뀌면서 SSH 접속을 하면 이렇게 root 권한으로 뭘 하지 말라는 경고가 뜨게 되었습니다. 이 아래 단계에서 어차피 root 권한은 필요 없으니 굳이 ☞예전 방법☜처럼 sudo -i를 입력하시지 않아도 됩니다.

 

 

2단계. FFmpeg package 설치

FFmpeg은 Libav와 같은 뿌리에서 나온 미디어 인코딩/디코딩 라이브러리인데요. 2016년에는 Libav가 좀더 잘 될 것처럼 보였는데(저만의 착각일지도요), 지금은 FFmpeg이 완연히 잘 나가는 것 같습니다. DSM에도 이미 FFmpeg이 깔려져 있기는 한데 정말 옛날 버전이라서 RTSP 스트림 저장을 지원하지 않으니, 최신 버전의 package를 설치하시는 게 좋습니다.
그런데 패키지 센터를 아무리 뒤져봐도 FFmpeg이나 Libav 같은 게 없죠? 패키지 소스를 추가해야 됩니다. 패키지 센터의 설정 메뉴 > 패키지 소스 탭의 추가 버튼을 누르시고, 이름은 대충 넣으시고 위치에 http://packages.synocommunity.com을 입력하고 확인 버튼을 누르시면 패키지 소스에 추가됩니다.

 

 

패키지 센터의 설정 옵션 '일반' 탭 맨 아래의 '신뢰 수준'이 'Synology Inc. 및 신뢰할 수 있는 게시자'로 돼있는지도 확인하시고요.

이제 패키지 센터에 '커뮤니티'라는 tab이 추가되고, 그 안에 ffmpeg이 보입니다. 저는 이미 설치했기 때문에 '설치됨'이라고 나오는데, 아직 설치 안 하신 분은 '설치'라고 쓰여있을 테니 그 버튼을 클릭해주세요. 향후 단계를 고려할 때, 설치 볼륨은 볼륨 1으로 하시는 것이 좋습니다.

 

 

 

 

3단계. 녹음 shell script 파일 업로드

 

이전에는 rtsp://ebsonairandaod.ebs.co.kr:554/fmradiobandiaod/bandiappaac 라는 URL에서 RTSP protocol로 streaming을 받으면 128 kbps로 음질도 좋고 군더더기도 없이 깔끔하게 EBS FM 라디오를 녹음할 수 있었는데, 2020년 11월 12일 부로 EBS 측에서 스트림을 폐쇄했고요. 그래서 상황이 조금 지저분해졌습니다.

 

이제 EBS FM 라디오 방송을 스트리밍할 수 있는 URL은 rtmp://ebsandroid.ebs.co.kr:1935/fmradiofamilypc/familypc1m 정도 뿐인데요. 대중성이 좀 떨어지는 Adobe Flash Player를 위한 RTMP protocol을 쓰는 것까지는 그렇다 쳐도, audio bit rate는 64 kbps밖에 안 되고, 의미 없는(그냥 EBS FM 로고만 떠있는 정지영상입니다) 동영상이 512 kbps나 붙어있습니다. 그래서 일단은 전체 576 kbps 스트림을 받아서 그 중 필요 없는 영상 데이터를 솎아버리는 작업이 필요하죠(직접 하실 필요는 없고 FFmpeg이 해줍니다).

 

저는 저런 것들이 맘에 안 들어서 EBS FM 라디오 대신 rtsp://new_iradio.ebs.co.kr:554/iradio/iradiolive_m4a URL의 '반디 외국어 전문' 채널의 스트림을 녹음하기로 했습니다. 이쪽은 128 kbps의 RTSP 스트리밍이라는 점은 이전과 같아서 좋지만, 문제는 방송 시간이 FM 라디오와 다르다는 점입니다. 예를 들면 '입이 트이는 영어'라는 프로그램은 매일 아침 6:40에 라디오에서 방송하는데, 반디 외국어 전문 채널에서는 9:40, 13:40, 19:40, 그리고 다음날 0:40, 8:40까지 총 5번 재방송을 합니다. 정확한 반디 외국어 채널 편성표는 ☞이곳☜을 참고하시기 바랍니다.

ebs_record.sh
0.00MB

음질에 별로 연연하지 않으시고, 그보다는 EBS FM 방송 시간에 맞춰 실시간으로 녹음하시고 싶으신 분은 EBS FM 라디오를 저음질로 녹음하는 위 첨부 파일을 받으시고요. 음질을 위해서라면 복잡한 방송 시간표를 들여다보고 NAS 타이밍을 세팅하는 것 정도는 얼마든지 가능하신 분은 좀더 고음질로 반디 외국어 채널을 녹음하는 아래 첨부파일을 받으세요.

bandi_record.sh
0.00MB

둘 중 한 파일을 골라서 다운로드 받으셨다면 NAS의 아무 폴더에나 업로드하세요. 저는 /volume1/music 밑에 갖다두었습니다. Audio Station 등 음악관련 패키지를 깔면 music 공유 폴더가 자동으로 생기는 건 아시죠? 제 경우 music 공유 폴더를 디스크 볼륨 1에 만들었기 때문에 shell 상에서 경로가 /volume1/music입니다. 볼륨 2에 만드신 분은 /volume2/music이겠지요.

이 파일이 녹음을 하고, 녹음된 file을 NAS의 media indexing library에 등록하는 역할을 하는 shell script입니다. ☞기존 방법☜에도 똑같은 이름의 파일이 있었는데, 예전 것은 Debian chroot를 이용하는 방법이니 혼동하지 마시기 바랍니다. 굳이 헷갈리게 동일한 이름을 쓴 이유는 제가 이 아래 5단계에 나올 작업 스케줄러를 수정하기가 귀찮아서였습니다. 한 번 ebs_record.sh 파일 내용을 좀더 설명 드리겠습니다.

#!/bin/sh

PROGRAM_NAME=$1
RECORD_SECS=$2 
DEST_DIR=$3/$1`date +_%y%m`

FFMPEG=/volume1/@appstore/ffmpeg/bin/ffmpeg
RADIO_ADDR="rtmp://ebsandroid.ebs.co.kr:1935/fmradiofamilypc/familypc1m"
TITLE=$PROGRAM_NAME`date "+ %Y.%_m.%_d."`
DEST_FILE=$PROGRAM_NAME`date +_%y%m%d`.m4a

if [ ! -d "$DEST_DIR" ] ; then
  mkdir -p "$DEST_DIR"
  synoindex -A "$3"
fi

$FFMPEG -i $RADIO_ADDR -t $RECORD_SECS -codec:a copy -vn -metadata title="$TITLE" -metadata date=`date +%F` "$DEST_DIR/$DEST_FILE"

synoindex -a "$DEST_DIR/$DEST_FILE"


스크립트 파일의 위쪽 대부분은 단지 아래쪽에서 사용할 변수들과 파일이름 등을 지정하는 부분입니다. 주의를 하셔야 하는 부분이 FFmpeg의 path인데요. 제가 upload한 파일들은 기본적으로 DSM 7.0에서 FFmpeg을 volume 1에 설치한 상황을 가정해서 설정돼 있습니다. 만약 DSM의 버전을 7.0보다 예전 것을 사용 중이시라면 다운로드 받은 파일을 문서 편집기에서 여셔서 7번째 줄을 아래와 같이 수정하셔야 합니다.

  FFMPEG=/usr/local/ffmpeg/bin/ffmpeg

DSM 7.0을 사용하기는 하지만 만약 FFmpeg을 volume 1이 아닌 다른 볼륨에 설치하셨다면 아래와 같이 수정하셔야 할 것이고요.

  FFMPEG=/volume2/@appstore/ffmpeg/bin/ffmpeg

아무튼 실질적으로 가장 중요한 것은 맨 아래에서 두 번째 줄, FFmpeg으로 스트림을 지정된 시간동안 녹음하라는 단 한 줄입니다. EBS 스트림의 오디오 트랙은 AAC (Advanced Audio Coding)라는 방식으로 압축되어 있기 때문에 그에 걸맞는 .m4a라는 확장자로 저장합니다.

bandi_record.sh 파일 내용도 위와 거의 같습니다. RADIO_ADDR 값이 다르고, FFmpeg에 RTSP transport를 지정하는 옵션이 추가됐을 뿐입니다.

그 줄 위아래에 있는 몇 줄의 스크립트는 녹음하는 날짜의 월별로 폴더를 만들고, 녹음된 M4A 파일을 DS Audio 등에서 보이도록 미디어 라이브러리에 등록해줍니다(synoindex).
 
 

4단계. 녹음 테스트

지금까지의 모든 설정이 잘 됐는지 한 번 테스트해봅시다.
우선 SSH 터미널 상에서 ebs_record.sh 파일이 있는 경로로 이동합니다.

  cd /volume1/music

이 폴더는 사람마다 다르겠죠? 위 3단계에서 ebs_record.sh 또는 bandi_record.sh 파일을 넣어준 경로를 잘 써주시고요.
Linux 계열 OS에서 파일을 실행하기 위해서는 파일에 먼저 실행권한을 줘야 합니다. 이렇게요(반디 외국어 전문 채널을 녹음하시는 분들은 이 아래부터 나오는 모든 ebs_record.sh 대신에 bandi_record.sh를 써주시면 됩니다).

  chmod 777 ebs_record.sh

여기서 777이라는 숫자는 '모든 사람이 읽고 변경하고 실행할 수 있다'는 의미입니다.

ebs_record.sh를 실행할 때는 3개의 매개변수를 써줘야만 하는데요. 첫번째는 방송 프로그램 제목(파일 이름), 두번째는 녹음할 시간(초 단위), 마지막은 저장할 폴더 이름입니다.

  ./ebs_record.sh xxx 30 yyy

라고 한 번 실행해 보시죠.
그러면 녹음을 하고 있다는 뭔가 복잡한 메시지가 30초간 화면에 표시됩니다. 끝난 후 현재 폴더 밑에 yyy/xxx_(4자리 년월)이라는 폴더가 생겼고, 그 속에 xxx_(6자리 날짜).m4a라는 이름의 오디오 파일이 생성됐고, Audio Station이나 DS Audio의 재생목록 중 '최근 추가됨'에서 이들이 확인되고, 플레이했을 때 녹음된 방송이 잘 들리면 성공한 겁니다.

이러면 모든 준비가 완료됐고, 이제 DSM의 작업 스케줄러에서 시간 예약만 걸어주면 끝입니다. 테스트를 하고 나면 NAS의 미디어 라이브러리에 yyy/xxx_(년월)이라는 폴더와 'xxx (날짜)'라는 필요 없는 트랙이 추가돼 있을 텐데요. 모든 테스트가 끝난 후

  synoindex -D yyy
  rm -rf yyy

해주시면 말끔히 정리됩니다.

만약 뭔가가 잘 안 됐다면 ebs_record.sh 실행 시의 오류 메시지를 찬찬히 살펴보시고, 위의 1 ~ 4단계 중 혹시 뭔가 잘못되지는 않았는지 다시 한 번 꼼꼼히 돌아보시기 바랍니다.
 
 
5단계. 녹음 시간 예약

이제 마지막으로 방송 시간에 알아서 NAS가 깨서 녹음을 하도록 하는 자동화 작업입니다.

NAS에 웹으로 접속하셔서 제어판을 보시면 아래쪽에 작업 스케줄러라는 것이 있습니다. 작업 스케줄러에서 생성 > 예약된 작업 > 사용자 지정 스크립트 메뉴를 선택하면 새 녹음 작업을 생성할 수 있습니다. 작업 이름은 아무렇게나 쓰시면 됩니다. 그런데 한글은 안 되니 영문으로 해주시고요. 사용자 설정 시 주의하실 것은 절대로 사용자를 'root'로 설정하지 마시라는 겁니다. DSM 7.0에서는 사용자가 root 권한을 휘두르는 것을 극도로 싫어하기 때문에 녹음이 안 될 수도 있습니다.

 

 

두번째 탭에서 시간을 예약하게 돼있습니다.
제가 녹음하는 4개의 방송은 모두 월요일부터 토요일까지 방송하니까 요일은 그렇게 설정하면 되고, 시간은 하루에 한 번, 방송 시작하는 시간을 써줍니다.

 

 

이제 마지막 탭에서 ebs_record.sh 또는 bandi_record.sh 명령을 써주면 됩니다.
위의 녹음 테스트 때와는 달리 절대경로를 다 써줘야 한다는 것, 주의하세요. 예를 들어 제가 입이 트이는 영어를 녹음할 때는

  /volume1/music/ebs_record.sh "입이 트이는 영어" 1110 "/volume1/music/Language/EBS 입이 트이는 영어"

이렇게 써줬습니다.

 

 

제 경우의 폴더 경로는 저렇지만, 여러분은 여러분만의 경로를 써주셔야 되겠죠. 따옴표를 쳐준 이유는 폴더나 파일 이름 중간에 빈 칸이 있기 때문이고, 빈 칸이 없다면 따옴표를 안 쓰셔도 됩니다.
주의하실 점 중 하나는 ebs_record.sh 또는 bandi_record.sh가 'EBS 입이 트이는 영어'라는 폴더는 만들어주지만, 그 위 경로는 만들어주지 않는다는 점입니다. 즉, /volume1/music/Language라는 폴더는 원래부터 제 NAS에 있던 폴더입니다.

예전에는 EBS 라디오 프로그램이 거의 20분을 꽉 채워서 방송했다면, 요즘은 한 1분 30초는 광고를 하더라고요. 그래서 18분 30초 녹음하라고 1110이라고 써줬습니다.
이와 같은 방식으로 녹음할 방송 프로그램 하나마다 작업 하나씩 작업 스케줄러에 등록하시면 됩니다. 저는 예전에는 6개의 방송을 녹음했었는데, 비인기 프로들이 폐지되어 지금은 4개만 녹음하고 있습니다.

 

그리고 마지막으로 하드 디스크 절전 모드 대책이 필요합니다.
HDD 를 20분 이상(시간은 제어판 > 하드웨어 및 전원 > HDD 대기 기능에서 변경 가능) 안 쓰면 절전모드에 들어가는데, 제 NAS는 개인용이라 방송 시간에는 사용하는 사람이 없어 절전 모드일 가능성이 높습니다. 그대로 놔두면 NAS와 HDD가 깨어나는 데 10초가 넘게 걸리기 때문에 앞부분 녹음이 날아가게 됩니다.

 

저는 이 문제를 각각 9시 19분, 15시 19분에 '깨어나는 작업'을 스케줄러에 등록해서 해결했습니다(이건 반디 외국어 채널을 녹음하기 때문에 그렇고, EBS FM 라디오를 녹음할 때는 6시 19분, 7시 19분에 깨웠었습니다).
깨어나는 작업이라고 해서 별건 아니고 위와 같은 사용자 정의 스크립트 작업에 실행 명령으로 ls /volume1 이라고 써줬습니다. 디스크 볼륨 1의 폴더 리스트를 보여달라는 명령인데, 봐줄 사람은 없겠지만 적어도 HDD는 깨어나겠지요.



자 이제 다 됐습니다.
기다리시기만 하면 NAS가 방송을 자동으로 녹음해주고, Audio Station과 DS Audio의 최근 추가됨 리스트에 새로 녹음된 파일이 뜰 겁니다. 혹시 Audio Station에서 파일은 보이지만 폴더가 안 보인다면 File Station 등에서 폴더 이름을 다른 걸로 바꾸셨다가 다시 되돌리시면 될 거고요.

글 서두에도 말씀 드렸듯이 요즘은 다른 좋은 영어 공부 자료들이 많아서 EBS 라디오를 굳이 녹음까지 해서 들으실 분은 별로 안 계실 것 같지만, 그래도 혹시 필요하신 분 계실까 해서 정리해봤습니다.

2016. 12. 5. 10:31

Synology NAS에 EBS 라디오 어학방송 녹음하기 2016년판

이 방법은 현재 DSM 6.1 이상의 OS를 사용하는 Synology NAS에는 적용할 수 없습니다. 현재 가능한 방법이 궁금하시면 ☞Synology NAS에 EBS 라디오 어학방송 녹음하기 2022년판 글☜을 참고하시기 바랍니다.

강대국들 틈바구니에 끼어있는 한국 사람들에게 외국어란 평생 따라다니는 숙제 같은 것이죠.
독해, 문법은 한국의 주입식 교육으로도 그나마 좀 커버되는 편이지만...
말하기 듣기는 교습방법의 문제와 인도유럽어와는 전혀 다른 한국어의 특성이 맞물려서, 몇십년을 배워도 여전히 갈 길이 머네요.
말하기와 듣기 공부 삽질을 그나마 조금이라도 효율적으로 하려면 잘 만들어진 시청각 교재와 강의가 필수적인데,
몇몇 Podcast들도 다운 받아 들어보고, 몇몇 인강도 둘러본 결과, 역시 EBS 교육방송만큼 좋은 강의를 찾기 힘들더군요.

EBS 라디오 어학강좌 프로그램들은 대부분 20분 단위로 편성되어 있고, 월요일부터 토요일까지 매일 방송하는데요.
그 중에서도 특히 오전 7시에 방송되는 '입이 트이는 영어' 강추합니다.
전국의 지하철 안내방송 성우를 담당하시는 Jennifer Clyde 씨가 진행하시는데,
지하철 자주 타고 다니시는 분이라면 친숙할 낭랑한 목소리가 귀에 쏙쏙 들어오고 내용도 참 알차답니다.

그런데 본방송은 무료지만 다시듣기는 유료(한 프로그램 당 매달 5천원 또는 모든 어학강좌 매달 2만원)라서,
본방을 놓쳤거나 복습을 위해 다시 들으려면 꽤나 부담됩니다.
어학은 반복학습(과 피드백이지만 피드백은 애초에 불가능하니...)이 생명인데 말이죠.

본방을 듣는 것도 스마트폰에서 스트리밍으로 들으면 20분짜리 방송 하나 당 20MB 정도의 모바일 데이터를 쓰게 되는데요.
무제한요금제 쓰시는 분께는 아무것도 아니겠지만 그렇지 않은 분들께는 매일 듣기 부담스러울 수 있는 양입니다.
한국에서 파는 스마트폰은 FM 라디오 수신기가 들어있음에도 불구하고(WiFi, 블루투스, FM이 한 칩에 들어있습니다)
FM 라디오 기능을 막아놔서 라디오 방송을 라디오로 못 듣고 인터넷 스트리밍으로 들어야만 하는 뭔가 이상한 상황입니다.

그래서 해결책을 찾아 헤매던 중에 방송 스트리밍 데이터를 녹음할 수 있는 방법들을 찾았고,
그 중에서도 제가 쓰는 Synology NAS를 이용해서 자동 녹음이 가능하다고 하는 방법들까지 발견했습니다.

제가 참고한 방법들은 다음 4가지 링크였는데요.


어디까지나 참고만 했을 뿐, 링크 글들을 그대로 따라하려니 여러 군데서 막히더군요.
일단 2016년말 현재 제 NAS의 OS(DSM 6.0)와 Debian chroot 버전에서는 잘 안 동작하는 명령들이 몇 가지 있고요.
링크들을 살펴보면 최초에 포고플러그용 녹음방식을 만든 분이 있었고, 그걸 Synology NAS에 끌어다 맞췄다는 내력을 알 수 있습니다.
그래서 그런지 덕지덕지 끼워맞추느라 필요 이상으로 복잡해진 부분도 있고, Synology NAS에는 잘 안 맞는 부분도 있습니다.
예를 들면 제가 한동안 매달렸던 mount 문제가 알고보니 그냥 빼먹어도 되는 단계라는 걸 깨달은 순간의 허탈감이란-_-

이것저것 정말 힘들었음에도 불구하고, 좌절하지 않고 불굴의 의지와 끈기로다가 며칠 동안 연구하고 도전하고 시행착오를 겪은 끝에 드디어
'2016년말 현재 Synology NAS에 가장 최적화된 EBS 라디오 녹음 방법'을 알아냈습니다.
이제는 방송 시간만 되면 제 NAS에 자동으로 EBS 어학강좌가 녹음된 오디오 파일이 차곡차곡 쌓입니다.
굳이 정신 없는 출근 시간에 모바일 데이터 펑펑 써가며 들을 필요 없이, WiFi 되는 곳에서 다운로드 받아서 들으면 되고,
몇 달 지난 방송이라도 언제든지 반복해서 복습할 수 있습니다.

자동녹음이 되기 전에는 아침 6시 40분부터 8시까지 4개의 EBS 라디오 프로그램만 들었었는데,
지금은 새벽 5시 50분 강좌와 밤 11시 방송 2가지까지 추가해서 도합 7개의 프로그램을 녹음하고 있습니다.
그런데 과연 제가 하루에 2시간 넘게 영어공부를 할 수 있을지는...
뭐 어차피 자동이니까 일단 그냥 녹음만 해둘 뿐이죠^^;;

Synology NAS 사용자분들 중에 저처럼 EBS 라디오 자동 녹음을 원하시는 분들께 도움을 드리고자 제 방식을 공유합니다.
필요한 스크립트 파일도 첨부했습니다.
어떻게 하는지 방법만 단순히 나열한다면 그대로 따라하기는 쉽겠지만, 몇 년 지나 환경이 변하면 또 어디선가 막히는 부분이 생길 텐데요.
그래서 직접적인 실행방법 설명에 앞서 왜 이런 작업들을 하는 건지, 어떤 단계들이 필요한지 배경 설명부터 좀 드리려고 합니다.
이걸 이해하고 숙지하셔야 혹시라도 잘 안 되고 막혔을 때 멘붕되지 않고 잘 해결하실 수 있을 거라 생각합니다.

배경 설명
 

  1. 제가 아는 EBS 라디오 방송 stream은 세 가지가 있습니다.
    다른 분들의 참고 링크에서 많이 사용하시는 RTMP(Real Time Messaging Protocol)라는 형식의 stream은 URL이
    rtmp://ebsandroid.ebs.co.kr:1935/fmradiofamilypc/familypc1m 입니다.
    RTMP라는 프로토콜은 널리 사용되는 형식이 아니라 Adobe Flash Player를 위해 만들어진 형식이며,
    EBS 라디오의 RTMP 스트림에는 음성 용량의 네 배나 되는 쓸데없는 영상(강의 장면도 아니고 EBS 로고만 나옵니다)이 함께 들어있어
    오디오 트랙만 추출해서 일반적인 음악 파일 형식으로 저장해 주는 추가 작업이 필수입니다.

    RTMP 이외에 RTSP (Real Time Streaming Protocol) 방식으로도 스트리밍을 하는데,
    URL은 rtsp://ebsonairandaod.ebs.co.kr:554/fmradiobandiaod/bandiappaac 입니다.
    이 스트림에는 원래는 영상이 없었는데, 2017년 7월 24일 이후로 작은 용량의 영상이 추가됐습니다.

    위의 두 스트림은 EBS 공중파 FM 라디오와 동일한 내용의 스트림이고요, 그 외에 다른 RTSP 스트림이 하나 더 있습니다.
    rtsp://new_iradio.ebs.co.kr:554/iradio/iradiolive_m4a 인데요, 공중파 어학강좌의 재방송 위주인 인터넷 방송입니다.
    EBS 홈페이지나 EBS 반디 앱에선 공중파 FM 방송을 '책 읽어주는 라디오', 인터넷 방송을 '외국어 라디오'라고 부르더군요.
    외국어 라디오 스트림에는 영상따위 없이 음성 데이터만 들어있어서 부가적인 오디오 추출 작업 없이 저장만 하면 됩니다.
     
    영상을 받았다가 버리는 것도 귀찮고, 본방 스트림의 경우 2017년 7월 24일부터 음량이 급격히 작아진 관계로,
    저는 인터넷 외국어 라디오 재방 RTSP 스트림을 받습니다.
     
  2. RTSP 스트림을 파일로 저장하는 방법은 프리웨어인 Libav 프로젝트라는 것이 있습니다.
    Libav 프로젝트 도구 중 하나인 avconv가 영상과 음향 관련해서 변환하고 저장하고 이런 쪽 작업에 대해서는 거의 만능인 것 같더군요.
    NAS에 Libav 도구를 설치하시면 avconv 명령으로 RTSP 스트림 데이터를 받아 파일로 저장할 수 있습니다.
    참고로 말씀 드리면 다른 참조 링크들에서는 ffmpeg을 많이들 쓰시는데, 이 ffmpeg이 2011년 이후로는 avconv로 넘어갔습니다.
     
  3. 그런데 이 Libav 도구들은 Synology NAS용 프로그램들을 받을 수 있는 패키지 센터에는 없고,
    DSM은 Linux를 기반으로 Synology에서 여러가지로 고쳤기 때문에 호환성 문제로 그냥 무작정 설치하는 것도 쉽지 않다고 합니다.
    그래서 필요한 것이 Debian chroot라는 패키지입니다.
    이것은 NAS에서 샌드박스를 지정해 놓고, 그 위에서 가상의 Debian Linux OS를 따로 돌리는 것 같은 환경을 만들어 줍니다.
    NAS에 Debian chroot를 깔아서, 그 위에 또다시 Libav 도구들을 설치해서 돌리면 되는 겁니다.
     
  4. Debian chroot와 Libav의 설치, 그리고 그 외 몇가지 작업은 우리에게 친숙한 DSM의 Web GUI 환경만으로는 안 되고,
    NAS에 터미널 접속해서 커맨드 라인 인터페이스로 작업해야 합니다.
    그래서 NAS에서는 SSH(Secure Shell) 서비스를 활성화해놔야 하고, PC에는 SSH 클라이언트 프로그램을 깔아야 됩니다.
     
  5. 위와 같은 프로그램들을 잘 사용해서 방송을 녹음하면 오디오 파일이 생길 텐데요.
    그런데 이렇게만 하면 Synology의 대표적인 음악 플레이어 앱인 Audio Station이나 DS Audio에서는 이 파일이 보이지 않습니다.
    이런 식으로 내부적으로 생성된 파일은 NAS의 미디어 색인 라이브러리에 자동으로 인식되지 않기 때문이거든요.
    이왕 NAS에 녹음을 하는 거라면 NAS의 미디어 색인 라이브러리까지 추가인식 시켜줘야 완벽한 해법이 되겠죠.
     
  6. 방송을 녹음해서 오디오 파일로 변환 저장까지 하고 라이브러리에 등록하는 방법까지 알았다 치죠.
    그런데 뭔가 빠진 게 있죠? 우리가 매일 시간 맞춰 NAS에 접속해서 녹음 시작하라고 명령하는 건 너무 귀찮잖아요.
    시간이 되면 알아서 예약 녹음이 되도록 자동화를 해줘야 합니다.
    여기서 첨부의 셸 스크립트 파일과 DSM의 '작업 스케줄러'가 필요하게 됩니다.
     

그럼 이제부터 위의 1~6의 목표에 도달하기 위해 해야 할 일들을 단계 별로 차근차근 자세하게 설명해 가겠습니다.
 
 

1단계. SSH 환경 셋업

이 단계의 목표는 위의 4번 항목입니다.
NAS의 파워유저시라면 SSH 환경 정도는 다 정비돼 있으실 테니 다음 단계로 바로 넘어가셔도 되고요.

일단 NAS DSM의 제어판 맨 아래의 '터미널 및 SNMP' 메뉴, '터미널' 탭에서 SSH 서비스를 활성화하셔야 합니다.
포트는 일반적으로 22번을 쓰게 되어 있는데요.
SSH는 해킹과 공격의 주된 타겟이라서, 저는 집에서만 접속하고 외부에서는 접속이 안 되도록 공유기에서 포트 포워딩을 하지 않았습니다.
피치 못하게 외부에서 접속해야만 한다면 외부에서는 22번이 아닌 10022라든가 22222번 같은 다른 포트로 보이도록 포워딩하는 것이 좋습니다.
SSH는 최초 녹음 세팅 단계에서만 사용합니다.
굳이 SSH를 계속 사용해야 할 다른 용도가 없다면(지금까지 안 쓰셨다면 앞으로도 안 쓰실 듯) 녹음 설정 후 다시 꺼놓으시는 게 보안 상 좋습니다.

이제 SSH 접속을 위해 PC에 SSH 클라이언트 프로그램을 설치해야 되는데, PuTTY가 가장 널리 쓰입니다.
크롬이나 파이어폭스 웹 브라우저 이용자이시고, 한 번 쓰려고 SSH 프로그램을 설치하시는 게 꺼려진다면 FireSSH 플러그인을 쓰셔도 됩니다.
저는 크롬 앱스토어에서 FireSSH를 깔아서 사용했습니다.

자 이제 SSH로 NAS에 한 번 접속해 보시죠.
PC에서 SSH 클라이언트를 띄워서 NAS 주소 넣으시고, SSH 포트 넘버 넣으시고, 사용자 ID와 패스워드를 넣으면 되는데요.
SSH 설정화면의 설명에도 나오지만 SSH 접속 ID는 Administrators 그룹에 속한 사용자의 ID만 가능합니다.
맨 처음 접속하시면 무슨 키를 신뢰하겠냐느니, 저장하겠냐느니 물어볼 텐데, 그냥 그렇다고 대답하심 됩니다.

참조 글에서는 처음부터 root 계정으로 SSH에 접속하라고 했지만, DSM 버전 6.0에서는 그렇게 안 되더군요.
일단은 다른 사용자로 NAS에 SSH 접속 후, 터미널 상에서

  sudo -i

를 입력해서 root 권한과 환경을 얻어야 합니다(패스워드 재입력 필요).
보시면 명령 프롬프트가 root@ 로 시작하는 것으로 바뀌었음을 알 수 있습니다.
일단은 요기까지. 다음은 Debian chroot package를 설치한 후에 진행하시죠.

 

2단계. Debian chroot 및 libav-tools의 설치

이 단계의 목표는 위의 2, 3번 항목입니다.
Debian chroot 패키지를 설치하려고 하는데, 패키지 센터를 아무리 뒤져봐도 그런 게 없죠? 패키지 소스를 추가해야 됩니다.
패키지 센터의 설정 메뉴 > 패키지 소스 탭의 추가 버튼을 누르시고, 이름은 대충 넣으시고
위치에 http://packages.synocommunity.com 을 입력하고 확인 버튼을 누르시면 패키지 소스에 추가됩니다.

Debian chroot를 설치할 디스크 볼륨은 녹음 파일을 저장할 공유 폴더가 있는 볼륨과 동일한 곳으로 정하는 게 약간 더 효율적입니다.
설치 볼륨의 선택은 패키지 센터의 설정 옵션 '일반' 탭 맨 위의 '기본 볼륨'에서 설정할 수 있습니다.
일반 탭 맨 아래의 '신뢰 수준'이 'Synology Inc. 및 신뢰할 수 있는 게시자'로 돼있는지도 확인하시고요.

이제 패키지 센터에 '커뮤니티'라는 tab이 추가되고, 그 안에 Debian Chroot가 보입니다.
Debian Chroot의 설치 버튼을 클릭하면 Python 프로그래밍 언어도 설치해야 한다고 나오는데, 그러라고 허락하세요.
다른 Python Module이 이미 설치돼 있더라도 SynoComminity 것을 무조건 설치하더군요.
설치가 끝난 후 혹시라도 Debian Chroot가 '중지됨'으로 표시되어 있으면 작업 메뉴에서 '실행'을 꾹 눌러주세요.
여기까지 하면 패키지 센터에는 더 이상 볼 일이 없고, 이제부터는 SSH 터미널 상에서 작업을 하게 됩니다.

chroot는 관리자 권한으로만 실행 되니 터미널에서 sudo -i 해서 root 권한을 얻는 것 잊지 마시고요.
chroot 모드로 들어가는 command는 다음 둘 중에 아무 거나 입력하시면 됩니다.

  chroot /usr/local/debian-chroot/var/chroottarget /bin/bash
  /var/packages/debian-chroot/scripts/start-stop-status chroot

둘다 복잡하긴 마찬가지지만 shell의 경로 이름 자동 완성 기능을 사용하면 두번째 것을 약간 더 쉽게 입력할 수 있습니다.
Directory path를 다 칠 필요 없이 두어 글자만 치고 키보드의 tab 키를 누르면 자동 완성이 되니 편한 이용에 참고하시기 바랍니다.

이렇게 chroot에 들어오셨다면, ☞Debian chroot 홈페이지☜에서는 다음과 같이 초기 setup을 하라고 조언합니다.
뭐, 따라해 주는 게 좋겠죠.

  apt-get update

라고 입력해서 업데이트하고,

  apt-get upgrade

업그레이드하고,

  apt-get install locales   dpkg-reconfigure locales

이렇게 언어/지역설정도 다운로드 받아서 설정합니다.
아래 그림과 같은 창이 뜨는데, en_US.UTF-8 UTF-8 항목에 커서가 있는 상태에서 space 바를 눌러 선택하고 Enter 치면 됩니다.
저는 혹시 몰라서 Enter 치기 전에 ko_KR.EUC-KR EUC-KR과 ko_KR.UTF-8 UTF-8 항목에서도 space를 눌러두었습니다.
그 다음 나타나는 창에서 default locale로 en_US.UTF-8 선택하시고 엔터 치시면 되고요.

 

  dpkg-reconfigure tzdata

이렇게 해서 시간대 설정도 Asia > Seoul로 맞춰두면 나쁠 것 없겠죠.

그리고 가장 중요한 것, Libav 도구들을 설치해야죠.

  apt-get install libav-tools

이렇게요. 설치할 때 계속하겠냐고 물어보면 'Y(소문자 y도 됩니다)' 라고 입력하고 엔터 치시면 됩니다.

이러고 나면 Debian chroot setup과 libav-tools 설치는 끝났고, chroot 상에서 볼 일도 다 봤으니

  exit

명령을 입력해서 DSM 환경으로 나옵니다.
exit 명령을 여러 번 입력하면 root 계정에서도 나가버리고, SSH 터미널까지 끝내버리니 exit은 한 번만 하시는 것 주의하시고요.
 

 

3단계. ebs_record.sh 업로드

일단 

ebs_record.sh
다운로드

 첨부파일을 받으셔서 NAS에 업로드하세요. 아무 폴더에나 올려놔도 됩니다.

저는 /volume1/music 밑에 갖다두었습니다.
Audio Station 등 음악관련 패키지를 깔면 music 공유 폴더가 자동으로 생기는 건 아시죠?
제 경우 music 공유 폴더를 디스크 볼륨 1에 만들었기 때문에 shell 상에서 경로가 /volume1/music입니다.
볼륨 2에 만드신 분은 /volume2/music이겠지요.

ebs_record.sh가 저 위쪽에서 얘기한 2번과 5번 항목의 일을 연속으로 실행해주는 바로 그 파일입니다.
Shell script라고 해서 shell 상에서 순차적으로 실행할 명령어들을 주루룩 적어놓은 텍스트 파일이고, 텍스트 편집기로 편집할 수도 있습니다.
다른 분들의 참고 링크에도 보면 같은 이름의 파일이 있는데, 얼핏 비슷해보여도 중요한 알맹이가 다르니 혼용하지 마시기 바랍니다.
특히 뭐가 다르냐면, 참고 링크의 ebs_record.sh 스크립트는 Debian chroot 상에서 돌아가고, 제 스크립트는 DSM에서 돌아갑니다.

참조 링크 내용들을 보면 DSM 상의 공유 폴더를 chroot 상의 작업 directory에 mount하는 데 상당한 노력을 기울이고 있습니다.
그분들이 directory 마운트 작업을 왜 그렇게 중시했는지 알려면 chroot 명령어의 원래 의미부터 이해해야 하는데요.
Debian chroot 상태에서는 /usr/local/debian-chroot/var/chroottarget이라는 복잡한 디렉토리가 루트 디렉토리 / 처럼 보이고,
그 아래의 directory에만 읽고 쓸 수 있지, NAS의 공유 폴더들에는 접근을 할 수가 없습니다.
또 반대로 Debian chroot의 경로도 File Station, Audio Station이나 여타 NAS 서비스에서는 안 보입니다.
그래서 chroot 작업결과를 공유폴더에 올려놓기 위해서는 공유 폴더가 마치 chroot 밑의 폴더인 것처럼 mount해줄 필요가 있었던 것인데요.

일단 mount 명령을 참조 링크에 나온 형식대로 써서는 DSM 6.0에서 안 먹힌다는 문제가 있습니다.
이건 제가 나름 고생해서 mount 명령을 그냥 쓰지 말고 mount -o bind 라는 option으로 쓰면 된다는 사실은 알아냈고요.
NAS를 리부팅하면 마운트가 풀리기 때문에 NAS 리부팅 시 자동으로 마운트해주는 방법까지도 배웠습니다.
그런데 저는 chroot 상에서 스크립트를 돌릴 것이 아니라 DSM 상에서 돌릴 거라고 했죠?
생각해 보니 DSM shell에서는 chroot 작업 폴더도, 공유 폴더도 둘다 보이니 애초에 DSM script에는 mount 자체가 필요 없던 겁니다-_-

쓸데없는 잡설이 너무 길었는데요.
누군가 제 방식을 따라하다가 막혔을 때, 혹시라도 해결해보려다가 디렉토리 마운트에 시간을 허비하실까봐 노파심에 말씀 드렸습니다.
잡설을 시작한 김에 ebs_record.sh 파일 내용을 좀더 설명 드리겠습니다.

#!/bin/sh

 

PROGRAM_NAME=$1

RECORD_SECS=$2 

DEST_DIR=$3/$1`date +_%y%m`

 

RADIO_ADDR="rtsp://new_iradio.ebs.co.kr:554/iradio/iradiolive_m4a"

CHROOTTARGET=/usr/local/debian-chroot/var/chroottarget

TITLE=$PROGRAM_NAME`date "+ %Y.%_m.%_d."`

TEMP_AAC=/tmp/`date +%H%M%S%N`.m4a

FINAL_AAC=$PROGRAM_NAME`date +_%y%m%d`.m4a

 

chroot $CHROOTTARGET avconv -rtsp_transport tcp -i $RADIO_ADDR -t $RECORD_SECS -codec:a copy -vn -metadata title="$TITLE" -metadata date=`date +%F` $TEMP_AAC

 

if [ ! -d "$DEST_DIR" ] ; then

  mkdir -p "$DEST_DIR"

  synoindex -A "$3"

fi

mv $CHROOTTARGET$TEMP_AAC "$DEST_DIR/$FINAL_AAC"

synoindex -a "$DEST_DIR/$FINAL_AAC"


스크립트 파일의 위쪽 대부분은 단지 아래쪽에서 사용할 변수들과 파일이름 등을 지정하는 부분입니다.
실질적으로 가장 중요한 것은 중간쯤, chroot로 들어가서 avconv로 RTSP 스트림을 지정된 시간동안 녹음하라는 단 한 줄입니다.
EBS 스트림의 오디오 트랙은 AAC(Advanced Audio Coding)라는 방식으로 압축되어 있기 때문에 그에 걸맞는 .m4a라는 확장자로 저장합니다.

마지막 여섯 줄은 생성된 M4A 파일을 지정된 폴더에 지정된 이름으로 옮겨놓고, DS Audio 등에서 보이도록 등록해줍니다.
DS Audio에서 플레이하려면 저 위의 5번 항목에서 언급한 미디어 색인 등록이 필수적인데, synoindex 명령이 바로 그것입니다.
이건 다른 분들 링크의 스크립트에는 아예 없었지만, 제가 정말 열심히 NAS를 공부한 끝에 알아낸 거랍니다.
 
 

4단계. 녹음 테스트

지금까지의 모든 설정이 잘 됐는지 한 번 테스트해봅시다.
ebs_record.sh 안에서 chroot를 부르기 때문에 테스트에도 관리자 권한이 필요합니다.
명령 프롬프트가 root@ 로 시작하는지(sudo -i를 실행한 상태인지) 확인하시고요.
우선 SSH 터미널 상에서 ebs_record.sh 파일이 있는 경로로 이동합니다.

  cd /volume1/music

이 폴더는 사람마다 다르겠죠? 위 3단계에서 ebs_record.sh 파일을 넣어준 경로를 잘 써주시고요.

Linux 계열 OS에서 파일을 실행하기 위해서는 파일에 먼저 실행권한을 줘야 합니다.

  chmod 777 ebs_record.sh

이렇게요. 여기서 777이라는 숫자는

잭팟

'모든 사람이 읽고 변경하고 실행할 수 있다'는 의미입니다.

ebs_record.sh를 실행할 때는 3개의 매개변수를 써줘야만 하는데요.
첫번째는 방송 프로그램 제목(파일 이름), 두번째는 녹음할 시간(초 단위), 마지막은 저장할 폴더 이름입니다.

  ./ebs_record.sh xxx 30 yyy

라고 한 번 실행해 보시죠.
그러면 녹음을 하고 있다는 뭔가 복잡한 메시지가 30초간 화면에 표시됩니다.
끝난 후 현재 폴더 밑에 yyy/xxx_(4자리 년월)이라는 폴더가 생겼고, 그 속에 xxx_(6자리 날짜).m4a라는 이름의 오디오 파일이 생성됐고,
Audio Station이나 DS Audio의 재생목록 중 '최근 추가됨'에서 이들이 확인되고, 플레이했을 때 녹음된 방송이 잘 들리면 성공한 겁니다.

이러면 모든 준비가 완료됐고, 이제 DSM의 작업 스케줄러에서 시간 예약만 걸어주면 끝입니다.
테스트를 하고 나면 NAS의 미디어 라이브러리에 yyy/xxx_(년월)이라는 폴더와 'xxx (날짜)'라는 필요 없는 트랙이 추가돼 있을 텐데요.
모든 테스트가 끝난 후

  synoindex -D yyy   rm -rf yyy

해주시면 말끔히 정리됩니다.

만약 뭔가가 잘 안 됐다면 ebs_record.sh 실행 시의 오류 메시지를 찬찬히 살펴보시고,
위의 1 ~ 4단계 중 혹시 뭔가 잘못되지는 않았는지 다시 한 번 꼼꼼히 돌아보시기 바랍니다.
 
 
5단계. 녹음 시간 예약

이제 마지막으로 저 위 배경 설명 6번의 자동화 작업입니다.
참조 링크들을 보시면 Linux cron(crontab)을 이용하는 예약 녹음 방법이 나오는데요.
cron은 시간 예약 방식이 덜 직관적인 건 둘째 치고, NAS를 리부팅할 때마다 cron daemon을 다시 시작해줘야 한다는 애로사항이 있습니다.
불편하고 복잡한 cron은 그냥 잊어버리시고, DSM의 작업 스케줄러를 이용하시는 방법을 추천 드립니다.

NAS에 웹으로 접속하셔서 제어판을 보시면 아래쪽에 작업 스케줄러라는 것이 있습니다.
작업 스케줄러에서 생성 > 예약된 작업 > 사용자 지정 스크립트 메뉴를 선택하면 새 녹음 작업을 생성할 수 있습니다.
작업 이름은 아무렇게나 쓰시면 됩니다. 그런데 한글은 안 되니 영어로 해주시고요.
사용자는 반드시 root여야 합니다. 바꾸지 마세요.

두번째 탭에서 시간을 예약하게 돼있습니다.
제가 녹음하는 7개의 방송은 모두 월요일부터 토요일까지 방송하니까 요일은 그렇게 설정하면 되고,
시간은 하루에 한 번, 방송 시작하는 시간을 써줍니다.

이제 마지막 탭에서 ebs_record.sh 명령을 써주면 됩니다.
위의 녹음 테스트 때와는 달리 절대경로를 다 써줘야 한다는 것, 주의하세요.
예를 들어 제가 입이 트이는 영어를 녹음할 때는

  /volume1/music/ebs_record.sh "입이 트이는 영어" 1200 "/volume1/music/Language/EBS 입이 트이는 영어"

이렇게 써줬습니다.

제 경우의 폴더 경로는 저렇지만, 여러분은 여러분만의 경로를 써주셔야 되겠죠.
따옴표를 쳐준 이유는 폴더나 파일 이름 중간에 빈 칸이 있기 때문이고, 빈 칸이 없다면 따옴표를 안 쓰셔도 됩니다.
주의하실 점 중 하나는 ebs_record.sh가 'EBS 입이 트이는 영어'라는 폴더는 만들어주지만, 그 위 경로는 만들어주지 않는다는 점입니다.
즉, /volume1/music/Language라는 폴더는 원래부터 제 NAS에 있던 폴더입니다.

입이 트이는 영어의 방송 시간은 20분이라서 20 x 60 = 1200초를 써준 것이고요.
귀가 트이는 영어, POWER ENGLISH 같은 프로그램의 경우엔 길이가 19분 30초라서 1170이라고 써줬고,
포켓 잉글리쉬는 9분 30초짜리 방송이기 때문에 570을 써줬습니다.
이와 같은 방식으로 녹음할 방송 프로그램 하나마다 작업 하나씩 작업 스케줄러에 등록하시면 됩니다.
저는 6개의 방송을 녹음할 거라서 녹음 작업이 6개 등록되어 있지요.

 

그리고 마지막으로 하드 디스크 절전 모드 대책이 필요합니다.
위와 같이 설정하고 며칠 녹음했더니 가장 일찍 시작하는 프로그램 앞부분이 25초 가량 잘려나갔더라고요.
원인을 살펴보니 바로 하드디스크 절전(대기) 세팅 때문이었습니다.
HDD 를 20분간(시간은 제어판 > 하드웨어 및 전원 > HDD 대기 기능에서 변경 가능) 안 쓰면 절전모드에 들어가는데,
제 NAS는 개인용이라 새벽 6시에는 쓰는 사람이 없어 십중팔구 절전 모드인 겁니다.
제 NAS(DS213)와 HDD(WD Green 3TB)가 깨어나는 데 20초가 넘게 걸리기 때문에 앞부분 녹음이 날아갔던 것이죠.

 

저는 이 문제를 각각 5시 49분, 6시 39분, 22시 59분에 '깨어나는 작업'을 스케줄러에 등록해서 해결했습니다.
깨어나는 작업이라고 해서 별건 아니고 위와 같은 사용자 정의 스크립트 작업에 실행 명령으로 ls /volume1 이라고 써줬습니다.
디스크 볼륨 1의 폴더 리스트를 보이라는 명령인데, 봐줄 사람은 없겠지만 적어도 HDD는 깨어나겠지요.
저는 Debian chroot도 녹음 폴더도 볼륨 1에 있지만, 서로 다른 볼륨에 있다면 ls /volume1 /volume2 처럼 써주면 되지 않을까 싶습니다.

 



자 이제 다 됐습니다.
기다리시기만 하면 NAS가 방송을 자동으로 녹음해주고, Audio Station과 DS Audio의 최근 추가됨 리스트에 새로 녹음된 파일이 뜰 겁니다.
혹시 Audio Station에서 파일은 보이지만 폴더가 안 보인다면 File Station 등에서 폴더 이름을 딴 걸로 바꾸셨다가 다시 되돌리시면 될 거고요.

그럼 잘 들으시고 열공하세요~