반응형

 

Synology NAS 사용자라면 한때 유행했던(?) RSS를 활용하여 자동으로 다운로드하시는 분들이 많으셨을 거예요.

 

이 글은 과거의 방식보다는 좀 더 복잡하게 느껴질 수 있지만, 원리는 동일하고 단계가 조금 다르게 진행됩니다.

 

먼저 글을 쭉 훑어보고 판단하시면 될 것 같고 이 글로 인해 발생하는 문제의 책임은 본인에게 있습니다.

 

이 글에서 저는 "목적어"는 빠진 내용을 작성할 예정이며 스무고개 하듯이 진행하셔야 할 수도 있습니다.

 

시작하기에 앞서 이 방식은 매달 3.5$의 비용이 발생합니다.

 

믿을 수 있는 지인들끼리 한 서버를 공유하든 여러분의 자유입니다. 읽어보고 판단하시면 됩니다.

 

 


 

목적

 

Synology NAS의 Download Station에서 RSS를 통해 원하는 콘텐츠를 자동으로 다운로드하게 시키는 것입니다.

 

국내 인터넷 환경이 사이트 차단(Warning 사이트로 이동하는...)되는 경우가 많기 때문에 AWS 클라우드 서비스로 해외 Region VM을 하

나 생성하고 우회하도록 하는 방식입니다.

 

우회하는 방식은 다양하지만 제 환경에서는 이 방식이 가장 저렴하기 적용했습니다.

 

torrssen2라는 좋은 프로그램을 배포하고 있는 분이 계신데... 저는 저렴한 제품군이라 도커가 설치 안 되는 버전이기 때문에 스킵했습니다.

 

지금 이 글은 인텔 CPU를 사용하지 않는 저렴이 Synology 제품군을 사용하는 (Docker 활용이 불가능한) 분들에게 추천드립니다.

 

 


 

키워드

 

다음 키워드와 관련된 내용이 포함됩니다.

 

  • Synology NAS, Download Station
  • 토렌트
  • RSS
  • AWS, 클라우드
  • 프록시
  • node js

 

생소한 용어가 있을 수 있습니다. 편하게 스크롤 하면서 읽어주세요.

 

 


 

진행과정

 

전체적인 과정은 다음과 같습니다.

 

  1. RSS를 제공하는 토렌트 사이트 찾기
  2. AWS lightsail 인스턴스 생성
  3. Proxy 기능을 할 소스 배포
  4. Synology NAS Download Station에서 RSS 설정

 


 

1. RSS를 제공하는 토렌트 사이트 찾기

 

이전의 방식은 일반 토렌트 사이트에서 RSS 형식으로 변환해주는 php소스를 내 NAS 올려놓고 다운받는 방식이었습니다. 사이트에 부하를 많이 주는 방식이고 운영자가 소스를 변경할 경우 php 소스를 수정해야 하는데 개발자가 아닌 이상 일반인은 접근하기 힘들 거에요.

 

그래서 좀 더 범용적이고 구조적으로 안정적인 방법으로 접근하기 위해 RSS를 사이트 자체적으로 제공하는 곳을 찾아서 진행하였습니다.

 

물론 개인적으로 파싱한 다음 RSS를 직접 생성하셔도 됩니다.

 

현재는 토렌XX 에서 RSS를 제공하고 있고 여기도 막히면 또 그때 가서 생각해보려고 합니다.

 

XX는 아래 이미지가 뭔지 생각해보시면 될 듯..

 

 

 


 

2. AWS lightsail 인스턴스 생성

 

AWS는 Amazon Web Service의 약자로 클라우드 서비스를 제공하는 대표적인 회사입니다. 여러분이 아시는 아마존닷컴의 클라우드 컴퓨팅 사업부에서 운영하는 서비스입니다.

 

쉽게 말해서 "내 컴퓨터 말고 돈내고 어딘가에 있는 서버를 쓰겠다" 입니다. 서버라고 해서 대단한 건 아니고 저사양, 저비용 가상 서버입니다.

 

여기서 매달 3.5 달러의 비용이 발생합니다.

 

AWS Lightsail을 활용하는 이유는 가장 저렴하고 비용관리가 편리하기 때문엡니다.

 

저는 일본 리전에서 서버 생성을 추천해 드립니다. (해외 중에서 응답속도가 비교적 빠른 이유로)

 

토렌트 사이트가 차단당하는 것은 인터넷 회선 제공자 단계에서 차단당하기 때문에 해외에 서버를 활용하는 것이고 개념상 프록시 역학을 하게 됩니다.

 

이해하기 쉽게 그림으로 도식화 해봤습니다.

 

 

https://lightsail.aws.amazon.com

 

https://lightsail.aws.amazon.com/ls/webapp

 

lightsail.aws.amazon.com

 

가입 후 메인화면을 접속부터 시작하겠습니다.

 

가입 후 로그인 시 2단계 인증 활성화하실 것을 권장합니다.

(타 사이트와 같은 아이디 패스워드를 쓰다가 해킹당한 후 누군가가 비싼 인스턴스를 생성하여 코인 채굴 돌리는 불상사가 벌어질 수 있습니다.)

 

처음엔 생성된 인스턴스가 없을 거예요.

 

인스턴스 생성을 눌러줍니다.

 

 

리전을 도쿄로 선택합니다.

 

 

OS는 리눅스 중 배포판은 Ubuntu로 하겠습니다.

 

 

가장 저렴한 플랜을 선택합니다.

 

 

인스턴스 이름을 지정해주고 인스턴스 생성을 눌러줍니다.

 

 

잠시 대기 중이다가 실행중으로 변경됩니다.

 

 

아직은 고정 IP가 없기 때문에 할당해줍니다. 관리 메뉴로 들어가서 네트워킹 탭으로 갑니다.

 

고정 IP 생성을 눌러 줍니다.

 

 

이름을 지정해주고 생성해줍니다.

 

 

외부에서 접속 가능한 IP가 생성되었습니다.

 

추후 인스턴스를 삭제할 때 고정 IP도 반드시 삭제해야 합니다. 할당되지 않은 고정 IP는 과금됩니다.

 

 

접속은 편의상 사이트에서 제공하는 콘솔로 진행하겠습니다. 홈 화면으로 돌아와서 콘솔 모양의 아이콘을 클릭합니다.

 

 

콘솔로 접속이 됩니다.

 

 

깔려있는 기본 패키지를 최신 버전으로 업데이트해 줍니다.

 

아래 명령어를 실행해주세요. 안 해도 상관없습니다만 일반적으로 리눅스는 서버 설치 또는 인스턴스 생성 후 기본적으로 진행하는 작업이 있습니다.

 

 

$ sudo apt update && sudo apt upgrade -y

 

설치가 끝나면 서버 시간대를 서울로 변경해줍니다.

 

# 시간 확인

$ date

# 기본 설정은 UTC 기준시로 되어있습니다.



# 시간대 서울로 변경

$ sudo timedatectl set-timezone Asia/Seoul



# 시간 재확인

$ date

 

 

재부팅해줍니다.

 

$ sudo reboot

 

 


 

3. Proxy 기능을 할 소스 배포

 

여기서부터는 생성된 서버에 프록시 역할을 할 프로그램을 넣고 잘 돌아가는지 테스트해 볼 단계입니다.

 

node js + express 조합으로 프록시 역할을 할 API 서버라고 보시면 될 것 같고 뭔소린지 모르겠다 하시면 그냥 어디로 우회하는 기능을 준비해놓는다 정도로 이해하시면 될 것 같습니다.

 

우선 nodejs npm 패키지 설치가 필요합니다.

 

공식사이트에서 제공하는 설치법 중 가장 쉬운 패키지 설치 방식

 

https://github.com/nodesource/distributions/blob/master/README.md#debinstall

 

nodesource/distributions

NodeSource Node.js Binary Distributions. Contribute to nodesource/distributions development by creating an account on GitHub.

github.com

 

장기 지원 버전으로 설치

 

# 차례대로 명령어 실행

$ curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

$ sudo apt-get install -y nodejs

 

nodejs와 npm 버전 확인

 

 

설치가 잘 되었네요.

 

이제 proxy 역할을 할 소스를 받습니다.

 

# 현재 경로 확인
$ pwd
/home/ubuntu



# 소스 다운로드
$ git clone https://github.com/angkk2u/proxy_url.git

# 소스 받아졌는지 확인
$ ls -al
# proxy_url 디렉토리가 있는지 확인


# 받은 소스의 디렉토리로 이동
$ cd proxy_url


# npm 으로 의존성 패키지 설치
$ npm install

# 웹 서비스 실행
$ node bin/www

# 이렇게 실행해두고 창을 닫지마세요.
# 잘 동작하는지 테스트 후 pm2 패키지를 설치한 후 닫을 거에요.
# 아래쪽으로 계속 작업

 

방화벽에 3000포트로 접속할 수 있도록 추가해줍니다. 브라우저로 돌아가서 AWS Lightsail 사이트에서 관리로 들어갑니다.

 

 

 

네트워킹 탭에서 방화벽의 3000 포트를 추가합니다.

 

 

테스트 및 PM2 설치

 

지금까지 소스를 받아서 작업한 내용은 어떤 특정한 역할을 하는 웹 서비스를 생성한 작업입니다.

 

그 "역할" 이라는 것이 내가 원하는 주소를 일본 서버에서 읽어서 나에게 전달해줘 가 됩니다.

 

내가 국내 망에서 토렌트 사이트를 호출하면 차단당하니까요.

 

브라우저에서 http://35.74.211.133:3000 를 접속해봅니다.

 

저는 고정 아이피로 35.74.211.133을 할당받았습니다. 각자 받은 아이피에 맞게 수정해주세요.

(이 글을 볼 시점엔 저 아이피와 인스턴스는 사라지고 없을 거에요.)

 

 

Express 기본 페이지가 호출된다면 일단 서비스는 정상적으로 구동 된 것입니다.

 

http://[ip주소로변경]:3000/proxy/xml?protocol=https&domain=blog.oriang.net&path=rss

 

그리고 RSS 서비스 호출을 테스트해 봅니다. (제 블로그의 RSS로 테스트하였습니다.)

 

 

여기까지 보이시면 RSS 프록시 기능도 잘 동작하네요.

 

이제 서버를 백그라운드에서 계속 구동되도록 작업을 해줍니다.

 

pm2 패키지를 설치할 텐데요. pm2는 백그라운드 구동뿐만 아니라 node가 죽어도 살려주는 역할도 하게 됩니다.

 

# pm2 패키지 설치
$ sudo npm install pm2 -g

# pm2가 잘 설치되었는지 확인
$ pm2 -v

 

 

pm2에 프록시 웹 서비스를 등록해줍니다. 저와 동일하게 작업하셨다면 경로 또한 동일할 거에요.

 

 

$ pm2 start /home/ubuntu/proxy_url/bin/www

 

 

pm2에 프록시 웹 서비스를 등록해줍니다. 저와 동일하게 작업하셨다면 경로 또한 동일할 거에요.

 

$ pm2 list

 

pm2 모니터링 명령어는

 

$ pm2 monit

 

 

이제 실제 토렌트 사이트로 테스트해 봅니다.

 

토렌트 사이트의 RSS 주소가 https://torrentxxx.net/rss/ft/list 라고 가정하겠습니다. 

 

위 주소를 해체하여 각각 조립하듯이 세팅하여 호출할 것입니다.

(추후에 다른 사이트를 활용하기 위해 좀 더 범용적으로 만들기 위해 쪼개서 사용하도록 작업하였습니다.)

 

우리가 지금까지 세팅한 서버 주소는 http://35.74.211.133:3000/proxy/xml 입니다.

 

저 주소 뒤에 어떤 걸 붙이느냐에 따라 목적지에서 가져올 데이터가 달라집니다.

 

주소로 조립할 파라미터 명은 protocol, domain, path가 있습니다.

 

  • protocol : http 또는 https
  • domain : 토렌트 사이트의 도메인 (torrentxxx.net)
  • path : 토렌트 사이트의 도메인을 제외한 슬러시(/) 이후 오른쪽 값 (rss/ft/list)

 

이제 일본에 있는 내 서버에 시켜볼 차례입니다.

 

http://35.74.211.133:3000/proxy/xml?protocol=https&domain=torrentxxx.net&path=rss/ft/list

 

파란색은 파라미터 명으로 미리 정해놓은 이름입니다.

초록색은 파라미터에 해당하는 값입니다. 변경해주는 값입니다.

빨간색 ?는 파라미터=값 형태의 전달하는 정보를 시작하는 구분자로 생각하시면 됩니다.

빨간색 &는 파라미터=값 을 구분 지어주는 기호입니다.

 

 

호출이 잘 되면 이제 자동으로 다운로드를 시켜볼 단계로 넘어갑니다.

 

저 URL은 국내 TV RSS인데 한번에 50개 호출되고 있더라고요. 50개 이상이 갑자기 등록될 경우 내가 원하는 키워드가 다운로드되기 전에 최신리스트에서 넘어갈 수도 있습니다.

 

정확한 키워드가 있는 경우 그 키워드를 찜 한 뒤 생성된 그 URL을 활용하여 Download Station RSS에 등록해주면 좋습니다.

 

제가 예전에 세팅할 당시엔 50개가 아니었던 것 같은데..

 

어느 정도 살펴보니 그냥 이 주소로 해도 충분할 것 같습니다.

 

 


 

4. Synology NAS Download Station에서 RSS 설정

 

Synology DSM으로 접속한 뒤 Download Station 에서 RSS 설정을 해줍니다.

 

실제로 자동으로 다운로드를 시켜볼 차례입니다.

 

 

추가된 이후에 이름을 편집해서 변경할 수 있고 RSS Feeds 란에 항목들이 떠야 정상입니다.

 

 

키워드를 입력하여 일치하는 것만 다운로드 되도록 합니다.

 

다운로드 필터 탭으로 이동한 뒤 추가 버튼을 누르면 자동으로 다운로드 할 조건을 입력할 수 있습니다.

 

 

영상소스가 720p 인 것만 받기 위해 정규식을 사용하여 구문 분석을 체크하고

 

"키워드" "720" 만 수정하여 사용하세요.

 

.*(키워드).*(720).*

 

 

두 개 이상 조합 시 아래 "키워드1" "키워드2" "720"만 수정하여 사용하세요.

 

.*(키워드1).*(키워드2).*(720).*

 

정규식에 지원하는 문법 안내가 공식 사이트에 없네요. 안되는 문법이 있어서 일반적인 정규표현식을 생각하고 막 넣으면 동작 안 하더라구요.

 

Lookaround, Character classes 정규표현식 패턴 테스트에서 되는 기능들이 일부 안돼서 정교한것 보단 잘못 받아지더라도 좀 더 포괄적인 표현식을 쓰는 것이 좋을 것 같습니다.

 

 


 

정리

 

이렇게 국내에서 막혀서 접속 못 하는 토렌트 사이트 RSS를 해외 서버로 우회하여 자동으로 다운로드하도록 적용해보았습니다.

 

각 단계별로 선택지가 더 많이 있습니다마는

  • 일단 저의 시놀로지는 도커가 안된다. (가장 큰 제약)
  • 도커가 안되니 시놀에서 차단 사이트 우회를 직접 하지 못한다.

 

NAS에서 직접 도커를 못쓰는 상태라면 이 방식이 가장 저렴하고 안정적이라 생각됩니다.

 

 

 

아래 추가 사항은 따로 검색하셔서 작업해두시면 좋습니다.

 

추가. 토렌트 다운로드 완료 시 다운로드 작업 삭제

추가. 토렌트 다운로드 완료 시 알림

 

 

 

 

 

긴 글 읽어주셔서 감사합니다.

 

 

 

 

반응형
반응형

몇년 전 삼성 SL-M2027을 구매했습니다.

 

 

구매할 당시엔 PC에 바로 연결해서 사용할 것이고 네트워크 프린터로 굳이 사용할 이유가 없다고 생각했었어요.

 

 

출력할 문서가 필요하면 USB 연결해서 출력하면 되는거니까요.

 

 

저 처럼 조금 더 저렴하게 구매하려고 USB 모델로 구매한 경우 이면서 이후에 네트워크를 통해 출력하고 싶을 때 이 글이 도움이 될 것 같습니다.

 

 

제가 겪었던 경험을 공유하려고 합니다.

 

 


 

시도 했던 방법

 

1. 프린터 공유

 프린터 속성에서 공유하는 방법. 프린터 공유를 검색하면 쉽게 찾을 수 있는 방법인데, 공유하는 PC가 켜져 있어야 동작하기 때문에 이 방법은 얼마 쓰지 않았습니다.

 

2. 시놀로지 NAS에 USB로 연결 (실패)

 제가 생각한 제일 이상적인 방법이 있으나 최종적으로 실패하였습니다. (이미 NAS는 사용중이고 연결만 하면 되는데...) 시놀로지 운영체제 DSM은 리눅스 기반이고 USB로 연결하면 인식은 됩니다. CUPS가 설치된 것을 보고 드라이버만 설치되면 가능할 거라고 판단했는데, 적합한 드라이버를 찾을 수가 없었습니다. 또 CUPS 관리자 화면을 설정에서 활성화 하더라도 소스파일은 포함시켜두지 않았더군요.

 

3. Raspberry Pi 활용

 결과적으로 이 방법으로 정착했습니다. 집에서 놀고 있는 Raspberry Pi를 활용하였습니다. CUPS를 설치하고 드라이버를 설치하고 라즈베리가 프린터 서버가 되는 형태입니다. (이럴바엔 네트워크 프린터를 구매하는 것이 좋다는 생각이 드네요)

 

 


 

작업 하기

 

1.  Raspberry Pi 준비, 초기 환경 설정

 이 글의 포인트는 네트워크 프린터로 만드는 것이기 때문에 라즈베리 초기 세팅부분은 항목만 나열하겠습니다.(구글을 통해 쉽게 정보를 얻을 수 있습니다)

 

  • 초기 비번 변경, hostname, timezone, 무선랜 설정(무선세팅이라면), 용량 확장, 업데이트

 

 

 

2. CUPS 설치 및 설정

 

  • CUPS 설치
# 설치
$ sudo apt install cups

# 그룹에 사용자 추가
$ sudo usermod -a -G lpadmin pi

 

  • CUPS 관리자 웹 접속 가능하도록 수정
# 설정 수정
sudo nano /etc/cups/cupsd.conf

# 접속 가능한 IP 대역 추가 (아래 코드 참고하여 해당 블럭에 추가)
Listen *:631
Allow 192.168.0.*


WebInterface Yes

 

아래 내용도 추가해줍니다

(설정은 버전과 구성을 하기 나름이기 때문에 각자 상황에 맞게 설정이 필요합니다.)


# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 192.168.0.*
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow 192.168.0.*
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow 192.168.0.*
</Location>

# Restrict access to log files...
<Location /admin/log>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow 192.168.0.*
</Location>

 

서비스 재시작

 

# 서비스 재시작
sudo service cups restart

 

 

3. 프린터 드라이버 설치

 

 여기서 이야기하는 드라이버는 CUPS에 SL-2027 프린터 드라이버를 설치(라고 표현하겠습니다.) 하는 과정입니다.

 

 이것이 가능하겠다. 라고 판단했던 글입니다.

www.reddit.com/r/linuxadmin/comments/cvt23c/print_via_rpi_cups_with_samsung_m2026_very_cheap/ 

 

Print via RPi CUPS with Samsung m2026 (very cheap printer)

Hi, There was another thread about this topic, but it's archived, so I can't update it. /u/electric_lute provided a useful reply, but I wanted...

www.reddit.com

 

 삼성에서 공식적으로 ARM 프로세스용, 리눅스 드라이버를 제공하지 않기 때문에 SpliX에서 배포하는 드라이버를 활용하였습니다.

 

 라즈베리파이에 모니터를 연결하거나 SSH 로 작업하면 됩니다.

# git 설치
$ sudo apt install git


# Install libscup2-dev
sudo apt install libcups2-dev

# splix 소스 clone
$ git clone https://gitlab.com/ScumCoder/splix.git



$ cd splix

# Compile Splix with uneccessary algorithm disabled (not needed and bugged for me)
$ sudo make DISABLE_JBIG=1

# Run install script, which will place all needed binaries into cups/filter etc...
$ sudo make install

 

4. CUPS 프린터 추가

 

CUPS가 설치 된 프린터 서버 아이피를 브라우저로 접속해봅니다. 라즈베리나 같은 망 대역에 있는 PC로 작업하시면 됩니다.

변경하지 않았다면 기본 포트는 631 이고 CUPS 설치 및 설정이 잘 되었다면 접속이 됩니다.

 

저의 경우는 위 설정대로 했을 때 https://192.168.0.20:631 이고 192.168.0.xx 대역에서 접속이 가능합니다.

 

CUPS 접속화면

 

상단 메뉴 중 Administration을 들어가면 프린터를 관리할 수 있습니다. Add Printer를 눌러 추가해줍니다.

 

프린터 추가

 

프린터 추가 - 프린터 선택

 

프린터 추가 - 이름과 설명 작성

 

추가 가능 프린터 목록

 

파일 선택을 누르고 컴파일 된 파일을 선택합니다. 라즈베리파이에서 컴파일 한 프린터 드라이버 파일을 다운받아서 추가해주었습니다.

(ARM 환경에서 컴파일된 드라이버를 추가해주는 작업입니다.)

 

이제 같은 네트워크상에 있는 노트북, 맥, PC, 스마트폰 등 다양한 기기에서 출력이 가능해집니다.

 

최근에 나온 SL-M2030 역시 유사 제품군이기 때문에 가능하지 않을까 생각합니다.

 

감사합니다. 

 

 

반응형
반응형

안녕하세요.

 

기획 또는 개발 계획단계에서 아이디어를 구체화 할 때 많이 사용하는 도구를 소개하려고 합니다.

 

UI 설계 툴에도 다양한 종류가 있고 아래 링크에 상당히 잘 설명되어있으니 먼저 읽어보시는걸 추천드립니다.

 

https://brunch.co.kr/@cysstory/151

 

프로덕트 매니저의 툴, UI 디자이너의 툴

스케치, Adobe XD, Figma, Axure, ProtoPie 등등 | 불과 10년 전만 하더라도 UI 설계는 파워포인트로 UI 디자인은 포토샵&일러스트의 조합을 정석으로 사용해왔습니다. 하지만 디바이스가 다양해지고 작��

brunch.co.kr

 

그 중 PowerMockup 이라는 프로그램을 소개해드립니다.

 

이 툴의 장점은 PowerPoint에 Add-In 형태로 추가되어 기존 PPT로 작성된 파일을 활용할 수 있다는 점입니다.

 

공식 사이트 : https://www.powermockup.com/

 

PowerPoint Wireframe and Prototyping Tool | PowerMockup

Collaboration PowerPoint includes collaboration and sharing features that facilitate working in a team. You can share documents with others via OneDrive or SharePoint, leave comments on slides, and merge different versions of a document into a single file.

www.powermockup.com

 

무료버전은 사용가능한 템플릿이 제한적입니다.

 

개인버전은 59.99$부터 시작하고 블로그 글 작성하고 메일을 보내면 심사 후 개인 라이센스를 제공받을 수 있다고 합니다.

 

다운로드

 

 

설치는 Power Point가 종료된 상태에서 다음 > 다음 을 누르면서 진행합니다.

 

 

Run PowerMockup 버튼을 누르면 샘플 페이지가 뜹니다.

 

 리본메뉴에 Add-In 형태로 추가된 것을 볼 수 있습니다.

 

오른쪽 화면에는 사용가능한 Component가 있어서 드래그하여 사용할 수 있습니다.

 

1. Component를 검색하여 찾기

2. 드래그&드랍으로 넣기

 

 

 

추가적으로 활용할 수 있는 기능들은 공식 사이트에 잘 소개 되어있습니다.

 

마지막으로 공식 가이드 동영상 입니다.

 

 

 

 

이 도구의 장점은 사용법이 매우 쉽다는 점이에요.

 

 

단순한 스토리 보드 작성에 최적화 되어 빠르게 의사소통을 하기 위한 용도로 아주 적합합니다.

 

 

 

 

 

 

다양한 툴 활용을 통해서 즐거운 기획 되시길 바래요~ :)

반응형

+ Recent posts