Mostrando entradas con la etiqueta raspberry. Mostrar todas las entradas
Mostrando entradas con la etiqueta raspberry. Mostrar todas las entradas

Home Assistant servidor local domótico

Logo de Home Assistant
Home Assistant es un servidor basado en Linux cuya distribución y utilización es gratuita, nos permite controlar nuestros dispositivos domoticos sin interacción de terceros. Utilizar la nube para interactuar con la domótica de nuestro hogar es ceder nuestros datos a empresas, las cuales no podemos controlar y si estos servicios se caen o desaparecen, nuestros dispositivos LoT perderán su conectividad con nosotros. También nos permite la automatización de nuestro hogar, e incluso si disponemos de de productos de distintas marcas.

Home Assistant panel de control del hogar


Home Assistant es un software basado en Buildroot para la automatización del hogar diseñado para ser un sistema de control central para dispositivos domésticos inteligentes, con un enfoque en el control local y la privacidad. Se puede acceder a él a través de una interfaz web, o, mediante el uso de aplicaciones basadas en Android e iOS,

Despierta tu hogar

Domótica de código abierto que prioriza el control local y la privacidad. Desarrollado por una comunidad mundial de manitas y entusiastas del bricolaje. Perfecto para ejecutarse en una Raspberry Pi o en un servidor local.

SU SISTEMA DEBE EJECUTARSE EN CASA, NO EN LA NUBE.

La nube es algo mágico. En algún lugar del mundo hay computadoras que recopilan los datos que genera su casa, los prueban con sus reglas de automatización y envían comandos cuando es necesario. La nube recibirá actualizaciones y mejorará con el tiempo para que pueda brindarle un mejor servicio. Hasta que deja de serlo. Hay muchas razones por las que su hogar puede perder su conexión a la nube. Internet puede dejar de funcionar, es posible que una actualización haya salido mal o que los servidores que ejecutan la nube se bloqueen.

Cuando esto sucede, su casa debería poder seguir funcionando. La nube debe tratarse como una extensión de su hogar inteligente en lugar de ejecutarla.

Home Assistant mantiene la integración con miles de marcas que fabrican y/o distribuyen productos domoticos, y su comunidad sigue buscando nuevas interacciones.


Home Assistant integración

Home Assistant control camaras de seguridad


Este servidor no necesita grandes recursos y puede ser instalado en mini-ordenadores, ser virtualizado, o ser instalado en un contenedor como por ejemplo Proxmox:

Home Assistant también nos proporciona un mini ordenador con su sistema ya pre instalado, para que nos resulte más fácil tener nuestro hogar domotico controlado en nuestro hogar. Home Assistant Green su precio actual es de 99$ y por el momento no tiene distribuidor en España.

Home Assistant Green

  • Procesador ARM de cuatro núcleos a 1,8 GHz
  • RAM 4 GB
  • Almacenamiento eMMC 32 GB
  • Dos puertos USB 2.0
  • Un puerto HDMI
  • Un Puerto Gigabit Ethernet
El acceso a nuestro servidor local se hace mediante un interfaz web mediante la dirección:

http://<dirección IP servidor Home Assistant> :8123/
Home Assistant iniciando en VirtualBox

Home Assistant acceso desde el navegador


Podremos configurar el servidor local domótico desde el navegador o desde nuestros dispositivos móviles mediante la aplicación:

Home Assistant aplicación en Google Play

Home Assistant aplicación en App Store


Armbian Linux para placas de desarrollo ARM

Armbian es un sistema operativo ligero Linux basado en Debian y Ubuntu diseñado específicamente para placas de desarrollo ARM. Lo que implica que es un sistema operativo ligero para ordenadores de bajo recursos.


Captura de pantalla de escritorio de sistema operativo Armbian


Las placas ARM (Ordenador con un Conjunto Reducido de Instrucciones) o de placa única es una computadora en la que todo el hardware, incluidas las unidades de memoria y procesamiento, se sueldan en una sola placa de circuito impreso (PCB). Requieren un desarrollo menor y reducir los costes de producción. Este tipo de desarrollo permite una democratizan de las nuevas tecnologías, pequeños proyectos de computación, servidores caseros, sistemas loT, sistemas multimedia, centros de juegos, retor, etc....

  • ARM1: El primer procesador ARM, sin implementación específica.
  • ARM2: Introdujo la instrucción de multiplicación (MUL) y el coprocesador FPA10 para punto flotante.
  • ARM3: El primero con caché de memoria integrada.
  • ARM7TDMI: Introdujo la arquitectura Thumb y eliminó la dirección de 26 bits.
  • ARM926EJ-S: Incluyó Thumb, Jazelle DBX y mejoras en DSP.
  • ARM1026EJ-S: También incorporó Thumb, Jazelle DBX y mejoras en DSP, además de soporte para punto flotante (VFP).
  • Raspberry Pi 4: Con un procesador Broadcom BCM2711 basado en ARM Cortex-A72.
  • NVIDIA Jetson Nano: Equipado con un procesador ARM Cortex-A57.
  • Rock Pi 4: Utiliza un procesador Rockchip RK3399 basado en ARM Cortex-A72.
  • Orange Pi 4: Con un procesador Rockchip RK3399 basado en ARM Cortex-A72.
  • NanoPi M4V2: Utiliza un procesador Rockchip RK3399 basado en ARM Cortex-A72.

Placa Rock Pi4

Armbian ofrece una solución versátil y eficiente para proyectos de hardware y software en estas plataformas. A continuación, te presento una lista de algunas placas que son compatibles con Armbian:

  • Banana Pi
  • Banana Pi M2
  • Banana Pi M2+
  • Banana Pi Pro
  • Beelink X2
  • Clearfog base
  • Clearfog pro
  • Cubieboard
  • Cubieboard2
  • Cubietruck
  • Outernet Dreamcatcher
  • Cubox-i
  • Lemaker Guitar
  • Libre Computer Project AML-S905X-CC (Le Potato)
  • Libre Computer Project ALL-H3-CC (Tritium)
  • Lamobo R1
  • Olimex Lime
  • Olimex Lime 2
  • Olimex Lime A10
  • Olimex Lime A33
  • Olimex Micro
  • Orange Pi 2
  • Orange Pi 3
  • Orange Pi Lite
  • Orange Pi One
  • Orange Pi PC
  • Orange Pi PC+
  • Orange Pi PC2
  • Orange Pi R1
  • Orange Pi Win
  • Orange Pi Zero
  • Orange Pi Zero 2+ H3
  • Orange Pi Zero 2+ H5
  • Orange Pi Zero+
  • Orange Pi+
  • Orange Pi+ 2
  • Orange Pi+ 2e (Plus2e)
  • Orange Pi 2G-IoT
  • MQmaker Miqi
  • Friendlyarm NanoPC T4
  • Friendlyarm Nanopi Air
  • Friendlyarm Nanopi M1
  • Friendlyarm Nanopi M1+
  • Friendlyarm Nanopi Neo
  • Friendlyarm Nanopi Neo2
  • Odroid C1
  • Odroid C2
  • Odroid C4
  • Odroid HC4
  • Odroid XU4
  • Odroid N2/N2+
  • Xunlong Orangepi 2
  • Xunlong Orangepi lite
  • Xunlong Orangepi one
  • Xunlong Orangepi pc
  • Xunlong Orangepi pc2
  • Xunlong Orangepi pc+
  • Xunlong Orangepi +
  • Xunlong Orangepi +2e
  • Xunlong Orangepi prime
  • Xunlong Orangepi win
  • Xunlong Orangepi zero
  • Xunlong Orangepi zero +2 h3
  • Xunlong Orangepi zero +2 h5
  • LinkSprite Pcduino 2
  • LinkSprite Pcduino 3
  • LinkSprite Pcduino 3 nano
  • Pine64 (a.k.a. Pine A64)
  • Pine64so
  • Pinebook64
  • Rock Pi 4
  • RockPro64
  • Roseapple Pi
  • Asus Tinkerboard
  • Udoo
  • Udoo Neo
  • Helios4
  • Helios64
A la hora de escribir esta publicación sobre Armbian se encuentra en la versión Armbian 23.11 Topi.

Añadir botón apagado encendido Raspberry

Raspberry es un pequeño ordenador, de bajo coste que podemos utilizar como PC  de sobremesa o como servidor, sin necesidad de conectarle ningún periférico (pantalla, teclado, ratón). En este último caso, la labor de apagado solo es posible desconectando la corriente, con el consabido riesgo de pérdida de datos, y creamos archivos corruptos que impidan y/o dificulten su posterior encendido. También es posible que dañemos la tarjeta SD y debemos sustituirla o formatearla y volver a volcar el sistema operativos e instalar servicios que teníamos instalados y configurarlos otra vez.

Una forma de evitar este tedioso proceso es incluir un botón de apagado, que también nos será válido para volver a encenderlo si lo dejamos en stand-by.


Para ello utilizaremos el interfaz I/O del que dispone la Raspberry



El interfaz GPIO dispone de unos terminal macho numerados. Disponiendo las Raspberry en esta posición su disposición sera de izquierda a derecha y de arriba abajo empezando del 1 al 40


En nuestro caso utilizaremos los pines 4 y 6 donde colocaremos nuestro botón para realizar el apagado de nuestro pequeño ordenador. 

Realizaremos un pequeño bricolaje. La manera más sencilla sería con la utilización de dos cables que en una de sus puntas se encuentran una punteras hembras aisladas y en la otra punta de los cables soldar un pequeño pulsador. También podremos utilizar una placa de pruebas para, más adelante poder ampliar nuestros proyectos.


Dependendiendo del sistema operativo que utilicemos, es posible que tengamos que realizar la instalación de ciertas librerías para que los scripts de Python funcionen correctamente

sudo apt-get install python-is-python3

sudo apt-get -y install python3-rpi.gpio

Los siguientes scripts que manejan los eventos provocados por la pulsación del botón colocado entre el pin 5 y 6 han sido copiados de la página 

Soloelectronicos.com

 Crearemos un archivo ejecutable para Python que llamaremos listen-for-shutdown.py

sudo nano listen-for-shutdown.py

Copiaremos el siguiente script el archivo que hemos creado y guardaremos su contenido


#!/usr/bin/env python


import RPi.GPIO as GPIO

import subprocess



GPIO.setmode(GPIO.BCM)

GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)

GPIO.wait_for_edge(3, GPIO.FALLING)


subprocess.call(['shutdown', '-h', 'now'], shell=False)

 

Seguidamente moveremos el archivo a la carpeta /usr/local/bin/

sudo mv listen-for-shutdown.py /usr/local/bin/

Y le daremos atributos de ejecución

sudo chmod +x /usr/local/bin/listen-for-shutdown.py

Si tenemos nuestra Raspberry en stand-by, bien por que la hemos apagado desde la línea de comandos o desde nuestro botón de apagado. También es posible encenderlo desde el mismo botón, para ello crearemos un nuevo archivo. 

sudo nano listen-for-shutdown.sh

Y copiaremos y guardaremos el siguiente código:


 #! /bin/sh


### BEGIN INIT INFO

# Provides:          listen-for-shutdown.py

# Required-Start:    $remote_fs $syslog

# Required-Stop:     $remote_fs $syslog

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

### END INIT INFO


# If you want a command to always run, put it here


# Carry out specific functions when asked to by the system

case "$1" in

  start)

    echo "Starting listen-for-shutdown.py"

    /usr/local/bin/listen-for-shutdown.py &

    ;;

  stop)

    echo "Stopping listen-for-shutdown.py"

    pkill -f /usr/local/bin/listen-for-shutdown.py

    ;;

  *)

    echo "Usage: /etc/init.d/listen-for-shutdown.sh {start|stop}"

    exit 1

    ;;

esac


exit 0

 

Una vez guardado moveremos el archivo a la carpeta  /etc/init.d/

sudo mv listen-for-shutdown.sh /etc/init.d/

Y le concederemos privilegios de ejecución:

 sudo chmod +x /etc/init.d/listen-for-shutdown.sh

Ahora registramos la secuencia de comandos para ejecutar en el arranque y le pasaremos el parámetros de arranque con los dos siguientes comandos.

sudo update-rc.d listen-for-shutdown.sh defaults

sudo /etc/init.d/listen-for-shutdown.sh start

En mi caso tenia instalado Ubuntu Server como sistema operativo. Y es posible que al ejecutar el script te aparezcan uno o varios mensajes de error. Si es asi te dejo los articulos que publique para solucionarlos, y que vuestro botón de apagado funcione correctamente.

Mensaje de error /usr/bin/env: ‘python’: No such file or directory

Mensaje de error import RPi.GPIO as GPIO ModuleNotFoundError: No module named 'RPi'


Mensaje de error import RPi.GPIO as GPIO ModuleNotFoundError: No module named 'RPi'

Continuando con la configuración para que funcione un botón de apagado para la Raspberry Pi2 conectado al al GPIO.

Al lanzar el ejecutable escrito en Python 3 se detiene en la linea en la que importa la RPi de la GPIO, el módulo no ha sido instalado.

import RPi.GPIO as GPIO ModuleNotFoundError: No module named 'RPi'

Para solucionarlo hay que instalar, o reinstalar el módulo python3-rpi.gpio

 sudo apt-get -y install python3-rpi.gpio

Mensaje de error /usr/bin/env: ‘python’: No such file or directory

Al intentar implementar un botón de apagado para la Raspberry Pi2 en el que tengo instalado Ubuntu Server, al lanzar el servicio de un ejecutable escrito para Python 3, me encontré con el siguiente error.

/usr/bin/env: ‘python’: No such file or directory

La solución encontrada ha sido realizando la instalación del paquete  python-is-python3

sudo apt-get install python-is-python3

 

Mensaje de error sudo: unable to resolve host ubuntu: Name or service not known

 En mi caso me ocurrió en una Raspberry en la que había instalado Ubuntu Server. Pero puede que les ocurra al invocar el comando sudo. No es problematico, por que el comando era ejecutado con privilegios de administrador, pero es molesto que cada vez realices una tarea, salga un mensaje de error



sudo: unable to resolve host ubuntu: Name or service not known

Para resolverlo basta con cerciorarse el nombre que le hemos dado a la máquina

 hostname

Y añadir una línea que falta en el archivo  /etc/hosts

sudo nano /etc/hosts

 


Justo debajo de  127.0.0.1 localhost añadiremos una nueva línea similar a la anterior pero con el nombre de nuestro hosts

127.0.0.1 nombre_del_hosts


 

 

 


Los directorios de Linux II

Continuando con el post Los directorios de Linux. Otro directorio de utilidad en Ubuntu y derivados, si queremos que nuestros script, sean ejecutados desde cualquier directorio, es:

~/.local/bin/

Aquellos ejecutables o archivos bash que se encuentren en este directorio, podrán ser invocados desde cualquier directorio en que el que te encuentres en ese momento en el terminal.

Si acaso no estuviera habilitado, por ejemplo en una Raspberry, utilizaremos el siguiente script para habilitar esta función:

 export PATH="$HOME/.local/bin:$PATH"

Usuarios y contraseñas predeterminados de distribuciones para Raspberry Pi

Son varios los sistemas operativos disponibles para Raspberry y con Raspberry Pi Imager es muy fácil volcar en nuestra tarjeta SD aquel que sea el que mejor se adapte a nuestro pequeña computadora

En mi caso, he cambiado Raspberry OS por Ubuntu Server. Como no se realiza una instalación con un lanzador no es posible crear un usuario y contraseña, sino que deberemos acceder con las credenciales predeterminadas, y una vez accedemos cambiar el password para mayor seguridad.

Aquí os dejo una lista de los sistemas operativos soportados por Raspberry Pi y sus usuarios y contraseñas predeterminados para que puedan realizar el primer login sin problemas.

Raspberry Pi Distribuciones
Usuario
Contraseña
Raspberry Pi OS
 pi
raspberry
DietPi
root 
dietpi
 Lakka Linux
 root
root
Kali Linux
root
toor
OpenELEC
root
openelec
Arch Linux ARM
root
root
Debian
pi
raspberry
LibreELEC
root
libreelec
OSMC
osmc
osmc
QtonPi
root
rootme
Ubuntu Server
ubuntu
ubuntu
ROKOS
rokos
rokos
Retropie
pi
raspberry
Recalbox
root
recalboxroot
Slackware
root
linux
Devuan
anon
voidlinux
MOEBIUS
root
moebius

Cannot open access to console, the root account is locked.

Qué hacer si al arrancar nuestra RaspBerry no nos permite abrir la consola por que la cuenta del root esta bloqueada:

Cannot open access to console, the root account is locked.
Cannot open access to console, the root account is locked.

En mi caso estaba añadiendo Montar disco duro usb en linux
Una vez editado el archivo  /etc/fstab reinicie la el servidor y ya no fue posible iniciar sesión a través de ssh. Al conectar la pantalla y el teclado a la RaspBerry me aparecia el mensaje: Cannot open access to console, the root account is locked.

La solución es muy simple: 
  • Extraemos la tarjeta sd 
  • y la introducimos en el lector de otro ordenador, 
  • accedemos a la tarjeta en la partición /boot. 
  • Una vez dentro buscamos la carpeta y el archivo /etc/fstab 
  • como root, o permisos de administrador y borraremos y/o editamos la linea errónea. 
Si usamos un navegador de archivos, deberemos abrir la carpeta en modo root
Si usamos un navegador de archivos, deberemos abrir la carpeta en modo root


Una vez guardado los cambios volveremos a colocar la tarjeta SD en nuestro pequeño servidor y este arrancara sin problemas.

 

Instalar servidor MiniDLNA

Vamos a instalar un servidor DLNA en, por ejemplo Raspberry, para utilizarla de servidor multimedia para poder ver nuestros archivos en nuestra SmartTV. La tecnología DLNA es admitida por la mayoría de dispositivos multimedia actuales, a diferencia de utilizar un servidor PLEX en la que tenemos que instalar la APP en nuestra SmartTV y registrándose en su plataforma.

Es un servidor muy sobrio y de un consumo de recursos muy reducido, el aspecto es el de un explorador de archivos, y su reproductor multimedia muy simple. Pero cumple su función de servidor de videos, música e imágenes en nuestra red local.

También podríamos instalar nuestro servidor DLNA en un viejo ordenador en el que hubiéramos instalado un Linux con alguna de las múltiples distribuciones basadas en Debian.

Accedemos a nuestra Raspberry o nuestro servidor casero a traves de SSH e instalamos con privilegios de root la aplicación MiniDLNA también conocida como ReadyMedia

sudo apt-get install minidlna

 Iniciaremos el servicio:

sudo service minidlna start

Y habilitaremos minidlna para que el servicio sea levantado cuando iniciemos nuestro servidor local 

sudo service minidlna enable

Deberemos acceder al archivo de configuración para indicarle, entre otras cosas, la ruta donde se encuentran los archivos que queremos mostrar en nuestra LAN. Estos se pueden encontrar en un disco duro externo que habremos conectado a través del puerto USB de nuestro servidor doméstico.

sudo nano /etc/minidlna.conf

Accederemos a un archivo de texto plano donde cambiaremos

  • Ubicación de los archivos de video
media_dir=V,/media/downloads/videos
  • Ubicación de los archivos de música: 
media_dir=A,/media/downloads/musica
  • Ubicación de los archivos de imagen
media_dir=P,/media/downloads/fotos

  • Ubicación de la base de datos que almacenará los archivos que se mostraran
db_dir=/var/cache/minidlna

  •  Si queréis almacenar logs de lo que pasa en el servidor tienen que descomentar esta línea. Los logs los podréis encontrar en la ubicación.
log_dir=/var/log

  •  Puerto en el que escuchara el pequeño servidor web, que nos mostrara una pequeña información de nuestro servidor. No podremos realizar ninguna acción, como por ejemplo la de configuración
port=8200


MiniDLNA status

  •  Nombre con el que se anunciara en nuestros clientes multimedia
friendly_name=Pi

  • Seleccionamos la opción yes. De este modo, cuando se borre o copie contenido del servidor se actualizará la información de la base de datos

inotify=yes

  •  Definimos los nombres que deben tener las caratulas de un audio o vídeo. Si queremos definir una caratula para una película podemos hacerlo guardando una imagen con el nombre cover.jpg o Cover.jpg en la carpeta que contiene la película. El tamaño recomendado es de 160×160 pixeles
album_art_names=cover.jpg/cover.jpg

  • En esta linea configuramos el intervalo de segundos que nuestro servidor anunciara su presencia en la red. Un buen intervalo serian cada 60 segundos
notify_interval=60

Una vez modificado el archivo a nuestro gusto, lo guardaremos y reiniciaremos el demonio para que la nueva configuración tenga efecto:

sudo service minidlna restart

MiniDLNA usa la propiedad del Kernel inotify para detectar las modificaciones en cada una de las carpetas que almacena contenido. Al detectarse una modificación se actualiza el contenido de la base de datos /var/cache/minidlna/files.db.


Para que inotify pueda monitorizar las modificaciones tendremos que cambiar sus límites. Para fijar un nuevo límite ejecutaremos el siguiente comando:

sudo echo 65538 > /proc/sys/fs/inotify/max_user_watches 

sudo service minidlna restart

Si por alguna razón deseamos reconstruir la base de datos:

sudo service minidlna force-reload

Y listo ya tendríamos un servidor multimedia en nuestra red local y podríamos ver nuestros videos en nuestro:

  • SmartTV
Botón Source, Entrada externa o Fuente

 


  • En otros dispositivos podemos utilizar el reproductor multimedia VLC 
Accederemos a Plug’n’Play Universal y esperamos a que VLC encuentre nuestro servidor miniDLNA y nos permita reproducir su contenido.

Actualizar Pi-Hole

En una entrada anterior ya recomendamos la utilización de Pi-Hole para realizar un bloqueo por denegación de DNS de direcciones maliciosas o la publicidad de las páginas que visitamos o de los equipos que queremos monitorizar.
Para actualizarlo, accederemos a través de SSH al terminal donde tendremos corriendo Pi-hole y ejecutaremos la instrucción:

pihole -up 1

Y ya está, ha sido sencillo. 

  [i] Checking for updates...

  [i] Pi-hole Core:     update available

  [i] Web Interface:    update available

  [i] FTL:              update available


  [i] Pi-hole core files out of date, updating local repo.

  [✓] Check for existing repository in /etc/.pihole

  [i] Update repo in /etc/.pihole...HEAD is now at cbc3fbd Merge pull request #3989 from pi-hole/release/v5.2.3

  [✓] Update repo in /etc/.pihole


  [i] If you had made any changes in '/etc/.pihole/', they have been stashed using 'git stash'


  [i] Pi-hole Web Admin files out of date, updating local repo.

  [✓] Check for existing repository in /var/www/html/admin

  [i] Update repo in /var/www/html/admin...HEAD is now at 3ff33a3 Merge pull request #1704 from pi-hole/release/v5.3

  [✓] Update repo in /var/www/html/admin


  [i] If you had made any changes in '/var/www/html/admin/', they have been stashed using 'git stash'


  [i] FTL out of date, it will be updated by the installer.


  [✓] Root user check


        .;;,.

        .ccccc:,.

         :cccclll:.      ..,,

          :ccccclll.   ;ooodc

           'ccll:;ll .oooodc

             .;cll.;;looo:.

                 .. ','.

                .',,,,,,'.

              .',,,,,,,,,,.

            .',,,,,,,,,,,,....

          ....''',,,,,,,'.......

        .........  ....  .........

        ..........      ..........

        ..........      ..........

        .........  ....  .........

          ........,,,,,,,'......

            ....',,,,,,,,,,,,.

               .',,,,,,,,,'.

                .',,,,,,'.

                  ..'''.


  [✓] Update local cache of available packages

  [i] Existing PHP installation detected : PHP version 7.4.3

  [i] Performing unattended setup, no whiptail dialogs will be displayed


  [✓] Checking apt-get for upgraded packages... 19 updates available

  [i] It is recommended to update your OS after installing the Pi-hole!


  [i] Installer Dependency checks...

  [✓] Checking for dhcpcd5

  [✓] Checking for git

  [✓] Checking for iproute2

  [✓] Checking for whiptail

  [✓] Checking for dnsutils


  [✓] Supported OS detected

  [i] SELinux not detected

  [i] Performing reconfiguration, skipping download of local repos

  [✓] Resetting repository within /etc/.pihole...

  [✓] Resetting repository within /var/www/html/admin...

  [i] Main Dependency checks...

  [✓] Checking for cron

  [✓] Checking for curl

  [✓] Checking for iputils-ping

  [✓] Checking for lsof

  [✓] Checking for netcat

  [✓] Checking for psmisc

  [✓] Checking for sudo

  [✓] Checking for unzip

  [✓] Checking for wget

  [✓] Checking for idn2

  [✓] Checking for sqlite3

  [✓] Checking for libcap2-bin

  [✓] Checking for dns-root-data

  [✓] Checking for libcap2

  [✓] Checking for lighttpd

  [✓] Checking for php7.4-common

  [✓] Checking for php7.4-cgi

  [✓] Checking for php7.4-sqlite3

  [✓] Checking for php7.4-xml

  [✓] Checking for php7.4-json

  [✓] Checking for php7.4-intl


  [✓] Enabling lighttpd service to start on reboot...

  [✓] Checking for user 'pihole'


  [i] FTL Checks...


  [✓] Detected x86_64 processor

  [i] Checking for existing FTL binary...

  [✓] Downloading and Installing FTL

  [✓] Installing scripts from /etc/.pihole


  [i] Installing configs from /etc/.pihole...

  [i] Existing dnsmasq.conf found... it is not a Pi-hole file, leaving alone!

  [✓] Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf


  [i] Installing blocking page...

  [✓] Creating directory for blocking page, and copying files

  [i] Backing up index.lighttpd.html

      No default index.lighttpd.html file found... not backing up


  [✓] Installing sudoer file


  [✓] Installing latest Cron script


  [✓] Installing latest logrotate script

  [i] Backing up /etc/dnsmasq.conf to /etc/dnsmasq.conf.old

  [✓] man pages installed and database updated

  [i] Testing if systemd-resolved is enabled

  [i] Systemd-resolved does not need to be restarted

  [✓] Restarting lighttpd service...

  [✓] Enabling lighttpd service to start on reboot...

  [i] Restarting services...

  [✓] Enabling pihole-FTL service to start on reboot...

  [✓] Restarting pihole-FTL service...

  [✓] Deleting existing list cache

  [i] Neutrino emissions detected...

  [✓] Pulling blocklist source list into range


  [✓] Preparing new gravity database

  [i] Using libz compression


  [i] Target: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

  [✓] Status: Retrieval successful

  [i] Received 58568 domains


  [i] Target: https://mirror1.malwaredomains.com/files/justdomains

  [✗] Status: Not found

  [✗] List download failed: no cached list available


  [i] Target: https://www.sunshine.it/blacklist.txt

  [✓] Status: Retrieval successful

  [i] Received 82108 domains


  [✓] Storing downloaded domains in new gravity database

  [✓] Building tree

  [✓] Swapping databases

  [i] Number of gravity domains: 140676 (131363 unique domains)

  [i] Number of exact blacklisted domains: 6

  [i] Number of regex blacklist filters: 0

  [i] Number of exact whitelisted domains: 16

  [i] Number of regex whitelist filters: 1

  [✓] Flushing DNS cache

  [✓] Cleaning up stray matter


  [✓] DNS service is listening

     [✓] UDP (IPv4)

     [✓] TCP (IPv4)

     [✓] UDP (IPv6)

     [✓] TCP (IPv6)


  [✓] Pi-hole blocking is enabled


  [i] The install log is located at: /etc/pihole/install.log

Update Complete! 


  Current Pi-hole version is v5.2.3.

  Current AdminLTE version is v5.3.

  Current FTL version is v5.4.

No tiene suficiente espacio libre en /var/cache/apt/archives/

 No tiene suficiente espacio libre en /var/cache/apt/archives/


sudo du -sh /var/cache/apt/archives

Quedarse sin espacio no es lo más habitual si utilizas grandes computadoras. Pero es problema muy común en ordenadores antiguos, o como es el caso en una Raspberry a la hora de actualizar el sistema operativo.

Primero vamos a averiguar que cantidad de memoria está ocupando los archivos en la caché. Utilizaremos el comando du (Uso de Disco) con el argumento -sh

  • -s, pantalla Resumir sólo un total para cada argumento.
  • -h, tamaños de impresión. Formato legible por el hombre (por ejemplo, 1K 234M 2G)

sudo du -sh /var/cache/apt/archives


sudo apt clean

En mi caso el espacio ocupado por la caché de los repositorios es de 85Mb. Y después de utilizar el comando apt clean reducimos al tamaño de una carpeta vacía.
sudo apt clean

sudo apt-get clean

 

 




Conectar a servidor base de datos MariaDB

Puede ser el caso que además de gestionar una base de datos SQL en local, necesitamos gestionarla en remoto. En la mayoría de los servidores de hospedaje web, no nos permiten conectarnos a la servidor de base de datos en remoto, tenemos que hacerlo en local. Una de las herramientas más utilizadas es PhpMyAdmin. Este caso en concreto he instalado un servidor de base de datos MariaDB Server en una Raspberry. Tengo muy oxidado el lenguaje SQL como para acceder al servidor a través de SSL y realizar todas las tareas de instalación de rablas y mantenimiento desde el cliente de MariaDB. Quiero gestionarla en un entorno más amigable, pero no quiero instalar a mayores un servidor Apache con PHP para poder utilizar PhpMyAdmin.

Logo MariaDBMariaDB  es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius —fundador de MySQL—, la fundación MariaDB y la comunidad de desarrolladores de software libre.1​ Introduce dos motores de almacenamiento nuevos, uno llamado Aria —que reemplaza a MyISAM— y otro llamado XtraDB —en sustitución de InnoDB—. Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, API y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.
Aunque el tutorial es para MariaDB, este puede ser extensible si así fuera un servidor de MySQL.

De forma predeterminada y por seguridad no permiten el acceso remoto, solo se permite acceso atraves de localhost.

Una vez instalada el servidor y el cliente en nuestra distribución. Aseguramos la instalación lanzando el comando:

sudo mysql_secure_installation 

Enter current password for root (enter for none): Pulsa enter
 Introduzca la contraseña actual para root (ingrese para none): Pulse Enter
 Set root password? [Y/n]: Y
 ¿Establecer contraseña del root? [Y/n]: Y
 New password: Enter password
 Nueva contraseña: Introduzca contraseña
 Re-enter new password: Repeat password
 Reescribir nueva contraseña: Repetir contraseña
 Remove anonymous users? [Y/n]: Y
¿ Borrar usuarios anónimos? [Y/n]: Y
 Disallow root login remotely? [Y/n]: Y
¿No permitir el acceso al root desde remoto? [Y/n]: Y
 Remove test database and access to it? [Y/n]:  Y
 ¿Borrar Bases de datos Test y su acceso? [Y/n]: Y
 Reload privilege tables now? [Y/n]:  Y
 ¿Recargar privilegios a las tablas ahora? [Y/n]: Y

No vamos a permitir al root acceder desde remoto, no es considerado de una buena praxis de seguridad que el administrador se pueda conectar en remoto. Por el contrario vamos a crear un usuario nuevo y le vamos a dar privilegios de acceso desde remoto. En este caso indicaremos que el usuario se puede conectar desde cualquier equipo de nuestra LAN. Con 192.168.100 indicamos que subred se puede conectar usando el carácter % como comodín para indicarle que cualquier equipo de esta. También podríamos limitar aun más indicando la dirección ip del equipo desde el que únicamente puede acceder en remoto. Creando un entorno aun más seguro

CREATE USER 'nuevo usuario'@'192.168.100.%';
 
GRANT ALL PRIVILEGES ON *.* TO 'nuevo usuario'@'192.168.100.%' IDENTIFIED BY 'nueva contraseña' WITH GRANT OPTION;

Seguidamente configuraremos de forma manual, no solo el acceso en local, si no el acceso en remoto.
Deberemos localizar los archivos de configuración de MySQL o de MariaDB.
  • /etc/my.cnf                         
  • $MYSQL_HOME/my.cnf
  • /etc/mysql/my.cnf                      
  • SYSCONFDIR/my.cnf                     
  • DATADIR\my.ini                           Windows
Editando el archivo de configuración /etc/mysql/my.cnf

sudo nano /etc/mysql/my.cnf
 

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

Nos indica los directorios donde se encuetra el archivo que estamos buscando para editarlo. 50-server.cnf

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Buscaremos la sección [mysqld]  donde editaremos los valores que nos permitan conexiones externas. Este es un ejemplo real de configuración que me ha permitido conectarme al servidor desde otro equipo.

[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0

.......................................................

 # * Security Features
#
# Read the manual, too, if you want chroot!
#chroot = /var/lib/mysql/
#
# For generating SSL certificates you can use for example the GUI tool "tinyca".
#
#ssl-ca = /etc/mysql/cacert.pem
#ssl-cert = /etc/mysql/server-cert.pem
#ssl-key = /etc/mysql/server-key.pem
#
# Accept only connections using the latest and most secure TLS protocol version.
# ..when MariaDB is compiled with OpenSSL:
ssl-cipher = TLSv1.2
# ..when MariaDB is compiled with YaSSL (default in Debian):
#ssl = on

Te explico de forma más detallada las lineas a editar para un correcto funcionamiento. 

  •  port                    = 3306 Es el puerto por defecto, no es necesario cambiarlo, pero si fuera necesario podríamos especificar otro puerto de accesos.
  • #skip-external-locking Comentamos esta linea para permitir que el servidor sea accesible desde el exterior. Comentamos añadiendo el carácter #
  • #bind-address            = 127.0.0.1 Tambien aañadimso el caracter # para comentar esta linea.
  • bind-address            = 0.0.0.0 Añadiremos una linea con los parametros indicados.
  • ssl-cipher = TLSv1.2 Esta parte hay que tenerla en cuenta si tenemos problemas a la hora de concetar con los certificados. Al utilizar OpenSSL descomentamos esta linea
  • #ssl = on Y comentamos esta otra. Que era la que estaba activa de forma predeterminada pero, que en mi caso no me permitía conectarme.
Una vez modificado las lineas señalas. Guardamos y salimos del editor de textos. Y reiniciamos el servicio.

sudo systemctl restart mariadb.service

Tenemos que tener en cuenta, si en nuestro servidor, tenemos instalado y corriendo un cortafuegos, debemos permitir las conexiones a través del puerto 3306, si lo hemos dejado por defecto, o el puerto que asignemos al servicio. Para añadir el permiso abrir el mencionado puerto utlizando ufw seria:

sudo ufw allow 3306/tcp

Y si solo vamos a permitir el acceso en remoto a un equipo, con una dirección ip en concreto:

 sudo ufw allow from 192.168.100.2 to any port 3306

Servicio multimedia con Plex

Una alternativa para organizar nuestros archivos multimedia es instalando un servidor Plex. Plex es un software privativo, que podremos utilizar de forma gratuita con algunas limitaciones, para embellecer nuestra bibilioteca multimedia y añadir portadas y metadatos, que si utilizamos un servidor DLNA Por ejemplo en el cliente para Smartphone solo nos permite ver un minuto en streaming. En este caso vamos a instalar su servidor en una Raspberry en la que hemos conectado un disco duro, donde se encuentran alojados nuestros archivos. Pero también podremos instalarlo en nuestro ordenador o en un NAS. Esta aplicación es multiplataforma y es posible instalar el servidor y/o su cliente en múltiples dispositivos y plataformas. La APP se encuentra disponible en el catálogo de las principales Smart TV.




Para tener la garantía de que nuestro servidor se encuentre actualizado en todo momento, añadiremos su repositorio en en nuestra lista.

echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

Añadiremos las fimras del nuevo repositorio
 
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add

Refrescaremos las lista de repositorios:

 sudo apt-get update

Y una vez que acabe la operación de actualización realizaremos la instalación de nuestro servidor Plex

 sudo apt-get install plexmediaserver

Instalar Plex server
 
Al final de la instalación nos pedira confirmación para reescribir el archivo que hemos creado al principio donde incluimos donde se encuentra los repositorios de Plex. Confirmaremos la acción por omisión que sera N.

Y ya tendremos  instalado nuestro servidor multimedia. La configuración la realizaremos desde el servicio web creado por le servidor.


En tudireccionip pondremos la dirección ip donde hemos instalado nuestro servidor multimedia Plex.



 La utilización de Plex requiere el registro de una cuenta. Si disponemos de ella podemos vincularlo a nuestro servidor, si no es asi deberemos crear una cuenta nueva.




Nos recuerdan que podremos aumentar las prestaciones si pagamos por el servicio premium.




Daremos nombre a nuestro servidor y añadiremos bibliotecas vinculadas a las carpetas donde se encuentren nuestros archivos mutiltimedia. Caundo más organicemos seamos más elegante será nuestra biblioteca y más facil sera acceder a aquello que queremos reproducir.




Hay muchas opciones de configuración, que resulta muy interesante de investigar para sacarle el maximo rendimiento. Al vincular nuestra cuenta si queremos volver a la configuración de nuestro servidor, podemos volver desde el navegador a través de l a dirección web

 
Ya solo nos quedaría instalar el cliente de Plex en nuestro reporductor multimedia y disfrutar de nuestra biblioteca.