Manual Installation¶
If you prefer not to use the automated installation script, you can set up Whitebox manually by following these steps.
Installation Steps¶
Step 1: Install Prerequisites¶
# Update package lists
sudo apt update -y
# Apply Ubuntu release updates & security fixes
sudo apt dist-upgrade -y
# Install required packages.
# wireless-regdb + iw are required for setting the WiFi regulatory domain
# in Step 9 (without it the AP runs at heavily reduced TX power).
sudo apt install -y git git-lfs jq make network-manager wireless-regdb iw \
docker.io docker-compose
# Add current user to docker group (or create whitebox user - see Step 4)
sudo usermod -aG docker $USER
Step 2: Configure Docker DNS¶
This prevents DNS resolution issues when building Docker images on networks with local DNS resolvers:
# Create or update Docker daemon configuration (DNS + dual-logging cache)
sudo mkdir -p /etc/docker
echo '{"dns": ["9.9.9.9", "149.112.112.112"], "log-opts": {"cache-disabled": "false", "cache-max-size": "10m"}}' | sudo tee /etc/docker/daemon.json
# Restart Docker to apply changes
sudo systemctl restart docker
Step 3: Set Hostname (optional, but recommended)¶
Step 4: Create whitebox User (optional, but recommended)¶
# Create whitebox user
sudo useradd -m -s /bin/bash -G sudo whitebox
# Set password for whitebox user
sudo passwd whitebox
# Add user to docker group
sudo usermod -aG docker whitebox
Step 5: Clone Whitebox Repository¶
# Clone to /whitebox directory (recommended for production)
sudo git clone https://gitlab.com/whitebox-aero/whitebox /whitebox
sudo chown -R whitebox:whitebox /whitebox
# Or clone to your home directory (for testing)
cd ~
git clone https://gitlab.com/whitebox-aero/whitebox
cd whitebox
Step 6: Set Up Centralized Logging¶
This sets up rsyslog to capture Docker container logs to persistent files at /var/log/whitebox/:
Step 7: Configure Network Interface Naming (Orange Pi only)¶
This step disables predictable network interface naming, which is required for the Wi-Fi access point setup.
This command will:
- Check if an M.2 Wi-Fi adapter is installed
- Take the first available M.2 Wi-Fi adapter and create a file at
/etc/systemd/network/10-wlan-ap.linkto ensure predictable naming for the access point (wlan-ap) - Reload udev rules
- Warn you that a reboot is required for changes to take effect
Step 8: Set Up udev Rules for SDR Devices¶
This command will:
- Download the required
udevrules for Stratux/SDR devices - Install them to the correct location
- Reload the
udevrules automatically
Step 9: Set Up Wi-Fi Access Point (Orange Pi only)¶
First, set the WiFi regulatory domain. Without this the kernel defaults to the
world-regulatory domain (00), which caps TX power and restricts channel
selection — clients then see "full bars" but the AP itself is whispering,
producing flaky connections. Replace XX with your ISO 3166-1 alpha-2
country code (same value as COUNTRY_CODE in .env):
WIFI_COUNTRY=XX
# Apply now, and persist across reboots
sudo iw reg set "$WIFI_COUNTRY"
echo "options cfg80211 ieee80211_regdom=${WIFI_COUNTRY}" | \
sudo tee /etc/modprobe.d/cfg80211.conf
if [ -f /etc/default/crda ]; then
sudo sed -i "s/^REGDOMAIN=.*/REGDOMAIN=${WIFI_COUNTRY}/" /etc/default/crda
fi
Then create the access point:
# Check if the connection already exists and delete it
if nmcli connection show "whitebox-ap" &>/dev/null; then
sudo nmcli connection delete "whitebox-ap"
fi
# Create Wi-Fi access point using NetworkManager.
# 2.4 GHz channel 6 is the widest-compatible AP setting across SBC radios.
# If your M.2 radio is verified to support 5 GHz in AP mode, swap in
# `wifi.band a wifi.channel 149` for lower congestion.
# wifi.powersave 2 = disabled: prevents the radio sleeping between packets,
# which otherwise adds 50-200ms latency spikes to bursty traffic.
sudo nmcli connection add type wifi ifname wlan-ap con-name "whitebox-ap" \
autoconnect yes \
ssid "whitebox" \
wifi.mode ap \
wifi.band bg \
wifi.channel 6 \
wifi.powersave 2 \
ipv4.method shared \
ipv4.addresses 10.42.0.1/24 \
wifi-sec.key-mgmt wpa-psk \
wifi-sec.psk "whitebox"
# Activate the access point
sudo nmcli connection up whitebox-ap
Step 10: Create .env file¶
cd /whitebox # or wherever you cloned the repository
# Create .env file and populate required variables
# Refer to .env.example for examples
cp .env.example .env
# Edit .env to set env vars as needed and save the file
nano .env
Step 11: Build & Deploy Whitebox Services¶
If you'd like to force all containers to be re-created even if there are no
changes to apply to them, you can use --force-recreate:
Step 12: Post-Installation¶
- Connect Hardware: Attach the USB Wi-Fi adapter, two SDR devices, and GPS module to your device
- Reboot (especially if you configured network interface naming):
sudo reboot - Connect to Wi-Fi: Join the
whiteboxnetwork (password:whitebox) - Access Whitebox: Open your browser and go to
http://10.42.0.1 - Unplug Ethernet: Disconnect the ethernet cable to take Whitebox offline
- Optional: Build cardboard enclosure for easy transport (see Cardboard Enclosure Guide)
Next Steps¶
- Learn more about the Whitebox Architecture
- Check out the Development Guide
- Explore the Plugin Guide to start making your own plugins