Files
docs/deployments/automation/FOG Project.md
Nicole Rappe 62c81678d7
All checks were successful
Automatic Documentation Deployment / Sync Docs to https://kb.bunny-lab.io (push) Successful in 6s
Update deployments/automation/FOG Project.md
2026-05-04 19:13:42 -06:00

8.9 KiB

Purpose

If you want to deploy the FOG Project software in your homelab environment to remotely image devices via PXE boot, follow the instructions below to get through the process.

!!! info "assumptions" It is assumed that you are deploying FOG Project in Ubuntu Server 26.04 or newer. This documentation does not account for distro-specific issues in other operating systems.

It is also assumed that you allocate at least 4-cores and 8GB of RAM with at least 256GB of storage for the OS and FOG images.

!!! warning "Potential Netplan Misconfiguration" If the FOG server cannot resolve DNS names or reach external networks, verify that the Netplan configuration includes both:

- `nameservers` pointing to valid DNS servers
- a default route pointing to the network gateway

Check the Netplan configuration:

```sh
cd /etc/netplan
ls
sudo nano <netplan file>
```

Ensure it looks similar to this:

```yaml
network:
  version: 2
  ethernets:
    ens18:
      addresses:
        - 192.168.3.9/24
      routes:
        - to: default
          via: 192.168.3.1
      match:
        macaddress: bc:24:11:5c:eb:c9
      nameservers:
        addresses:
          - 192.168.3.25
          - 192.168.3.26
        search: []
      set-name: ens18
```

Apply the configuration safely and temporarily with `sudo netplan try` and if connectivity still works, accept the changes permanently by running `sudo netplan apply`. Otherwise, Netplan will roll back the changes automatically.

Update & Snapshot the GuestVM

Before we take a checkpoint/snapshot and install FOG Project, we want to ensure that the GuestVM is fully updated. After the updates are complete, shutdown the GuestVM, take a snapshot, and boot it back up.

sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove
sudo poweroff

Download FOG Project Tarball

Download the most recent FOG Project tarball from the official website then extract it.

curl -L https://api.github.com/repos/FOGProject/fogproject/tarball/1.5.10.1826 -o FOGProject-fogproject-1.5.10.1826-0-g2309704.tar.gz
tar -xzvf FOGProject-fogproject-1.5.10.1826-0-g2309704.tar.gz
cd FOGProject-fogproject-2309704/bin
sudo ./installfog.sh

Install FOG Project (External DHCP Server)

The steps below will guide you on a high-level through the external DHCP-server based deployment of FOG Project. Steps will be different if you want FOG itself handing out DHCP addresses and DNS records itself, which I do not recommend.

Question Steps

  • What version of Linux would you like to run the installation for? > 2
  • What type of installation would you like to do? > N
  • Would you like to change the default network interface from ens18? > N
  • Would you like to setup a router address for the DHCP server? > N
  • Would you like DHCP to handle DNS? > N
  • Would you like to use the FOG server for DHCP service? > N
  • This version of FOG has internationalization support, would you like to install the additional language packs? > N
  • Would you like to enable secure HTTPS on your FOG server? > N
  • Would you like to change the hostname? > N
  • Are you ok with sending this information? > N
  • Are you sure you wish to continue? > Y

!!! example "Summary Example" * Here are the settings FOG will use: * Base Linux: Debian * Detected Linux Distribution: Ubuntu * Interface: ens18 * Server IP Address: 192.168.3.9 * Server Subnet Mask: 255.255.255.0 * Hostname: lab-fog-01 * Installation Type: Normal Server * Internationalization: No * Image Storage Location: /images * Using FOG DHCP: No * DHCP will NOT be setup but you must setup your | current DHCP server to use FOG for PXE services.

* On a Linux DHCP server you must set: next-server and filename

* On a Windows DHCP server you must set options 066 and 067

* Option 066/next-server is the IP of the FOG Server: (e.g. 192.168.3.9)
* Option 067/filename is the bootfile: (e.g. undionly.kkpxe or snponly.efi)
* Send OS Name, OS Version, and FOG Version: No

Database Schema Update/Install

At this point, you will be prompted to login to the website hosted by FOG Project to setup the database, navigate to the URL provided. (e.g. http://192.168.3.9/fog/management)

  • Click the "Install/Update Now" button
  • Be patient, there is no progress bar, but eventually it will state "Install / Update Successful!" and will provide a link to the FOG Project login screen.
  • Return to the SSH session and press [ENTER] to proceed with the setup.
  • After a minute or two, you will see a success dialog such as below, where you can now login to the FOG web portal to start using FOG Project

!!! success "Installation Complete" You can now login to the FOG Management Portal using the information listed below. The login information is only if this is the first install. This can be done by opening a web browser and going to: http://192.168.3.9/fog/management

Default User Information

- **Username**: fog
- **Password**: password

**Changed configurations**:
The FOG installer changed configuration files and created the
following backup files from your original files:

- /etc/vsftpd.conf <=> /etc/vsftpd.conf.1777937213
- /etc/exports <=> /etc/exports.1777937213

Disorganized Next Steps (Under Construction)

After DHCP is correctly pointing clients to the FOG server (Options 66/67 or next-server/filename), the next phase is PXE boot workflow + host registration and image management—not user authentication at boot.

Short answer: No, you do not need to create a PXE login user. FOG does not use traditional authentication during PXE boot. Instead, it uses a menu-driven iPXE environment and host registration + task assignment from the web UI.


What Actually Happens After DHCP is Set

Once DHCP is configured:

  1. Client boots → gets IP + bootfile

  2. Loads iPXE from FOG

  3. Connects to FOG server

  4. Displays FOG PXE menu

  5. From there:

    • Register host
    • Deploy image
    • Run tasks

You should continue with something like this:


Validate PXE Boot

Before doing anything else, confirm PXE is working end-to-end.

  • Boot a test machine on the same network

  • Ensure:

    • It gets an IP from DHCP
    • It downloads undionly.kpxe (BIOS) or snponly.efi (UEFI)
    • It reaches the FOG iPXE menu

Expected result: You see a FOG menu (not a login prompt)


Register a Host in FOG

FOG needs to know about devices before imaging.

Option 1: Register via PXE Menu (most common)

From the PXE menu:

  • Select: Perform Full Host Registration and Inventory

  • Enter:

    • Hostname
    • Optional description/location

This creates a host object in FOG.

Option 2: Pre-create in Web UI

  • Go to: FOG Management → Hosts → Create New Host

  • Add:

    • MAC address
    • Hostname

Create and Capture an Image

Before deploying, you need an image stored in FOG.

Create Image Definition

  • Navigate: Images → Create New Image

  • Set:

    • Name

    • Image Type:

      • Single Disk - Resizable (most common)
    • Storage group (default is fine)


Assign Image to Host

  • Go to the host you registered
  • Set the Image field to your new image

Capture Image (Upload from a reference machine)

On your “golden image” machine:

  1. Boot via PXE

  2. Register it (if not already)

  3. In Web UI:

    • Select host
    • Click Capture
  4. Reboot machine → it uploads disk to FOG


Deploy Image to a Host

Once an image exists:

  1. Assign image to target host
  2. Schedule a Deploy Task
  3. Boot target machine via PXE

No login required — it will automatically start imaging if a task is assigned.


Important Clarification (This Answers Your Question Directly)

“Do we need to set up a user to login via PXE?”

No. FOG uses:

  • MAC address identification
  • Task-based automation
  • Optional menu interaction

There is:

  • No PXE login system by default
  • No per-user authentication during boot
  • Central control via the web UI

Optional (Advanced Sections You Might Add Later)

If you want to make your doc more complete:

Secure the Environment

  • Change default credentials (fog/password)
  • Enable HTTPS (you skipped this earlier)
  • Restrict PXE boot via VLANs or DHCP policies

UEFI vs BIOS Handling

  • BIOS → undionly.kpxe
  • UEFI → snponly.efi

Automating Deployments

  • Auto-assign hosts
  • Use host groups
  • Schedule multicast deployments

Storage Optimization

  • Separate /images to a larger disk
  • NFS tuning

Suggested Next Heading for Your Doc

### Validate PXE Boot and Access FOG Menu

followed by:

### Register Hosts and Prepare Images