Журнал LinuxFormat - перейти на главную

LXF167:Cлать тор­рен­ты с Pi

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Примени­те свой Raspberry Pi для об­ме­на фай­ла­ми с дру­зья­ми из Се­ти

Ма­янк Шар­ма по­ка­зы­ва­ет, как пре­вра­тить Pi в тор­рент-сер­вер без мо­ни­то­ра и ска­чи­вать с не­го фай­лы на смарт­фон.

(thumbnail)
Наш эксперт Фа­нат от­кры­то­го ПО Ма­янк Шар­ма был ре­дак­то­ром Linux.com и пи­шет для LinuxToday, Digg и PC Plus.

Луч­шее в RPi – то, что это не толь­ко за­ме­ча­тель­ное уст­рой­ст­во для обу­чения, но и по­тен­ци­аль­ный сер­вер без монито­ра с доста­точ­ной про­из­во­ди­тель­но­стью; те­перь, с уве­ли­чением объ­е­ма па­мя­ти, это тем более верно.

Во­пре­ки рас­про­странен­но­му мнению, не ка­ж­дый сер­вер тре­бу­ет боль­шой вы­чис­ли­тель­ной мощ­но­сти. На­при­мер, ес­ли вы хо­ти­те за­гру­жать фай­лы и де­лить­ся ими с дру­ги­ми поль­зо­ва­те­ля­ми Се­ти, неза­ви­си­мо от их опе­ра­ци­он­ной сис­те­мы или уст­рой­ст­ва, мно­го­ядер­ный про­цес­сор сер­ве­ру ни к че­му. Во­об­ще-то ис­поль­зо­вание ста­ро­го ком­пь­ю­те­ра с Linux в ка­че­­ст­ве та­ко­го вы­де­лен­но­го сер­ве­ра – по­пу­ляр­ный спо­соб спа­сения от­слу­жив­ше­го свое «же­ле­за». Един­ст­вен­ный недоста­ток это­го под­хо­да – в боль­шом энер­го­по­треб­лении. У боль­шин­ст­ва со­вре­мен­ных ро­уте­ров есть USB-порт, и ес­ли вста­вить в него флэш­ку, то фай­лы на ней бу­дут доступ­ны всем ком­пь­ю­те­рам, под­клю­чен­ным к ро­уте­ру. Ну, а ес­ли у вас бо­лее ста­рый ро­утер и вы хо­ти­те не толь­ко со­вме­ст­но ис­поль­зо­вать фай­лы?

С RPi мож­но сде­лать все это и мно­гое дру­гое, не ра­зо­ря­ясь на обыч­ный ком­пь­ю­тер, и без ог­раничений, при­су­щих спе­ци­аль­ным уст­рой­ст­вам, та­ким как ро­уте­ры.

Со­би­ра­ем ком­понен­ты

Мы восполь­зу­ем­ся RPi ре­дак­ции 2 RPi с 512 МБ ОЗУ, но все долж­но пре­крас­но ра­бо­тать и на бо­лее ранних вер­си­ях. Уси­лим ее по­следней вер­си­ей Raspbian (вер­сия 2012-10-28-wheezy-raspbian). Бо­лее но­вые ре­ли­зы пре­крас­ны тем, что мо­гут ис­поль­зо­вать весь уве­ли­чен­ный объ­ем па­мя­ти без до­полнитель­ных на­стро­ек. В них так­же по умол­чанию вклю­че­на SSH, что по­зво­лит поль­зо­ва­те­лям под­клю­чить­ся к RPi и на­стро­ить ее, да­же не вты­кая монитор.

За­гру­зи­те по­след­нюю вер­сию ди­ст­ри­бу­ти­ва Raspbian и за­пи­ши­те ее на SD-кар­ту ко­ман­дой dd в Linux или Win32DiskImager в Windows. RPi мож­но под­клю­чить к Ин­тернету с по­мо­щью бес­про­вод­но­го USB-адап­те­ра, но луч­ше бу­дет под­клю­чить его ка­бе­лем к ро­уте­ру че­рез порт Ethernet.

Под­сое­динив и вклю­чив Rpi, пе­рей­ди­те на страницу ад­минист­ри­ро­вания ро­уте­ра (ее ад­рес мож­но най­ти на ро­уте­ре или в до­ку­мен­та­ции по нему). Ско­рее все­го, в ро­уте­ре вклю­чен DHCP для вы­да­чи IP-ад­ре­сов под­клю­чае­мым уст­рой­ст­вам. Изу­чи­те на­строй­ки в ин­тер­фей­се ад­минист­ра­то­ра, осмот­ри­те спи­сок всех под­клю­чен­ных уст­ройств и за­пи­ши­те IP-ад­рес, ко­то­рый ро­утер на­зна­чил RPi. Поз­же нам при­дет­ся на­зна­чить RPi ста­ти­че­­ский IP-ад­рес (см. врез­ку), для га­ран­тии, что­бы у RPi всегда был один и тот же ад­рес. До­пустим, ди­на­ми­че­­ский IP-ад­рес, на­зна­чен­ный RPi – 192.168.3.100. Этой ин­фор­ма­ции доста­точ­но, что­бы под­клю­чить­ся к RPi и на­стро­ить Raspbian че­рез SSH. Кли­ент SSH есть в ка­ж­дом ди­ст­ри­бу­ти­ве Linux. Поль­зо­ва­те­ли Windows мо­гут восполь­зо­вать­ся PuTTY.

Для под­клю­чения с уда­лен­но­го ком­пь­ю­те­ра с Linux от­крой­те тер­ми­нал и ско­ман­дуй­те:

$ sudo ssh pi@192.168.3.100

Когда вы под­твер­ди­те до­бав­ление это­го ад­ре­са в спи­сок до­ве­рен­ных хостов, у вас спро­сят ло­гин и па­роль. В све­жем, нена­стро­ен­ном Raspbian это поль­зо­ва­тель “pi” и па­роль “raspberry”. Дальней­шие ко­ман­ды бу­дут оди­на­ко­вы, неза­ви­си­мо от то­го, под­клю­чае­тесь вы из Linux или из Windows, так как они за­пускают­ся в ди­ст­ри­бу­ти­ве Rasbian Linux на RPi. По­сколь­ку это све­жая сис­те­ма, вам пред­ло­жат спер­ва ее скон­фи­гу­ри­ро­вать. Вве­ди­те ко­ман­ду

$ sudo raspi-config

На эк­ране поя­вит­ся мно­же­ст­во ва­ри­ан­тов ваших дей­ст­вий. Про­кру­ти­те спи­сок до кон­ца и вы­бе­ри­те Update [Об­но­вить], так бу­дет за­гру­же­на по­след­няя вер­сия этой ути­ли­ты на­строй­ки. По­сле это­го RPi пе­ре­за­гру­зит­ся, и вам при­дет­ся сно­ва под­клю­чить­ся к ней ко­ман­дой ssh или PuTTY, как и ранее. Это нуж­но де­лать при ка­ж­дом из­менении на­стро­ек и пе­ре­за­груз­ке RPi.


Вер­нув­шись в ути­ли­ту, вы­бе­ри­те оп­цию expand_rootfs, что­бы раз­дел с Raspbian мог за­нять все ме­сто на SD-кар­те. На­конец, вы­бе­ри­те оп­цию memory_split – она по­зво­лит раз­де­лить опе­ра­тив­ную па­мять RPi ме­ж­ду гра­фи­че­­ским про­цес­со­ром и цен­траль­ным про­цес­со­ром. Поскольку мы бу­дем под­клю­чать­ся к Pi толь­ко уда­лен­но, вы­де­ли­те гра­фи­че­­ско­­му про­цес­со­ру минималь­ный объ­ем па­мя­ти – 16 МБ.

За­тем нуж­но до­ба­вить в RPi дру­гих поль­зо­ва­те­лей. Поз­же мы ог­раничим доступ к оп­ре­де­лен­ным ка­та­ло­гам на флэш­ке для оп­ре­де­лен­ных поль­зо­ва­те­лей, а так­же груп­па­ми поль­зо­ва­те­лей, но неко­то­рые ка­та­ло­ги оста­нут­ся пуб­лич­ны­ми.

$ sudo adduser bodhi

Эта ко­ман­да до­ба­вит поль­зо­ва­те­ля и соз­даст со­от­вет­ст­вую­щие ка­та­ло­ги – бу­дет за­про­шен па­роль поль­зо­ва­те­ля и дру­гие па­ра­мет­ры. За­тем до­бавь­те это­го поль­зо­ва­те­ля в груп­пу users ко­ман­дой

$ sudo usermod -a -G users bodhi

Про­сим на сце­ну

Когда за­кон­чи­те, по­ра сде­лать RPi доступ­ным че­рез Ин­тернет. Для это­го при­меним Samba, ко­то­рая по­зво­лит ор­ганизо­вать об­щий доступ к фай­лам по про­то­ко­лу CIFS (Common Internet File System – об­щая фай­ло­вая сис­те­ма Ин­тернета). Для уста­нов­ки Samba на RPi вве­ди­те ко­ман­ду

$ sudo apt-get install samba samba-common-bin

За­тем нуж­но до­ба­вить в Samba поль­зо­ва­те­лей. Для поль­зо­ва­те­ля по умол­ча­нию pi вы­пол­ни­те ко­ман­ду:

$ sudo smbpasswd -a pi

У вас спро­сят па­роль. Обыч­но мож­но безо­пас­но ис­поль­зо­вать тот же па­роль, что и в учет­ной за­пи­си поль­зо­ва­те­ля. По­вто­ри­те этот шаг для ка­ж­до­го поль­зо­ва­те­ля сис­те­мы.

Samba ра­бо­та­ет под управ­лением фай­ла на­строй­ки, ко­то­рый нуж­но из­менить до ее ис­поль­зо­вания. Пе­ред этим сто­ит сде­лать ре­зерв­ную ко­пию су­ще­ст­вую­ще­го:

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old

За­тем от­кро­ем его в ре­дак­то­ре ко­манд­ной стро­ки nano:

$ sudo nano /etc/samba/smb.conf

В этом фай­ле най­ди­те раз­дел Authentication. Уда­ли­те там ре­шет­ку в на­ча­ле стро­ки

#security = user

что­бы она ста­ла та­кой:

security = user

Это га­ран­ти­ру­ет, что Samba по­зво­лит под­клю­чить­ся толь­ко тем поль­зо­ва­те­лям, у ко­го есть до­машние ка­та­ло­ги на RPi. Что­бы у поль­зо­ва­те­лей был доступ к их до­машним ка­та­ло­гам, най­дите раз­дел [homes] и убе­ди­тесь, что зна­чения сле­дую­щих па­ра­мет­ров со­от­вет­ст­ву­ют при­ве­ден­ным ниже

browseable = yes

read only = no

Для вы­хо­да из nano на­жми­те Ctrl+X, за­тем y, что­бы со­хранить файл, за­тем Enter – при по­яв­лении имени фай­ла. При лю­бых из­менениях в лю­бом сер­ви­се нуж­но пе­ре­за­пустить сер­вис, что­бы из­менения всту­пи­ли в си­лу. Для пе­ре­за­пуска Samba вы­полните ко­ман­ду:

$ sudo service samba restart

Те­перь по­ра под­клю­чать USB-уст­рой­ст­во к RPi. Хо­тя на RPi есть несколь­ко USB-пор­тов, лю­бые до­полнитель­ные USB-уст­рой­ст­ва луч­ше под­клю­чать че­рез USB-хаб с пи­танием, осо­бен­но при под­клю­чении боль­ших дис­ков с боль­шим энер­го­по­треб­лением. Так­же об­ра­ти­те внимание на то, как от­фор­ма­ти­ро­ван диск. По умол­чанию мно­гие USB-флэш­ки от­фор­ма­ти­ро­ва­ны в FAT32. Воз­мож­но, это луч­ший фор­мат с точ­ки зрения со­вмес­ти­мо­сти опе­ра­ци­он­ной сис­те­мы, но для раз­де­ления фай­лов по се­ти – худ­ший. Кро­ме то­го, есть фор­мат NTFS, ко­то­рый ис­поль­зу­ет­ся мно­ги­ми боль­ши­ми внешними USB-дис­ка­ми.

Ес­ли вы хо­ти­те ор­ганизо­вать по­то­ко­вое воспро­из­ве­дение муль­ти­ме­диа с уда­лен­но­го дис­ка, это не ваш фор­мат: луч­ше все­го восполь­зо­вать­ся EXT4. Вы­бе­ри­те EXT4 толь­ко в том слу­чае, ес­ли диск бу­дет ис­поль­зо­вать­ся че­рез сеть или на ком­пь­ю­те­рах Linux. По­сле под­клю­чения дис­ка най­ди­те его ко­ман­дой sudo fdisk -l. Она вы­ве­дет спи­сок уст­ройств, под­клю­чен­ных к RPi, и их раз­де­лы. Про­смот­ри­те ре­зуль­та­ты и най­ди­те диск, раз­мер ко­то­ро­го сов­па­да­ет с раз­ме­ром под­клю­чен­но­го. Ско­рее все­го, уст­рой­ст­во бу­дет sda, а нуж­ный нам раз­дел – sda1. Соз­дай­те точ­ку мон­ти­ро­вания и смон­ти­руй­те уст­рой­ст­во:

$ sudo mkdir /mnt/usb

$ sudo mount /dev/sda1 /mnt/usb

USB-диск останет­ся смон­ти­ро­ван­ным, по­ка вы не пе­ре­за­гру­зите RPi. Что­бы не при­шлось пе­ре­мон­ти­ро­вать уст­рой­ст­во, най­ди­те его UUID:

$ sudo blkid

/dev/sda1: LABEL=”ntfs” UUID=”3B5C053D35CAD865” TYPE=”ntfs”

До­бавь­те его в спи­сок уст­ройств, мон­ти­руе­мых во вре­мя за­груз­ки:

$ sudo nano /etc/fstab

UUID=3B5C053D35CAD865 /mnt/usb ntfs defaults 0 0

Samba пре­достав­ля­ет об­щий доступ к фай­лам и ка­та­ло­гам, за­дан­ным в ее фай­ле на­строй­ки. Что­бы пре­доста­вить об­щий доступ к ка­та­ло­гам на USB-уст­рой­ст­ве, пред­по­ло­жим, что на нем есть несколь­ко па­пок:

$ ls /mnt/usb

documents downloads music videos

Что­бы пре­доста­вить об­щий доступ к ка­та­ло­гу downloads, от­крой­те файл /etc/samba/smb.conf в nano, про­кру­ти­те его со­дер­жи­мое и до­бавь­те в конец сле­дую­щий фраг­мент:

[Downloads]

comment = Place all your downloads here

Path = /mnt/usb/downloads

browseable = yes

writable = yes

read only = no

valid users = @users

Эти па­ра­мет­ры пре­доста­вят об­щий доступ к ка­та­ло­гу /mnt/usb/downloads всем поль­зо­ва­те­лям в груп­пе users. Поз­же мы смон­ти­ру­ем этот ка­та­лог на ком­пь­ю­те­рах с Linux и Windows, и поль­зо­ва­те­ли смо­гут на­стро­ить свои менед­же­ры за­гру­зок так, что­бы они со­хра­ня­ли фай­лы пря­мо в эту пап­ку на USB-уст­рой­ст­ве, под­клю­чен­ном к RPi, с лю­бо­го ком­пь­ю­те­ра се­ти. Так­же мож­но ог­раничить доступ к неко­то­рым ка­та­ло­гам толь­ко за­дан­ным поль­зо­ва­те­лям:

[Documents]

comment = Important eyes-only PDF files

path = /mnt/usb/documents

browseable = no

writable = yes

read only = no

valid users = pi, bodhi

Эти на­строй­ки раз­ре­шат мон­ти­ро­вать и из­ме­нять со­дер­жи­мое ка­та­ло­гов толь­ко поль­зо­ва­те­лям pi и bodhi.

Ус­та­но­вим тор­рент-сер­вер

Тор­рен­ты – пред­поч­ти­тель­ный спо­соб рас­про­странения кон­тен­та с от­кры­тым ис­ход­ным ко­дом. Та­ким об­ра­зом рас­про­стра­ня­ют­ся боль­шин­ст­во ди­ст­ри­бу­ти­вов Linux – ли­бо на соб­ст­вен­ных тре­ке­рах, ли­бо на linuxtracker.org. Все дис­ки LXF мож­но за­гру­зить че­рез тор­рент-кли­ент в раз­де­ле Archive сай­та www.linuxformat.com.

В Linux нет недостат­ка тор­рент-кли­ен­тов. Transmission от­ли­ча­ет­ся от про­чих удоб­ным web-ин­тер­фей­сом, ко­то­рый на­по­ми­на­ет ра­бо­чий стол. Мы уста­но­вим Transmission в Raspbian и смо­жем от­крыть его че­рез брау­зер на лю­бом ком­пь­ю­те­ре се­ти для до­бав­ления, монито­рин­га и управ­ления тор­рен­та­ми. Для уста­нов­ки Transmission под­клю­чи­тесь к RPi че­рез SSH и ско­ман­дуй­те

$ sudo apt-get install transmission-daemon

Она уста­но­вит и за­пустит де­мо­на Transmission. Но пре­ж­де чем вы смо­же­те за­гру­жать тор­рен­ты, его нуж­но на­стро­ить. Пе­ред вы­полнением лю­бых из­менений фай­ла на­строй­ки Transmission обес­печь­те, что­бы де­мон не был за­пу­щен:

$ sudo service transmission-daemon stop

Так­же до­бавь­те поль­зо­ва­те­ля Transmission (debian-transmission), ко­то­рый соз­да­ет­ся ав­то­ма­ти­че­­ски при уста­нов­ке де­мо­на, в на­шу груп­пу users:

$ sudo usermod -a -G users debian-transmission

Те­перь соз­дай­те на USB-дис­ке пуб­лич­ный ка­та­лог, ку­да мы за­гру­зим тор­рен­ты. Сна­ча­ла соз­дай­те на USB-дис­ке ка­та­лог и на­значь­те его вла­дель­цем поль­зо­ва­те­ля Transmission:

$ sudo mkdir /mnt/usb/public

$ sudo chown debian-tranmission /mnt/usb/public

Те­перь до­бавь­те этот ре­сурс в файл на­строй­ки Samba:

[Public]

comment= Public share for torrents

browseable = yes

path = /mnt/usb/public

public = yes

writeable = yes

guest ok = yes

Пе­ре­за­пусти­те Samba, и ка­та­лог станет досту­пен всем. Об­щий ре­сурс соз­дан; те­перь по­ра на­стро­ить де­мо­на Transmission. Его па­ра­мет­ры за­да­ют­ся в фай­ле /etc/transmission-daemon/settings.json. От­крой­те файл в nano и в строке

“rpc-whitelist-enabled”: true

из­мените па­ра­метр на

“rpc-whitelist-enabled”: false

что­бы мог­ли под­клю­чать­ся поль­зо­ва­те­ли со всех ком­пь­ю­те­ров. За­тем ука­жи­те ка­та­лог за­груз­ки:

“download-dir”: “/mnt/usb/public/downloads/Complete”

Не­за­вер­шен­ные за­кач­ки мож­но от­де­лить от осталь­ных фай­лов, раз­мес­тив их в от­дель­ном ка­та­ло­ге. Вклю­чи­те эту воз­мож­ность, из­менив в строке

“incomplete-dir-enabled”: false

параметр false на true и за­дай­те ка­та­лог, где бу­дут раз­ме­щать­ся не­за­вер­шен­ные за­кач­ки:

“incomplete-dir”: “/mnt/usb/public/downloads/Incomplete”

Ау­тен­ти­фи­ка­ция поль­зо­ва­те­лей

Так как мы сде­ла­ли вла­дель­цем ка­та­ло­га /mnt/usb/public поль­зо­ва­те­ля Transmission, он бу­дет ав­то­ма­ти­че­­ски соз­да­вать все но­вые ка­та­ло­ги. Хо­тя за­гру­жае­мые тор­рен­ты яв­ля­ют­ся пуб­лич­ны­ми, мож­но сде­лать так, что­бы не все поль­зо­ва­те­ли мог­ли вы­кла­ды­вать тор­рен­ты для за­груз­ки.

Один из спо­со­бов это сде­лать – за­ста­вить поль­зо­ва­те­лей ау­тен­ти­фи­ци­ро­вать­ся для досту­па в Transmission. Для это­го сна­ча­ла cтроку

“rpc-authentication-required”: false

за­мените на

“rpc-authentication-required”: true

За­тем оп­ре­де­ли­те па­роль в па­ра­мет­ре

“rpc-password”: “<password>”

Этот па­роль Transmission ав­то­ма­ти­че­­ски за­шиф­ру­ет.

Те­перь со­храните файл и за­пусти­те де­мо­на Transmission ко­ман­дой sudo service transmission-daemon start. По умол­чанию она бу­дет за­пу­ще­на на пор­те 9091. В на­шем при­ме­ре пол­ный ад­рес web-ин­тер­фей­са Transmission бу­дет 192.168.3.100:9091. За­пусти­те брау­зер и пе­рей­ди­те по это­му ад­ре­су. Ес­ли вы вклю­чи­ли па­ра­метр password, бу­дут за­про­ше­ны ло­гин и па­роль. Имя поль­зо­ва­те­ля – transmission, а па­роль – тот, что был ука­зан в фай­ле на­строй­ки.

Пре­ж­де чем за­гру­жать тор­рент, нуж­но ука­зать рас­по­ло­жение фай­ла .torrent. От­крой­те web-ин­тер­фейс Transmission и на­жми­те кноп­ку Open Torrent [От­крыть тор­рент]. Вставь­те URL в от­крыв­шее­ся ок­но и на­жми­те Upload [За­гру­зить] для на­ча­ла за­груз­ки. В ин­тер­фей­се удоб­но ори­ен­ти­ро­вать­ся. По умол­чанию ото­бра­жа­ют­ся все до­бав­лен­ные тор­рен­ты, но с по­мо­щью вы­па­даю­щих ме­ню мож­но про­смот­реть спи­сок тор­рен­тов по со­стоянию за­груз­ки или по тре­ке­рам. По щелч­ку пра­вой кноп­кой на тор­рен­те от­кры­ва­ет­ся кон­тек­ст­ное ме­ню.

Как толь­ко тор­рент за­гру­зит­ся, в со­от­вет­ст­вии с на­ши­ми на­строй­ка­ми, он ав­то­ма­ти­че­­ски пе­ре­мес­тит­ся в пуб­лич­но доступ­ный ка­та­лог /mnt/usb/public/downloads/Complete. Про­стей­ший спо­соб от­крыть об­щий ре­сурс в Linux – вве­сти его ад­рес в фай­ло­вый менед­жер по умол­чанию. Боль­шин­ст­во со­вре­мен­ных фай­ло­вых менед­же­ров Linux, та­ких как Nautilus в Gnome, под­дер­жи­ва­ют Samba. За­пусти­те Nautilus и на­жми­те Ctrl+L для пе­ре­хо­да к ад­рес­ной стро­ке. Вве­ди­те smb://, за­тем IP-ад­рес RPi с за­пу­щен­ной Samba. В на­шем слу­чае вый­дет smb://192.168.3.100. Для досту­па к кон­крет­но­му ка­та­ло­гу до­бавь­те его в конец ад­ре­са, на­при­мер, smb://192.168.3.100/documents. Ре­сурс так­же мож­но смон­ти­ро­вать из команд­ной стро­ки:

# mount -t cifs -o username=pi,password=raspberry //192.168.3.100/usb/downloads /mnt/downloads

Что­бы этот ре­сурс мон­ти­ро­вал­ся ав­то­ма­ти­че­ски, до­бавь­те его в файл /etc/fstab:

//192.168.3.100/usb/downloads /mnt/downloads cifs username=pi,password=raspberry 0 0

Вы мо­же­те свя­зать уда­лен­ное USB-уст­рой­ст­во с се­те­вым дис­ком на ма­шине с Windows. В Windows 7 от­крой­те My Computer [Мой ком­пь­ю­тер] и на­жми­те кноп­ку Map Network Drive [Под­клю­чить се­те­вой диск]. В от­крыв­шем­ся окне вы­бе­ри­те бу­к­ву дис­ка и ука­жи­те рас­по­ло­жение се­те­вой пап­ки. В на­шем слу­чае это нечто вро­де 192.168.3.100\usb\videos. У вас за­про­сят ло­гин и па­роль, по­сле че­го диск поя­вит­ся в спи­ске дис­ков. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика