From 97f8389ac35585b287eb4803640328b3008edfad Mon Sep 17 00:00:00 2001 From: Antony Messerli Date: Tue, 4 Feb 2025 22:45:22 -0600 Subject: [PATCH] Doc refactor, updated docker docs Moves to directory generated sections --- .github/workflows/deploy.yml | 3 +- docs/booting/_category_.yml | 6 ++ docs/booting/grub.md | 3 +- docs/booting/ipxe.md | 5 +- docs/booting/iso.md | 5 +- docs/booting/qemu.md | 5 +- docs/booting/tftp.md | 5 +- docs/booting/usb.md | 5 +- docs/booting/vmware.md | 5 +- docs/community/_category_.yml | 6 ++ docs/community/nbxyz-users.md | 1 + docs/docker.md | 15 --- docs/docker/_category_.yml | 6 ++ docs/docker/dhcp.md | 100 +++++++++++++++++++ docs/docker/overview.md | 39 ++++++++ docs/docker/parameters.md | 20 ++++ docs/docker/usage.md | 157 ++++++++++++++++++++++++++++++ docs/introduction.md | 1 + docs/kb/_category_.yml | 5 + docs/kb/hardware/_category_.yml | 5 + docs/kb/networking/_category_.yml | 5 + docs/kb/providers/_category_.yml | 5 + docs/kb/pxe/_category_.yml | 5 + docs/quick-start.md | 5 +- docs/selfhosting.md | 1 + docusaurus.config.js | 7 ++ package.json | 1 + sidebars.js | 96 ++---------------- static/img/netboot.xyz-webapp.png | Bin 0 -> 94100 bytes 29 files changed, 400 insertions(+), 122 deletions(-) create mode 100644 docs/booting/_category_.yml create mode 100644 docs/community/_category_.yml delete mode 100644 docs/docker.md create mode 100644 docs/docker/_category_.yml create mode 100644 docs/docker/dhcp.md create mode 100644 docs/docker/overview.md create mode 100644 docs/docker/parameters.md create mode 100644 docs/docker/usage.md create mode 100644 docs/kb/_category_.yml create mode 100644 docs/kb/hardware/_category_.yml create mode 100644 docs/kb/networking/_category_.yml create mode 100644 docs/kb/providers/_category_.yml create mode 100644 docs/kb/pxe/_category_.yml create mode 100644 static/img/netboot.xyz-webapp.png diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b36c866e..d74dee03 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -23,12 +23,11 @@ jobs: wget https://raw.githubusercontent.com/netbootxyz/netboot.xyz/master/CHANGELOG.md -O external/changelog.md wget https://raw.githubusercontent.com/netbootxyz/build-pipelines/master/README.md -O external/build-automation.md wget https://raw.githubusercontent.com/netbootxyz/netboot.xyz/master/CONTRIBUTING.md -O external/contributing.md - curl https://raw.githubusercontent.com/netbootxyz/docker-netbootxyz/master/README.md | tail -n+7 > external/docker.md - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 22 - name: Install dependencies run: yarn install diff --git a/docs/booting/_category_.yml b/docs/booting/_category_.yml new file mode 100644 index 00000000..4d4243b8 --- /dev/null +++ b/docs/booting/_category_.yml @@ -0,0 +1,6 @@ +label: Booting Methods +position: 3 +link: + type: generated-index + title: Booting Methods + description: Select your desired netboot.xyz boot method below... diff --git a/docs/booting/grub.md b/docs/booting/grub.md index 9e47dab7..c7f9e18b 100644 --- a/docs/booting/grub.md +++ b/docs/booting/grub.md @@ -1,7 +1,8 @@ --- id: grub title: Booting from an existing Linux installation using GRUB -sidebar_label: Booting from GRUB +sidebar_label: GRUB +sidebar_position: 5 description: "How to use GRUB to boot into netboot.xyz" hide_table_of_contents: true --- diff --git a/docs/booting/ipxe.md b/docs/booting/ipxe.md index c89f401d..399419c2 100644 --- a/docs/booting/ipxe.md +++ b/docs/booting/ipxe.md @@ -1,7 +1,8 @@ --- id: ipxe -title: Boot using iPXE -sidebar_label: Boot using iPXE +title: iPXE +sidebar_label: iPXE +sidebar_position: 4 description: "Details how to chainload into netboot.xyz from iPXE" hide_table_of_contents: true --- diff --git a/docs/booting/iso.md b/docs/booting/iso.md index 1773c849..9b92f035 100644 --- a/docs/booting/iso.md +++ b/docs/booting/iso.md @@ -1,7 +1,8 @@ --- id: iso -title: Booting with an ISO -sidebar_label: Booting with an ISO +title: ISO +sidebar_label: ISO +sidebar_position: 2 description: "How to use an ISO to boot into netboot.xyz" hide_table_of_contents: true --- diff --git a/docs/booting/qemu.md b/docs/booting/qemu.md index ade5aeef..76c48ae9 100644 --- a/docs/booting/qemu.md +++ b/docs/booting/qemu.md @@ -1,7 +1,8 @@ --- id: qemu -title: Booting from QEMU -sidebar_label: Booting from QEMU +title: QEMU +sidebar_label: QEMU +sidebar_position: 6 description: "Methods of booting into netboot.xyz using QEMU" hide_table_of_contents: true --- diff --git a/docs/booting/tftp.md b/docs/booting/tftp.md index 6b5ee6bc..99aa9ee2 100644 --- a/docs/booting/tftp.md +++ b/docs/booting/tftp.md @@ -1,7 +1,8 @@ --- id: tftp -title: Booting from TFTP -sidebar_label: Booting from TFTP +title: TFTP +sidebar_label: TFTP +sidebar_position: 3 description: "Methods of booting into netboot.xyz using TFTP and DHCP" hide_table_of_contents: true --- diff --git a/docs/booting/usb.md b/docs/booting/usb.md index 28612262..3c49995c 100644 --- a/docs/booting/usb.md +++ b/docs/booting/usb.md @@ -1,7 +1,8 @@ --- id: usb -title: Booting from USB -sidebar_label: Booting from USB +title: USB +sidebar_label: USB +sidebar_position: 1 description: "How to create a USB stick capable of booting into netboot.xyz" hide_table_of_contents: true --- diff --git a/docs/booting/vmware.md b/docs/booting/vmware.md index b203f5fb..09a02b5b 100644 --- a/docs/booting/vmware.md +++ b/docs/booting/vmware.md @@ -1,7 +1,8 @@ --- id: vmware -title: Boot using VMware -sidebar_label: Boot using VMware +title: VMware +sidebar_label: VMware +sidebar_position: 7 description: "Using netboot.xyz in VMware to install a VM" hide_table_of_contents: true --- diff --git a/docs/community/_category_.yml b/docs/community/_category_.yml new file mode 100644 index 00000000..a9c5a563 --- /dev/null +++ b/docs/community/_category_.yml @@ -0,0 +1,6 @@ +label: Community +position: 5 +collapsed: true +link: + type: generated-index + title: Community diff --git a/docs/community/nbxyz-users.md b/docs/community/nbxyz-users.md index e1e9d1b8..fcd6ec2b 100644 --- a/docs/community/nbxyz-users.md +++ b/docs/community/nbxyz-users.md @@ -35,6 +35,7 @@ hide_table_of_contents: true ## Open Source Projects +- [JetKVM - Hardware KVM with suppport for netboot.xyz](https://jetkvm.com/) - [Quickemu](https://github.com/quickemu-project/quickemu) - [Tinkerbell](https://tinkerbell.org/examples/netboot-xyz/) - [u-root](https://github.com/u-root/u-root/blob/main/cmds/exp/netbootxyz/netbootxyz.go) diff --git a/docs/docker.md b/docs/docker.md deleted file mode 100644 index 9b304968..00000000 --- a/docs/docker.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: docker -title: Docker Container -description: "How to use the netboot.xyz docker container" -hide_table_of_contents: true ---- - -```mdx-code-block -import Docker, {toc as DockerTOC} from "@site/external/docker.md" - - - -export const toc = DockerTOC; - -``` diff --git a/docs/docker/_category_.yml b/docs/docker/_category_.yml new file mode 100644 index 00000000..6fab62c9 --- /dev/null +++ b/docs/docker/_category_.yml @@ -0,0 +1,6 @@ +label: Docker Container +position: 4 +collapsed: false +link: + type: generated-index + title: Docker Container diff --git a/docs/docker/dhcp.md b/docs/docker/dhcp.md new file mode 100644 index 00000000..33c8a241 --- /dev/null +++ b/docs/docker/dhcp.md @@ -0,0 +1,100 @@ +--- +title: DHCP Configurations +sidebar_position: 4 +description: "Setting up DHCP for the netboot.xyz Docker Container" +hide_table_of_contents: true +--- + +The netboot.xyz Docker image requires the usage of a DHCP server in order to function properly. If you have an existing DHCP server, usually you will need to make some small adjustments to make your DHCP server forward requests to the netboot.xyz container. The main settings in your DHCP or router that you will typically need to set are: + +* `tftp-server` also known as `next-server`, this option tells the client where to look for the boot file +* `boot-file-name`, this option tells the client which boot file to load + +## Examples + +The following are some configuration examples for setting up a DHCP server to get started. The main configuration you will need to change are `SERVER_IP_ADDRESS` so that DHCP can direct the client to the server running the netboot.xyz Docker container. Because the Docker image is hosting a dnsmasq TFTP server, the boot files are pulled from it and then it will attempt to load the iPXE configs directly from the host. You can then modify and adjust them to your needs. See [booting from TFTP](https://netboot.xyz/docs/booting/tftp/) for more information. + +### Setting up dnsmasq + +To install dnsmasq as your DHCP server under Debian and Ubuntu run: + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + ```shell + sudo apt install dnsmasq + ``` + + + ```shell + sudo dnf install dnsmasq + ``` + + + +Set up your configuration file `/etc/dnsmasq.conf` with the following settings: + +:::note +The following steps are examples and may not be the exact steps you need to take for your environment. Make sure to adjust the configuration to your needs. +::: + +```shell +# /etc/dnsmasq.conf + +# Set the DHCP Range and lease time +dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,12h + +# Set the default gateway +dhcp-option=option:router,192.168.1.1 + +# Set tne DNS servers +dhcp-option=option:dns-server,8.8.8.8,8.8.4.4 + +# Standard PC BIOS +dhcp-match=set:bios,60,PXEClient:Arch:00000 +dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVER_IP_ADDRESS + +# 64-bit x86 EFI +dhcp-match=set:efi64,60,PXEClient:Arch:00007 +dhcp-boot=tag:efi64,netboot.xyz.efi,,SERVER_IP_ADDRESS + +# 64-bit x86 EFI (obsolete) +dhcp-match=set:efi64-2,60,PXEClient:Arch:00009 +dhcp-boot=tag:efi64-2,netboot.xyz.efi,,SERVER_IP_ADDRESS + +# 64-bit UEFI for arm64 +dhcp-match=set:efi64-3,60,PXEClient:Arch:0000B +dhcp-boot=tag:efi64-3,netboot.xyz-arm64.efi,,SERVER_IP_ADDRESS +``` + +A breakdown of the configuration: + +- `dhcp-range` sets the range of IP addresses and lease times that will be assigned to clients. +- `dhcp-option` sets the default gateway and DNS servers. +- `dhcp-boot` sets the boot file for different architectures, the `SERVER_IP_ADDRESS` should be replaced with the IP address of the host running the Docker container. +- `dhcp-match` sets the match criteria for different architectures. + +Once the dnsmasq configuration is set, you can enable and start the service: + +```shell +sudo systemctl enable dnsmasq +sudo systemctl start dnsmasq +``` + +## netboot.xyz boot file types + +The following bootfile names can be set as the boot file in the DHCP configuration depending on your needs. They are baked into the Docker image: + +| bootfile name | description | +| --------------------------------|----------------------------------------------------------------------| +| `netboot.xyz.kpxe` | Legacy DHCP boot image file, uses built-in iPXE NIC drivers | +| `netboot.xyz-undionly.kpxe` | Legacy DHCP boot image file, use if you have NIC issues | +| `netboot.xyz.efi` | UEFI boot image file, uses built-in UEFI NIC drivers | +| `netboot.xyz-snp.efi` | UEFI w/ Simple Network Protocol, attempts to boot all net devices | +| `netboot.xyz-snponly.efi` | UEFI w/ Simple Network Protocol, only boots from device chained from | +| `netboot.xyz-arm64.efi` | DHCP EFI boot image file, uses built-in iPXE NIC drivers | +| `netboot.xyz-arm64-snp.efi` | UEFI w/ Simple Network Protocol, attempts to boot all net devices | +| `netboot.xyz-arm64-snponly.efi` | UEFI w/ Simple Network Protocol, only boots from device chained from | +| `netboot.xyz-rpi4-snp.efi` | UEFI for Raspberry Pi 4, attempts to boot all net devices | diff --git a/docs/docker/overview.md b/docs/docker/overview.md new file mode 100644 index 00000000..66e381b0 --- /dev/null +++ b/docs/docker/overview.md @@ -0,0 +1,39 @@ +--- +title: Overview +sidebar_position: 1 +description: "Overview of the netboot.xyz docker container" +hide_table_of_contents: true +--- + +The [netboot.xyz Docker image](https://github.com/netbootxyz/docker-netbootxyz) allows you to easily set up a local instance of netboot.xyz. The container is a small helper application written in node.js. It provides a simple web interface for editing menus on the fly, retrieving the latest menu release of netboot.xyz, and enables mirroring the downloadable assets from Github to your location machine for faster booting of assets. + +![netboot.xyz webapp](../../static/img/netboot.xyz-webapp.png) +It is a great tool for developing and testing custom changes to the menus. If you have a machine without an optical drive that cannot boot from USB then having a local netboot server provides a way to install an OS. If you are looking to get started with netboot.xyz and don't want to manage iPXE menus, you should use the boot media instead of setting up a container. + +The container is built upon Alpine Linux and contains several components: + +* netboot.xyz [webapp](https://github.com/netbootxyz/webapp) +* nginx for hosting local assets from the container +* dnsmasq for providing TFTP services +* syslog for providing tftp activity logs + +Services are managed in the container by [supervisord](http://supervisord.org/). + +The container runs under both x86_64 and ARM based architectures. + +## How it Works + +The following diagram details the flow of how netboot.xyz serves content to a client and how it works when the Docker container is used: + +```mermaid +graph TD + A[Client Computer] -->|PXE Boot Request| B{netboot.xyz container?} + B -- Yes --> C[netboot.xyz container] + C -- Local request --> D[Serve netboot.xyz] + C -- Unavailable --> E[boot.netboot.xyz] + B -- No --> E + E -->|Internet Request| F[boot.netboot.xyz] + F --> G[Serve netboot.xyz] + G --> H[Client Boots OS] + D --> H +``` \ No newline at end of file diff --git a/docs/docker/parameters.md b/docs/docker/parameters.md new file mode 100644 index 00000000..0f817f88 --- /dev/null +++ b/docs/docker/parameters.md @@ -0,0 +1,20 @@ +--- +title: Container Parameters +sidebar_position: 3 +description: "Setting up the netboot.xyz Docker Container" +hide_table_of_contents: true +--- + +Container images are configured using parameters passed at runtime. These parameters are separated by a colon and indicate `:` 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 WEB_APP_PORT=3000` | Specify a different port for the web configuration interface to listen on. | +| `-e NGINX_PORT=80` | Specify a different port for NGINX service to listen on. | +| `-e MENU_VERSION=2.0.84` | Specify a specific version of boot files you want to use from netboot.xyz (unset pulls latest) | +| `-e TFTPD_OPTS='--tftp-single-port'` | Specify arguments for the TFTP server (this example makes TFTP send all data over port 69) | +| `-v /config` | Storage for boot menu files and web application config | +| `-v /assets` | Storage for netboot.xyz bootable assets (live CDs and other files) | \ No newline at end of file diff --git a/docs/docker/usage.md b/docs/docker/usage.md new file mode 100644 index 00000000..448022c4 --- /dev/null +++ b/docs/docker/usage.md @@ -0,0 +1,157 @@ +--- +title: Setting up the Container +sidebar_position: 2 +description: "Setting up the netboot.xyz Docker Container" +hide_table_of_contents: true +--- + +The netboot.xyz Docker image requires an existing DHCP server to be setup and running in order to boot from it. The image does not start a DHCP server service. Please see the DHCP configuration setup near the end of this document for ideas on how to enable your environment to talk to the container. In most cases, you will need to specify the next-server and boot file name in the DHCP configuration. + +### Installing Docker + +If you have not set up Docker on your system, you can follow the instructions below to install it. The following examples are for Debian, Ubuntu, and Red Hat based systems. + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + + ```shell + # Add Docker's official GPG key: + sudo apt-get update + sudo apt-get install ca-certificates curl + sudo install -m 0755 -d /etc/apt/keyrings + sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc + sudo chmod a+r /etc/apt/keyrings/docker.asc + + # Add the repository to Apt sources: + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt-get update + sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + ``` + + + ```bash + # Add Docker's official GPG key: + sudo apt-get update + sudo apt-get install ca-certificates curl + sudo install -m 0755 -d /etc/apt/keyrings + sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + sudo chmod a+r /etc/apt/keyrings/docker.asc + + # Add the repository to Apt sources: + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt-get update + sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + ``` + + + ```bash + # Setup Repository + sudo dnf -y install dnf-plugins-core + sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo + # Install Docker + sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + # Start the Docker service + sudo systemctl enable --now docker + ``` + + + +:::note +If you are using a different distribution, please refer to the [official Docker documentation](https://docs.docker.com/get-docker/) for installation instructions. +::: + +### Pulling the Docker image + +The netboot.xyz container image is available from the GitHub Container Registry as well as Docker Hub. The image is updated regularly and is the recommended way to get the latest version of the container: + + + + + ```shell + docker pull ghcr.io/netbootxyz/netbootxyz + ``` + + + ```shell + docker pull netbootxyz/netbootxyz + ``` + + + +The following snippets are examples of starting up the container. + +### Starting up the container with the Docker CLI + +```shell +docker run -d \ + --name=netbootxyz \ + -e MENU_VERSION=2.0.84 `# optional` \ + -e NGINX_PORT=80 `# optional` \ + -e WEB_APP_PORT=3000 `# optional` \ + -p 3000:3000 `# sets web configuration interface port, destination should match ${WEB_APP_PORT} variable above.` \ + -p 69:69/udp `# sets tftp port` \ + -p 8080:80 `# optional, destination should match ${NGINX_PORT} variable above.` \ + -v /local/path/to/config:/config `# optional` \ + -v /local/path/to/assets:/assets `# optional` \ + --restart unless-stopped \ + ghcr.io/netbootxyz/netbootxyz +``` + +**To update the image using Docker CLI:** + +```shell +docker pull ghcr.io/netbootxyz/netbootxyz # pull the latest image down +docker stop netbootxyz # stop the existing container +docker rm netbootxyz # remove the image +docker run -d ... # previously ran start command +``` + +Start the container with the same parameters used above. + +:::note +If the same folders are used your settings will remain. If you want to start fresh, you can remove the paths and start over. +::: + +### Starting up the container with Docker Compose + +1. Copy [docker-compose.yml.example](https://github.com/netbootxyz/docker-netbootxyz/blob/master/docker-compose.yml.example) to docker-compose.yml +1. Edit as needed +1. Run `docker compose up -d netbootxyz` to start containers in the background +1. Run `docker compose logs -f netbootxyz` to view logs + +**To update the image using Docker Compose:** + +```shell +docker compose pull netbootxyz # pull the latest image down +docker compose up -d netbootxyz # start containers in the background +``` + +### Accessing the container services + +Once the container is started, the following services will be available via browser: + +| Service | Description | +|-----------------------|-----------------------------| +| http://localhost:3000 | Web configuration interface | +| http://localhost:8080 | Downloaded web assets | + +:::note +If you wish to remove the configuration, you can remove the local configuration folders and upon restart of the container, it will load the default configurations. +::: + +### Local Mirror Access + +If you want to pull the Live Images images down to your own mirror and boot off them you will need to update the `live_endpoint` variable in `local-vars.ipxe` file within the web configuration interface. + +The [local-vars.ipxe](https://github.com/netbootxyz/netboot.xyz/blob/master/roles/netbootxyz/templates/local-vars.ipxe.j2) is a file that is checked early during the boot [process](https://github.com/netbootxyz/netboot.xyz/blob/master/roles/netbootxyz/templates/disks/netboot.xyz.j2#L99) and will load up variables into netboot.xyz. Using this file, you can set overriddes for variables early in the boot process. + +By default the `live_endpoint` variable is set to upstream location of `https://github.com/netbootxyz`. If you want to override this, set `live_endpoint` to your deployment IP or domain, e.g. `http://192.168.0.50:8080`. It will then redirect asset download to the local location you set for assets on port `8080` and you can download the assets by using the local assets menu down to your local server. This can result in much faster boot times. diff --git a/docs/introduction.md b/docs/introduction.md index 9bab685c..edd8a4eb 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -1,5 +1,6 @@ --- id: introduction +sidebar_position: 1 title: Introduction description: netboot.xyz uses iPXE to network boot Operating System installers and utilities from an easy to use menu." hide_table_of_contents: true diff --git a/docs/kb/_category_.yml b/docs/kb/_category_.yml new file mode 100644 index 00000000..1b918a7e --- /dev/null +++ b/docs/kb/_category_.yml @@ -0,0 +1,5 @@ +label: Knowledge Base +collapsed: true +link: + type: generated-index + title: Knowledge Base diff --git a/docs/kb/hardware/_category_.yml b/docs/kb/hardware/_category_.yml new file mode 100644 index 00000000..fb7a3109 --- /dev/null +++ b/docs/kb/hardware/_category_.yml @@ -0,0 +1,5 @@ +label: Hardware +collapsed: true +link: + type: generated-index + title: Hardware diff --git a/docs/kb/networking/_category_.yml b/docs/kb/networking/_category_.yml new file mode 100644 index 00000000..6858c355 --- /dev/null +++ b/docs/kb/networking/_category_.yml @@ -0,0 +1,5 @@ +label: Networking +collapsed: true +link: + type: generated-index + title: Networking diff --git a/docs/kb/providers/_category_.yml b/docs/kb/providers/_category_.yml new file mode 100644 index 00000000..13e36a55 --- /dev/null +++ b/docs/kb/providers/_category_.yml @@ -0,0 +1,5 @@ +label: Provider Usage +collapsed: true +link: + type: generated-index + title: Provider Usage diff --git a/docs/kb/pxe/_category_.yml b/docs/kb/pxe/_category_.yml new file mode 100644 index 00000000..dd1ec6a7 --- /dev/null +++ b/docs/kb/pxe/_category_.yml @@ -0,0 +1,5 @@ +label: PXE Usage +collapsed: true +link: + type: generated-index + title: PXE Usage diff --git a/docs/quick-start.md b/docs/quick-start.md index cc8eac71..3e64b953 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -1,13 +1,12 @@ --- id: quick-start +sidebar_position: 2 title: Quick Start description: "Getting started with netboot.xyz" hide_table_of_contents: true --- -### Getting started - -[Download](https://netboot.xyz/downloads/) one of the netboot.xyz bootloaders that works best for your situation and start PXE booting your favorite operating system. The bootloaders are precompiled versions of the latest version of [iPXE](https://github.com/ipxe/ipxe) that will allow you to PXE boot into [https://boot.netboot.xyz](https://boot.netboot.xyz). If you have DHCP it'll automatically attempt to boot from DHCP. If you need to set a static IP address, hit the 'm' key during boot up for the failsafe menu and choose manual network configuration. +[Download](https://netboot.xyz/downloads/) one of the netboot.xyz bootloaders that works best for your situation and start PXE booting your favorite operating system. The bootloaders are precompiled versions of the latest version of [iPXE](https://github.com/ipxe/ipxe) that will allow you to PXE boot into [https://boot.netboot.xyz](https://boot.netboot.xyz). If you have DHCP it'll automatically attempt to boot from DHCP. If you need to set a static IP address, hit the **`m`** key during boot up for the failsafe menu and choose manual network configuration. You can look at the next section entitled [Booting Methods](https://netboot.xyz/docs/category/booting-methods) for instructions on how to set up the downloaded bootloader. diff --git a/docs/selfhosting.md b/docs/selfhosting.md index 203594da..49fcee49 100644 --- a/docs/selfhosting.md +++ b/docs/selfhosting.md @@ -1,6 +1,7 @@ --- id: selfhosting title: Self Hosting +sidebar_position: 4 description: "How to self host your own netboot.xyz in your environment" hide_table_of_contents: true --- diff --git a/docusaurus.config.js b/docusaurus.config.js index 94e86f53..bb1b7600 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -11,6 +11,10 @@ module.exports = { favicon: "img/favicon.ico", organizationName: "netbootxyz", projectName: "netboot.xyz", + markdown: { + mermaid: true, + }, + themes: ['@docusaurus/theme-mermaid'], themeConfig: { metadata: [{name: 'keywords', content: 'ipxe, netbootxyz, pxe, linux, os, operating system, install, installer, netboot, netboot.xyz'}], prism: { @@ -23,6 +27,9 @@ module.exports = { }, docsSideNavCollapsible: true, image: 'img/nbxyz_logo_name.png', + mermaid: { + theme: {light: 'neutral', dark: 'dark'}, + }, announcementBar: { id: "announcementBar-1", // Increment on change content: `If you like netboot.xyz, give it a star on GitHub⭐️, follow us on Twitter ${TwitterSvg} and join our Discord!`, diff --git a/package.json b/package.json index 528a3894..5fc8f507 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/preset-classic": "3.7.0", + "@docusaurus/theme-mermaid": "3.7.0", "@docusaurus/theme-search-algolia": "3.7.0", "@mdx-js/react": "3.1.0", "clsx": "2.1.1", diff --git a/sidebars.js b/sidebars.js index e7d2807c..471efb3b 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1,90 +1,8 @@ -module.exports = { - docs: [ - 'introduction', - { - type: 'category', - label: 'Getting Started', - link: { - type: 'generated-index', +export default { + myAutogeneratedSidebar: [ + { + type: 'autogenerated', + dirName: '.', // '.' means the current docs folder }, - collapsed: false, - items: [ - 'quick-start', - { - type: 'category', - label: 'Booting Methods', - link: { - type: 'generated-index', - title: 'Booting Methods', - description: 'Select your desired netboot.xyz boot method below:', - }, - items: [ - 'booting/usb', - 'booting/iso', - 'booting/ipxe', - 'booting/grub', - 'booting/qemu', - 'booting/tftp', - 'booting/vmware', - ], - }, - ], - }, - 'docker', - 'selfhosting', - 'faq', - { - type: 'category', - label: 'Community', - link: { - type: 'generated-index', - }, - collapsed: true, - items: [ - 'community/build-automation', - 'community/changelog', - 'community/contributing', - 'community/nbxyz-users', - ], - }, - { - type: 'category', - label: 'Knowledgebase', - link: { - type: 'generated-index', - }, - collapsed: true, - items: [ - { - "Hardware": [ - 'kb/hardware/steamdeck', - ], - }, - { - "Networking": [ - 'kb/networking/asuswrt-merlin', - 'kb/networking/edgerouter', - 'kb/networking/mikrotik', - ], - }, - { - "Provider Usage": [ - 'kb/providers/digitalocean', - 'kb/providers/equinixmetal', - 'kb/providers/gce', - 'kb/providers/linode', - 'kb/providers/oci', - 'kb/providers/openstack', - 'kb/providers/vultr', - ], - }, - { - "PXE Usage": [ - 'kb/pxe/ubuntu', - 'kb/pxe/windows', - ], - }, - ], - }, - ], -}; + ], + }; \ No newline at end of file diff --git a/static/img/netboot.xyz-webapp.png b/static/img/netboot.xyz-webapp.png new file mode 100644 index 0000000000000000000000000000000000000000..ccf3f2c698e47e1e2a49b79d0be6f3cc191c00d9 GIT binary patch literal 94100 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

Bx?G{5r+qXMnI&6b*Hl(x3au$N%{^4d2+#tva}* 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 literal 0 HcmV?d00001