Skip to content

Installing a Daemon

Daemons are lightweight agents that perform network discovery. Deploy daemons on each network segment you want to scan.

Linux: Docker with host networking OR standalone binary macOS: Standalone binary only — Docker Desktop can’t see your network Windows: Standalone binary only — Docker Desktop can’t see your network

  • Additional Windows Requirement: Install Npcap to enable ARP-based host discovery. Without Npcap, the daemon will use port scanning as a fallback (slower, less reliable for detecting hosts without open ports).
  1. Navigate to Manage > Daemons in the Scanopy UI
  2. Click “Create Daemon”
  3. Select the target network
  4. Select daemon mode:
    • Pull (recommended): Daemon polls server for work — no inbound firewall rules needed
    • Push: Server initiates scans — daemon must be reachable from server
  5. Click “Generate Key” to create an API key
  6. Copy either the Docker Compose or binary installation command

Docker is the easiest way to run a daemon on Linux with host networking support.

services:
scanopy-daemon:
image: ghcr.io/scanopy/scanopy/daemon:latest
container_name: scanopy-daemon
network_mode: host
environment:
- SCANOPY_SERVER_URL=https://your-server-url
- SCANOPY_DAEMON_API_KEY=your-api-key
- SCANOPY_MODE=pull
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Optional: for Docker discovery
restart: unless-stopped

Or run directly:

Terminal window
docker run -d \
--name scanopy-daemon \
--network host \
-e SCANOPY_SERVER_URL=https://your-server-url \
-e SCANOPY_DAEMON_API_KEY=your-api-key \
-e SCANOPY_MODE=pull \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/scanopy/scanopy/daemon:latest

Download the appropriate binary from the releases page:

  • Linux x86_64: scanopy-daemon-linux-amd64
  • Linux ARM64: scanopy-daemon-linux-arm64
  • macOS x86_64: scanopy-daemon-darwin-amd64
  • macOS ARM64: scanopy-daemon-darwin-arm64
  • Windows x86_64: scanopy-daemon-windows-amd64.exe

Make it executable (Linux/macOS):

Terminal window
chmod +x scanopy-daemon
sudo mv scanopy-daemon /usr/local/bin/

Run the daemon:

Terminal window
scanopy-daemon \
--server-url https://your-server-url \
--daemon-api-key your-api-key \
--mode pull

For automatic startup on Linux, create a systemd service.

  1. Download the service file:
Terminal window
curl -o scanopy-daemon.service https://raw.githubusercontent.com/scanopy/scanopy/main/scanopy-daemon.service
  1. Edit the service file with your configuration:
Terminal window
sudo nano scanopy-daemon.service

Update the ExecStart line with your parameters.

  1. Install and enable:
Terminal window
sudo mv scanopy-daemon.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable scanopy-daemon
sudo systemctl start scanopy-daemon
  1. Check status:
Terminal window
sudo systemctl status scanopy-daemon
sudo journalctl -u scanopy-daemon -f

Daemons tab

Viewing daemons:

  • Navigate to Manage > Daemons
  • See all daemons and their capabilities
  • Check last seen timestamps

Updating daemon properties:

You can update all daemon properties after creation; however, you’ll need to restart the daemon for property updates to take effect.

Name, Mode, and URL will be propagated to the server if changed. All other properties are local to the daemon and not stored on the server.

To update daemon capabilities (docker socket integration and interfaced subnets), you’ll need to run a SelfReport discovery to report the new capabilities to the server.

Deleting a daemon: Click the delete icon. You’ll also need to uninstall the daemon from the host it’s running on.

Important: Deleting a daemon does NOT delete discovered data. Hosts, services, and topology remain until explicitly deleted.

Each daemon reports its capabilities:

Docker Socket Access

  • True: Can discover Docker containers
  • False: Cannot access Docker socket

Interfaced Subnets

  • Lists which subnets the daemon has network interfaces with
  • The daemon will scan these subnets by default during network discovery

Docker:

Terminal window
docker stop scanopy-daemon
docker rm scanopy-daemon

Linux/macOS binary:

Terminal window
# Stop systemd service (if installed)
sudo systemctl stop scanopy-daemon
sudo systemctl disable scanopy-daemon
sudo rm /etc/systemd/system/scanopy-daemon.service
# Remove binary
sudo rm /usr/local/bin/scanopy-daemon
# Remove configuration
rm -rf ~/.config/scanopy/ # Linux
rm -rf ~/Library/Application\ Support/com.scanopy.daemon/ # macOS

Windows:

  1. Stop the daemon process
  2. Delete the executable
  3. Remove configuration from %APPDATA%\scanopy\daemon\