Velociraptor
Overview
Velociraptor is an open-source digital forensics and incident response (DFIR) and endpoint-visibility platform. A central server with a web GUI lets responders collect forensic artifacts, run hunts across a fleet of endpoints at once, and monitor hosts in real time using VQL, the Velociraptor Query Language. It ships as a single self-contained Go binary that embeds the server, the client-communications frontend and the GUI, backed by a filesystem datastore with no external database.
This SecureAnyCloud image installs the pinned upstream v0.77.2 release binary, verified by SHA-256, runs the server as a hardened systemd service, and puts the web GUI behind an nginx TLS reverse proxy. There is no shared or default login: a fresh configuration has zero GUI users until first boot creates the per-VM admin.
What you get:
- Velociraptor 0.77.2 as a single Go binary (
/usr/local/bin/velociraptor, AGPL-3.0) - A filesystem datastore and filestore at
/var/lib/velociraptor, with no database to maintain velociraptor.servicerunning the server as thevelociraptoruser, gated on the first-boot markervelociraptor-firstboot.service, which generates this VM's own server configuration (a unique certificate authority and server/GUI certificates), a random password for the SecureAnyCloud GUI administrator, and the nginx TLS certificate- Credentials written to /stage/scripts/velociraptor-credentials.log (mode 0600, root only)
- The web GUI on loopback (
127.0.0.1:8889, plain HTTP), fronted by nginx TLS on 443 - A client-communications frontend on TCP 8000 (mutual TLS, certificate-pinned)
- The full built-in artifact catalogue (440+ forensic collectors), ready to hunt
- An Ubuntu 24.04 LTS base with the latest security patches applied at build time
- 24/7 SecureAnyCloud support with a 24-hour response SLA
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet with a subnet.
The recommended VM size is Standard_B2s for evaluation and small deployments. Scale up for large fleets.
You reach the GUI over HTTPS on port 443. Endpoints that you enrol later connect to the frontend on port 8000.
Deploy from the Azure Portal
Search the Azure Marketplace for Velociraptor 0.77 on Ubuntu 24.04. Create the VM with a network security group (NSG) that allows:
- TCP 22 (SSH) from your management network
- TCP 443 (the web GUI over TLS) from your admin network
- TCP 8000 (client communications) from the networks your endpoints live on. You need this only once you enrol endpoints.
Deploy from the Azure CLI
RG="velociraptor-prod"; LOCATION="eastus"; VM_NAME="velociraptor-01" IMAGE_URN="sac1647283583153:velociraptor-ubuntu-24-04:default:latest" SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" az group create --name "$RG" --location "$LOCATION" az network vnet create -g "$RG" --name velo-vnet --address-prefix 10.104.0.0/16 --subnet-name velo-subnet --subnet-prefix 10.104.1.0/24 az network nsg create -g "$RG" --name velo-nsg az network nsg rule create -g "$RG" --nsg-name velo-nsg --name allow-ssh --priority 100 \
--source-address-prefixes "<your-mgmt-cidr>" --destination-port-ranges 22 --access Allow --protocol Tcp az network nsg rule create -g "$RG" --nsg-name velo-nsg --name allow-gui --priority 110 \
--source-address-prefixes "<your-admin-cidr>" --destination-port-ranges 443 --access Allow --protocol Tcp az network nsg rule create -g "$RG" --nsg-name velo-nsg --name allow-frontend --priority 120 \
--source-address-prefixes "<your-endpoint-cidr>" --destination-port-ranges 8000 --access Allow --protocol Tcp
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:velociraptor-ubuntu-24-04:default:latest
az vm create -g "$RG" --name "$VM_NAME" --image "$IMAGE_URN" \
--size Standard_B2s --storage-sku StandardSSD_LRS \
--admin-username azureuser --ssh-key-values "$SSH_KEY" \
--vnet-name velo-vnet --subnet velo-subnet --nsg velo-nsg --public-ip-sku StandardConnect via SSH
ssh azureuser@<vm-ip>Verify the services
Confirm that first boot completed and that the server and the TLS proxy are running. The GUI is bound to loopback only, so nginx is the sole public entry point.
systemctl is-active velociraptor-firstboot.service velociraptor.service nginx.service
sudo /usr/local/bin/velociraptor version | grep -i version ss -ltn | grep -E ':(443|8000|8889)'Retrieve the admin password
Each VM generates its own SecureAnyCloud GUI administrator password at first boot. Read it from the root-only credentials file:
sudo cat /stage/scripts/velociraptor-credentials.log# Velociraptor 0.77.2 — Per-VM Credentials
#
# Web GUI (HTTPS via nginx): https://<vm-ip>/
# Sign in: sac / <password below>
# VELOCIRAPTOR_USER=sac VELOCIRAPTOR_PASSWORD=<VELOCIRAPTOR_PASSWORD> VELOCIRAPTOR_URL=https://<vm-ip>/ GUI_PORT=8889 FRONTEND_PORT=8000Sign in to the web GUI over TLS
nginx serves the GUI over HTTPS and enforces HTTP Basic authentication. Run these checks to confirm that the front door is up and that authentication is enforced. Missing or guessed credentials are rejected, and the per-VM admin succeeds:
PASS=$(sudo grep '^VELOCIRAPTOR_PASSWORD=' /stage/scripts/velociraptor-credentials.log | cut -d= -f2-)
curl -ks -o /dev/null -w 'healthz -> HTTP %{http_code}\n' https://127.0.0.1/healthz
curl -ks -o /dev/null -w 'no credentials -> HTTP %{http_code}\n' https://127.0.0.1/app/index.html
curl -ks -o /dev/null -w 'admin:admin guess -> HTTP %{http_code}\n' -u admin:admin https://127.0.0.1/app/index.html
curl -ks -o /dev/null -w 'sac admin -> HTTP %{http_code}\n' -u "sac:$PASS" https://127.0.0.1/app/index.htmlExpected: healthz -> 200, no credentials -> 401, admin:admin guess -> 401, SecureAnyCloud admin -> 200.
Now open https://<vm-ip>/ in your browser and sign in as SecureAnyCloud with the password from Step 5. The TLS certificate is self-signed per VM. Accept it, or replace it with your own certificate in /etc/nginx/ssl/. You land on the Velociraptor welcome dashboard.
Explore the DFIR console
Open View Artifacts to browse the built-in artifact catalogue. It holds hundreds of forensic collectors, each defined in VQL. Select one, for example Generic.Client.Info, to see its description and source query.
Open Hunt Manager to create and monitor fleet-wide collections. A hunt runs a chosen artifact across every enrolled endpoint and streams the results back.
Open Notebooks for collaborative VQL investigation notebooks. Use them to post-process collected data, pivot, and document findings alongside the queries that produced them.
Run a VQL query from the CLI
The same DFIR engine runs VQL directly from the command line, which suits scripting and quick checks. Query the server's own host, then confirm that the artifact catalogue is loaded:
sudo /usr/local/bin/velociraptor --config /etc/velociraptor/server.config.yaml \
query "SELECT OS, Platform, Hostname, Fqdn FROM info()"
sudo /usr/local/bin/velociraptor --config /etc/velociraptor/server.config.yaml \
artifacts list | wc -lEnrol endpoints
To collect from real endpoints, generate a client configuration and install the Velociraptor client (agent) on each host. The client config embeds this server's certificate authority, so endpoints connect to the frontend (port 8000) over pinned mutual TLS.
# Generate a client config for endpoints to use (writes to stdout):
sudo /usr/local/bin/velociraptor --config /etc/velociraptor/server.config.yaml \
config client > /tmp/client.config.yaml head -20 /tmp/client.config.yamlCopy client.config.yaml to each endpoint. Install the matching Velociraptor client package, which you can download from the GUI welcome screen under Build Linux/Windows client packages. Start the client with that config. Enrolled hosts then appear in the GUI search and become targets for hunts.
Manage the service
sudo systemctl status velociraptor --no-pager sudo systemctl restart velociraptor
sudo journalctl -u velociraptor -n 50 --no-pagerThe server configuration lives at /etc/velociraptor/server.config.yaml and the datastore at /var/lib/velociraptor. Back up both to preserve your server identity (CA) and your collected data.
Security recommendations
- Restrict the NSG. Expose port 443 only to your admin network and port 8000 only to the networks your endpoints live on. Limit SSH (22) to management ranges.
- Replace the self-signed TLS certificate. Place your own certificate and key in
/etc/nginx/ssl/velociraptor.crt/.keyand reload nginx to get a browser-trusted GUI. - Use per-analyst accounts. Rotate the GUI admin password and add an account for each analyst with an appropriate role (velociraptor user add <name> --role <role>), rather than sharing the SecureAnyCloud login.
- Keep the GUI private. It binds to
127.0.0.1:8889and is reachable only through the nginx TLS proxy.
Support and licensing
Velociraptor is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). The complete corresponding source is available from the upstream project at github.com/Velocidex/velociraptor. The AGPL-3.0 license text ships in the image and is also available from the upstream release.
Need Help?
SecureAnyCloud images come with 24/7 support and a 24-hour response SLA. Contact support through the Azure Marketplace listing or at secureanycloud.com.
Deploy on Azure
Launch Velociraptor 0.77 on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com