Raspberry Pi amb FreeBSD com a servidor NAS i de descàrregues de Torrents

Hacker

Raspberry Pi and FreeBSD

Raspberry Pi and FreeBSD

En aquest article vaig a explicar com tinc un "discs durs en xarxa" o NAS (Network Attached Storage) a la meua Rasbperry Pi B+ amb FreeBSD (versió per a processadors ARM) + Samba (per a compartir fitxers a una xarxa amb Linux, Windows, MAcOsX i UNIX) + Transmission (per a descarregar Torrents remotament). Jo lo que vull és que qualsevol dispositiu de la meua xarxa puga compartir fitxers i, a més a més, anar baixant coses per les nits o inclús des de fora de la xarxa fàcilment. Sona bé, veritat?

IN ENGLISH, FOR NON-CATALAN SPEAKERS: in this article I will explain briefly how to have a "online hard discs" or NAS (Network Attached Storage) in a Rasbperry Pi B + FreeBSD 10.1 (version ARM processors) + Samba (for file sharing on a network with Linux, Windows , MacOSX and UNIX) + Transmission (to download torrents remotely). It sounds cool, isn't it?

Descarreguem la imatge de FreeBSD 10.1 per a processadors ARM de http://ftp.freebsd.org/pub/FreeBSD/releases/arm/armv6/ISO-IMAGES/10.1/. Jo, concretament, he baixat la FreeBSD-10.1-RELEASE-arm-armv6-RPI-B.img.bz2.

Per diversos foros comenten que la versió 11 de FreeBSD nomès està suportada per Raspberry 2, i com jo tinc la Raspberry B+ amb 516 Mb de RAM, doncs nomès puc instal·lar l'actual estable versió 10.

Ara, des d'un Mac Os X m'he descarregat 'ApplePi Baker' de http://www.tweaking4all.com/hardware/raspberry-pi/macosx-apple-pi-baker/, que és un equivalent al 'Win32 Disk Imager' del Windows, on pots fàcilment ficar dins d'un USB o tarjeta SD qualsevol distribució preparada.

He creat la imatge de FreeBSD per a ARM i en qüestió de 5 minuts ja ha finalitzat el procés.

Després arranquem la Raspberry i ha funcionat a la perfecció. Tenia por de que anara malament, ja que la tarjeta SD és nomès de 2 Gb, però ha funcionat :-)

Arranquem el FreeBSD i creeem un usuari per a que puguem accedir per SSH.


adduser
pw user mod joan -G wheel

Per a reconèixer la Raspberry Pi, sense monitor, pots usar l'Nmap, a mi m'ha donat aquesta descripció:


Nmap scan report for 192.168.1.41
Host is up (0.010s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
MAC Address: B8:27:EB:46:88:6C (Raspberry Pi Foundation)

Aleshores, ja podem començar a jugar. Veurem que 'ssh joan@192.168.1.41' ja funciona ;-)

Primer de tot, especifiquem el 'timezone' amb tzsetup

I ara, afegim al /etc/rc.conf les següents línies per a que, en cada arranc, ens fique l'hora actualitzada gràcies als servidors NTP:


ntpdate_enable="YES"
ntpdate_program="ntpdate"
ntpdate_flags="-b timeserver.org"

Ja tenim la maquineta en hora.

Veig que, tot i que la tarjeta SD és, nomès, de 2 Gb, en realitat encara tinc 1.2 G disponibles per a instal·lar coses, si vullguera.


$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mmcsd0s2a 1.8G 388M 1.2G 23% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mmcsd0s1 17M 3.5M 13M 20% /boot/msdos
/dev/md0 29M 24K 26M 0% /tmp
/dev/md1 14M 56K 13M 0% /var/log
/dev/md2 4.4M 8.0K 4.0M 0% /var/tmp

Aleshores, vaig a descarregar els ports i a compilar el 'pkg'. Instal·larem i actualitzarem la col·lecció de ports amb:


# portsnap fetch

Això triga aproximadament uns 20 minuts (o pot ser més) en descarregar i verificar tots els paquets. A mi m'ha descarregat 69 MB exactament.


# portsnap extract

Aquesta ordre comença a extraure tots els ports a /usr/ports i triga, aproximadament, uns trenta minuts.

Ara tinc:


root@raspberry-pi:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mmcsd0s2a 1.8G 1.4G 273M 84% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mmcsd0s1 17M 3.5M 13M 20% /boot/msdos
/dev/md0 29M 24K 26M 0% /tmp
/dev/md1 14M 56K 13M 0% /var/log
/dev/md2 4.4M 8.0K 4.0M 0% /var/tmp
root@raspberry-pi:~ #

Ara, instal·lariem coses amb pkg, però la versió d'ARM de FreeBSD sembla ser Tier 2 i encara no té soportats els binaris als repositoris tal com expliquen a https://www.freebsd.org/doc/en_US.ISO8859-1/articles/committers-guide/a…

Aleshores, tornant al old school del UNIX, cal que compilem cada aplicació des dels ports.
Primer, compilem Samba i després també compilarem el transmission:


cd /usr/ports/net/samba41
make install clean

Afegim aquest alínia al /etc/rc.conf per a que ens ararnque el servidor SAMBA nomès arranquem la Raspberry Pi:


echo 'samba_server_enable="YES"' >> /etc/rc.conf

Segons les meues necessitats, afegim el usuari 'joan' al grou samba:


pw groupadd smbprivate -M joan

Li donem contrasenya a aquest usuari:


root@FreeBSD-unixmen:/root # smbpasswd -a joan
New SMB password:
Retype new SMB password:
Added user joan.

Configurem el Samba /usr/local/etc/smb4.conf amb una configuració bàsica:


[global]
workgroup = nuvolet.strangled.net
hosts deny = ALL
hosts allow = 192.168.1.35 192.168.1.33 192.168.1.36 127.0.0.1

[joan]
comment = Directorio personal de Joan
path = /home/joan/
valid users = joan
public = no
writable = yes

[descargas]
comment = Carpeta de las descargas
path = /home/joan/Downloads/
valid users = joan
public = yes
writable = yes

Per cert, sempre que fem modificacions al Samba, l'arrancarem o l'aturarem amb:


/usr/local/etc/rc.d/samba_server start
/usr/local/etc/rc.d/samba_server stop

Així es veu al meu Gnome3 a Debian 8 Jessie:

Raspberry Pi and FreeBSD from Debian

Així es veu al meu Gnome3 a FreeBSD 10.1:

Raspberry Pi and FreeBSD from FreeBSD

Així es veu des d'un Android:

Raspberry Pi and FreeBSD from Android

Així es veu des d'un MacOSX:

Raspberry Pi and FreeBSD from MacOSX

Windows no tinc, però nomès et caldria ficar a l'explorador de fitxers \\IP_del_servidor_samba i ja està. En el meu cas seria: \\192.168.1.35 o \\joan@192.168.1.35 per a la carpeta on demana la contrasenya.

El transmision no cal explicar-ho, es molt senzill. Nomès accedirem a l'aplicació des de http://IP_DEL_EQUIP:901 i tenim la web carregant tots els torrents en color blau, els torrents descarregats de color verd i unes opcions per a afegir nous Torrents.

I aquesta és la meua Raspberry Pi treballant modestament i amb 100% Programari Lliure per les nits :-)

Raspberry, FreeBSD and Samba

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.