velociraptor

velociraptor

Docker app from GillBates' Repository

Overview

Velociraptor DFIR server running in Docker (xboarder56 fork), adapted for Unraid. Multi-arch image: linux/amd64 and linux/arm64. Mapped services: - Frontend / client ingress: 8000/tcp - API / gRPC gateway: 8001/tcp - Web GUI (HTTPS): 8889/tcp - Prometheus metrics: 8003/tcp Persistent path: - /mnt/user/appdata/velociraptor -> /velociraptor (config, keys, artifacts, repacked client bundles — all stored here) First run: The container auto-generates server.config.yaml and client.config.yaml and repacks Linux (.deb/.rpm amd64+arm64), macOS (amd64+arm64) and Windows (.exe/.msi) clients into /velociraptor/client_bundles/. A small build banner (version, arch, base image, git commit, build date) is printed to the log on every start. Login: Open https://[Unraid-IP]:8889, accept the self-signed TLS certificate and log in with the credentials set via VELOX_DEFAULT_USER / VELOX_DEFAULT_PASSWORD. Change them immediately after first login! Security: - TLS is self-signed by default; rotate keys/certificates from the Velociraptor GUI. - Keep API port 8001 and metrics port 8003 restricted to trusted networks only. - VELOX_DEFAULT_USER/PASSWORD are only used for the initial bootstrap user. Troubleshooting: docker logs -f velociraptor docker exec -it velociraptor sh Source: https://github.com/Xboarder56/velociraptor-docker Fork of: https://github.com/weslambert/velociraptor-docker (Wes Lambert)

GitHub Repository: github.com/Xboarder56/velociraptor-docker


Velociraptor (Server) in Docker

Run the Velocidex Velociraptor server in a container with sensible defaults, HTTPS, and prebuilt client repacks.

  • Architectures: linux/amd64, linux/arm64
  • Ports: 8000 (client/ingest), 8889 (GUI), 8001 (gRPC API), 8003 (Prometheus)
  • Data dir: mount /velociraptor to persist config, keys, artifacts, and repacked clients
  • TLS: self-signed cert generated on first run (you can rotate later)

On start, the container prints a small build banner (version, arch, base image, git commit, build date) so you can confirm what you pulled.


Quick Start

docker run -it --rm \
  -p 8000:8000 -p 8889:8889 -p 8001:8001 -p 8003:8003 \
  -v $PWD/velodata:/velociraptor \
  xboarder56/velociraptor:latest

Open https://localhost:8889 (accept the self-signed cert) and log in with the bootstrap credentials below (you should change them right away).


Runtime Configuration (Environment Variables)

These variables are read at container start—no image rebuilds needed.

Variable Purpose Default
VELOX_DEFAULT_USER Initial GUI admin username admin
VELOX_DEFAULT_PASSWORD Initial GUI admin password changeme
VELOX_DEFAULT_USER_ROLE Role for the bootstrap user administrator
File System
VELOX_FILESTORE_DIRECTORY Root of Velociraptor filestore (collections, uploads) /velociraptor/file_store
VELOX_CLIENT_DIR Directory where repacked clients are stored /velociraptor/client_bundles}
Client/Frontend Configuration
VELOX_FRONTEND_HOSTNAME Public hostname for clients (builds client URL) localhost
VELOX_FRONTEND_PORT Public-facing port for clients (builds client URL) 8000
VELOX_FRONTEND_SERVER_SCHEME Public scheme (https/http) for client URLs https
VELOX_FRONTEND_SERVER_URL Full override for the client URL (e.g., https://ingest.example.com/) derived from components
VELOX_SERVER_URL (legacy) Alias for VELOX_FRONTEND_SERVER_URL. Use new variable. n/a
GUI/Admin Configuration
VELOX_GUI_HOSTNAME Public hostname for the admin GUI (builds GUI URL) localhost (or client host)
VELOX_GUI_PORT Public-facing port for the admin GUI (builds GUI URL) 8889
VELOX_GUI_SCHEME Public scheme (http or https for GUI URL https
VELOX_GUI_URL Full override for the GUI URL (e.g., https://admin.example.com/app/index.html) derived from components
Internal Ports
VELOX_API_PORT gRPC API port 8001
VELOX_MONITORING_PORT Metrics port 8003
Logging
VELOX_START_SERVER_VERBOSE true to enable verbose (-v) server logs (off)
VELOX_LOG_DIR Where component logs write inside container .
VELOX_DEBUG_DISABLED Disable DEBUG in component logs true

Persistent paths (mount a volume):

  • /velociraptor/server.config.yaml — server config (auto-generated)
  • /velociraptor/client.config.yaml — client config
  • /velociraptor/client_bundles/ — repacked client binaries (.deb/.rpm/.exe/.msi)

Common Run Examples

1) Run quietly (INFO mode)

This overrides the default, which is to run with verbose (DEBUG) logs.

docker run -it --rm \
  -p 8000:8000 -p 8889:8889 -p 8001:8001 -p 8003:8003 \
  -v $PWD/velodata:/velociraptor \
  -e VELOX_DEFAULT_USER=admin -e VELOX_DEFAULT_PASSWORD='S3cure!' \
  -e VELOX_START_SERVER_VERBOSE=false \
  xboarder56/velociraptor:latest

2) Set the public URL clients should use

docker run -it --rm \
  -e VELOX_FRONTEND_HOSTNAME=velociraptor.example.com \
  -e VELOX_FRONTEND_PORT=443 \
  -e VELOX_FRONTEND_SERVER_SCHEME=https \
  -p 443:8000 -p 8889:8889 \
  -v $PWD/velodata:/velociraptor \
  xboarder56/velociraptor:latest

3) Use different public URLs for Client and GUI

docker run -it --rm \
  -e VELOX_FRONTEND_SERVER_URL=https://ingest.example.com:8000/ \
  -e VELOX_GUI_URL=https://admin.example.com:8889/ \
  -p 8000:8000 -p 8889:8889 \
  -v $PWD/velodata:/velociraptor \
  xboarder56/velociraptor:latest

Docker Compose

services:
  velociraptor:
    image: xboarder56/velociraptor:latest
    restart: unless-stopped
    environment:
      VELOX_DEFAULT_USER: admin
      VELOX_DEFAULT_PASSWORD: "S3cure!"
      VELOX_FRONTEND_HOSTNAME: velociraptor.example.com
      VELOX_START_SERVER_VERBOSE: "false"
    ports:
      - "8000:8000"   # client/ingest
      - "8889:8889"   # GUI
      - "8001:8001"   # gRPC API
      - "8003:8003"   # Metrics
    volumes:
      - ./velodata:/velociraptor

What to Expect on First Run

  • The entrypoint generates a secure server.config.yaml and a client.config.yaml.
  • Clients for Linux (amd64 + arm64), macOS (amd64 + arm64), and Windows (exe + msi) are repacked into /velociraptor/client_bundles/ with your server URL.
  • You’ll see logs like:
    • GUI is ready to handle TLS requests on https://localhost:8889/
    • Frontend is ready to handle client TLS requests at https://localhost:8000/

Client Binaries

After startup, check ./velodata/client_bundles/ for repacked binaries:

  • Linux: .deb and .rpm packages for amd64 and arm64
  • macOS: repacked executables for amd64 and arm64
  • Windows: .exe and .msi

If a specific upstream client binary isn’t available, the repack step is skipped (you’ll see a log message).


Security Notes

  • Change the default credentials via VELOX_USER / VELOX_PASSWORD on first run.
  • TLS is self-signed by default; rotate keys/certificates as needed from the server.
  • Expose GUI/API only where appropriate; consider a reverse proxy or firewall rules.

Troubleshooting

  • Seeing [DEBUG] FlowStorageManager housekeeping run?
    You likely set VELOX_START_SERVER_VERBOSE=true (adds -v). Remove it to suppress DEBUG.
  • Ports already in use? Map them as needed: -p 443:8000 and set VELOX_FRONTEND_PORT=443.

Tags

  • :latest — most recent successful build
  • :<velociraptor-version> — e.g. :0.76.5. Floats to the latest re-release for that upstream patch.
  • :<minor> — e.g. :0.76. Floats across patch releases within that minor.
  • :sha-<short> — e.g. :sha-abc1234. Commit-pinned reproducible reference.
  • Multi-arch manifests are published for amd64 and arm64

Build & Release Flow

This repo uses two GitHub Actions workflows:

  • upstream-check.yml runs daily. It polls the Velocidex release feed and, if it sees a newer release or if upstream re-published binaries for the current version (with new sha256s), opens a PR bumping versions.env + binaries.lock. For platforms upstream hasn't published yet for the latest release, the workflow walks back through prior releases and pins those assets to the most recent release that does include them.
  • build-publish.yml runs on tag pushes matching v* and on manual dispatch. It:
    1. Builds an amd64 image and runs scripts/ci-image-validation.sh against it (server starts, GUI responds, a repacked Linux client makes contact).
    2. Only if validation passes, does a multi-arch (linux/amd64, linux/arm64) buildx build and pushes to Docker Hub with provenance + SBOM attestations.

To cut a release:

  1. Review and merge the PR from upstream-check.

  2. Tag the merge commit with the value of VELOX_VERSION from versions.env (optionally suffixed with -<IMAGE_REVISION> when IMAGE_REVISION > 1):

    git tag v0.76.8        # first revision
    # or
    git tag v0.76.8-2      # subsequent re-release of the same upstream version
    git push --tags
    
  3. Required Docker Hub secrets on the repo: DOCKERHUB_USERNAME, DOCKERHUB_TOKEN.


About This Fork

This repository is a fork of weslambert/velociraptor-docker, originally created by Wes Lambert.
It aims to maintain compatibility with the latest Velocidex Velociraptor releases while providing additional configuration options and deployment improvements for Docker environments.

All credit for the foundational work goes to Wes Lambert — this fork primarily adds quality-of-life enhancements, updated configurations, and maintenance updates.


Maintained by: Xboarder56
Upstream project: Velocidex Velociraptor

Install Velociraptor on Unraid in a few clicks.

Find Velociraptor in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Velociraptor Review the template variables and paths Click Install

Download Statistics

1,156
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
xboarder56/velociraptor:latest
Last Updated2026-05-26
First Seen2026-06-07

Runtime arguments

Web UI
https://[IP]:[PORT:8889]
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped --security-opt=no-new-privileges:true

Template configuration

TimezoneVariable

Container timezone, e.g. Etc/UTC or America/New_York.

Target
TZ
Default
Etc/UTC
Admin UsernameVariable

Bootstrap admin username for the Velociraptor GUI. Change after first login.

Target
VELOX_DEFAULT_USER
Default
admin
Admin PasswordVariable

Bootstrap admin password. Change immediately after first login!

Target
VELOX_DEFAULT_PASSWORD
Default
changeme
Admin RoleVariable

Role assigned to the bootstrap user (e.g. administrator, analyst, investigator).

Target
VELOX_DEFAULT_USER_ROLE
Default
administrator
Frontend HostnameVariable

Public hostname clients use to reach the server. Set to your Unraid IP or FQDN.

Target
VELOX_FRONTEND_HOSTNAME
Default
localhost
Frontend PortVariable

Public-facing port clients use to reach the server (built into client URL).

Target
VELOX_FRONTEND_PORT
Default
8000
Frontend SchemeVariable

Scheme for client URL: https (recommended) or http.

Target
VELOX_FRONTEND_SERVER_SCHEME
Default
https
Frontend Server URL (override)Variable

Full client URL override, e.g. https://ingest.example.com:8000/ — overrides Hostname/Port/Scheme if set.

Target
VELOX_FRONTEND_SERVER_URL
GUI HostnameVariable

Public hostname for the admin GUI. Defaults to Frontend Hostname if not set.

Target
VELOX_GUI_HOSTNAME
Default
localhost
GUI PortVariable

Public-facing port for the admin GUI.

Target
VELOX_GUI_PORT
Default
8889
GUI SchemeVariable

Scheme for GUI URL: https or http.

Target
VELOX_GUI_SCHEME
Default
https
GUI URL (override)Variable

Full GUI URL override, e.g. https://admin.example.com:8889/app/index.html — overrides GUI Hostname/Port/Scheme if set.

Target
VELOX_GUI_URL
API / gRPC Port (internal)Variable

Internal gRPC API port. Only change if you have a port conflict.

Target
VELOX_API_PORT
Default
8001
Prometheus Metrics Port (internal)Variable

Internal Prometheus metrics port. Only change if you have a port conflict.

Target
VELOX_MONITORING_PORT
Default
8003
Verbose Server LogsVariable

Set to true to enable verbose (-v) server logs (DEBUG level). Leave false for INFO only.

Target
VELOX_START_SERVER_VERBOSE
Default
false
Frontend / Client IngressPorttcp

Velociraptor frontend/client ingress port. Clients connect here.

Target
8000
Default
8000
API / gRPC GatewayPorttcp

Velociraptor API/gRPC gateway port. Restrict to trusted networks only.

Target
8001
Default
8001
Web GUI (HTTPS)Porttcp

Velociraptor Web GUI. Open https://[IP]:8889 in your browser.

Target
8889
Default
8889
Prometheus MetricsPorttcp

Prometheus metrics endpoint. Restrict to monitoring network if not needed publicly.

Target
8003
Default
8003
Velociraptor DataPathrw

Persistent data directory: config, keys, artifacts and repacked client bundles are all stored here.

Target
/velociraptor
Default
/mnt/user/appdata/velociraptor