Skip to main content

NetbootXYZ

Arranque PXE de varias utilidades o instaladores de sistemas operativos desde un único sitio desde BIOS sin necesidad de disponer del medio de instalación para lanzar la instalación. iPXE se usa para ofrecer un menú sencillo que te permite escoger entre las opciones.

Enlaces

Your favorite operating systems in one place! | netboot.xyz

Introduction | netboot.xyz

Requisitos

Imagen

Repositorio de Docker Hub: https://hub.docker.com/r/linuxserver/netbootxyz

Directorio de datos

mkdir -pv $CONTAINERDIR/netbootxyz/{config,assets}

Portainer- Nuevo «stack»

Add a new stack – Portainer Documentation

Web editor

En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables2.15-docker_add_stack_web_editor.gif

Fichero de variables «.env»

TZ=$TZ
PUID=1000
PGID=1000
PORT_RANGE=30000:30010 #optional
SUBFOLDER=/ #optional

Fichero docker-compose.yml

services:
  netbootxyz:
    image: linuxserver/netbootxyz
    container_name: netbootxyz
    restart: unless-stopped
    env_file: stack.env
    volumes:
      - $CONTAINERDIR/netbootxyz/config:/config
      - $CONTAINERDIR/netbootxyz/assets:/assets
    ports:
      - 69:69/udp #tftp port
      - 8080:80 #WinPE files
      - 3000:3000

En este punto ya puedes acceder a webapp en http://my.docker.ip.address:3000

Arranque desde TFTP

Utilizar netboot.xyz en la RED, es relativamente fácil de configurar. Permitirá que todos los dispositivos de la red tengan netboot.xyz disponible, seleccionando el arranque en red en BIOS o seleccionando manualmente el dispositivo que desea arrancar.

Configuración del servidor DHCP

Deberá configurar el servidor DHCP para que proporcione algunos parametros como un "next server", la dirección de un servidor TFTP en su red, y un "nombre de archivo", el archivo de arranque netboot.xyz. Cuando los clientes se inicien, si están configurados para iniciarse en red, obtendrán automáticamente una dirección DHCP válida, abrirán el gestor de arranque iPXE netboot.xyz y cargarán el menú del sistema operativo.

Ejemplo de configuración de las opciones DHCP en un servidor pfSense

image.png

Publicando webapp detrás de un proxy

Crear registro DNS

En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"

NGINX proxy

image.png

Para publicar el contenedor detrás de NGINX proxy, deberás añadir al final del fichero "docker-compose.yml" lo siguiente:

networks:
  default:
    external: true
    name: proxy
Crear un nuevo "proxy host"

Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use en este caso 3000:

image.png

Traefik

traefik-concepts-1.webp

Para publicar el contenedor detrás del proxy Traefik, deberás añadir al final del fichero "docker-compose.yml" lo siguiente:

    networks:
      - traefik_public
    labels:
      - traefik.enable=true
      - traefik.http.routers.netbootxyz.rule=Host(`netboot.$DOMAIN`)
      - traefik.http.routers.netbootxyz.tls=true
      - traefik.http.routers.netbootxyz.tls.certresolver=letsencrypt
      - traefik.http.services.netbootxyz.loadbalancer.server.port=3000
networks:
  traefik_public:
    external: true
Protegiendo con "Authelia"

Para proteger el contenedor con doble factor de autenticación con "Authelia", modifica en la sección de «labels» del fichero docker-compose.yml, para añadir la siguiente linea y configurar el «middleware» «authelia@file»

      - traefik.http.routers.netbootxyz.middlewares=simpleAuth@file
Solo IPs Privadas

Para permitir el acceso solo desde redes privadas, modifica en la sección de «labels» del fichero docker-compose.yml, para añadir la siguiente linea y configurar el «middleware» «privateIPs@file»

      - traefik.http.routers.netbootxyz.middlewares=privateIPs@file