ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • radiko, 초! A&G 녹음환경 구성 및 Synology NAS 파일전송 자동화
    IT,컴퓨터/서비스,웹,소프트웨어 2020. 2. 26. 10:30
    하단 광고는 티스토리가 임의 삽입하여 노출되고 있습니다
    728x90

    대략 2주정도 주말을 중심으로 평일 틈틈히 고민한 내용들이 마무리되어 글로 정리합니다.

     

    우선, 상황과 계기는 이렇습니다.

     

    저는 일본쪽 라디오를 꽤 듣고 있는데[작년 라디오 관련 글 보기], 작년 11월에 새 집으로 이사하면서 유선인터넷 사업자가 KT에서 티브로드가 되었습니다.

    제가 듣는 라디오 서비스 제공자는 기본적으로 일본 로컬 서비스기에, 유튜브 30% 만큼이라도 따라가 줬으면 하지만 국외에 중계서버를 둘 여지도 없더군요.

    VPN으로 우회해야 이용 가능하기 때문에 매일 밤시간에 라디오 하나 듣자고 극악의 사용자 경험을 감수해야만 했습니다.

     

    그래서 VPN서버 자체 구축용으로 임대중인 일본의 VPS 서비스에 라디오 녹음 환경을 구축하고, 녹음한 라디오 파일을 NAS까지 자동 전송하는 환경을 고민하게 되었습니다.

    녹음환경의 경우는 이미 Dockerfile을 만들어 github에 공개한 분들이 계셔서 그걸 기반으로 제 생황에 맞게 수정했는데,

    나름대로는 이 과정에 약간의 우여곡절이 있었기에 그 부분(고민한 내용 + 수정한 코드) 을 같이 명시했습니다.

     

    추가적으로, 제가 Linux Shell에 비교적 익숙한 편이라, 간혹 보이는 파이썬으로 녹음하는 스크립트 같은건 다 패스했습니다(...)

    이참에 파이썬이나 배워볼껄 그랬나 싶기도 하지만 그건 다음 기회에.

     

    좀 길어져서 본문은 덮어둡니다.

     

    더보기

     

     

    -- 목  차 --

    누르시면 바로 이동합니다.

     

    1. radiko 녹음환경 구성, 수정

    2. 超A&G 녹화환경 구성, 수정

    3. scp를 사용한 Synology NAS 전송 자동화

     

     

    1. radiko 녹음환경 구성, 수정

    접속할때 제일 속도가 느리지만(VPN 사용) 제가 재밌게 듣고 있는 라디오를 제일 편하게 접근하게 해 주는 서비스라

    자연스레 이 사이트의 녹음을 제일 먼저 고민하게 되었습니다.

    Dockerfile이 공개중이었던지라 제일 접근하기 쉽기도 했고.

     

    https://github.com/ngs/docker-radiko-recorder

     

    아무튼, 작업자분의 github 레포지토리는 여기입니다.

    atsnngs/radiko-recorder 라는 이름으로 도커 허브에 올라가 있는걸 바로 쓸수도 있지만,

    제 경우는 커스터마이징한 Dockerfile과 녹음 스크립트(rec_radiko2.sh)를 적용하기 위해 Dockerfile로 도커 이미지를 빌드하여 녹음에 사용했습니다.

     

    Dockerfile과 rec_radiko2.sh (radiko 녹음 shell) 에서 제가 수정한 부분은,

     

     

    일단 이렇게 만들고, 사용법은 먼저 링크한 git 레포지토리의 README 및 mycrontab.txt에 기록되어 있는 예시와 동일합니다.

    제 경우는 아래와 같이 녹음작업용 스크립트를 만들어서 파일별로 녹음작업을 구분했지만요.

    안그러면 관리할 엄두가 안나서(녹음할 라디오 10개 이상)

     

     

    참고로, 위 STATION 변수에 입력할 각 채널 코드는 아래 링크에서 보실 수 있습니다.

     

    http://www.dcc-jpl.com/foltia/wiki/radikomemo

     

    제 경우는 radiko 프리미엄을 이용중이라, 라디오 칸사이 방송도 녹음하고 그러네요.

    아닌 분들은 서버가 인식하는 지역 안의 방송들은 녹음이 가능할 것으로 보입니다.

     

    P.S

    2020.6.24 P.M 11:25 추가.

    https://github.com/sangwon-jung-work/docker-radiko-recorder

    Git 계정에 업로드하였으니 참고해 주시기 바랍니다.

    ///

     

     

    2. 超!A&G 녹화환경 구성, 수정

    초!A&G (超!A&G)의 경우, 방송 스트리밍 URL만 접근이 가능하면 되어서 구성이 조금 더 간단했습니다.

    그래도 녹화에 필요한 구성요소는 먼저 본 것들과 거의 비슷하지만요.

     

    https://github.com/gecko655/agqr-docker

     

    처음에는 위 작업자분의 스크립트를 사용하여 시도했습니다.

    근데 Dockerfile을 보니 먼저 적은 1번의 환경과 유사한 점이 많더군요.

     

     

    그래서 결국 1번 Dockerfile 을 기반으로 초!A&G 녹음용 Dockerfile을 만들었습니다.

    이쪽은 처음 Dockerfile 과 달리 ubuntu 기반입니다.

     

    rec.sh (agqr 녹화작업 shell) 의 경우도, 녹음 원본인 flv로 출력되는 부분을 ffmpeg로 컨테이너만 mp4로 변환하도록 수정했습니다.

    그래서 기존 스크립트와 다르게 tmp 폴더에 우선 녹화영상을 저장한 뒤, 변환한 파일을 outpath 경로에 출력하고 기존 tmp파일은 삭제.

    shell에 손좀 대면서 출력 폴더도 파라메터로 받을 수 있게 수정했습니다. 어차피 기본값인 현재경로를 주로 쓰겠지만..(...)

     

    아, 이 작업 하고 나서 녹화작업 shell 파일명을 rec_agqr.sh 로 변경했습니다.

    먼저 올린 자체 수정용 Dockerfile에는 그게 반영되어 있군요.

     

    P.S

    2020.11.16 A.M 2:38 추가.

    10월 말부터 플래시 지원종료에 따라 HLS(플래시 없이 재생 가능한)로 변경되어 뒤늦게 녹화 대응을 했습니다.

    11월 초부터 기존 URL로는 녹화가 불가능한 상황이었는데 일주일 넘게 끄는 모양새가 되었네요;

    한주는 녹화 못한듯

     

    https://github.com/sangwon-jung-work/agqr-docker

    상세 수정내역은 위 Git 계정에 업로드 하였으니 참고해 주시기 바랍니다.

    ///

     

     

    crontab에 등록할 녹음작업은 추가로 이런 스크립트를 만들어 관리하고 있습니다.

    혹여나 실수하지 않게 crontab의 경우도 작성하고 나서 crontab 랜더링 사이트에서 확인해서 주석에 메모해두고.

     

     

    3. scp를 사용한 Synology NAS 전송 자동화

    자, 위 1~2번의 방법으로 라디오 녹음은 어찌어찌 자동화를 마쳤습니다.

    근데 이걸 제 NAS까지 전송하는것도 조금 까다로운 상황이어서 말이죠. 밤시간 해외망 속도 문제입니다.

     

    집 티브로드망이 대충 새벽 2시 정도까지는 극악의 속도인데(SFTP 파일전송 기준 일본서버 -> NAS 50KB/s 이하)

    사람들이 해외망을 거의 안쓸 시간대가 되면 그나마 정상 속도로 돌아옵니다. 그게 대충 새벽 3시 이후.

    라디오 몇개 다운받자고 새벽 3시에 일어날 수도 없는 노릇이라 자연스레 이를 자동화할 수 있는 방법을 고민했습니다.

     

    다행히 Synology NAS에서도 scp 사용이 가능했고, 접속할 서버에서 로그인 키를 생성하여 등록하면

    Synology NAS에서도 비밀번호 입력과정 없이 ssh와 scp를 사용할 수 있도록 작업할 수 있었습니다.

     

     

    그리고 여기서는 잠시, 본격적인 설명에 앞서 제가 Synology NAS 안에서 작업한 내용을 정리하겠습니다.

    우선, 이 전송작업용 사용자와 공유폴더를 새로 만들었습니다.

    보안상 이 계정이 뚫려도 다른 파일에 손상을 가할 수 없게, 전송작업 전용 계정을 만들어 전송작업용 공유폴더만 권한을 허가한 겁니다.

    또, 이 전송용 계정은 User와 Administrator 권한을 모두 줘야 합니다. 이래야 작업이 수월하더군요.

    그리고 계정의 Home 디렉토리도 사용하도록 설정해줘야 하구요. (사용자 생성시 옵션 설정 가능합니다)

     

    제 경우는 RadioUser 라는 계정을 만들어, Trans라는 공유폴더만 접근 권한을 할당했습니다.

    추가로 사용자 권한에서 권한 변경(chmod) 을 할 수 있는 권한도 부여했구요. 추후에 이거 쓸일 생깁니다.

    scp로 이동해 오면 NAS 안에는 파일이 700 권한으로 생겨서 다른 계정으로 로그인하면 파일이 보이지 않습니다.

    이에 전송작업 후 역시 스케쥴러로 chmod 777 을 해주고 있는데, 이때 권한변경 권한이 필요합니다.

     

    일단 이렇게 계정을 만들고 Administrator 권한을 부여하면, NAS에 SSH로 접속할 때 이걸로 로그인이 가능해집니다.

    저렇게 위에 다 셋팅해두고, NAS에 SSH로 접속해 명령어 한번 실행해 보시길.

    잘 되면 NAS 스케쥴러에 등록할 때, 실행권한을 전송용 계정(지금 제 경우는 RadioUser)으로 지정해도 잘 작동할 겁니다.

     

     

    중간과정이 길었네요. Key 등록방법은 아래와 같습니다.

     

    scp, ssh, rsync 를 비밀 번호/암호 입력창 없이 사용하기 by 정광섭님

     

    이 방법은 일단 Synology NAS만이 아닌, 일반적인 Key 등록 절차를 설명하고 있습니다.

     

    제 경우, 처음엔 녹음서버에서 NAS로의 접속을 자동화하려고 NAS의 Key를 생성해 설치했습니다.

    하지만 설정 변경 및 서비스 재시작, 인증파일 권한 변경 등의 조치를 했음에도 계속 비밀번호를 묻더군요.

     

    그래서 결국 NAS에 녹음서버 Key를 설치하여 NAS에서 녹음서버 접속시 비밀번호 입력이 필요 없게 했습니다.

    NAS로 Key를 전송할 때에는 ssh-copy-id 명령이 먹히지 않아 수동으로 파일을 열어 등록했구요.

    여기서도 권한을 700으로 변경해줄 때 전송용 계정에 설정한 권한변경 권한이 필요합니다. 아무튼.

     

     

    그리고 아래 글에서와 같이 Synology NAS 내의 sshd config를 변경해주는 작업이 필요할 수 있습니다.

    필요한 경우 전송용 계정보다 좀 더 권한이 많은 Administrator 소속 사용자로 SSH 로그인해 설정을 변경해 줍니다.

    sudo -i로 root 계정도 쓰실 수 있으니 필요하면 쓰시길.

     

    Configure Synology NAS SSH Key-based authentication by Aaron Lenoir

     

    여기까지 이런저런 작업이 끝나면, SFTP 데몬을 재시작할 필요가 있습니다.

     

    터미널에서 아래 명령어를 써도 된다는데, 저도 그렇고 대부분 잘 안되는 모양이라 제어판에서 SFTP 서비스를 끄고 '적용' 한 뒤, 켜고 '적용' 해주시면 한번 서비스가 내려갔다 올라옵니다.

     

     

    여기까지 내용이 잘 됐으면, 아까 언급한 전송용 계정(제 경우는 RadioUser)으로 NAS에 SSH 접속해서

    아래와 같은 명령어로 전송을 테스트해봅니다.

     

    이 글이야 결과물이니 이렇게 간단하게 적지, 3일쯤 평일 점심시간에 고생한것 같네요. 잘 되니 다행이지만..;

     

     

    그리고 최종적으로 이걸 NAS의 제어판 - 작업 스케쥴러에 등록하면 끝.

     

    지난 주말부터 새벽 3시쯤 작동되게 하고 있는데, 낮시간에는 테스트로 파일 한두개(평균 30MB 이하) 전송하는 데에도 30분은 기본으로 걸리는게 3분도 안되서 끝나니 아주 좋습니다.

     

     

    이 외에도 녹음서버와 NAS에서 파일 관리 스크립트(그래봤자 분류하거나 이동된 파일을 다시 전송하지 않게 옮기는 수준이지만) 정도는 추가로 더 쓰고 있지만, 이 부분은 취향(?)따라 추가하시면 될것 같고.

     

    덕분에, 전처럼 실시간으로 라디오 듣는건 포기상태가 됐지만 최소한 녹음한 라디오는 스트레스 덜 받고 듣고 있네요. 상당히 쾌적합니다.

    게다가 이런 방송들을 니코니코동화 업로드판으로 아카이브도 하고 있었는데, 이제는 자체적으로 파일을 만들고 있으니 그럴 필요도 없어졌네요.

    잘 고민해 보고 니코니코동화 프리미엄이나 끊던가 해야겠습니다. 7년쯤 프리미엄 유저인데 서비스도 마음에 안드는구만 좋은 기회 잡았죠.

     

    뭐 이건 조금 더 뒤에 결정하고, 아무튼 근래 이런 작업을 했습니다.

     

     

    이번 글은 여기까지.

     

    한번에 너무 많은 내용을 정리하다 보니 좀 정신이 없는데, 혹시 작업하면서 궁금하신 점이 있으면 물어봐 주시길.

    왠만하면 이 글 안에서 거의 되지 않을까 생각하고 있기는 합니다만.

     

    그럼 2월 다 지나가기 전에 이와 관련해서 다른 소식도 들고 오겠습니다.

    곧 다음 글에서 뵙지요.

    댓글

Designed by Tistory.