viernes, 2 de agosto de 2019

Raspberry Pi como NAS

Introducción

Con los años, es fácil acumular muchos archivos multimedia como las fotos y vídeos de viajes. Gracias a los dispositivos denominados NAS (Network Attached Storage) es posible visualizar estos contenidos desde cualquier otro dispositivo de la red doméstica (LAN, Local Area Network) como por ejemplo: televisor, teléfono inteligente, tableta, portátil, ordenador de sobremesa, etc.

Para uso doméstico, en cualquier tienda de informática es muy fácil encontrar NAS, pero su precio puede variar entre 150 y 300 €. En este artículo explico cómo hacer una versión económica (DIY, Do It Yourself) utilizando como hardware una económica Raspberry Pi y software gratuito.

Este artículo presupone de ciertos conocimientos básicos de informática del lector, pero si hay dudas, deja un comentario y trato de explicarlo mejor. ;-)

Hardware

En este caso, he comprado en la tienda www.raspipc.es lo siguiente:
  • Raspberry Pi: 35 €
  • Caja para Raspberry Pi: 8 €
  • Fuente de alimentación: 10 €
  • Tarjeta de memoria SD: 15 €
  • Gastos de envío: 9 €
Además, he reutilizado un disco duro externo USB que tenía en casa.

Software

En resumen, el software a utilizar es el siguiente:

Instalar Raspbian en la tarjeta SD

Desde un ordenador normal:

Arrancar Raspberry

  • Conectar la tarjeta SD en la ranura de la Raspberry Pi
  • Conectar a la fuente de alimentación
  • Esperar un minuto al arranque del sistema operativo Raspbian

Acceder a Raspbian

Para acceder a la Raspberry Pi hay dos opciones:
  • Conectar la Raspberry Pi a un monitor, teclado y ratón
  • Acceder en remoto desde otro ordenador mediante protocolo SSH

Crear usuario de acceso

Raspbian viene configurado con un usuario y clave conocido.
https://www.raspberrypi.org/documentation/linux/usage/users.md

Para cambiar las claves por defecto, utilizar el comando:
# passwd

Crear un usuario personal (en mi caso, le he llamado user):
# sudo useradd -d /home/user -m user
# sudo passwd user


Dar permisos (de sudo) al usuario user:
# echo "user ALL=(ALL:ALL) ALL" >> /etc/sudoers

Configuraciones adicionales

Se puede configurar ciertos parametros de Raspbian mediante raspi-config:
$ sudo raspi-config

Una vez dentro de raspi-cofig, configurar:
  • Esperar a que funcione la red:
    System - Network at Boot: Wait for network
  • Evitar el inicio de la sesión gráfica:
    System - Boot To CLI
  • Permitir acceso remoto por línea de comandos:
    Interfaces - SSH: Enabled
  • Establecer zona horaria:
    Localisation - Set Timezone Atlantic/Canary
  • Cambiar idioma del teclado:
    Localisation - Set Keyboard - Spanish

Acceder a discos locales USB y de red NAS

Crear un directorio para montar un disco externo USB (en mi caso disk-usb):
$ cd
$ mkdir disk-usb

Crear estructura de directorios para videos y descargas:
$ ln -s /home/user/disk-usb/videos videos
$ ln -s /home/user/disk-usb/downloads downloads

Montar automáticamente un disco externo USB con formato EXT4 (Linux):
# vi /etc/fstab
/dev/sda1 /home/user/disk-usb ext4 rw,users,noauto 0 9

Montar automáticamente un disco externo USB con formato NTFS (Windows):
# vi /etc/fstab
/dev/sda1 /home/user/disk-usb ntfs rw,user,owner,auto,uid=1001,gid=1001 0 9

Montar automáticamente disco externo de red (NAS):
# mkdir /home/user/disk-nas
# chmod user:users /home/user/disk-nas
# chmod g+r /home/user/disk-nas
# touch /home/user/keys
# echo "username=****" >> /home/user/keys
# echo "password=****" >> /home/user/keys
# chmod 600 /home/user/keys
# echo "//server/folder /home/user/disk-nas cifs credentials=/home/user/keys,uid=user,gid=users 0 0" >> /etc/fstab
# mount -a


Descargar ficheros usando Torrent

Instalar Transmission Daemon:
$ sudo -i
# apt-get install transmission-daemon
# cd /var/lib/transmission-daemon/.config/transmission-daemon
# mv settings.json settings.json.orig
# cp /home/angel/settings.json .
# chown debian-transmission:debian-transmission settings.json
# diff settings.json settings.json.orig


Compartir ficheros usando Samba

Instalar y configurar Samba:
$ sudo apt-get install samba samba-common-bin -y
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.bak
$ sudo vi /etc/samba/smb.conf
$ diff /etc/samba/smb.conf /etc/samba/smb.bak
255,263d254
> [videos]
> comment = Videos
> path = /home/user/disk-usb/videos
> create mask = 0775
> directory mask = 0775
> read only = yes
> browseable = yes
> public = yes
> force user = user
$ sudo smbpasswd -a user
$ sudo service smbd restart
$ sudo service nmbd restart
$ sudo service samba restart


Compartir ficheros multimedia con Plex Media Server

Instalar Plex Media Server
https://support.plex.tv/hc/en-us/articles/201370363-Move-an-Install-to-Another-System

Configurar tareas periódicas

Para configurar tareas periódicas, utilizo cron:
# crontab -e
@reboot mount /home/user/disk-usb
@hourly sync
@daily /root/transmission-restart.sh


Control desde el móvil

Desde el móvil con Android conectado por WiFi a la LAN puedo:

Actualizar software

Cada cierto tiempo (dos o tres meses), conviene actualizar Raspbian:
# sudo apt-get update
# sudo apt-get upgrade


Errores conocidos

Si al ejecutar alguna actualización o al configurar Perl aparece el error:
perl: warning: Setting locale failed.
Basta con establecer las variables de entorno:
$ export LANGUAGE=en_GB.UTF-8
$ export LANG=en_GB.UTF-8
$ export LC_ALL=en_GB.UTF-8
$ locale-gen en_GB.UTF-8
$ dpkg-reconfigure locales


Instalar soporte para dockers

Para jugar y probar con dockers en la Raspberry Pi:
https://www.raspberrypi.org/blog/docker-comes-to-raspberry-pi/