All checks were successful
Automatic Documentation Deployment / Sync Docs to https://kb.bunny-lab.io (push) Successful in 6s
306 lines
8.9 KiB
Markdown
306 lines
8.9 KiB
Markdown
## 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](https://releases.ubuntu.com/26.04/ubuntu-26.04-live-server-amd64.iso) 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.
|
|
|
|
```sh
|
|
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](https://fogproject.org/download.php) then extract it.
|
|
|
|
```sh
|
|
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
|
|
|
|
---
|
|
|
|
## Recommended Next Sections for Your Document
|
|
|
|
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
|
|
|
|
```md
|
|
### Validate PXE Boot and Access FOG Menu
|
|
```
|
|
|
|
followed by:
|
|
|
|
```md
|
|
### Register Hosts and Prepare Images
|
|
``` |