#!/bin/bash # make our folders mkdir -p \ /assets \ /config/nginx/site-confs \ /config/log/nginx \ /config/dnsmasq \ /run \ /var/lib/nginx/tmp/client_body \ /var/tmp/nginx # copy config files [[ ! -f /config/nginx/nginx.conf ]] && cp /defaults/nginx.conf /config/nginx/nginx.conf [[ ! -f /config/nginx/site-confs/default ]] && envsubst /config/nginx/site-confs/default # create dnsmasq config, and conditionally add DHCP proxy support if [[ ! -f /config/dnsmasq/dnsmasq.conf ]]; then cp /defaults/dnsmasq.conf /config/dnsmasq/dnsmasq.conf if [ -n "${DHCP_RANGE_START}" ]; then echo "[netbootxyz-init] Enabling DHCP Proxy mode for DHCP_RANGE_START=${DHCP_RANGE_START}" # Get the container's IP address using hostname if not already set if [ -z "${CONTAINER_IP}" ]; then CONTAINER_IP=$(hostname -i) export CONTAINER_IP fi envsubst >/config/dnsmasq/dnsmasq.conf fi fi # Ownership chown -R nbxyz:nbxyz /assets chown -R nbxyz:nbxyz /var/lib/nginx chown -R nbxyz:nbxyz /var/log/nginx # create local logs dir mkdir -p \ /config/menus/remote \ /config/menus/local # download menus if not found if [[ ! -f /config/menus/remote/menu.ipxe ]]; then if [[ -z ${MENU_VERSION+x} ]]; then MENU_VERSION=$(curl -sL "https://api.github.com/repos/netbootxyz/netboot.xyz/releases/latest" | jq -r '.tag_name') fi echo "[netbootxyz-init] Downloading netboot.xyz at ${MENU_VERSION}" # menu files curl -o \ /config/endpoints.yml -sL \ "https://raw.githubusercontent.com/netbootxyz/netboot.xyz/${MENU_VERSION}/endpoints.yml" curl -o \ /tmp/menus.tar.gz -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/menus.tar.gz" tar xf \ /tmp/menus.tar.gz -C \ /config/menus/remote # boot files curl -o \ /config/menus/remote/netboot.xyz.kpxe -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz.kpxe" curl -o \ /config/menus/remote/netboot.xyz-undionly.kpxe -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz-undionly.kpxe" curl -o \ /config/menus/remote/netboot.xyz.efi -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz.efi" curl -o \ /config/menus/remote/netboot.xyz-snp.efi -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz-snp.efi" curl -o \ /config/menus/remote/netboot.xyz-snponly.efi -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz-snponly.efi" curl -o \ /config/menus/remote/netboot.xyz-arm64.efi -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz-arm64.efi" curl -o \ /config/menus/remote/netboot.xyz-arm64-snp.efi -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz-arm64-snp.efi" curl -o \ /config/menus/remote/netboot.xyz-arm64-snponly.efi -sL \ "https://github.com/netbootxyz/netboot.xyz/releases/download/${MENU_VERSION}/netboot.xyz-arm64-snponly.efi" # layer and cleanup echo -n "${MENU_VERSION}" >/config/menuversion.txt cp -r /config/menus/remote/* /config/menus rm -f /tmp/menus.tar.gz fi # Ownership chown -R nbxyz:nbxyz /config