Configure PiHole usando Docker MacVlan Networks

Descripción general

 

 

Internet está lleno de anuncios estos días y el pihole es una forma fantástica de bloquear todos estos anuncios de forma configurable. No todo el mundo tiene una Raspberry Pi de repuesto, pero algunas personas sí tienen un servidor con Docker instalado.

Esta publicación de blog mostrará algunos trucos realmente interesantes utilizando las redes Macvlan de Docker y las redes Linux para crear una instancia pihole conectada a su red local.

El resultado final será un contenedor acoplable pihole que se ejecutará con una IP dedicada, expuesta a su red local. Esto permitirá que todos los clientes lo utilicen como servidor DNS y habilitará bonitos gráficos de uso y desgloses de clientes en su panel de administración de pihole.

 

 

 

Usaremos el siguiente código:

version: '2'

services:
  pihole:
    container_name: pihole-vlan
    image: pihole/pihole:latest # check the latest version on docker hub.
    hostname: pihole # set an easy hostname to remember
    domainname: exampledomain # your local domain name
    mac_address: de:ad:be:ef:ff:01 # can change or leave this
    cap_add:
      - NET_ADMIN
    networks:
      macvlan: # same as network specified below
        ipv4_address: 192.168.1.3 # the IP of the pihole container
    dns:
      - 127.0.0.1 # use local DNS, since the pihole 
      - 1.1.1.1 # optional fallback DNS
    ports: # expose all pihole ports.
      - 443/tcp
      - 53/tcp
      - 53/udp
      - 67/udp
      - 80/tcp
    volumes: # mount our data volumes.
       - '/Externo/pihole/etc-pihole:/etc/pihole/etc-pihole/:/etc/pihole/'
       - '/Externo/pihole/etc-pihole:/etc/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
       - '/Externo/pihole/etc-pihole:/etc/pihole/backups/:/backups/' # backups explained later
    environment: # set variables for pihole configuration.
      ServerIP: 192.168.1.3 # must match ipv4_address above
      VIRTUAL_HOST: pihole.exampledomain  # Must be hostname + domainname from above
      WEBPASSWORD: "SirGamba"
      TZ: 'Europe/Madrid' # pick your timezone
    restart: unless-stopped

networks:
  macvlan:   # externally created network (later in article)
    external: true
    

Explicación de algunas líneas del archivo acoplable:

  • Configuramos el container_nameimagehostnamecomo de costumbre.
  • Tenemos que especificar una dirección mac para que los enlaces de red funcionen correctamente más adelante.
  • Agregamos la NET_ADMINcapacidad que permite la modificación de interfaces de red en el sistema host.
  • configuramos una estática ipv4_addressen nuestra macvlan0red (usada más adelante): esta es la dirección que será su DNS local para toda su red
  • Configuramos manualmente DNS en el contenedor de host en localhost, para que utilice el solucionador pihole
  • Exponemos todos los puertos pihole.
  • Establecemos algunas variables de entorno obligatorias. IMPORTANTE: asegúrese de que la ServerIPvariable coincida con la dirección IP estática que eligió anteriormente.

Nota: también notarás que hacemos referencia a una red externa llamada macvlan0, en lugar de incluir una sección como esta que define una red en el archivo docker-compose:

networks:
  pihole_network:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 10.0.37.9/24
          gateway: 10.0.37.1 
          ip_range: 10.0.37.59/28

Esta sería una solución decente si solo usa un contenedor, pero para un mejor mantenimiento se recomienda crear la red macvlan externamente y simplemente conectar el contenedor configurando

networks:
  macvlan0:
    external: true

Esto asegurará que su red no desaparezca cuando ejecute un archivo docker-compose down, ya que eso interrumpiría los scripts de inicio definidos a continuación.

Crear la red macvlan

Como se mencionó anteriormente, queremos crear la red acoplable manualmente:

docker network create -d macvlan \
    --subnet=10.0.37.9/24 --gateway=10.0.37.1 \
    --ip-range 10.0.37.59/28 \
    -o parent=eth0 \
    --aux-address="myserver=10.0.37.60" \
    macvlan0

Aquí hay una explicación de las banderas :

  • -destablece el driver, que en este caso es macvlan
  • --subnet  dirección de su subred local. Tome la IP de su servidor y agregue la /24bandera para que el rango se establezca de .1  a.254
  • --gatewayes la IP de su enrutador local, para que el contenedor acoplable pueda marcar a Internet
  • -oestablece opciones específicas del controlador. En este caso, le informamos al macvlanconductor que utilice la eth0interfaz principal. Esto debe configurarse en la misma interfaz física que utiliza su servidor para la IP física.
  • --aux-addressdefine una dirección reservada en esta nueva red. Esto garantiza que a ningún contenedor acoplable se le asigne esta IP, ya que provocaría una colisión de red. Debe elegir una dirección que esté dentro del rango de IP de macvlan.
  • --ip-rangees el comando más importante aquí. Consulte a continuación una explicación sobre cómo configurar esto.

Nota: el rango de ip debe ser:

  1. Una subsección de su red local principal (es decir, dentro de la subred). En este caso, el rango de IP es 10.0.37.59/28, que se expande a 10.0.37.49:10.0.37.62
  2. Debería --aux-addressestar presente dentro del rango de IP, por lo que en este caso elegimos 10.0.37.60

Set up a PiHole using Docker MacVlan Networks — Blog :: Ivan Smirnov

Instalar Docker en OpenMediaVault 6

¿ Qué es Docker ?

www.docker.com

Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de manera rápida y confiable de un entorno informático a otro. Una imagen de contenedor de Docker es un paquete de software ligero, independiente y ejecutable que incluye todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones.

Las imágenes de contenedores se convierten en contenedores en tiempo de ejecución y, en el caso de los contenedores de Docker, las imágenes se convierten en contenedores cuando se ejecutan en Docker Engine. Disponible para aplicaciones basadas en Linux y Windows, el software en contenedores siempre se ejecutará de la misma manera, independientemente de la infraestructura. Los contenedores aíslan el software de su entorno y garantizan que funcione de manera uniforme a pesar de las diferencias, por ejemplo, entre el desarrollo y la puesta en escena.

O, más brevemente, es una forma de instalar cualquier aplicación en OMV sin romper el sistema .

omv6:docker_in_omv [omv-extras.org]

WordPress en OpenMediaVault usando Docker y Portainer Raspberry Pi

Vamos a explicar «Cómo instalar WordPress en OpenMediaVault usando Docker y Portainer para  Raspberry Pi todos los modelos» 

En el vídeo de arriba puedes ver todos los detalles para instarlo.

Sitio web oficial de Devloper: https://hub.docker.com/r/linuxserver/mariadb/ y https://hub.docker.com/_/wordpress/

WordPress requiere MariaDB / MySQL

Para comenzar la configuración primero necesitamos instalar MariaDB y luego podemos continuar e instalar WordPress .

Instalar el Docker para MariaDB a través del comando

sudo docker pull linuxserver/mariadb

MariaDB

Variables de entorno

TZ
PUID
PGID
MYSQL_ROOT_PASSWORD
MYSQL_DATABASE
MYSQL_USER
CONTRASEÑA_MYSQL

WordPress

Variables de entorno

WORDPRESS_DB_HOST
WORDPRESS_DB_USER
WORDPRESS_DB_PASSWORD
WORDPRESS_DB_NAME
 
 

Cómo instalar MiniDLNA en Raspberry Pi

 

Usaremos los siguientes comandos:

Instalarlo: 

sudo apt-get install minidlna

Configurar y hacer copia del archivo original:

sudo cp /etc/minidlna.conf /etc/minidlna.conf.copia
sudo nano /etc/minidlna.conf

Rutas que añadir a la biblioteca DLNA. Podemos añadir tantas como queramos, por ejemplo, /mnt/ o /media/usb0 para las unidades usb.

* «A» para audio (p. Ej. Media_dir = A, / var / lib / minidlna / music)
* «P» para imágenes (p. Ej. Media_dir = P, / var / lib / minidlna / pictures)
* «V» para video (p. Ej. Media_dir = V, / var / lib / minidlna / videos)
* «PV» para imágenes y videos (p. Ej. Media_dir = PV, / var / lib / minidlna / digital_c 

media_dir=/home/pi/
media_dir=/media/usb0

# Ruta al directorio que debe contener la base de datos y el caché de la carátula del álbum.
db_dir = / var / cache / minidlna

# Interfaces de red a las que enlazar (p. Ej., Eth0), delimitadas por comas.
# Esta opción se puede especificar más de una vez.
interfaz_de_red = eth0

Revisar permisos en las carpetas que hemos añadido de lectura y ejecución para otros.

Nombre de nuestro servidor en la red.
friendly_name=Raspi_DLNA

Tarjetas de red que se van a utilizar (separadas por coma).
network_interface=eth0,wlan0

sudo service minidlna restart

sudo minidlnad -R

Cómo: Cambiar / mover el directorio de datos en NEXTCLOUD

 

Configuración del servidor web Apache

Tenemos que comprobar si existe y si no es así crear un archivo en la siguiente ruta. Reemplazando el Directorio y otras rutas de archivos con sus propias rutas de archivos:

cd /etc/apache2/sites-available
nano nextcloud.conf

El contenido será el siguiente, donde lo que nos importa en esta parte es que esté Options +FollowSymlinks 

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud

</Directory>

Luego habilita el sitio recién creado:

a2ensite nextcloud.conf

Mover carpeta Data del usuario en cuestión.

  • Asegúrate de que no se esté ejecutando trabajos cron de Apache.
  • Parar ser servicio de Apache
    service apache2 stop
  • Mover la carpeta del usuario /data a la nueva ubicación usando este ejemplo y cambiándolo por tus rutas:
cd /var/www/html/nextcloud

cp -r data /srv/dev-disk-by-label-datos/nextcloud

mv data data.old
  • Cree un enlace simbólico desde la ubicación original a la nueva ubicación
    ln -s /srv/dev-disk-by-label-datos/nextcloud/data data
  • Asegúrate de que los permisos sigan siendo correctos en el enlace simbólico que hemos creado en /var/www/html/nextcloud. El propietario no puede ser Root, hay que verlo y cambiarlo con los siguientes comandos:
    ls -al

    chown -h www-data:www-data data

    chown -R www-data:www-data data
  • También comprueba los permisos de la carpeta que has movido:
cd /srv/dev-disk-by-label-datos/nextcloud/
chown -h www-data:www-data data
chown -R www-data:www-data data
  • Inciar servicio Apache
    service apache2 start

Fuentes:

https://help.nextcloud.com/t/howto-change-move-data-directory-after-installation/17170

https://help.nextcloud.com/t/is-there-a-safe-and-reliable-way-to-move-data-directory-out-of-web-root/3642/4

https://docs.nextcloud.com/server/13/admin_manual/installation/source_installation.html#apache-web-server-configuration

🔐 Cómo instalar OPENVPN en OpenMediaVault 5 DOCKER

 

¿Qué es OpenVPN?

OpenVPN es una herramienta de conectividad basada en software libreSSL (Secure Sockets Layer), VPN Virtual Private Network (red virtual privada). OpenVPN ofrece conectividad punto-a-punto con validación jerárquica de usuarios y host conectados remotamente. Resulta una muy buena opción en tecnologías Wi-Fi (redes inalámbricas IEEE 802.11) y soporta una amplia configuración, entre ellas balanceo de cargas. Está publicado bajo la licencia GPL, de software libre.

Guía de instalación de OpenMediaVault 5

   Equipamiento requerido :

 Raspberry Pi Todos los modelos

 Tarjeta Micro SD «Mínimo 8 GB»
 Fuente de alimentación
 Cable Ethernet para conexión LAN
 Disco duro externo o unidad USB

     Opcional :

 Raspberry Pi carcasa

 Teclado y Ratón  

Crear volumen OVPN_DATA

OVPN_DATA="ovpn-data-openvpn"
docker volume create --name $OVPN_DATA

Configurar DNS dinámico

Después de que el DNS dinámico se haya creado correctamente, podemos reemplazar el VPN.SERVERNAME.COM con nuestra dirección y ejecutar el contenedor desde el comando siguiente:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm darathor/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM

Generar certificado de CA

Introduciendo el siguiente comando nos pedirá meter una contraseña dos veces.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it darathor/openvpn ovpn_initpki

 

 

Inicie el proceso del servidor OpenVPN

Tenemos primero que abrir el puerto en nuestro Router, podemos usar este vídeo como ejemplo pero poniendo el puerto 1194 interno y externo, y protocolo UDP. En el primer vídeo está también.

docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN darathor/openvpn

Metemos este comando de arriba con le puerto.

Generar un certificado de cliente sin una frase de contraseña

Con esto creamos un usuario para el cliente sin contraseña. Se puede cambiar CLIENTNAME por el nombre que queráis.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it darathor/openvpn easyrsa build-client-full CLIENTNAME nopass

Cree y descargue la configuración del cliente con certificados incrustados

Aquí pondremos el mismo nombre que arriba.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm darathor/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

 

Descargar archivo de cliente

Para descargarlo, la opción más fácil es descargar WinSCP u otro programa FTP y conectarnos a nuestra IP como hacemos con Putty. 

Podemos pasarlo al móvil con Google Drive por ejemplo.

Configurar el cliente OpenVPN

Nos bajamos OpenVPN Client e importamos el archivo.


Iniciar contenedor docker automaticamente al encender

Vamos a crear un archivo con el siguiente contenido:

[Unit]
Description=NOMBRE_DOCKER  
Requires=docker.service  
After=docker.service

[Service]
Restart=always  
ExecStart=/usr/bin/docker start -a NOMBRE_DOCKER
ExecStop=/usr/bin/docker stop -t 2 NOMBRE_DOCKER

[Install]
WantedBy=default.target

Podemos crear el archivo conectando por Putty o por WinSCP.

Crear archivo:

touch docker-NOMBRE_DOCKER.service

Lo abrimos con nano y pegamos el contenido de arriba ya personalizado:

nano docker-NOMBRE_DOCKER.service

Copiamos el archivo a la carpeta especial de systemd:

sudo cp docker-NOMBRE_DOCKER.service /etc/systemd/system/

Lo habilitamos:

systemctl enable docker-NOMBRE_DOCKER.service

Al reiniciar nuestro SO debería de levantarse automáticamente nuestro contenedor.

 

Fuentes:

  • https://pcmac.biz/openvpn-on-openmediavault-5-raspberry-pi-4/
  • https://www.ingenieroperales.com/iniciar-un-contenedor-de-docker-automaticamente-al-reiniciar/

☁️ Como instalar NEXTCLOUD en Openmediavault

Hola, vamos a instalar NEXTCLOUD en Openmediavault, aunque este tutorial también vale para otros sistemas Linux como Debian, u otros adaptando los comandos.

Como una imagen vale más que mil palabras, os dejo primero el vídeo por si lo queréis ver.

A continuación, os dejo la lista de comandos que he usado, por si lo quieres ir copiando y pegando, por ejemplo si estás conectado con el buen Putty.

Es importante que si estás en OpenMediavault instalándolo, cambies el puerto 80 y si lo usas, el 443, por otros.

Instalar el servidor HTTP Apache2, MariaDB, PHP y módulos relacionados

sudo su – Para poder ejecutar todo con permisos.

apt-get install apache2
apt-get install apache2 mariadb-server libapache2-mod-php7.
apt-get install php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-mbstring
apt-get install php7.3-intl php-imagick php7.3-xml php7.3-zip

apt-get -y install gcc make autoconf libc-dev pkg-config
apt-get -y install libmcrypt-dev

apt-get install php-dev libmcrypt-dev php-pear
pecl install mcrypt
service apache2 restart

Descargar NextCloud

cd /var/www/html

wget https://download.nextcloud.com/server/releases/nextcloud-19.0.0.zip

* Puedes ver la última versión en su web y cambiarla por la 19.0.0, https://download.nextcloud.com/server/releases

apt-get install unzip

unzip nextcloud-19.0.0.zip

mkdir -p /var/www/html/nextcloud/data

chown -R www-data:www-data /var/www/html/nextcloud/

chmod 750 /var/www/html/nextcloud/data

Ver la IP de nuestro equipo: hostname -I

Crear la base de datos NextCloud

Ahora que ha instalado todos los paquetes necesarios, continúe a continuación para comenzar a configurar los servidores. Primero ejecute los siguientes comandos para crear una base de datos en blanco de NextCloud.

Para iniciar sesión en el servidor MariaDB, ejecute los siguientes comandos

sudo mysql -u root -p

Luego crea una base de datos llamada nextcloud

CREATE DATABASE nextcloud;

Cree un usuario de base de datos llamado nextclouduser con una nueva contraseña

CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'NUEVACONTRASEÑA';

Luego otorgue al usuario acceso completo a la base de datos.

GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'CONTRASEÑAANTERIOR' WITH GRANT OPTION;

Finalmente, guarde sus cambios y salga.

FLUSH PRIVILEGES;
EXIT;

☁️ Como ACCEDER desde INTERNET NEXTCLOUD y con las APLICACIONES – Parte 2️⃣

El archivo que hay que modificar es: /var/www/html/nextcloud/config

Hay que añadir una línea debajo de 0 => ‘192.168.1.96’, que en vuestro caso tendrá vuestra IP. Poniendo 1 => ‘IP o dominio’ como la anterior.

$CONFIG = array (
  'instanceid' => '',
  'passwordsalt' => '',
  'secret' => '/YQtPMrC3g5f7dr',
  'trusted_domains' =>
  array (
    0 => '192.168.1.96',
    1 => 'IP o dominio'

🖪 NextCloud instalar DISCO DURO EXTERNO USB 🖫 Parte 3️⃣

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies