[라즈베리파이] 텔레그램 봇을 이용한 개인 NAS 환경 구축 본문

프로그래밍/라즈베리파이

[라즈베리파이] 텔레그램 봇을 이용한 개인 NAS 환경 구축

준비물

1. 마이크로 SD 카드

2. USB SD카드 리더기

3. 라즈베리파이 (글쓴이는 3 B+ 버전을 사용함)

4. 외장하드[외부전원이 있으면 좋음]

USB 리더기와 SD카드의 모습

 

https://www.raspberrypi.org/downloads/raspbian/  

https://www.raspberrypi.org/downloads/raspbian/  

라즈베리파이 재단 홈페이지에 접속해서 라즈베리안 ISO 파일을 다운받아줍시다.

recommended software 와 with desktop, Lite 가 있으나 그냥 with desktop을 받자.

https://www.balena.io/etcher/

https://www.balena.io/etcher/

 

img를 usb에 넣을 프로그램을 준비합니다. (윈도우 usb 만들때 사용하는 그 프로그램입니다.)

 

 

zip 파일 안에 img파일이 있으므로 꼭 압축해제를 해야한다.

압축파일을 풀었으면 img 파일을 usb 에 넣을 프로그램을 실행시켜 셋팅해줍니다.

usb 안에 img 파일을 넣는 중

만약 usb 안에 파일을 넣었으면 파일 탐색기에 위와 같은 모습을 볼 수 있습니다.

그럼 boot 드라이브에 들어갑니다.

작업하기에 앞서 [보기 - 파일 확장명] 체크를 해두자
[폴더 내 빈 화면 오른쪽 클릭 - 새로만들기 - 텍스트 문서]

 

새로 만든 텍스트 파일을 열고나서, 아래와 같이 내용을 적어줍니다.

country=JP

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1



network={

    ssid="SSID" 

    psk="PSK"

    key_mgmt=WPA-PSK

}

SSID 부분에 집에 있는 와이파이 이름을 넣으시고,

PSK 부분에 와이파이 비밀번호를 넣으시면 됩니다.

 

[새 텍스트 문서.txt 파일 선택후 f2를 누르면 이름변경을 할 수 있다]

그 다음 새 텍스트 문서.txt 파일을 wpa_supplicant.conf 파일로 이름을 변경합니다.

 

[오른쪽 클릭 -> 새로만들기 -> 텍스트문서]

그리고 나서 또 하나의 텍스트 문서를 새로 만들어줍니다.

[F2는 이름바꾸기 단축키]

새 텍스트 문서.txt 파일을 SSH 파일로 변경합니다.

 

그리고 나서 USB를 뽑아줍니다.

 

USB 리더기에서 SD카드를 뽑고 위 사진과 같이 마이크로 SD카드를 라즈베리파이에 삽입합니다. 

그리고 나서 USB-B 타입 전원을 인가해주면 빨간불이 들어옵니다.

 

IPTIME 사용자의 경우 192.168.0.1 -> 관리페이지 -> 내부네트워크설정 에서 확인가능하다

자신의 내부망에 라즈베리파이가 뜨는지 확인합니다.

자신이 IPTIME 공유기를 이용하지 않는 경우 아래 링크에서 nmap 부분부터 보면 됩니다.

https://m.blog.naver.com/elepartsblog/221171496379

 

라즈베리파이 모니터/LCD없이 라즈비안 설치 후 SSH접속하기

이번 포스팅에서는 라즈베리파이를 첫 부팅 시 모니터 없이 자동으로 Wifi에 접속시켜 SSH로 연결하는 ...

blog.naver.com

 

https://www.putty.org/

다음은 원격접속을 위해 PUTTY 라는 프로그램을 설치합니다.

위 사이트 접속 후 here 부분을 클릭하면 다운로드 페이지로 이동합니다.

자신의 윈도우 운영체제의 따라 맞는 버전을 다운 받아 설치합니다.

설치는 따로 설정할 필요없이 그냥 next만 누르면 설치 됩니다.

putty를 실행시켜준다.

라즈베리파이의 아이피를 알고있기때문에

Host Name에 라즈베리파이의 IP를 입력하고

OPEN 버튼을 클릭합니다.

 

신뢰할수있냐는 질문인데 예 버튼을 클릭한다.
기본설정된 라즈베리파이 ssh의 아이디는 [pi] 이다.
기본설정된 라즈베리파이 ssh의 비밀번호는 [raspberry] 이다.

그럼 위와 같은 화면이 뜰텐데

sudo raspi-config 라 입력합니다.

 

방향키와 엔터키를 이용해 이동과 선택을 할 수 있다.

아래 방향키를 눌러 5번째의 인터페이스 옵션에 들어갑니다.

아래 방향키를 눌러 3번째 VNC를 선택 후 엔터키를 눌러준다.
좌우 방향키, 왼쪽을 눌러 YES로 옮긴후 엔터를 누른다.
또 한 번 엔터를 누른다.
방향키 오른쪽을 눌러 FINISH로 옮긴후 엔터키를 누른다.
https://www.realvnc.com/download/viewer/

라즈베리파이는 초기 시동시 GUI를 통해 셋팅화면이 나옵니다

그래서 VNC를 이용해서 라즈베리파이의 화면을 엿보아봅시다.

https://www.realvnc.com/download/viewer/

위 주소창에 라즈베리파이의 IP를 입력한다.

설치는 별거없어서 그냥 NEXT만 누르면 됩니다.

신뢰할수있냐는건데 CONTINUE 눌러줍시다.

역시나 VNC 기본 ID는 [pi] 이고 기본 패스워드는 [raspberry] 입니다.

 

짜잔

vnc 화면을 통해 라즈베리파이를 원격제어에 성공했습니다.

제일 위에 경고창은 기본비밀번호를 사용하고있다는 경고창인데 그냥 ok 눌러주고

밑에 welcome to raspberry pi 창에서 NEXT 버튼을 눌러줍니다.

 

기본적으로 로케일 설정을 해야하는데 나라는 일본으로 해줍니다. (이시국에?)

왜냐하면 라즈베리파이 와이파이 기본설정에 우리나라의 허용 채널값이 일본보다 적습니다.

그래서 한국으로 설정했다가는 와이파이의 채널이 높을 경우 VNC 연결이 끊어질겁니다..

일단은 일본으로 설정합시다. 그리고 밑에 Usde English language 선택해 일본어 폰트 다운로드를 방지합니다.

 

raspberry 기본 비밀번호를 수정하고 싶으면 수정하자.

여기서 기본비밀번호 변경시 앞으로 입력하는 비밀번호에 대해 변경된 값으로 적어주셔야합니다.

저는 통일성을 위해 그냥 아무설정 안하고(기본비밀번호사용) next버튼 눌렀습니다.

요 설정창은 이번 buster 버전에서 새로 나타난 설정창인데

모니터랑 라즈베리파이 화면 사이에 검은 화면 보이시나요?

 

그 검은 화면을 없애주는 설정창입니다.

(전 있으니까 일단 체크했습니다)

 

vnc만 사용해서 라즈베리파이를 설정하실거면 딱히 체크 안하시고 넘어가도 상관없습니다.

이미 와이파이가 연결되어있으므로, 스킵해줍니다.
Next 버튼을 눌러 업데이트를 실행합니다.
오래 걸립니다.
네 오래걸립니다.
업데이트가 완료되었습니다.

리스타트를 누르기 전에 매국노에서 다시 애국자로 노선을 갈아탑시다.

왼쪽위에 라즈베리파이 모양을 누르면 화면이 나오는데

위와 같이 클릭해서 라즈베리파이콘피그레이션에 들어갑니다.

거기서 로케일 화면에 들어가서, 키보드 까지 순서대로 설정해줍니다. 

ko 선택해주자
seoul 선택해주자
layout 에서 korean을 선택해주자
그 다음 ok 버튼을 눌러준다. 다음 팝업창에선 No을 눌러야한다!!!

여기서 no 누르신다음에

아까 업데이트 완료된 창에서 restart 버튼을 눌러줍니다.

 

잘가요..

라즈베리파이 설정하기

putty를 열어 라즈베리파이의 아이피를 입력하고... open을 눌러 아이디와 패스워드를 입력해줍니다[pi/raspberry]

sudo apt-get install fonts-unfonts-core -y

위 와 같이 내용을 입력해줍니다. 

위 패키지는 라즈베리파이의 글자가 깨지는것을 폰트를 설치해 글자깨짐을 해결해주는 패키지입니다.

(꿀팁. 위 명령어를 드래그해서 복사 후 putty 화면에서 오른쪽 클릭을 누르면 붙여넣기가 됩니다)

 

원래 속도가 느려야하는데 왜이리 빠르지?

대본: 패키지 설치 속도가 매우 아쉽습니다. 

라즈베리파이는 기본적으로 주변 미러중 가장 빠르다 판단된 미러에서 다운받습니다.

지금은 위와 같이 일본 미러(이 시국에?)를 이용해 다운받았네요.

 

애국자가 되기 위해서 카이스트 미러를 사용하기로 합니다.

 

sudo nano /etc/apt/sources.list

위 명령어를 입력해 아래와 같은 화면이 뜰겁니다.

이 화면에서 맨 윗줄 deb 앞에 #을 붙여줍니다.

그리고 방향키 아래키를 눌러 맨 마지막으로 이동 후에

아래 코드를 복사 한 다음에 putty에서 마우스 오른쪽 클릭을 눌러주면 위 화면과 같이 될겁니다. 

deb http://ftp.kaist.ac.kr/raspbian/raspbian/ buster main contrib non-free rpi 
deb-src http://ftp.kaist.ac.kr/raspbian/raspbian/ buster main contrib non-free rpi 

 자 이제 설정을 저장하고 나갑니다.

Ctrl + x 누른 다음에 y 입력 후 엔터키를 눌러줍니다.

 

그 다음 카이스트 미러의 패키지 정보를 불러옵니다.

sudo apt-get upgrade
sudo apt-get update
sudo apt-get dist-upgrade

꿀팁2. 위 3줄을 모두 복사한 후에 오른쪽 클릭을 통해 붙여넣기를 하면 3줄이 putty에 동시에 입력됩니다.

 

 

모든 명령이 끝났으면 라즈베리파이를 재부팅시켜줍니다.

sudo reboot now

재부팅 후 글자가 깨지지 않는다.

라즈베리파이 트랜스미션 설치[토렌트]

먼저 미디어 서버를 작동할 가장 근본적인 도구인 토렌트를 설치해줍니다.

sudo apt install transmission-daemon -y

설정을 위해 잠시 토렌트를 꺼준다.

설치가 완료되었으면 아래와 같은 명령어를 입력합니다.

sudo /etc/init.d/transmission-daemon stop

sudo nano /etc/transmission-daemon/settings.json

토렌트가 꺼졌으면 위 명령어를 입력해 토렌트 설정창으로 이동합니다.

 

여러가지 항목들이 있을텐데 수정해야할 항목은 다음과 같습니다.

  "rpc-whitelist-enabled": false,
  "rpc-password": "transpass",
  "rpc-username": "transuser",

방향키를 요리조리 이동해 수정해야할 항목을 백스페이스/딜레트 키를 이용해 지우고, 입력해줍시다.

참고로 페이지 업/다운 버튼을 이용해 보여지는 단락을 이동할 수 있습니다.

 

다른 설정들은 인터넷 검색을 통해 참고해주세요.

패스워드의 경우 처음에 "{asdasdopaskdopasd}"이런식으로 되어있는데 그냥 싸그리 지워줍니다.

[설정 후 토렌트 실행시 자동으로 비밀번호가 암호화 됩니다]

 

설정이 끝났으면 Ctrl + X, y 입력후 엔터를 통해 빠져나옵니다.

 

sudo /etc/init.d/transmission-daemon start

그리고 나서 토렌트를 실행시켜줍니다.

자 그러면 자신의 컴퓨터 웹브라우저에다가 [라즈베리파이아이피:rpc포트] 입력해주면 위와같은 화면이 뜰겁니다.

transuser / transpass 차례로 입력해줍니다.

짜잔 토렌트 설정이 완료되었습니다.

외장하드 연결하기

시작하기에 앞서 자신의 외장하드는 외부전원(어탭터)를 연결하지 않고 바로 usb를 꽂아 사용하는 외장하드일 경우

더보기

아래와 같이 putty창에 입력합니다.

sudo nano /boot/config.txt

nano 편집창 맨 위에다가 아래 두줄을 집어넣습니다.

max_usb_current=2

safe_mode_gpio=4

출처: http://www.rasplay.org/?p=8884

 

최근 버전의 라즈베리파이의 경우 ntfs를 그냥 지원한다고 하는데

이걸 다 설치해놓고 알았습니다.

(설치 하지 마시고 아래 내용을 진행하다가 ntfs 지원을 하지 않는다는 메시지가 뜨면 설치해주세요.)

sudo fdisk -l

위 명령어를 입력하면 제일 아래 /dev/sda1 항목이 보일겁니다.

이것이 바로 usb로 연결된 우리의 외장하드의 모습입니다.

 

자 이제 외장하드를 연결하기 위해서 폴더 하나를 만들어줍니다.

mkdir exHDD
ls

위 사진과 같이 뜨면 성공입니다.

 

sudo chmod -R 777 /home/pi/exHDD

그 다음 외장하드가 마운트될 폴더의 권한을 높여줍니다.

sudo mount -t auto /dev/sda1 ~/exHDD

위 명령을 통해 수동으로 외장하드를 exHDD 폴더에 마운트했습니다.

앞 서 말한거와 같이 수동 이기 때문에 라즈베리파이를 킬때마다 입력해줘야합니다.

귀찮으니 자동으로 설정되게끔 변경해봅시다.

 

sudo nano /etc/fstab

/dev/sda1       /home/pi/exHDD  auto    noatime,noauto  0       0

입력하실때 사이에 공백은 Tab 버튼을 한번 툭 눌러주시면 됩니다.

위와 같이 입력을하고 ctrl + x , y 입력 후 엔터.. 지금 쯤 되시면 손에 익으시죠?

 

sudo nano /etc/rc.local 

만약 fstab에 설정했는데도 마운트 안 될 경우를 대비해서

라즈베리파이 부팅 후 자동으로 명령어가 실행되게끔 설정하기로 합니다.

위 명령어를 입력해줍니다.

 

mount -t auto /dev/sda1 /home/pi/exHDD &

exit 0 위에다가 위 코드를 입력합니다.

그리고 나서 ctrl + x, y 입력 후 엔터.

외장하드 절전모드 설정하기

우리의 소중한 외장하드의 수명을 위해서 절전모드를 설정해줍니다. 24시간 풀로 외장하드를 돌릴 필요가 없잖아요?

sudo apt-get install hdparm -y

설치 후 설정창에 들어갑니다.

sudo nano /etc/hdparm.conf

 

페이지 다운 키를 쭉 눌러 맨 마지막 줄로 이동합니다.

/dev/sda1 {
        spindown_time = 120
}

그리고 위와같이 입력해줍니다.

그리고 저장하고 나와줍니다..

더보기

ctrl + x, y 입력 후 엔터

그리고 나서 라즈베리파이를 재시작해줍니다.

sudo reboot now

라즈베리파이에 Minidlna 설치 및 설정하기

이제 대망의 라즈베리파이의 미디어서버 설정입니다.

 

sudo apt-get install minidlna
sudo nano /etc/minidlna.conf

 

설정창에서 페이지다운키 또는 아래방향키를 통해 위 항목을 찾아줍니다.

media_dir=V,/home/pi/exHDD/torrent/TV프로
media_dir=V,/home/pi/exHDD/torrent/드라마
media_dir=V,/home/pi/exHDD/torrent/미지정
media_dir=V,/home/pi/exHDD/torrent/애니메이션
media_dir=V,/home/pi/exHDD/torrent/영화
media_dir=V,/home/pi/exHDD/torrent/예능프로
media_dir=A,/home/pi/exHDD/torrent/음악

위 항목을 복사하고 원래있던 기본 항목을 지운 뒤 오른쪽 마우스 클릭을 통해 붙여넣어줍니다.

 

db_dir 항목 앞에 #을 지운뒤 /home/pi/.minidlna 를 추가해줍니다.
friendly_name 앞에 #을 지운 뒤에 자신의 minidlna 서버 이름을 정해줍니다.[한글도 되염]  
inotify=yes 항목 앞에 #을 지워줍니다.

위 항목들을 모두 설정하셨으면 저장하고 편집창을 나와줍니다.

더보기

ctrl + x, y, 엔터

그리고 나서 minidlna 파일 데이터베이스 저장될 폴더를 만들어줍니다.

mkdir .minidlna
sudo chmod 777 /home/pi/.minidlna/

그 다음에 minidlna를 재시작해줍니다.

sudo minidlnad -r
sudo service minidlna force-reload

자신의 브라우저의 [라즈베리파이ip:8200]을 입력 후 들어가면 위와 같은 화면이 뜨면 정상적으로 작동한겁니다.

저는 외장하드에 이미 영상들이 있었기 때문에 파일 수가 211개로 잡힌거고, 없으면 당연히 0개가 정상적인겁니다.

라즈베리파이에 삼바(samba) 설치하기

sudo apt install samba samba-common-bin -y

위 명령어를 입력해줍니다.

설치 중 위 화면이 뜨면 예를 눌러줍니다.

그 다음에 samba 계정을 추가합니다.

sudo smbpasswd -a pi 
raspberry
raspberry

pi 는 계정의 이름이고 raspberry는 비밀번호입니다.

바꾸고 싶으시면 알아서 바꿔주세요.

 

sudo nano /etc/samba/smb.conf

위 명령어를 통해 편집기로 들어갑니다

그리고 페이지 다운키/아래방향키 를 눌러 맨마지막줄로 이동합니다.

그리고 나서 아래 항목을 고대로 복사 붙여넣기를 합니다.

더보기

복사 한 후 putty에 마우스 오른쪽 클릭을 누르면 붙여넣기가 됩니다.

[pi]
   comment = pi shared folder
   path = /home/pi
   valid users = pi
   browseable = yes
   guest ok = no
   read only = no
   create mask = 0777

 그 다음 편집기에서 저장하고 나옵니다.

더보기

ctrl + x , y , 엔터

sudo samba restart

위 명령을 통해 samba 서비스를 재시작해줍니다.

 

그 다음에 파일 탐색기를 열어 \\[라즈베리파이ip]\[계정이름] 을 입력해줍니다.

만약 접속시 아이디와 패스워드를 입력하라고 하면 이전에 설정해두었던

[pi / raspberry] 를 입력해줍시다.

 

라즈베리파이에 텔레그램 봇 연동하기

자 이제 새로운 폴더를 만들어줍니다.

폴더이름은 마음대로 합시다.

저는 Telebot이라 정했습니다.

 

TeleBot.zip
0.01MB

압축해둔 파일들을 해제해 위 폴더안에 넣어줍니다.

 

https://notepad-plus-plus.org/download/v7.7.1.html

저는 파이썬 코들를 수정하기 위해 notepad ++ 를 사용할겁니다.

만약 자신이 파이썬 코드를 수정할 마땅한 프로그램이 있는 경우 다운 안 받으셔도 상관없습니다.

설치가 완료된 모습

teleboy.py 와 ddockddock_bot.py 를 위와 같은 방식을 통해 열어줍니다.

http://www.telegram.pe.kr/ 홈페이지에 접속해 텔레그램 파일을 다운받아줍시다.

 

한국어로 진행이 있네요 일단 스타트를 눌러줍니다.

 

그리고 나서 자신의 핸드폰 번호를 입력해줍니다.

핸드폰 문자로 받은 코드를 위에다 입력해줍니다.

그리고 나서 검색창에다가 botfather 라고 입력합니다.

그러면 옆에 뱃지가 달린 아저씨가 나타나면 성공입니다.

시작버튼을 누르자.

순서대로 /newbot 입력후

자신의 봇이름을 정해줍니다. 아무거나 입력해도 상관없습니다.

그다음 봇의 아이디를 정해줍니다. 이때 봇의 아이디 맨 끝에는 무조건 bot이라고 와야합니다.

그럼 위 화면과 같이 형광색으로 칠해진 토큰값을 얻을 수 있습니다.

 

자신의 봇 아이디를 검색창에 입력해줍니다.

그러면 자신의 봇이 나타날텐데, 시작버튼을 눌러줍니다.

 

이때 자신의 브라우저에서 https://api.telegram.org/bot{토큰]/getUpdates 로 접속합니다.

{토큰}은 위에서 형광색으로 칠해져있던 그 토큰값을 집어넣어주면 됩니다.

 

그 다음 자신의 봇에게 아무말이나 보내줍니다.

 

브라우저에 접속해있던 페이지를 한 번 새로고침 해주면 위와같이 자신이 보낸 메시지 항목들을 볼 수 있을겁니다.

 

거기서 id 부분에 해당하는 숫자를 복사해줍니다. [화면에 갈색으로 칠해진 부분]

 

자 다시 notepad++ 로 돌아옵니다. 먼저 telebot.py를 수정하겠습니다.

 

Ctrl + H를 눌러 바꾸기 창을 연 뒤에

찾을 내용 : {UrToken}

바꿀 내용 : 자신의 토큰값을 입력

위와 같이 설정한다음에 모두바꾸기 버튼을 눌러줍니다.

정상적으로 바뀌었을 경우 위와같은 화면이 뜬다.

 

다음은 ddockddock_bot.py를 수정하겠습니다.

찾을 내용에다 {Urid}를 입력하고,

바꿀내용에 아까 브라우저에 적혀있던 id 값을 입력해줍니다.

그리고나서 역시 모두바꾸기를 눌러줍니다.

 

트랜스미션 설정할때

  "rpc-whitelist-enabled": false,
  "rpc-password": "transpass",
  "rpc-username": "transuser",

에서 password 부분과 username 부분을 다르게 설정하셨다면

transmission_client.py 을 열어 자신의 설정과 맞게 변경하셔야합니다.

 

cd TeleBot
sudo pip install python-telegram-bot
sudo pip install telegram
sudo pip install BeautifulSoup4
sudo pip install requests
sudo pip install transmissionrpc
sudo apt-get install python-pycurl

 위 명령어를 입력하여 봇에 필요한 라이브러리를 설치해줍니다.

꿀팁3. putty는 기본적으로 폴더이름을 부분만 입력후 Tab 키를 입력하면 항목 이름을 자동으로 읽어온다.

(ex, cd Tel만 입력후 탭버튼을 누를 경우 자동으로 cd Telebot이 입력된다.)  

위 항목들이 설지가 끝났으면

sudo python ddockddock_bot.py

위 명령어를 실행해 봇을 활성화 시킵시다.

(꿀팁3 연장, sudo python dd 입력후 탭버튼을 누를경우 자동으로 sudo python ddockddock_bot.py가 입력된다.)

실행이 완료되었으면 열심히 뭐라고 입력해봅시다.

(/status 는 활성화된 토렌트파일 목록을 불러오는 명령어이다.)

나혼자산다를 입력해보았습니다.

 

항목 중 제가 필요로 하는 항목을 클릭했습니다.

트랜스미션 주소로 들어가 확인해보니, 토렌트 다운로드가 시작되었습니다. ^오^

 

마지막꿀팁) 핸드폰에 텔레그램을 설치해서 밖에서 토렌트를 다운받게끔할수도있따!!

 

똒똒봇 기본기능.

1. 마그넷 주소 입력시 트랜스미션 자동연결

2. 토렌트 파일 전송시 트랜스미션 자동연결

3. smi 파일 전송시 자막폴더에 다운로드

4. 알수없는 확장자일 경우 미지정 폴더에 다운로드

5. /status 명령어를 통해 활성화된 토렌트 목록 확인가능

6. /cancel 명령어를 통해 메모리 정리 가능

 

똑똑봇 필수.

반드시 토렌트 검색 후 취소버튼을 눌러 메모리를 정리 해 줄 것.(귀찮을 경우 /cancel 명령어를 입력하자.)

이론상 9999개의 검색결과를 저장하고 있고, 그 이상 검색할 경우 프로그램 작동이 멈춤

 

 

프로그래밍/라즈베리파이 Related Articles

MORE