Rockpro64: Así es mi NAS

Después de tantos artículos y guías me he dado cuenta que quizás se haya perdido un poco la perspectiva de lo que realmente puedes llegar a tener con una simple placa arm. En el siguiente articulo pretendo reflejar lo que actualmente es mi NAS, una placa rockpro64 con 4GB de memoria RAM, una tarjeta eMMC de 16GB para el sistema operativo, dos discos duros mecánicos conectados a la placa y OpenMediaVault como sistema operativo.

Sistema Operativo: OpenMediaVault

Después de valorar mis necesidades y probar varias opciones, mi opción fue OpenMediaVault, ya que no requiere de grandes recursos para poder funcionar, estable, escalable mediante la instalación de plugins y un buen soporte.

La instalación la he realizado sobre la tarjeta eMMC de 16GB, para ello seguí el siguiente tutorial

https://forum.pine64.org/showthread.php?tid=4924

Plugins OpenMediaVault

Paso a describir os plugins que utilizo

openmediavault-flashmemory

Viene instalado por defecto, folder2ram administra el sistema de archivos temporales durante los reinicios, disminuye las escrituras en la tarjeta eMMC.

openmediavault-remotemount

Monta recursos compartidos por red como un sistema local. En mi caso, comparto un disco USB conectado al router, que suelo utilizar para almacenar las de descargas realizadas con transmission

https://elblogdelazaro.gitlab.io/post/2019-02-18-montar-sistema-de-archivos-remoto.html https://elblogdelazaro.gitlab.io/post/2018-05-31-openwrt-transmission.html

openmediavault-diskstats

Monitoriza los discos para ofrecernos estadísticas.

openmediavault-fail2ban

Fail2ban escanea los archivos de registro y prohíbe las IP que muestran signos maliciosos: demasiadas errores de contraseña, búsqueda de vulnerabilidades, etc.

Escribí un articulo sobre esto https://elblogdelazaro.gitlab.io/post/2017-10-05-fail2ban-raspberry.html

openmediavault-apttool

Encuentra, instala y elimina paquetes en repositorios apt. Exporta e importa lista de paquetes.

openmediavault-omvextrasorg

Permite habilitar múltiples repositorios alojados en omv-extras.org.

openmediavault-theme

Permite el cambio de tema para la GUI. Su instalación se hace mediante un paquete .deb https://github.com/virgil-av/openmediavault-theme

openmediavault-rsnapshot

Para realizar backups incrementales, de los dos discos que tengo instalados uno lo utilizo para almacenar datos y multimedia y el otro lo utilizo para almacenar los backups de los datos, que realizo con este plugin.

openmediavault-docker-ui

Plugin para poder ejecutar contenedores de docker, y como leerás mas tarde, nos va a permitir tener multitud de servicios de una forma rápida y sencilla.

Te dejo el enlace sobre su instalación https://elblogdelazaro.gitlab.io/post/2019-03-04-openmediavault%5Fdocker%5Fy%5Fcontenedores.html

Sistemas de Archivos

/dev/mmcblk1p1 ext4 utilizado para la instalacion de OMV dev/sda1 Data ext4 Almacenar datos y multimedia /dev/sdb1 Backups ext4 Almacenar copias de seguridad de /sda1 /srv/72e… wrt-usb3 cifs Disco USB conectado al router, para descargas

Punto de montaje remoto

Monto el disco USB del router como un sistema de ficheros local llamado wrt3200

Carpetas Compartidas

Creo las siguientes carpetas para ayudarme a organizarme

  • Backups: Hace referencia a una carpeta llamada Backups en /dev/sdb1, donde almaceno las copias de seguridad realizadas mediante el plugin rsnapshot

  • Datos: Hace referencia a una carpeta llamada Datos en /dev/sda1, qye mantengo sincronizado los datos de mi ordenador portátil mediante el contenedor de syncthing.

  • Hace referencia a una carpeta llamada Datos en /dev/sda1, que mantengo sincronizado los datos de mi ordenador portatil mediante qel contenedor de /syncthing

  • Descargas: Hace referencia a la carpeta Completados dentro del punto de montaje remoto wrt3200

  • Dockers: Hace referencia a la carpeta Docker dentro de dev/sda1, utilizado para guardar los datos de configuración de los /dockers que instalo.

  • Media: Hace referencia a la carpeta Media dentro de /dev/sda1, donde almaceno contenido multimedia, como fotografías, vídeos, películas series de tv, música, etc.

Backups

Para mis copias de seguridad utilizo el plugin rsnapshot, de forma que realizo copias incrementales de las carpetas compartidas Datos, Media (menos las series de tv y películas) y de los archivos de configuración de los contenedores instalados, carpeta Dockers

Dockers

Gracias a docker, tengo instalados los siguientes servicios

Jackett

Es un indexador de torrents en diferentes trackers, es utilizado por otros programas para buscar y descargar torrents

Enlace del contenedor: https://hub.docker.com/r/linuxserver/jackett

Medusa

Medusa es un programa que descarga tus series de TV favoritas, luego los procesa y almacena en tu biblioteca. Todo está totalmente automatizado. Lo podemos configurar junto a Jackett para que tan pronto como se publique un nuevo episodio empiece su descarga.

Enlace del contenedor: https://hub.docker.com/r/linuxserver/medusa

Lidarr

Al igual que Medusa pero aplicado a tu colección de musica

Enlace del contenedor: https://hub.docker.com/r/linuxserver/lidarr

Nextcloud

Tu propia nube privada al estilo dropbox, poco puedo decir que ya no sepas.

Enlace del contenedor: https://hub.docker.com/r/linuxserver/nextcloud

Mariadb

Base de datos utulizada por Nextcloud, tt-rss, etc.


user@rockpro64:~$ sudo docker exec -it mariadb /bin/bash
[sudo] password for user:
root@rockpro64:/#
root@rockpro64:/#
root@rockpro64:/# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 527
Server version: 10.3.15-MariaDB-1:10.3.15+maria~bionic mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| nextcloud          |
| performance_schema |
| ttrss              |
+--------------------+
5 rows in set (0.033 sec)

Enlace del contenedor: https://hub.docker.com/%5F/mariadb

Letsencrypt

Contenedor que nos permite gestionar (crear o renovar) los certificados proporcionados por Letsencrypt de forma automática, además lo podemos utilizar como proxy inverso para acceder a Nextcloud, Plex, Tiny Tiny RSS, etc.

Enlace del contenedor: https://hub.docker.com/r/linuxserver/letsencrypt

TT-RSS

Tiny Tiny RSS es un agregador de fuentes de noticias (RSS/Atom) de código abierto basado en web, diseñado para permitirle leer noticias desde cualquier ubicación, de tal modo que le parecerá estar utilizando lo más parecido a la aplicación de un escritorio real.(arch-wiki)

Enlace del contenedor: https://hub.docker.com/r/linuxserver/tt-rss

Syncthing

Syncthing es una aplicación cliente/servidor de sincronización de archivos de código abierto, lo utilizo para sincronizar los datos de mi ordenador portátil con el NAS.

Enlace del contenedor: https://hub.docker.com/r/linuxserver/syncthing

Duckdns

Duckdns es un servicio gratuito que apuntará un DNS (subdominios de duckdns.org) a una IP. El servicio es completamente gratuito y no requiere reactivación ni publicaciones en el foro para mantener su existencia.

El contenedor irá actualizando la dirección IP publica de mi router y la asociará al nombre de dominio de Duckdns elegido.

https://elblogdelazaro.gitlab.io/post/2019-04-19-openmediavault%5Fddns%5Fmediante%5Fdocker%5Fy%5Fduckdns.html

Enlace del contenedor: https://hub.docker.com/r/linuxserver/duckdns

Duplicati

Lo utilizo como tercera copia de seguridad cifrada de mis datos en nubes públicas, mando mis copias cifradas a Google Drive, Mega y hubiC.

Enlace del contenedor: https://hub.docker.com/r/linuxserver/duplicati

Bitwarden

Gestor de contraseñas OpenSource, como alternativa a Lastpass o 1Password almacena las claves en bases de datos cifradas con un algoritmo AES de 256 bits, hash salteado y PBKDF2 SHA-25. Tiene clientes para Android, iOS, Windows, Linux y extensiones para los principales navegadores Web.

Permite compartir parte de tus claves con otros usuarios autorizados y dados de alta en el servidor.

Enlace del contenedor: https://hub.docker.com/r/mprasil/bitwarden

Airsonic

Airsonic es un servidor multimedia, basado en la web, que proporciona acceso a tu música. Ideal para compartir tu música con amigos, o para escuchar tu propia música mientras trabaja. Puede transmitir a múltiples usuarios simultáneamente.

Enlace del contenedor: https://hub.docker.com/r/linuxserver/airsonic

Jellyfin

Fork de Emby, Jellyfin es un servidor multimedia gratuito que te permite controlar y transmitir tus medios. Es una alternativa para Emby y Plex, que es software propietario. No hay cadenas adjuntas, ni licencias, ni funciones premium, ni agendas ocultas.

Enlace del contenedor: https://hub.docker.com/r/jellyfin/jellyfin

Watchtower

Actualiza de forma automática las imágenes de los contenedores

Escribí una articulo sobre su instalación y funcionamiento https://elblogdelazaro.gitlab.io/post/2018-09-12-actualiza-automaticamente-tus-contenedores-docker.html

Enlace del contenedor: https://hub.docker.com/r/containrrr/watchtower

Tareas Programadas

Utilizo las tareas programadas para parar los contenedores de docker por la noche y arrancarlos por la mañana, limpiar las imágenes antiguas de los dockers actualizados, programar la publicación de artículos, etc.

Recursos utilizados

Cuando me planteé sustituir la Raspberry Pi por otra placa mas potente, era consciente que iba a necesitar bastante memoria RAM por la cantidad de dockers que iba utilizar y con 2GB me iba a ir algo justo, ahora mismo puedes ver como se mantiene “ocupada”” la placa

Otros

También he tenido OpenMediaVault como un servidor/cliente de OpenVPN, pero al final me decidí por utilizar Wireguard en el lado del router

Como has podido leer, con un poco de tiempo y ganas puedes tener un NAS con multitud de servicios que poco tiene que envidiar a otros de marca, y por mucho menos dinero.