Skip to content
guarddog-dp edited this page Feb 18, 2026 · 4 revisions

gdai_logo

Ubuntu

Installation, configuration, and deployment of the DCX Edge Sensor

Instructions to install Docker and deploy the GuardDog AI Sensor container on Ubuntu 24.04 LTS (Noble)


Prerequisites & deployment assumptions (read this first)

  • Network traffic visibility is mandatory: Port mirroring is preferred (ingress + egress) or SPAN/TAP equivalent must be configured so the sensor can see packets and communicate out on the same network being able to receive and IP on the network that is protecting.
  • Firewall/network rules must allow cloud communication: Ensure required egress/return traffic is permitted before starting the container.
  • Host network interfaces must be configured first: VLANs/logical/physical interfaces should be ready on the host; the container will detect host ethernet interfaces via host networking.
  • Persistent configuration: This deployment mounts /etc/guarddog to persist configuration across reboots and image updates.
  • License required: You need a valid license tied to the email used to create your account.

1. Create your account and obtain licensing

  1. Create an account at https://dcx.guarddog.ai, verify it, and log in.
  2. Contact GuardDog AI support/sales with the email you used and request your license parameters.

2. Update the system that will be used to deploy the sensor

sudo apt update
sudo apt upgrade -y
sudo reboot

3. Baseline hardening (optional but recommended)

3.1 SSH keys + disable password authentication

On your admin machine:

ssh-keygen -t rsa -b 4096
ssh-copy-id <user>@<server_ip>

On the Ubuntu host:

sudo nano /etc/ssh/sshd_config

Set (or ensure) these values:

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
sudo systemctl restart ssh

3.2 Firewall (UFW example)

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

3.3 Enable IRQ balancing (recommended)

sudo apt install -y irqbalance
sudo systemctl enable --now irqbalance

4. Install Docker Engine (official repository method)

4.1 Remove older/conflicting packages (safe to run)

sudo apt remove -y docker docker-engine docker.io containerd runc || true

4.2 Install prerequisites

sudo apt update
sudo apt install -y ca-certificates curl gnupg

4.3 Create a keyring directory

sudo install -m 0755 -d /etc/apt/keyrings

4.4 Add Docker’s official GPG key

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

4.5 Add Docker repository

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

4.6 Install Docker Engine

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4.7 Enable Docker to start on boot

sudo systemctl enable --now docker

4.8 Verify Docker

docker --version
sudo systemctl status docker --no-pager

4.9 (Optional) Run Docker without sudo

sudo usermod -aG docker $USER
newgrp docker

5. Prepare persistent configuration directory

sudo mkdir -p /etc/guarddog
sudo chmod 755 /etc/guarddog

6. Download and run the DCX container

6.1 Pull the DCX image

docker pull guarddogai/prod:latest

6.2 Set required variables

export EMAIL="customer@email.com"
export LICENSE="YOUR-LICENSE-KEY"
export NAME="sensor_name"

6.3 Run the container (use this exact command)

If you want a different device name, replace gdai01 in both --name and --device_name.

docker run  -it --cap-add NET_ADMIN --net=host --restart unless-stopped -v /etc/guarddog:/etc/guarddog --name $NAME guarddogai/prod:latest gdai --device_name=$NAME --email=$EMAIL --license=$LICENSE

Note: If Support/Engineering requests it, add --cap-add NET_RAW to the docker run command.

7. Verify and manage the container

7.1 Check running containers

docker ps

7.2 View logs

docker logs -f gdai01 (use the name of the container)

7.3 Stop / Start / Remove

docker stop gdai01 (use the name of the container)
docker start gdai01 (use the name of the container)
docker rm -f gdai01 (use the name of the container)

8. Automatic start on reboot

  • The container will automatically restart after a host reboot or Docker daemon restart because of --restart unless-stopped.
  • If you manually stop the container, Docker will not restart it until you start it again.

9. Optional troubleshooting (DNS & interface naming)

9.1 DNS checks (if image pull or cloud registration fails)

resolvectl status || true
cat /etc/resolv.conf
nslookup dcx.guarddog.ai 8.8.8.8 || true

9.2 Set DNS using systemd-resolved (recommended approach)

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo tee /etc/systemd/resolved.conf.d/guarddog-dns.conf >/dev/null <<'EOF'
[Resolve]
DNS=8.8.8.8 8.8.4.4
EOF

sudo systemctl restart systemd-resolved

Optional per-interface DNS (quick testing):

sudo resolvectl dns <iface> 8.8.8.8 8.8.4.4

9.3 (Optional) Disable predictable interface names (only if engineering recommends)

sudo nano /etc/default/grub

Add net.ifnames=0 biosdevname=0 to GRUB_CMDLINE_LINUX_DEFAULT, for example:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0 biosdevname=0"
sudo update-grub
sudo reboot

10. Upgrade procedure

docker pull guarddogai/prod:latest
docker stop gdai01
docker rm gdai01
# Re-run the same docker run command from section 6.3

11. Security recommendations

  • Do not share your license key publicly (GitHub, tickets, screenshots, etc.).
  • Keep Ubuntu patched.
  • Because --net=host reduces isolation, run on a dedicated host and keep exposure minimal.

Clone this wiki locally