NetbootXYZ

Enlaces
Your favorite operating systems in one place! | netboot.xyz
Requisitos
- Docker o Podman instalado siguiendo los pasos de instalar
- Portainer configurado siguiendo los pasos de instalar portainer.
- NGINX Proxy manager siguiendo los pasos de instalar NGINX Proxy Manager. (opcional)
- Traefik configurado siguiendo los pasos de instalar Traefik. (opcional)
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 variables
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 iracceder 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 cambiando el orden de arranque en el dispositivo, seleccionando el arranque en red 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

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
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:

Traefik

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
