NAS casero, barato y bajo consumo con un SOC Banana Pi M1

Rasperry Pi, Cubieboard, Orange Pi, Banana Pi...
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 9. Servidor RSYNC

Mensaje sin leer por Naguissa »

9. Servidor RSYNC

Vamos a instalar un servidor RSYNC para poder sincronizar carpetas de manera eficiente. Además, lo usaremos luego para hacer copias de seguridad.

Todos los comandos aquí descritos se han de ejecutar como root (puedes usar "sudo su" desde un usuario normal para escalar a root).


Instalación

Instalamos el servidor, aunque ya debería estar instalado pues es un comando estándar:

Código: Seleccionar todo

apt-get install rsync


Configuración


Crearemos una configuración para el servidor rsync:

Código: Seleccionar todo

nano -w /etc/rsyncd.conf
Y escribiremos en ella:

Código: Seleccionar todo

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
port = 873

[sync_files]
path = /mnt/rsync
comment = RSYNC FILES
read only = false
upload only = false
timeout = 300
auth users = nas
secrets file = /etc/rsyncd.secrets
Deberéis cambiar el 'path' para que se adapte a vuestra configuración. Además, podéis cambiar el valor de la etiqueta (sync_files), el de "comment". He puesto como usuario "nas", al que otorgaré la contraseña "nas", pero no corresponde al usuario del sistema sino a uno propio del rsync; podéis cambiarlo si deseáis.


Crearemos la carpeta donde sincronizar (cambiad el path si lo habéis cambiado en la configuración):

Código: Seleccionar todo

mkdir /mnt/rsync
chmod 777 /mnt/rsync

Luego editaremos los valores por defecto del servicio:

Código: Seleccionar todo

nano -w /etc/default/rsync
Y cambiaremos las siguientes lineas:

Código: Seleccionar todo

RSYNC_ENABLE=true

RSYNC_CONFIG_FILE=/etc/rsyncd.conf

RSYNC_NICE='18'

RSYNC_IONICE='-c3'

Con estas líneas pasamos el archivo de configuración del punto anterior al demonio rsync y lo configuramos como proceso de baja prioridad (tanto de CPU como de I/O) para que no tenga mucho impacto en el funcionamiento del NAS.


Ahora crearemos las credenciales del usuario nas de rsync:

Código: Seleccionar todo

echo nas:nas > /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets


Ahora procedemos a activar el servicio:

Código: Seleccionar todo

systemctl restart rsync
systemctl enable rsync
Con ésto ya tenemos el servidor rsync funcionando.

Podemos probarlo con los siguientes comandos que listan la carpeta configurada en el 1er paso. El primero pedirá la contraseña y el segundo no:

Código: Seleccionar todo

rsync -rdt rsync://nas@<IP DEL NAS>/sync_files
RSYNC_PASSWORD="nas" rsync -rdt rsync://nas@<IP DEL NAS>/sync_files
Podéis ejecutarlas tanto desde el propio NAS o desde otro equipo de la red local.


Si deseáis probarlo en una máquina Windows tenéis un port gratuito de rsync hecho con cygwin. Tenéis que tener en cuenta que las rutas se usan con barra normal (/), no invertida(\) y que las unidades son /cygdrive/<LETRA UNIDAD SIN LOS DOS PUNTOS>. También tenéis disponible una GUI, tanto de servidor como de cliente rsync, llamada DeltaCopy


Fuentes:

Tags:
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 10. Servidor de descargas mldonkey (emule, torrent, etc)

Mensaje sin leer por Naguissa »

10. Servidor de descargas mldonkey (eMule, torrent, KAD, DC, directas y otras)

Actualmente existen diversas maneras de descargar contenidos, destacando entre ellas Descargas directas, Torrent y eMule.

Hoy por hoy se suele instalar transmission-daemon para descargar torrents. Es una buena opción, pro para mi gusto queda un poco 'coja', pues se limita a ésta red.

Es por ello que yo prefiero usar un muy viejo conocido mío, el llamado mldonkey.

mlDonkey es un programa similar al daemon de Transmission pero compatible con Torrent, emule, KAD, Direct Connect y Descargas directas.




Instalación

Instalamos el servidor:

Código: Seleccionar todo

apt-get update
apt-get install mldonkey-server
Nos preguntará si deseamos ejecutarlo al arranque. Le diremos que no, debido a que podría ser que los discos, sobretodo los USB o RAID, no estuviesen aún listos.

Acto seguido editamos el archivo /etc/rc.local:

Código: Seleccionar todo

nano -w /etc/rc.local
Y como siempre, antes del "exit 0" final añadimos:

Código: Seleccionar todo

rm /var/lib/mldonkey/*.tmp
systemctl restart mldonkey-server

Si deseamos instalar una GUI en el servidor podríamos hacerlo ejecutando:

Código: Seleccionar todo

apt-get install mldonkey-gui


Configuración


Primero de todo cambiamos los valores por defeto:

Código: Seleccionar todo

nano -w /etc/default/mldonkey-server
Y cambiamos los valores por:

Código: Seleccionar todo

# MLDonkey configuration file
# This file is loaded by /etc/init.d/mldonkey-server.
# This file is managed using ucf(1).

MLDONKEY_DIR=/var/lib/mldonkey
MLDONKEY_USER=nas
MLDONKEY_GROUP=nas
MLDONKEY_UMASK=0000
LAUNCH_AT_STARTUP=true


Deberéis cambiar el 'MLDONKEY_DIR' para que se adapte a la configuración que deseéis.

Luego editaremos el archivo downloads.ini:

Código: Seleccionar todo

nano -w /var/lib/mldonkey/downloads.ini
Y pondremos:

Código: Seleccionar todo

run_as_useruid=1000
run_as_user="nas"
client_name="leech box"
El "client_name" podéis configurarlo a vuestro gusto.


Nos aseguramos que los permisos son correctos, forzamos su arranque, paramos el demonio:

Código: Seleccionar todo

chown -R nas:users /var/lib/mldonkey
chown -R nas:users /var/log/mldonkey/
/etc/init.d/mldonkey-server force-start
systemctl stop mldonkey-server
Permitimos el acceso a la red local editando el archivo downloads.ini:

Código: Seleccionar todo

cd /var/lib/mldonkey/
nano -w downloads.ini
Buscamos la opción "allowed_ips" y la cambiamos por:

Código: Seleccionar todo

allowed_ips = ["127.0.0.1"; "192.168.1.0/24"]
Ajustando el 192.168.1.0 por los datos de nuestra red local con 0 como ultimo número.


Ahora moveremos las carpetas de descargas y temporales para que coincidan con los discos que deseemos. Ésto dependerá de la configuración de nuestro NAS:

Código: Seleccionar todo

mkdir /media/usb0/mldonkey
mkdir /media/usb0/mldonkey/temp
mkdir /media/usb0/mldonkey/downloads
chown -R nas:users /media/usb0/mldonkey
cd /var/lib/mldonkey/
rm -R temp
rm -R incoming
ln -s /media/usb0/mldonkey/temp ./temp
ln -s /media/usb0/mldonkey/downloads ./incoming
systemctl restart mldonkey-server        


Opciones detalladas de cada tipo de descarga

Estas opciones con como cada uno de los servicios de descarga que soporta: torrent, edonkey, kad, DC...

No necesitamos cambiarlas aquí, usaremos una GUI desde otro PC para cambiarlas, como si estuviésemos usando el programa correspondiente en esa máquina.


Interfaces Gráficas de Usuario, GUIs

En la página oficial podéis ver que existen diversas GUIs para mlDonkey.

En mi caso, por lo completa, sencilla y compatible que es siempre he usado sancho.

Al arrancar nos pedirá la configuración inicial. Hemos de poner la IP de nuestro NAS, el usauario y pass "admin" y vacío que vienen por defecto y decirle que guarde la configuración y la ponga por defecto.

Una vez arrancado encontraréis todas las opciones en el menú "Tools" --> "Preferences".

Yo recomiendo desactivar las redes que no uséis, por cargar menos el sistema. Recordad que FileTP es para todo tipo de descargas directas, no la desactivéis si deseáis descargar archivos grandes usando mldonkey (por ejemplo, ISOs de Linux en conexiones limitadas).


Mldonkey conectado a través de Sancho descargando torrents
Mldonkey conectado a través de Sancho descargando torrents




Fuentes:
Última edición por Naguissa el 17 Ago 2018, 17:40, editado 1 vez en total.
Razón: typos
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 11. Tercer USB en Banana Pi M1 (uso del puerto USB OTG)

Mensaje sin leer por Naguissa »

11. Tercer USB en Banana Pi M1 (uso del puerto USB OTG)

Nuestra Banana Pi M1 tiene 3 puertos USB directos, sin hub ni compartir ancho de banda, pero uno de ellos es el puerto microUSB que hace la función de USB-OTG.

Si intentamos usar este puerto con un adaptador microUSB OTG a USB veremos que no pasa nada, que no funciona como debería.

Ésto es así debido a que el puerto viene configurado como OTG y no funciona, al menos no lo hace coo un USB Host estándard.

Para ello, podemos cambiar la configuración de nuestra placa para que lo use como USB Host.



Configuración

Como root, decompilamos el archivo de configuración dtb de nuestro dispositivo y luego lo editamos. Lo tendremos que hacer para la versión del kernel que usemos y se deberá actualizar con cada actualización de kernel/dtb:

Código: Seleccionar todo

cd /boot/dtb <versión>
dtc -I dtb sun7i-a20-bananapi.dtb  -O dts -o sun7i-a20-bananapi.dts
nano -w sun7i-a20-bananapi.dts

Buscamos la configuración del puerto, que está en otg, y la cambiamos a host.

Buscamos el siguiente bloque (podéis pulsar Buscar -Control + W- y buscar "otg" -con las comillas-):

Código: Seleccionar todo

                usb@01c13000 {
                        compatible = "allwinner,sun4i-a10-musb";
                        reg = <0x1c13000 0x400>;
                        clocks = <0x2 0x0>;
                        interrupts = <0x0 0x26 0x4>;
                        interrupt-names = "mc";
                        phys = <0x2f 0x0>;
                        phy-names = "usb";
                        extcon = <0x2f 0x0>;
                        allwinner,sram = <0x30 0x1>;
                        status = "okay";
                        dr_mode = "otg";
                        linux,phandle = <0x6f>;
                        phandle = <0x6f>;
                };

Y ponemos (el cambio está en la línea "dr_mode"):

Código: Seleccionar todo

                usb@01c13000 {
                        compatible = "allwinner,sun4i-a10-musb";
                        reg = <0x1c13000 0x400>;
                        clocks = <0x2 0x0>;
                        interrupts = <0x0 0x26 0x4>;
                        interrupt-names = "mc";
                        phys = <0x2f 0x0>;
                        phy-names = "usb";
                        extcon = <0x2f 0x0>;
                        allwinner,sram = <0x30 0x1>;
                        status = "okay";
                        dr_mode = "host";
                        linux,phandle = <0x6f>;
                        phandle = <0x6f>;
                };


Hacemos una copia de la configuración original, por si acaso, y recompilamos la configuración:

Código: Seleccionar todo

cp sun7i-a20-bananapi.dtb sun7i-a20-bananapi.dtb.old
dtc -I dts sun7i-a20-bananapi.dts -O dtb -o sun7i-a20-bananapi.dtb

Reiniciando el SoC podremos usar el puerto OTG como otro USB mas.



Fuentes:
angek
Mensajes: 1
Registrado: 01 Jun 2017, 23:47
Agradecido: 0
Agradecimiento recibido: 1 vez

Re: NAS casero, barato y bajo consumo con un SOC. Banana Pi M1

Mensaje sin leer por angek »

Me encanto este proyecto, ya he comprado una banana pi m1+ y espero poder montar mi nas casero, sera mi primera experiencia son ordenadres de una sola placa.. Muchas gracias por subir toda esta info didáctica
He mirado en aliexpres y hay un multiplicador de sata, se podria hacer el raid en sata no? seria mejor que usb... no lo se... solo opino
Saludos
Estos usuarios agradecieron al autor angek por el mensaje:
Naguissa
Valoración: 33%
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

Re: NAS casero, barato y bajo consumo con un SOC. Banana Pi M1

Mensaje sin leer por Naguissa »

Hola,

Gracias por el comentario.


Los multiplicadores SATA, sobretodo los baratos, tienden a calentarse y corromper ambos discos.

Además, de entrada no estaban soportados en las distribuciones de estas placas, aunque creo que ahora mismo ya sí.


Por ello es mucho mas seguro usar un adaptador USB - SATA, compatible con UAS si quieres mayor rendimiento.


Saludos


Fuentes:
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

Re: NAS casero, barato y bajo consumo con un SOC. Banana Pi M1

Mensaje sin leer por Naguissa »

Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

Re: NAS casero, barato y bajo consumo con un SOC. Banana Pi M1

Mensaje sin leer por Naguissa »

12. Servidor NFS


Servidor

El servidor debería ya estar instalado, pero por si acaso ejecutaremos como root:

Código: Seleccionar todo

apt-get install nfs-kernel-server nfs-common

Acto seguido añadimos las carpetas compartidas con sus usuarios y permisos. Para ello editamos el archivo '/etc/exports' (nano -w /etc/exports) y añadimos al final, adaptando a nuestras necesidades:

Código: Seleccionar todo

/media          192.168.1.0/24(rw,sync,nohide,all_squash,anonuid=1000,anongid=1000)
Las opciones son:
/media - Carpeta a compartir
192.168.1.0/24 - Hosts a los que compartir; el /24 final significa que comparte a cualquier máquina en la red 192.168.1.X
rw - Permite leer y escribir. Para solo lectura se puede usar la opción ro
sync - Aporta algo mas de seguridad a los datos a cambio de un pequeño menor rendimiento
nohide - Muestra también las unidades montadas que estén en cualquier subcarpeta de la carpeta compartida
all_squash,anonuid=1000,anongid=1000 - Hace que todos los usuarios sean identificados como un usuario concreto del NAS.

Para saber los números de la última opción podéis ejecutar el comando "id":

Código: Seleccionar todo

nas@nas:~$ id
uid=1000(nas) gid=1000(nas) grupos=1000(nas),20(dialout),27(sudo),29(audio),44(video),46(plugdev),108(netdev),112(bluetooth)
nas@nas:~$
Ahora iniciamos el servidor:

Código: Seleccionar todo

systemctl restart nfs-kernel-server

Y, cuando veamos que no hay problema, activamos el servidor en el arranque:

Código: Seleccionar todo

systemctl enable nfs-kernel-server



Cliente(s)



En los clientes será necesario instalar solo el nfs-common o equivalente. En equipos Debian esto ser haría como root:

Código: Seleccionar todo

apt-get install nfs-common
Para cargar las unidades definiremos las entradas en el archivo /etc/fstab (nano -w /etc/fstab):

Código: Seleccionar todo

## Cambiar 192.168.1.10 por la IP del NAS

# Se carga siempre al inicio; si falla no pasa nada
92.168.1.10:/media/RAID1n1			/mnt/NAS-RAID1n1	 nfs    defaults,user,hard,rw,nofail                        0   2

# Se define pero la cargaremos nosotros manualmente (opción noauto)
192.168.1.10:/					/mnt/NAS-ROOT	         nfs    defaults,user,noauto,hard,rw,nofail                        0   2

La próxima vez que reiniciemos nuestro PC se cargarán las unidades que hayamos configurado como automáticas. Además, en cualquier momento podremos cargar las unidades manuales (noauto).

Para poder usar las unidades no es necesario reiniciar, bastará con cargar las unidades (incluyendo las automátiicas) haciendo "mount <punto de montaje>".
Estos usuarios agradecieron al autor Naguissa por el mensaje:
Daniel
Valoración: 33%
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

13. Servidor SyncThing

Mensaje sin leer por Naguissa »

SyncThing es un servicio de sincronización descentralizada entre ordenadores; como un DropBox pero gratuito y sin servidor central, todos los ordenadores se sincronizan entre sí según se encuentren activos.


Para instalar SyncThing en nuestro NAS podemos hacer:

Código: Seleccionar todo

apt-get update
apt-get install syncthing

Código: Seleccionar todo

systemctl enable syncthing@nas.service
systemctl start syncthing@nas.service
systemctl stop syncthing@nas.service
nano -w /home/nas/.config/syncthing/config.xml

Eliminamos la sección:

Código: Seleccionar todo

<folder id="default" label="Default Folder" path="/home/nas/Sync/"
[...]
</folder>
Y, si queremos poder acceder a la configuración desde otro PC, cambiamos:

Código: Seleccionar todo

        <address>127.0.0.1:8384</address>
por:

Código: Seleccionar todo

        <address>:8384</address>

Para configurar las opciones y carpetas compartidas accederemos usando la IP del NAS y el puerto 8384:

En local: http://127.0.0.1:8384
Desde otro PC: http://<ip del nas>:8384



Ahora entraramos en esa configuración e iremos añadiendo los dispositivos y carpetas que deseemos sincronizar.




Para instalarlo en ordenadores Linux podemos bajarlo desde el repositorio y activarlo usando el mismo comando que en el NAS:

Código: Seleccionar todo

systemctl enable syncthing@<nuestro usuario>.service
systemctl start syncthing@<nuestro usuario>.service
Ahora entramos en la interfaz web de configuración y cambiamos lo que deseemos: http://127.0.0.1:8384


Para otros clientes, como Android, Windows, Mac, etc, mirad su página oficial.
Estos usuarios agradecieron al autor Naguissa por el mensaje:
Daniel
Valoración: 33%
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje