카테고리 보관물: Pogoplug E02

제가 NAS 용도로 쓰는 기기입니다.
Arch Linux와 그 모듈들은 항상 업데이트가 되기 때문에 공식 위키에서 보는 것이 더욱 정확합니다.

Arch Linux에서 Transmission을 Telegram으로 제어하기

최근 텔레그램 봇을 이것저것 뜯어보니, 생각보다 매우 간편하게 봇을 만들고 명령하고 답변 받을 수 있어서 어디 쓸까 생각하던 차에, 트랜스미션을 텔레그램으로 제어하는 프로그램을 발견했다.

https://github.com/pyed/transmission-telegram

사실 난 안드로이드만 쓰고 트랜스미션 어플이 안드로이드에는 있어서 이 방식이 별로 필요 없지만, 아이폰이나 아이패드 같은 경우는 트랜스미션 앱도 없고 파일을 왓치 폴더에 올리는 식으로 밖에 할 수 없어서 이 방식이 매우 유용할 것으로 본다.

먼저 transmission-telegram을 다운로드 한다.

https://github.com/pyed/transmission-telegram/releases

나는 포고플러그 E02를 쓰고 있으니 transmission-telegram_Linux_arm.tar.gz을 받았다. 각자 OS와 CPU에 맞게 받으면 된다.

이제 텔레그램에서 내가 쓸 봇을 생성해보자. 봇아빠(@BotFather)를 찾아가자. 앞으로 BotFather을 봇아빠라고 한다.
봇아빠한테서 봇 하나 생성한다.

/newbot

채팅창에서 보일 이름을 정한다. 바로 구분할 수 있는 게 좋으니 난 그냥 Transmission으로 했다.

Transmission

다음은 이 봇의 고유 이름을 붙인다. 다른 봇들과 이름이 중복이 안 되고, 마지막은 bot으로 끝나야 한다. TransmissionBot이나 transmission_bot 뭐 이런 식이면 된다. 중복되는 게 없을 때까지 물어보니 맘에 드는 걸로 한다. 여기서는 예로 TransmissionBot.

TransmissionBot

이러면 이제 봇아빠는 생성한 봇의 토큰 값을 알려준다.

012345678:ABCDEFGHIJKLMNOPQRSTUVWXYZ

이런 형식의 토큰 값이다. 누구에게도 알려주지 말고 잘 간직하자. 노출이 됐으면 봇을 그냥 지우고 새로 만들면 된다.

이제 만든 봇한테 가서 말 한번 걸어보자. 봇아빠가 마지막에 준 메시지에서 클릭해서 들어가도 되고, @TransmissionBot와 같이 찾아서 들어가도 된다.
시작을 누르거나 /start를 주고 아무 말이나 한번 걸어준다.

이제 이러면 내가 쓸 텔레그램 봇은 마련이 됐고, 이제 처음에 받은 transmission-telegram을 설치한다.

/usr/local/bin

나는 여기다 설치했지만 그냥

export $PATH

해서 나오는 $PATH 중에 맘에 드는 걸로 하거나 새로 하나 만들고 $PATH에 추가해도 된다.
소유자도 원하는 걸로 바꿔놓든가 하고 실행 권한도 준다.

cd /usr/local/bin
chown root:root transmission-telegram
chmod a+x transmission-telegram

이제 그냥 실행시키고 나와도 상관이 없으나, 재부팅 하거나 하면 또 실행시켜야 하니 systemctl에 등록을 한다.

nano /usr/lib/systemd/system/transmission-telegram.service

다음 아래와 같은 형식으로 채워 넣는다.

[Unit]
Description=Transmission-Telegram
After=transmission.service

[Service]
User=(트랜스미션을 실행하는 유저 혹은 그보다 상위 유저)
Type=simple
ExecStart=/usr/local/bin/transmission-telegram -token=(위에서의 토큰 값) -master=@(봇의 아이디가 아닌 봇을 제어할 내 자신의 아이디) -username=(Transmission 유저 이름) -password=(Transmission 비밀번호)

[Install]
WantedBy=multi-user.target

트랜스미션에 로그인을 해야 해서 트랜스미션 서비스가 실행된 뒤에 실행이 되고, 이 서비스로부터 피드백은 받지 않게 했다. 조금씩 고칠 부분이 있으면 고치면 된다.
또한 systemctl status transmission-telegram으로 볼 때마다 저기서 쓴 비밀번호가 그냥 노출이 되니 혼자 쓰는 NAS면 누가 들어와서 보지 않는 이상 보진 않겠지만 찝찝하면 노출이 돼도 상관이 없는 것으로 바꾸자.

이제 transmission-telegram을 등록하고 실행해보자.

systemctl enable transmission-telegram
systemctl start transmission-telegram

다음 만들어둔 봇에게 가서 /help 한번 쳐보자. 응답이 온다면 성공.
나머지 명령어는 /help를 읽읍시다.

Arch Linux에서 Transmission 실행 설정

맨날 새로 깔 때마다 마치 처음 보는 것처럼 “아 뭘 했었지?” 하는 것도 지쳐서 나중에는 한방에 좀 하라고 기록해놓는다.

일단 systemctl로 실행되는 트랜스미션은 transmission 계정으로 실행이 되기는 하는데, 이렇게 실행하면 혼자 쓰는 NAS에서 폴더 관리하기가 참 귀찮다.
그래서 그냥 실행되는 서비스의 계정을 바꿔놓는다.

nano /usr/lib/systemd/system/transmission.service

여기서 보면

User=transmission

이렇게 있는 부분을

User=sweru

로 내가 주로 쓰는 계정으로 바꿔놓는다.

systemctl enable transmission
systemctl start transmission

이러면 재부팅 할 때마다 일일이 계정으로 로그인해서 데몬을 실행시킬 필요가 없어진다.

Pogoplug를 NAS로 – Samba 설치 및 설정

클라이언트에서 서버의 파일이나 프린터를 사용할 수 있게 하려면 Samba를 설치한다. 대부분이 Windows를 사용하는데 Samba를 사용하면 Windows에서 네트워크 드라이브로 바로 연결해 쓸 수가 있다. 서버 파일의 수정, 삭제 등 FTP보다 더 편하게 쓸 수 있는 장점이 있다. 포고플러그에 USB 어댑터가 있는 프린터를 물려 쓸 수도 있으나 여기서는 파일에 관해서만 다룬다.
일단 Samba를 설치한다.

pacman -S samba

여기서 pacman은 패키지 관리자로 Package Manager의 준말이다. 옵션에 관해서는 pacman – ArchWiki에서 좀 더 자세히 알 수 있다.

cp /etc/samba/smb.conf.default /etc/samba/smb.conf
nano /etc/samba/smb.conf

다음 샘플 설정 파일을 복사한 후 편집기로 연다.

여기서 nano는 텍스트 편집기로 간편하고 쓰기 깔끔하다. 일단 Ctrl + X : 종료, Ctrl + W : 검색, Ctrl + V : Page Down, Ctrl + Y : Page Up 정도만 알면 충분하다. 나머지는 nano의 아래 메뉴를 보면 알 수 있다. 아직도 vi를 더 즐겨 쓰는 사람도 있기는 하다고 한다. 파일이 없으면 옵션에 적은 디렉토리와 파일명으로 새롭게 만든다.

설정은 주석을 잘 읽어보면서 수정한다. 그 중 우선적으로 볼 것은 접속을 혀용할 호스트와 공유 경로, 그리고 작업 그룹이다. 아래의 코드를 참조해 앞의 세미콜론이 있는 부분은 제거해준다.

[global]
	workgroup = MYGROUP
	hosts allow = 192.168.1. 192.168.2 127.
	printcap name = /etc/printcap
	load printers = yes
	printing = bsd
	security = user

[homes]
	browable = no
	writable = yes

[share]
	path = /data/
	writable = yes

Windows에서는 작업 그룹이 같아야 네트워크에 표시가 되니 workgroup은 같은 공유기 아래에 있는 PC의 작업 그룹과 이름이 일치되게 설정한다. 접속을 허용할 호스트인 hosts allow 같은 경우, 192.168.1.192.168.1이 들어가는 모든 IP를 의미한다. 따라서 공유기에 접속된 모든 기기에 접속을 허용한다는 뜻이다. 여러 IP를 허용하고 싶다면 스페이스바로 구별해 추가한다. 위의 192.168.1.은 자신의 공유기의 사설 IP 정책에 맞게 설정한다.

공유 경로인 path는 공유하고 싶은 경로로 열어주면 된다. 아래의 옵션은 적혀있는 설명을 참조해 설정한다. [share]는 예를 적어 놓은 것이다. [name]과 같이 이름을 바꿔주며 추가해 계속해서 다른 공유 설정을 만들 수 있다. 설정 파일의 마지막에 설명과 예가 있으니 참조한다.

프린터는 쓰지 않기로 했으니 다음과 같이 설정한다. 프린터를 쓴다면 ArchWiki에서 프린터 관련 설정을 찾아본다.

[global]
	printcap name = /dev/null
	load printers = no
	printing = bsd

이렇게 설정해놓고 아래에서 [printers] 항목을 찾아 [printers] 항목을 포함해 모두 줄 앞쪽에 세미콜론(;)을 붙여준다.

나머지는 설정 파일의 설명이나 Samba – ArchWiki를 참조해 변경한다.

설정이 끝나면 Samba 서비스를 실행한다.

systemctl start smbd nmbd

여기서는 smbd, nmbd를 동시에 실행 시켰는데 smbd는 Samba 서버 서비스이고, nmbd는 NetBIOS Name Server로 IP에 이름을 부여해주는 서비스인데 Windows에서 네트워크 항목에 바로 Samba 서비스를 검색할 수 있게 해준다.
포고플러그 메모리 사용량을 조금이라도 줄이고 싶다면 nmbd는 실행하지 않아도 된다. 어차피 Windows 탐색기에서 \\192.168.1.*와 같은 형태로도 접속이 가능하다. 나는 nmbd도 같이 실행시켜줬다.

다음에는 접속할 유저를 만든다. 여기서 유저는 새로 만드는 게 아니고 기존 리눅스 사용자에게 권한을 주는 형식이다. sweru는 해당 유저의 계정의 이름으로 한다.

pdbedit -a -u sweru

다음 비밀번호를 지정한다. 리눅스의 비밀번호와는 별개로 Samba의 비밀번호를 만들어주는 과정이다.

smbpasswd sweru

Windows 파일 공유 기능을 쓰는 도중 root 권한을 요구하며 쓰기가 되지 않을 때가 있다. root 계정으로 생성하지 않았을 경우 정말로 폴더에 쓰기 권한이 없는 것이니 퍼미션을 777로 하거나

chmod 777 /data/

폴더의 소유자를 해당 유저로 하면 된다.

chown -R sweru /data/

위 과정 중에 하나라도 진행이 안 되는 부분이 있다면 Samba – ArchWiki를 꼭 참고하고 거기에 우선적으로 따르도록 한다.