Git Product home page Git Product logo

docker-netbootxyz's Introduction

linuxserver.io

Blog Discord Discourse Fleet GitHub Open Collective

The LinuxServer.io team brings you another container release featuring:

  • regular and timely application updates
  • easy user mappings (PGID, PUID)
  • custom base image with s6 overlay
  • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
  • regular security updates

Find us at:

  • Blog - all the things you can do with our containers including How-To guides, opinions and much more!
  • Discord - realtime support / chat with the community and the team.
  • Discourse - post on our community forum.
  • Fleet - an online web interface which displays all of our maintained images.
  • GitHub - view the source for all of our repositories.
  • Open Collective - please consider helping us by either donating or contributing to our budget

linuxserver/netbootxyz

Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

Netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.

netbootxyz

Supported Architectures

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/netbootxyz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag
x86-64 amd64-<version tag>
arm64 arm64v8-<version tag>
armhf

Version Tags

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description
latest Web application for full self hosting
tftp TFTP server only with NETBOOT.XYZ boot files

Application Setup

To use this image you need an existing DHCP server where you can set this TFTP server as your DHCP boot destination. This image does not contain a DHCP server nor do we aim to support one in the future. This is simply a TFTP server hosting the latest IPXE kernel builds from netboot.xyz. If you are interested in their project and lack the ability to setup a DHCP server to boot this payload they also have USB stick images you can use available on their downloads page.

Router Setup Examples

PFSense

Services -> DHCP Server

Set both the option for "TFTP Server" and the options under the Advanced "Network Booting" section.\n

  • check enable
  • Next server- IP used for TFTP Server
  • Default BIOS file name- netboot.xyz.kpxe
  • UEFI 32 bit file name- netboot.xyz.efi
  • UEFI 64 bit file name- netboot.xyz.efi

OPNsense

Services -> DHCP Server

Under the Advanced "Network Booting" section.

  • check enable
  • Next server- IP of docker host
  • Default BIOS file name- netboot.xyz.kpxe
  • UEFI 32 bit file name- netboot.xyz.efi
  • UEFI 64 bit file name- netboot.xyz.efi

Unifi Security Gateway (with the controller)

Networks -> LAN (or the network you want to boot from) -> ADVANCED DHCP OPTIONS

  • tick Enable network boot
  • Server- YOURSERVERIP
  • Filename- netboot.xyz.kpxe Advanced full support
  • For USG variants force provisioning a json containing the same config used for EdgeOS (shown below) will fully support netboot.
  • For UDM variants, creating a valid dnsmasq config and placing in /run/dnsmasq.conf.d will load the config, but will not survive reboots or firmware updates source.

EdgeOS/VyOS

Connect via SSH

configure
set service dhcp-server use-dnsmasq enable
set service dns forwarding options \"dhcp-match=set:bios,60,PXEClient:Arch:00000\"
set service dns forwarding options \"dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi32,60,PXEClient:Arch:00002\"
set service dns forwarding options \"dhcp-boot=tag:efi32,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi32-1,60,PXEClient:Arch:00006\"
set service dns forwarding options \"dhcp-boot=tag:efi32-1,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi64,60,PXEClient:Arch:00007\"
set service dns forwarding options \"dhcp-boot=tag:efi64,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi64-1,60,PXEClient:Arch:00008\"
set service dns forwarding options \"dhcp-boot=tag:efi64-1,netboot.xyz.efi,,SERVERIP\"
set service dns forwarding options \"dhcp-match=set:efi64-2,60,PXEClient:Arch:00009\"
set service dns forwarding options \"dhcp-boot=tag:efi64-2,netboot.xyz.efi,,SERVERIP\"
commit; save

Dnsmasq/DD-WRT/OpenWRT/Tomato/PIHOLE

Various locations to set Additional/Custom DNSMASQ options in UI or config files Set the following lines:

dhcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP
dhcp-match=set:efi32,60,PXEClient:Arch:00002
dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP
dhcp-match=set:efi32-1,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP
dhcp-match=set:efi64,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP
dhcp-match=set:efi64-1,60,PXEClient:Arch:00008
dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP
dhcp-match=set:efi64-2,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP

Ensure you restart the DNSMASQ service after the changes.

Microsoft Server DHCP

  • Run the DHCP program
  • Under Scope/Scope Options
  • check option 066 and enter the FQDN or IP of your TFTP boot server
  • check option 067 and enter one of the following bootfile names:
  • Default BIOS file name- netboot.xyz.kpxe
  • UEFI 32 bit file name- netboot.xyz.efi
  • UEFI 64 bit file name- netboot.xyz.efi

Anything else from a router standpoint is a crapshoot for supporting Dnsmasq options or proprietary PXE boot options, check Google for support (try your exact router model number with 'pxe boot') or look into setting up your own DHCP server in Linux. This image also contains netboot.xyz.efi which can be used to boot using UEFI network boot. The UEFI boot and menu will have limited functionality if you choose to use it.

Usage

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

docker-compose (recommended, click here for more info)

---
services:
  netbootxyz:
    image: lscr.io/linuxserver/netbootxyz:latest
    container_name: netbootxyz
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - MENU_VERSION=1.9.9 #optional
      - PORT_RANGE=30000:30010 #optional
      - SUBFOLDER=/ #optional
    volumes:
      - /path/to/config:/config
      - /path/to/assets:/assets #optional
    ports:
      - 3000:3000
      - 69:69/udp
      - 8080:80 #optional
    restart: unless-stopped

docker cli (click here for more info)

docker run -d \
  --name=netbootxyz \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e MENU_VERSION=1.9.9 `#optional` \
  -e PORT_RANGE=30000:30010 `#optional` \
  -e SUBFOLDER=/ `#optional` \
  -p 3000:3000 \
  -p 69:69/udp \
  -p 8080:80 `#optional` \
  -v /path/to/config:/config \
  -v /path/to/assets:/assets `#optional` \
  --restart unless-stopped \
  lscr.io/linuxserver/netbootxyz:latest

Parameters

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Parameter Function
-p 3000 Web configuration interface.
-p 69/udp TFTP Port.
-p 80 NGINX server for hosting assets.
-e PUID=1000 for UserID - see below for explanation
-e PGID=1000 for GroupID - see below for explanation
-e TZ=Etc/UTC specify a timezone to use, see this list.
-e MENU_VERSION=1.9.9 Specify a specific version of boot files you want to use from NETBOOT.XYZ (unset pulls latest)
-e PORT_RANGE=30000:30010 Specify the port range tftp will use for data transfers (see Wikipedia)
-e SUBFOLDER=/ Specify a sobfolder if running this behind a reverse proxy (IE /proxy/)
-v /config Storage for boot menu files and web application config
-v /assets Storage for NETBOOT.XYZ bootable assets (live CDs and other files)

Environment variables from files (Docker secrets)

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

Umask for running applications

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

User / Group Identifiers

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)

Docker Mods

Docker Mods Docker Universal Mods

We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

Support Info

  • Shell access whilst the container is running:

    docker exec -it netbootxyz /bin/bash
  • To monitor the logs of the container in realtime:

    docker logs -f netbootxyz
  • Container version number:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' netbootxyz
  • Image version number:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/netbootxyz:latest

Updating Info

Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.

Below are the instructions for updating containers:

Via Docker Compose

  • Update images:

    • All images:

      docker-compose pull
    • Single image:

      docker-compose pull netbootxyz
  • Update containers:

    • All containers:

      docker-compose up -d
    • Single container:

      docker-compose up -d netbootxyz
  • You can also remove the old dangling images:

    docker image prune

Via Docker Run

  • Update the image:

    docker pull lscr.io/linuxserver/netbootxyz:latest
  • Stop the running container:

    docker stop netbootxyz
  • Delete the container:

    docker rm netbootxyz
  • Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved)

  • You can also remove the old dangling images:

    docker image prune

Image Update Notifications - Diun (Docker Image Update Notifier)

tip: We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

Building locally

If you want to make local modifications to these images for development purposes or just to customize the logic:

git clone https://github.com/linuxserver/docker-netbootxyz.git
cd docker-netbootxyz
docker build \
  --no-cache \
  --pull \
  -t lscr.io/linuxserver/netbootxyz:latest .

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

  • 08.12.23: - Rebase to Alpine 3.19.
  • 17.11.23: - Rebase to Alpine 3.18.
  • 01.07.23: - Deprecate armhf. As announced here
  • 05.03.23: - Rebase to Alpine 3.17.
  • 12.10.22: - Rebasing to Alpine 3.16, migrate to s6v3.
  • 29.04.21: - Rebasing to alpine 3.13, add SUBFOLDER env variable.
  • 01.06.20: - Rebasing to alpine 3.12.
  • 19.12.19: - Rebasing to alpine 3.11.
  • 13.12.19: - Swapping latest tag over to webapp stack for management.
  • 10.12.19: - Adding tftp branch to provide tftp only option to latest users.
  • 22.10.19: - Initial release.

docker-netbootxyz's People

Contributors

aptalca avatar b-reich avatar bcurran3 avatar chbmb avatar devome avatar dezeroku avatar drizuid avatar kaysond avatar nemchik avatar thelamer avatar thespad avatar tobbenb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-netbootxyz's Issues

Discord Server Expired Links?

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Is the discord server still active?

All the invite links I could find are expired.

Thank you

Expected Behavior

No response

Steps To Reproduce

Expired discord links:

https://discord.gg/An6PA2a posted here: https://netboot.xyz/docs/community/contributing
https://discord.gg/YWrKVTn when creating a new issue in github

Environment

No response

CPU architecture

x86-64

Docker creation

na

Container logs

na

[Documentation] Add Unifi Security Gateway to Router Setup Examples

Instructions to get network booting going on the USG

#### Unifi Security Gateway (with the controller)
Networks > LAN (or the network you want to boot from) > ADVANCED DHCP OPTIONS > tick Enable network boot\
Fill the Server field with YOURSERVERIP, and the Filename field to `netboot.xyz.kpxe`

tar: can't open '/tmp/menus.tar.gz': No such file or directory

linuxserver.io


Expected Behavior

Netboot xyz starts

Current Behavior

For the last couple weeks, I've been unable to update netboot. I deployed from scratch on a completely clean environment, but running the initial startup script fails:

netbootxyz    | [cont-init.d] 10-adduser: exited 0.
netbootxyz    | [cont-init.d] 20-nginx-config: executing...
netbootxyz    | [cont-init.d] 20-nginx-config: exited 0.
netbootxyz    | [cont-init.d] 36-download-menus: executing...
netbootxyz    | [netbootxyz-init] Downloading Netboot.xyz at
netbootxyz    | tar: can't open '/tmp/menus.tar.gz': No such file or directory
netbootxyz    | cp: cannot stat '/config/menus/remote/*': No such file or directory
netbootxyz    | [cont-init.d] 36-download-menus: exited 0.
netbootxyz    | [cont-init.d] 99-custom-files: executing...
netbootxyz    | [custom-init] no custom files found exiting...
netbootxyz    | [cont-init.d] 99-custom-files: exited 0.
netbootxyz    | [cont-init.d] done.

This of course results in no images being present.

Also worthy to note, when trying to go to port 3000 to access the UI the following appears in the logs:

netbootxyz    | listening on *:3000
netbootxyz    | FxLNXiEvYTcB46oHAAAA connected time=1604927229656
netbootxyz    | undefined:1
netbootxyz    | undefined
netbootxyz    | ^
netbootxyz    |
netbootxyz    | SyntaxError: Unexpected token u in JSON at position 0
netbootxyz    |     at JSON.parse (<anonymous>)
netbootxyz    |     at Request._callback (/app/app.js:61:44)
netbootxyz    |     at self.callback (/app/node_modules/request/request.js:185:22)
netbootxyz    |     at Request.emit (events.js:315:20)
netbootxyz    |     at Request.onRequestError (/app/node_modules/request/request.js:877:8)
netbootxyz    |     at ClientRequest.emit (events.js:315:20)
netbootxyz    |     at TLSSocket.socketErrorListener (_http_client.js:426:9)
netbootxyz    |     at TLSSocket.emit (events.js:315:20)
netbootxyz    |     at emitErrorNT (internal/streams/destroy.js:92:8)
netbootxyz    |     at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)

Environment

OS: Ubuntu 20.04
CPU architecture: x86_64/
How docker service was installed:
Official docker install script

Command used to create docker container (run/create/compose/screenshot)

My compose file:

version: "2.1"
services:
  netbootxyz:
    image: linuxserver/netbootxyz:latest
    container_name: netbootxyz
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./config:/config
      - ./assets:/assets #optional
    ports:
      - 3000:3000
      - 69:69/udp
      - 80:80 #optional
    restart: unless-stopped
    networks:
      tftp_network:
        ipv4_address: 10.0.0.13

networks:
  tftp_network:
    driver: macvlan
    driver_opts:
      parent: enx847beb4e2639
    ipam:
      config:
        - subnet: 10.0.0.0/24            # <-- Update
          gateway: 10.0.0.1              # <-- Update
          ip_range: 10.0.0.13/28        # <-- Update```

[BUG] Could not boot: Permission denied

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

None of the "Live CDs" versions can't boot. I'm getting this https://prnt.sc/vpTn9Jl7yU2q
ie. When I select Ubuntu 21.04

Expected Behavior

To be able to boot in any Live CD.

Steps To Reproduce

Start by selecting any of the live CDs options.

Environment

- OS: Ubuntu 22.04
- How docker service was installed: On the host

CPU architecture

x86-64

Docker creation

Compose file:

---
version: "2.1"
services:
  netbootxyz:
    image: lscr.io/linuxserver/netbootxyz:latest
    container_name: netbootxyz
    environment:
      - PUID=1000 #current user
      - PGID=1000 #current group
    volumes:
      - /home/johnny/docker-stuff/netboot_xyz/config:/config # optional
      - /home/johnny/docker-stuff/netboot_xyz/assets:/assets # optional
    ports:
      - 3000:3000
      - 69:69/udp
      - 8080:80 #optional
    restart: unless-stopped

Container logs

Container log but I'm not sure if its related to my issue: pastebin.com/TXGZBhVh

[BUG] Documentation for configuring VyOS's DHCP server is not valid

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Documentation on https://github.com/linuxserver/docker-netbootxyz#edgeosvyos is not valid.

vyos@vyos:~$ configure
[edit]
vyos@vyos# set service dhcp-server use-dnsmasq enable

  Configuration path: service dhcp-server [use-dnsmasq] is not valid
  Set failed

and also

vyos@vyos# set service dns forwarding options "dhcp-match=set:bios,60,PXEClient:Arch:00000"

  Configuration path: service dns forwarding [options] is not valid

Expected Behavior

VyOS doesn't have the option to choose dnsmasq over isc-dhcpd, so the entirety of this section doesn't actually work at all.

(Forgive me, but this is where I sort of break from the template because it's too restrictive for documentation-based issue reports)

The upcoming version (1.4) makes it easy to specify the options required to send out a boot file, but unfortunately it doesn't have any easy provisions to choose the file based on the firmware or architecture:

vyos@vyos:~$ configure
[edit]
vyos@vyos# set service dhcp-server shared-network-name foo_network subnet 192.168.10.0/24 bootfile-name netboot.xyz-snponly.efi
[edit]
vyos@vyos# set service dhcp-server shared-network-name foo_network subnet 192.168.10.0/24 bootfile-server my-tftp-server.com

You can specify dhcpd.conf options in the VyOS CLI in order to serve different files per-architecture, and it sounds like these options might work on older versions of VyOS, as well as UI EdgeOS, but I don't have experience with EdgeOS to really confirm anything about that. Check this gist, though.

Steps To Reproduce

  1. Use VyOS
  2. Use LSIO docs to set up its DHCP server for PXE boot
  3. profit cry

Environment

VyOS 1.4-rolling

But according to [the VyOS documentation](https://docs.vyos.io/en/latest/configuration/service/dhcp-server.html), this specific configuration option (`service dhcp-server use-dnsmasq`) is not a valid option as far back as [VyOS 1.2 Crux](https://docs.vyos.io/en/crux/configuration/service/dhcp-server.html).

CPU architecture

x86-64

Docker creation

Not applicable

Container logs

Not applicable

tftp service fails to run when IPv6 is disabled on Host

linuxserver.io

IPv6 being disabled on the host causes the tftp service to fail

Expected Behavior

The tftp service should run, even when IPv6 is not available.

Current Behavior

When IPv6 is disabled on the host box, the script at /etc/services.d/tftp/run exists with code 71 and does not leave the tftp service in a running state.

Steps to reproduce

  1. Configure host box to disable IPv6 at kernel level
  2. Run this container
  3. Execute cat /proc/net/udp and notice a lack of port 69 (0x0045).

Environment

OS: Arch Linux
CPU architecture: x86_64

IPv6 is disabled on this box

How docker service was installed:

The following docker-compose.yml

version: "3.9"
services:
  netbootxyz:
    image: lscr.io/linuxserver/netbootxyz:0.6.6
    container_name: netboot
    environment:
      - PUID=1000
      - PGID=1000
      - PORT_RANGE=30000:30010
      - SUBFOLDER=/
    ports:
      - 69:69/udp
      - 6969:80/tcp
    restart: unless-stopped
    volumes:
      - config:/config
      - assets:/assets

volumes:
  config:
  assets:

Command used to create docker container (run/create/compose/screenshot)

docker-compose up

Docker logs

Nothing to indicate there is a problem.

Workaround

I have added the environmental variable "IPV4=true" and I have created the file /config/custom-services.d/tftp with the following contents:

#!/usr/bin/with-contenv bash

exec /usr/sbin/in.tftpd \
        --foreground --listen --user abc --secure ${PORT_RANGE:+--port-range $PORT_RANGE} ${IPV4:+--ipv4} /config/menus

The --ipv4 flag is what is required for /usr/sbin/in.tftpd to not fail.

Proposed workaround

Adapt the change made in my custom-services.d script to the official tftp service script.

container won't start start after update from 0.6.4-ls44 to 0.6.4-ls45

linuxserver.io


Expected Behavior

container should start as normal

Current Behavior

container doesn't start, keeps spamming this error in log (the hex value changes each "tick")

netbootxyz    | #
netbootxyz    | # Fatal error in , line 0
netbootxyz    | # unreachable code
netbootxyz    | #
netbootxyz    | #
netbootxyz    | #
netbootxyz    | #FailureMessage Object: 0x7ec3723c

Steps to Reproduce

  1. have 0.6.4-ls44 up and running
  2. run docker-compose pull && docker compose up -d
  3. ???
  4. observe the error

Environment

OS: raspbian buster fully updated
CPU architecture: armv7 (raspberry pi 3b+)
How docker service was installed:

docker installed form ofifcial repo

Command used to create docker container (run/create/compose/screenshot)

---
version: "2.1"
services:
  netbootxyz:
    image: linuxserver/netbootxyz
    container_name: netbootxyz
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./config:/config
      - ./assets:/assets #optional
    ports:
      - 3000:3000
      - 69:69/udp
      - 8182:80 #optional
    restart: unless-stopped

Docker logs

logs above

Windows

Is it Possible to Boot/Install Windows with this docker container ? :) I'm a bit confused here so sry for the question

TFTP Timeout

The TFTP download times out. This can be reproduced in Kubernetes and Podman. The reason seems to be that only the initial connection is done through UDP port 69 but the transfer is done via a random port set during connection, see Wikipedia.

To use TFTP through docker we have therefor two options:

  1. Run in host network which seems a bit over the top and conflicts already mapped host ports on my side (80 and 3000). An option would be to make the config web interface and nginx.
  2. Set a fixed port for the TFTP connection on server side that can be forwarded to the container.

Expected Behavior

TFTP download works

Current Behavior

TFTP download times out

Steps to Reproduce

  1. Run the image (see command provided below)
  2. Test TFTP download
curl -o netboot.xyz.kpxe tftp://localhost/netboot.xyz.kpxe -vvv
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying ::1:69...
* Connected to localhost () port 69 (#0)
* set timeouts for state 0; Total 300, retry 6 maxtry 50
  0     0    0     0    0     0      0      0 --:--:--  0:04:59 --:--:--     0* TFTP response timeout
  0     0    0     0    0     0      0      0 --:--:--  0:05:00 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:05:00 --:--:--     0
* Closing connection 0
curl: (28) TFTP response timeout
  1. Downloading from inside the Docker (or Kubernetes) network works fine

Environment

OS: Arch Linux / Raspbian Buster
CPU architecture: x86_64 / arm64
How docker service was installed:
Tested on a K3S cluster on Raspbian Buster and my local Arch Linux with podman

Command used to create docker container (run/create/compose/screenshot)

docker run \
  --name=netbootxyz-test \
  -e PUID=1000 \
  -e PGID=1000 \
  -p 3000:3000 \
  -p 69:69/udp \
  -p 8088:80 \
  linuxserver/netbootxyz

Docker logs

Trying to pull docker.io/linuxserver/netbootxyz...
Getting image source signatures
Copying blob f64e86613f22 done  
Copying blob 28e749efc215 done  
Copying blob 7de41abee0a4 done  
Copying blob 6eb1af1a521f done  
Copying blob 66fa287bda10 done  
Copying config 2df7c84587 done  
Writing manifest to image destination
Storing signatures
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-envfile: executing... 
[cont-init.d] 01-envfile: exited 0.
[cont-init.d] 10-adduser: executing... 

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \ 
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
-------------------------------------

To support the app dev(s) visit:
netboot.xyz: https://opencollective.com/netbootxyz/donate

To support LSIO projects visit:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    1000
User gid:    1000
-------------------------------------

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 20-nginx-config: executing... 
[cont-init.d] 20-nginx-config: exited 0.
[cont-init.d] 36-download-menus: executing... 
[netbootxyz-init] Downloading Netboot.xyz at 2.0.17
cp: -r not specified; omitting directory '/config/menus/remote/sigs'
[cont-init.d] 36-download-menus: exited 0.
[cont-init.d] 99-custom-files: executing... 
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-files: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
listening on *:3000

tftpd responses do not seem to reach host network

Expected Behavior

I should be able to request files from the TFTP service.

Current Behavior

A client trying to request a file just times out with no acknowledgment from the server.

Steps to Reproduce

Run the container, publishing port 69/udp, the TFTP server.

Try to connect to the TFTP server from the host:

$ tftp 127.0.0.1 
tftp> get asdf
Transfer timed out.

Now kill the container and just create a listening netcat instance with --entrypoint /bin/sh linuxserver/netbootxyz -c 'nc -l -p 69 -u | xxd'

Run the tftp request again and note the output from the Docker container:

00000000: 0001 6173 6466 006e 6574 6173 6369 6900  ..asdf.netascii.

This proves that the UDP packet is making it into the container just fine, but the TFTP server is not acknowledging it for some reason.

Environment

OS: macOS 11
CPU architecture: x86_64
How docker service was installed: Docker for Mac

Command used to create docker container (run/create/compose/screenshot)

(Here I override the run script to just add more verbosity flags to tftpd. I also know I'm not publishing all the recommended ports, this is just for testing TFTP.)

docker run --rm -it -p 69:69/udp -v $(pwd)/config:/config -v $(pwd)/assets:/assets -v $(pwd)/run:/etc/services.d/tftp/run -e PUID=1000 -e PGID=1000 linuxserver/netbootxyz

Docker logs

I spent several hours trying to produce logs, down to even hooking calls to syslog() inside the TFTP server, but was not able to get anything to help diagnose this issue.

Doesn't work with Secure Boot

linuxserver.io

PXE Boot on Microsoft Surface doesn't work with SecureBoot Enable.


Expected Behavior

Display the netboot window

Current Behavior

Load the file and go directly to windows without using netboot

Environment

OS: Windows
CPU architecture: x86_64
How docker service was installed:
From the official docker repo, from the distro repo, nas OS provided, etc.

Command used to create docker container (run/create/compose/screenshot)

docker-compose up -d

Docker logs

Editing boot.cfg and other TFTP files has no effect

Expected Behavior

Editing files via the UI (on port 3000) should change the behaviour in line with the edits made.

Current Behavior

If a file is edited via the UI (even something simple, like a change to the title in boot.cfg) this change is not reflected when the PXE server is booted from. These files seem to be constantly pulled from the ONLINE netboot.xyz repository, this means than no customisation can be performed when using this image in the way of adding your own menus or boot options.

I have confirmed that changes made in the UI does indeed change the files within /config/menus and confirmed that the TFTP server is indeed listening within this directory - it simply is not serving these files locally, and is rather always pulling files from online. I can only assume this has something to do with the precompiled binary kpxe file which is included.

I have no logs from the tftp server to show which files are actually being accessed or not via TFTP.

Steps to Reproduce

  1. Deploy a container using the below docker-compose file:
  2. Connect to port 3000 to access the UI
  3. Edit boot.cfg to contain some minor trivial change
  4. Ensure DHCP server is providing the correct bootfile name and IP
  5. PXE boot a machine
  6. Observe that the changes to boot.cfg are not reflected

Environment

OS: Debian 9
CPU architecture: x86_64
How docker service was installed:

Standard docker installation, following the instructions for Debian.

Command used to create docker container (run/create/compose/screenshot)


version: '2'
services:

  netbootxyz:
    image: linuxserver/netbootxyz
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      # - MENU_VERSION=1.9.9
    volumes:
      - /mnt/docker/netbootxyz_config/config:/config
      - /mnt/docker/netbootxyz_config/assets:/assets 
    ports:
      - 3000:3000
      - 69:69/udp
      - 8181:80

Docker logs

There's nothing here of relevance.

[BUG] documentation update for OpenWRT.

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

The command provided for OpenWRT does not work on OpenWRT 21.02.0 or latest.

Expected Behavior

Inform host here is netboot.xyz

Steps To Reproduce

Type in provided commands for OpenWRT.

Environment

- OS: OpenWRT 23.05.2
Docker service works.

CPU architecture

arm64

Docker creation

docker run -d \
  --name=netbootxyz \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e MENU_VERSION=1.9.9 `#optional` \
  -e PORT_RANGE=30000:30010 `#optional` \
  -e SUBFOLDER=/ `#optional` \
  -p 3000:3000 \
  -p 69:69/udp \
  -p 8080:80 `#optional` \
  -v /path/to/config:/config \
  -v /path/to/assets:/assets `#optional` \
  --restart unless-stopped \
  lscr.io/linuxserver/netbootxyz:latest

Container logs

none.

Doesn't work at all.

linuxserver.io

TFTP service doesn't work at all on Raspberry. (netbootxyz tftp branch)
I used the offical guide about docker compose YAML to create container with portainer.
I tried with docker's host network mode too with the same result.
Docker image "3x3cut0r/tftpd-hpa" tftp server service worked instantly even with bridged network mode with only udp port no. 69 opened. I tried it with the netboot.xyz.efi image downloaded manually.

From client PC with this image:

C:\Users\xy>tftp -i 192.168.1.10 get netboot.xyz.efi
 Connect request failed

From client PC with other tftp image:

C:\Users\xy>tftp -i 192.168.1.10 get netboot.xyz.efi
Transfer successful: 1078272 bytes in 2 second(s), 539136 bytes/s

Expected Behavior

PXE network boot is working.

Current Behavior

TFTP server doesnt work.
When I try PXE boot I see that:

>Checking media presence...
>MEdia present...
>Start PXE over IPV4.
   Station IP address is 192.168.1.160
   
   Server IP address is 192.168.1.10
   NBP filename is netboot.xyz.efi
   NBP filesize is 0 bytes.
   PXE-E23: Client received TFTP error from server.

Steps to Reproduce

  1. create and run container with the offical guide by portainer

Environment

OS: Dietpi
CPU architecture: arm32
How docker service was installed: by builtin repo

Command used to create docker container (run/create/compose/screenshot)

version: "2.1"
services:
  netbootxyz:
    image: lscr.io/linuxserver/netbootxyz:tftp
    network_mode: host
    container_name: netbootxyz
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /home/dietpi/docker/netbootxyz/config:/config
    ports:
      - 3000:3000
      - 69:69/udp
    restart: unless-stopped

Docker logs

[custom-init] No custom services found, skipping...
[migrations] started
[migrations] no migrations found
-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/
Brought to you by linuxserver.io
-------------------------------------
To support the app dev(s) visit:
netboot.xyz: https://opencollective.com/netbootxyz/donate
To support LSIO projects visit:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------
User uid:    1000
User gid:    1000
-------------------------------------
[custom-init] No custom files found, skipping...
[ls.io-init] done.

Tftp Not working in K8s

Expected Behavior

TFTP connection works fine

Current Behavior

Tftp connection timed out

Steps to Reproduce

  1. Install in K8s cluster
  2. Try to reach tftp server from outside

Environment

Ubuntu 18.10
CPU architecture: x86_64**
K8s TKG

Command used to create docker container (run/create/compose/screenshot)

kind: Deployment
metadata:
  name: netbootxyz-deployment
  labels:
    app: netbootxyz
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      name: netbootxyz
  template:
    metadata:
      labels:
        name: netbootxyz
    spec:
      containers:
        - name: netbootxyz
          image: "linuxserver/netbootxyz:tftp"
          imagePullPolicy: IfNotPresent
          ports:
            - name: webconfig
              containerPort: 3000
              protocol: TCP
            - name: tftp
              containerPort: 69
              protocol: UDP
            - name: webassets
              containerPort: 80
              protocol: TCP
          volumeMounts:
            - mountPath: /config
              name: netbootxyz-config
      volumes:
      - name: netbootxyz-config
        persistentVolumeClaim:
          claimName: netbootxyz-config-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: netbootxyz-tcp-svc
  labels:
    app: netbootxyz
spec:
  type: LoadBalancer
  ports:
  - port: 3000
    protocol: TCP
    name: webconfig
    targetPort: webconfig
  - port: 80
    protocol: TCP
    name: webassets
    targetPort: webassets
  selector:
    name: netbootxyz
---
apiVersion: v1
kind: Service
metadata:
  name: netbootxyz-udp-svc
  labels:
    app: netbootxyz
spec:
  type: LoadBalancer
  ports:
  - port: 69
    protocol: UDP
    name: tftp
    targetPort: tftp
  selector:
    name: netbootxyz
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: netbootxyz-config-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

Docker logs

Everything is fine

##Maybe this will help
#projectcalico/calico#3578

[BUG] hidden/dot files not showing in nginx

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Hi! I'm trying to install packages from Fedora from local network via the variable inst.repo via http. The inst.repo variable need a valid .treeinfo file (the I have in the "extracted" directory). The .treeinfo is a hidden file/dot file and the nginx in the docker image is not showing hidden files.

In the netboot.mydomain.com Local Assets hidden file are showing, but in boot.mydomain.com are not showing.

Thanks!

Expected Behavior

Show hidden / dot file in nginx / boot.mydomain.com.

Steps To Reproduce

  1. Deploy self hosted netbootxyz
  2. Download Fedora 38 server iso image
  3. Extract iso image to extracted
  4. Try to deploy feroda with inst.repo

...
:option_fedora_38
set os Fedora
set distribution Server
cpuid --ext 29 && set arch x86_64
set version 38
set dir extracted
set url ${live_endpoint}/${os}/${distribution}/${arch}/${version}/${dir}
set kickstart http:/xxx/pxe/pxe/raw/branch/main/kickstart/xxx.cfg
imgfree
kernel ${url}/images/pxeboot/vmlinuz inst.ks=${kickstart} inst.repo=${url}
initrd ${url}/images/pxeboot/initrd.img
boot || goto custom_exit
...


### Environment

```markdown
- OS: Fedora 38
- How docker service was installed: K3s: v1.27.2+k3s1

CPU architecture

x86-64

Docker creation

custom helm chart

Container logs

$ kubectl logs netbootxyz-bbfcc6cf5-kbzg9
[migrations] started
[migrations] no migrations found
usermod: no changes
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗ 
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝ 

   Brought to you by linuxserver.io
───────────────────────────────────────

To support the app dev(s) visit:
netboot.xyz: https://opencollective.com/netbootxyz/donate

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    911
User GID:    911
───────────────────────────────────────

[custom-init] No custom files found, skipping...
listening on *:3000
[ls.io-init] done.
4J1ytxoJ0J605vtAAAAB connected time=1687287887295
RSSNKAOo2yqjXY-3AAAD connected time=1687290542936
NlnJ0Bt4Fj_hMojaAAAF connected time=1687291594860

OpenWrt Settings doenst seem to work

Using OpenWrt 21.02.0

Expected Behavior

uci set dhcp.@dnsmasq[0].dhcp_match=set:bios,60,PXEClient:Arch:00000 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi32,60,PXEClient:Arch:00002 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi32-1,60,PXEClient:Arch:00006 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64,60,PXEClient:Arch:00007 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-1,60,PXEClient:Arch:00008 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-2,60,PXEClient:Arch:00009 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP uci commit /etc/init.d/dnsmasq restart

using this and get efi for efi maschiens and kpxe for older maschines

Current Behavior

doenst work, it always uses the last entrie and you find only the last one in /etc/config/dhcp

Solution

thanks to AreYouLoco in this Thread: https://forum.turris.cz/t/add-multiple-dhcp-match-and-dhcp-boot-combinations/12318
if you the following to /etc/dnsmasq.conf it works:

dhcp-match=set:bios,60,PXEClient:Arch:00000 dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP dhcp-match=set:efi32,60,PXEClient:Arch:00002 dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi32-1,60,PXEClient:Arch:00006 dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64,60,PXEClient:Arch:00007 dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-1,60,PXEClient:Arch:00008 dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-2,60,PXEClient:Arch:00009

tftpd does not record any logs

Expected Behavior

For the purpose of debugging a misbehaving TFTP server, it should be possible to view the log output from tftpd.

Current Behavior

The service is calling syslog all over the place, but these messages evaporate.

Steps to Reproduce

Run ps -awx in the container and note that there is no syslog service. Look in /var/log and note there are no logs. Look at stdout and note there is nothing written by tftpd.

Environment

OS: macOS 11 (host)
CPU architecture: x86_64
How docker service was installed: Docker for Mac

Command used to create docker container (run/create/compose/screenshot)

 docker run --rm -it -p 69:69/udp -v $(pwd)/config:/config -v $(pwd)/assets:/assets -v $(pwd)/run:/etc/services.d/tftp/run -e PUID=1000 -e PGID=1000 --cap-add=SYS_PTRACE linuxserver/netbootxyz

Docker logs

Provide a full docker log, output of "docker logs netbootxyz"

Exactly.

centos mirrors need update

Hi,

the URL's for the centos mirrors are not working anymore. Can you please Update CentOS 7/8 menu entries.

thanks in advance
Waldemar

Netboot does not work due to UDP-mapping

linuxserver.io

If you are new to Docker or this application our issue tracker is ONLY used for reporting bugs or requesting features. Please use our discord server for general support.


Expected Behavior

After starting the docker containers it should be possible to do a netboot.

Current Behavior

Netboot fails due to NFTP connection over UDP is only initialized but fails during handshake since it tries to open new random UDP-ports which are not mapped through to the docker containers.

Working example

Add network_mode: host to the docker-compose.yaml file. This let's the container utilize a bridged network interface which enable the TFTP handshake to succeed.

Steps to Reproduce

  1. Start setup by running docker-compose up
  2. Start a virtualbox (or similar) and try netbooting.
  3. Booting tries to download the netboot.xyz.kpxe through TFTP but fails with a timeout.

Environment

OS:
CPU architecture: x86_64/arm32/arm64
How docker service was installed:

Command used to create docker container (run/create/compose/screenshot)

Docker logs

OpenWRT Dashboard Timeout with Undefined 1

linuxserver.io


Expected Behavior

Work as per other platforms / OS tested where the same menu working fine but not in OpenWRT. It's also worth noting that other images from linuxserver work fine on the same host.

Current Behavior

When visiting the default stats page an exception is encountered as ntoed below - yet other pages menus & local assets work fine.
unknown

Steps to Reproduce

  1. On openwrt docker run the image as shown below.
  2. Follow install instruction also with note to the following GH issue: #36
  3. Go to URL in browser with inspect view in Browser where a socket.io request just times out & undefined:1 exception is encountered.

Environment

OS: Linux OpenWrt 5.10.127
CPU architecture: x86_64
How docker service was installed:

docker run -d --name=netbootxyz -e PUID=1000 -e PGID=1000 -p 3000:3000 -p 69:69/udp -p 8080:80 --restart unless-stopped -v /root/netbootxyz:/config -v /mnt/nvme_shares/netbootxyz:/assets lscr.io/linuxserver/netbootxyz:latest

Command used to create docker container (run/create/compose/screenshot)

docker run -d --name=netbootxyz -e PUID=1000 -e PGID=1000 -p 3000:3000 -p 69:69/udp -p 8080:80 --restart unless-stopped -v /root/netbootxyz:/config -v /mnt/nvme_shares/netbootxyz:/assets lscr.io/linuxserver/netbootxyz:latest

Docker logs

uname -ar && docker --version
  # Linux OpenWrt 5.10.127 #0 SMP Wed Jul 6 19:09:39 2022 x86_64 GNU/Linux
  # Docker version 20.10.17, build 100c701

docker run -d --name=netbootxyz -e PUID=1000 -e PGID=1000 -p 3000:3000 -p 69:69/udp -p 8080:80 --restart unless-stopped -v /root/netbootxyz:/config -v /mnt/nvme_shares/netbootxyz:/assets lscr.io/linuxserver/netbootxyz:latest
  # stderr: s6-rc: info: service s6rc-oneshot-runner: starting
  # stderr: s6-rc: info: service s6rc-oneshot-runner successfully started
  # stderr: s6-rc: info: service fix-attrs: starting
  # stderr: s6-rc: info: service 00-legacy: starting
  # stderr: s6-rc: info: service 00-legacy successfully started
  # stderr: s6-rc: info: service fix-attrs successfully started
  # stderr: s6-rc: info: service legacy-cont-init: starting
  # stderr: cont-init: info: running /etc/cont-init.d/01-envfile
  # stderr: cont-init: info: /etc/cont-init.d/01-envfile exited 0
  # stderr: cont-init: info: running /etc/cont-init.d/02-tamper-check
  # stderr: cont-init: info: /etc/cont-init.d/02-tamper-check exited 0
  # stderr: cont-init: info: running /etc/cont-init.d/10-adduser
  # stdout: 
  # stdout: -------------------------------------
  # stdout:           _         ()
  # stdout:          | |  ___   _    __
  # stdout:          | | / __| | |  /  \
  # stdout:          | | \__ \ | | | () |
  # stdout:          |_| |___/ |_|  \__/
  # stdout: 
  # stdout: 
  # stdout: Brought to you by linuxserver.io
  # stdout: -------------------------------------
  # stdout: 
  # stdout: To support the app dev(s) visit:
  # stdout: netboot.xyz: https://opencollective.com/netbootxyz/donate
  # stdout: 
  # stdout: To support LSIO projects visit:
  # stdout: https://www.linuxserver.io/donate/
  # stdout: -------------------------------------
  # stdout: GID/UID
  # stdout: -------------------------------------
  # stdout: 
  # stdout: User uid:    1000
  # stdout: User gid:    1000
  # stdout: -------------------------------------
  # stdout: 
  # stderr: cont-init: info: /etc/cont-init.d/10-adduser exited 0
  # stderr: cont-init: info: running /etc/cont-init.d/20-nginx-config
  # stderr: cont-init: info: /etc/cont-init.d/20-nginx-config exited 0
  # stderr: cont-init: info: running /etc/cont-init.d/36-download-menus
  # stdout: [netbootxyz-init] Downloading Netboot.xyz at 
  # stderr: tar: can't open '/tmp/menus.tar.gz': No such file or directory
  # stderr: cp: cannot stat '/config/menus/remote/*': No such file or directory
  # stderr: cont-init: info: /etc/cont-init.d/36-download-menus exited 0
  # stderr: cont-init: info: running /etc/cont-init.d/90-custom-folders
  # stderr: cont-init: info: /etc/cont-init.d/90-custom-folders exited 0
  # stderr: cont-init: info: running /etc/cont-init.d/99-custom-files
  # stdout: [custom-init] no custom files found exiting...
  # stderr: cont-init: info: /etc/cont-init.d/99-custom-files exited 0
  # stderr: s6-rc: info: service legacy-cont-init successfully started
  # stderr: s6-rc: info: service legacy-services: starting
  # stderr: services-up: info: copying legacy longrun nginx (no readiness notification)
  # stderr: services-up: info: copying legacy longrun tftp (no readiness notification)
  # stderr: services-up: info: copying legacy longrun webapp (no readiness notification)
  # stderr: s6-rc: info: service legacy-services successfully started
  # stderr: s6-rc: info: service 99-ci-service-check: starting
  # stdout: [ls.io-init] done.
  # stderr: s6-rc: info: service 99-ci-service-check successfully started
  # stdout: listening on *:3000
  # stdout: cpdwg3Sz4Z5RPqoRAAAB connected time=1658602687923
  # stdout: j4zJX3jAt0Iv0VP1AAAD connected time=1658602688769
  # stdout: 9zVJGtYpzbro3LVMAAAF connected time=1658602695432
  # stderr: undefined:1
  # stderr: undefined
  # stderr: ^
  # stderr: 
  # stderr: SyntaxError: Unexpected token u in JSON at position 0
  # stderr:     at JSON.parse (<anonymous>)
  # stderr:     at Request._callback (/app/app.js:66:44)
  # stderr:     at self.callback (/app/node_modules/request/request.js:185:22)
  # stderr:     at Request.emit (events.js:400:28)
  # stderr:     at Request.onRequestError (/app/node_modules/request/request.js:877:8)
  # stderr:     at ClientRequest.emit (events.js:400:28)
  # stderr:     at TLSSocket.socketErrorListener (_http_client.js:475:9)
  # stderr:     at TLSSocket.emit (events.js:400:28)
  # stderr:     at emitErrorNT (internal/streams/destroy.js:106:8)
  # stderr:     at emitErrorCloseNT (internal/streams/destroy.js:74:3)
  # stdout: listening on *:3000
  # stdout: kYV64qFenT1B25kxAAAB connected time=1658602701704
  # stdout: xWkpWWa512Z5AIV_AAAD connected time=1658602701768

Ubuntu pressed trouble.

linuxserver.io

Today I attempted to preseed Ubuntu 20.04.1 and what happened is that after it loaded the preeseded file it downloaded ubuntu20.04.1 live install.

Expected Behavior

Ubuntu should start to automatically install

Current Behavior

It seems to skip the part of the preseed, and it goes straight to dowload ubuntu 20.04.$

Steps to Reproduce

1.Go to ubuntu and try to load a preseed.
2.It seems to skip the asset.
3.
4.

!!Asset is on another webserver, before it was not a problem to ship the automation.

Environment

OS: Ubuntu 20.04
CPU architecture: x86_64
**How docker service was installed: docker-compose official docker repo

I can provide a sample of the preseed if required for test.

[FEAT] TFTP Create File Option (Or custom command line options)

Is this a new feature request?

  • I have searched the existing issues

Wanted change

It would be nice if we could customize the tftp-hpa daemon options via docker environment variable, to include things such as "--create".

Reason for change

This may not be a very standard use case, but I'm attempting to use netboot.xyz in docker to replace a complex PXE/TFTP local environment and I also use my current TFTP server for file creation from some scripts that backup local router/switch configs via TFTP upload.

Thanks!

Proposed code change

The run file for tftp could be modified something like this:

/usr/sbin/in.tftpd --foreground --listen --user abc --secure ${PORT_RANGE:+--port-range $PORT_RANGE} ${TFTPD_OPTIONS} /config/menus

And then environment variables could include:

  • TFTPD_OPTIONS="--create"

Nessus Reports "Critical" Vulnerability with Nginx in Container (nginx 0.6.x < 1.20.1 1-Byte Memory Overwrite RCE)

Hi,

I use Nessus Essentials to scan my Home Servers for Vulnerabilities and its reporting an Nginx Vulnerability in this container. The details of the Vulnerability can be seen below;

Description
According to its Server response header, the installed version of nginx is 0.6.18 prior to 1.20.1. It is, therefore, affected by a remote code execution vulnerability. A security issue in nginx resolver was identified, which might allow an unauthenticated remote attacker to cause 1-byte memory overwrite by using a specially crafted DNS response, resulting in worker process crash or, potentially, in arbitrary code execution.

Note that Nessus has not tested for this issue but has instead relied only on the application's self-reported version number.

Solution
Upgrade to nginx 1.20.1 or later.

See Also
http://mailman.nginx.org/pipermail/nginx-announce/2021/000300.html
http://nginx.org/download/patch.2021.resolver.txt

Output
  URL               : http://<IP>:8082/
  Installed version : 1.18.0
  Fixed version     : 1.20.1 / 1.21.0

Vulnerability Information
CPE: cpe:/a:nginx:nginx
Exploit Available: true
Exploit Ease: Exploits are available
Patch Pub Date: May 25, 2021
Vulnerability Pub Date: May 25, 2021

Reference Information
CWE:  193
IAVB:  2021-B-0031
CVE:  CVE-2021-23017

Port 8082 is the port used for container port 80 here.

I have verified that nginx v1.18.0 is the version installed in the container by running nginx -v

Looking at some other LS.IO containers, they are using a newer version of Nginx, would it be possible to upgrade the Nginx version in the container please to mitigate this Vulnerability in nginx.

Any questions, please do let me know. If you need any assistance testing, please do let me know.

Thank You :)

Can't boot two laptops in UEFI mode

linuxserver.io

If you are new to Docker or this application our issue tracker is ONLY used for reporting bugs or requesting features. Please use our discord server for general support.


Expected Behavior

I used the configuration examples provided in README.md to configure dnsmasq on my router but wasn't able to boot my laptops in UEFI mode.

Current Behavior

The laptops just hang with the message "Start PXE over IPv4, Presc ESC to exit..."

I actually found the solution by adding a few more architecture codes to my config. Specifically my config now looks like this:

dhcp-match=set:bios,60,PXEClient:Arch:00000 dhcp-match=set:efi32,60,PXEClient:Arch:00002 dhcp-match=set:efi32,60,PXEClient:Arch:00006 dhcp-match=set:efi64,60,PXEClient:Arch:00007 dhcp-match=set:efi64,60,PXEClient:Arch:00008 dhcp-match=set:efi64,60,PXEClient:Arch:00009 dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP

I was in the process of creating a PR for this when I read that for changes in README.md you'd prefer an issue,

Thanks for the great containers

preseed does not work

I used to install Ubuntu 20.04 using the preseed option but for some reason it is not working now. What happens is that it seems to skip and it downloads ubuntu server?

TFTP should run in single-port mode to enable compatibility with Kubernetes

linuxserver.io

Most network drivers for Kubernetes use NAT to expose services to the outside world which is not compatible with the way TFTP works natively. TFTP creates ephemeral port for each incoming connection. Kubernetes proxy cannot NAT these ports and as a result the initial connection over 69/UDP is established but then times out when the file download is handed over to an ephemeral port.

Dnsmasq comes with a "single-port-mode" which strictly uses only port 69/UDP for all communication. While this is not 100% according to the TFTP RFC, it has been proven to be compatible with all common TFTP clients by the dnsmasq developers.


Desired Behavior

TFTP should be able to work in a single-port mode. This can be achieved by using dnsmasq instead of the tftp-hpa.

Current Behavior

The image uses tftp-hpa which does not support single-port mode.

Alternatives Considered

I have tried setting the PORT_RANGE to a list of pre-defined ports exposed via Kubernetes service which still did not work.

Request Timing Out -- File Size 0

linuxserver.io

Request timing out with filesize of 0.


Expected Behavior

The PXE process should successfully load the Netboot.XYZ set up. There should be no timeout.

Current Behavior

The TFTP request times out. The NIC is able to successfully gather the facts such as the TFTP IP address and the name of the netboot.xyz.efi file but it says the total bytes for the file is 0. When I run (on a seperate computer):

tftp {{ ip_address_of_server }}
get netboot.xyz.efi

I get "Transfer timed out." error. When I do the same thing on the TFTP server, I get a file with 1/2 a kilobyte that looks like this:

MZ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@À^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@PE^@^@d<86>^F^@<84>¨Ñ^P^@^@^@^@^@^@^@^@ð^@^B ^K^B**^Dº
^@\ ^E^@Ì<
^@ <^B^@^@^P^@^@^@^@^@^@^@^@^@^@ ^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@D^Z^@À^B^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@'^Z^@¨^\^@^@^@D^Z^@^\^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@.text^@^@^@^Dº
^@^@^P^@^@ º
^@À^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@h.rodata^@<9c>Ô^B

Steps to Reproduce

  1. Install the docker-compose.yml on a Raspberry Pi 4
  2. Configure pfSense via the web interface according to the instructions in the README
  3. Boot via PXE
  4. Watch the machine recognize the right machine IP and say that netboot.xyz.efi is 0 bytes and that there was a timeout

Environment

OS: Ubuntu 20.04
CPU architecture: aarch64
How docker service was installed:
geerlingguy.docker Ansible Role

Command used to create docker container (run/create/compose/screenshot)

docker-compose up -d

---
version: "2.1"
services:
  netbootxyz:
    image: linuxserver/netbootxyz
    container_name: netbootxyz
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./config:/config
      - ./assets:/assets
    ports:
      - 26687:3000
      - 69:69/udp
      - 26688:80 #optional
    restart: unless-stopped

Docker logs

netbootxyz    | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
netbootxyz    | [s6-init] ensuring user provided files have correct perms...exited 0.
netbootxyz    | [fix-attrs.d] applying ownership & permissions fixes...
netbootxyz    | [fix-attrs.d] done.
netbootxyz    | [cont-init.d] executing container initialization scripts...
netbootxyz    | [cont-init.d] 01-envfile: executing... 
netbootxyz    | [cont-init.d] 01-envfile: exited 0.
netbootxyz    | [cont-init.d] 10-adduser: executing... 
netbootxyz    | 
netbootxyz    | -------------------------------------
netbootxyz    |           _         ()
netbootxyz    |          | |  ___   _    __
netbootxyz    |          | | / __| | |  /  \ 
netbootxyz    |          | | \__ \ | | | () |
netbootxyz    |          |_| |___/ |_|  \__/
netbootxyz    | 
netbootxyz    | 
netbootxyz    | Brought to you by linuxserver.io
netbootxyz    | -------------------------------------
netbootxyz    | 
netbootxyz    | To support the app dev(s) visit:
netbootxyz    | netboot.xyz: https://opencollective.com/netbootxyz/donate
netbootxyz    | 
netbootxyz    | To support LSIO projects visit:
netbootxyz    | https://www.linuxserver.io/donate/
netbootxyz    | -------------------------------------
netbootxyz    | GID/UID
netbootxyz    | -------------------------------------
netbootxyz    | 
netbootxyz    | User uid:    1000
netbootxyz    | User gid:    1000
netbootxyz    | -------------------------------------
netbootxyz    | 
netbootxyz    | [cont-init.d] 10-adduser: exited 0.
netbootxyz    | [cont-init.d] 20-nginx-config: executing... 
netbootxyz    | [cont-init.d] 20-nginx-config: exited 0.
netbootxyz    | [cont-init.d] 36-download-menus: executing... 
netbootxyz    | [cont-init.d] 36-download-menus: exited 0.
netbootxyz    | [cont-init.d] 99-custom-files: executing... 
netbootxyz    | [custom-init] no custom files found exiting...
netbootxyz    | [cont-init.d] 99-custom-files: exited 0.
netbootxyz    | [cont-init.d] done.
netbootxyz    | [services.d] starting services
netbootxyz    | [services.d] done.
netbootxyz    | listening on *:3000

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.