All apps · 0 apps
velociraptor
Docker app from GillBates' Repository
Overview
Readme
View on GitHubGitHub 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
/velociraptorto 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:
.deband.rpmpackages for amd64 and arm64 - macOS: repacked executables for amd64 and arm64
- Windows:
.exeand.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_PASSWORDon 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 setVELOX_START_SERVER_VERBOSE=true(adds-v). Remove it to suppress DEBUG. - Ports already in use? Map them as needed:
-p 443:8000and setVELOX_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.ymlruns 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 bumpingversions.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.ymlruns on tag pushes matchingv*and on manual dispatch. It:- Builds an amd64 image and runs
scripts/ci-image-validation.shagainst it (server starts, GUI responds, a repacked Linux client makes contact). - Only if validation passes, does a multi-arch (
linux/amd64,linux/arm64) buildx build and pushes to Docker Hub with provenance + SBOM attestations.
- Builds an amd64 image and runs
To cut a release:
Review and merge the PR from
upstream-check.Tag the merge commit with the value of
VELOX_VERSIONfromversions.env(optionally suffixed with-<IMAGE_REVISION>whenIMAGE_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 --tagsRequired 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.
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
xboarder56/velociraptor:latestRuntime 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
Container timezone, e.g. Etc/UTC or America/New_York.
- Target
- TZ
- Default
- Etc/UTC
Bootstrap admin username for the Velociraptor GUI. Change after first login.
- Target
- VELOX_DEFAULT_USER
- Default
- admin
Bootstrap admin password. Change immediately after first login!
- Target
- VELOX_DEFAULT_PASSWORD
- Default
- changeme
Role assigned to the bootstrap user (e.g. administrator, analyst, investigator).
- Target
- VELOX_DEFAULT_USER_ROLE
- Default
- administrator
Public hostname clients use to reach the server. Set to your Unraid IP or FQDN.
- Target
- VELOX_FRONTEND_HOSTNAME
- Default
- localhost
Public-facing port clients use to reach the server (built into client URL).
- Target
- VELOX_FRONTEND_PORT
- Default
- 8000
Scheme for client URL: https (recommended) or http.
- Target
- VELOX_FRONTEND_SERVER_SCHEME
- Default
- https
Full client URL override, e.g. https://ingest.example.com:8000/ — overrides Hostname/Port/Scheme if set.
- Target
- VELOX_FRONTEND_SERVER_URL
Public hostname for the admin GUI. Defaults to Frontend Hostname if not set.
- Target
- VELOX_GUI_HOSTNAME
- Default
- localhost
Public-facing port for the admin GUI.
- Target
- VELOX_GUI_PORT
- Default
- 8889
Scheme for GUI URL: https or http.
- Target
- VELOX_GUI_SCHEME
- Default
- https
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
Internal gRPC API port. Only change if you have a port conflict.
- Target
- VELOX_API_PORT
- Default
- 8001
Internal Prometheus metrics port. Only change if you have a port conflict.
- Target
- VELOX_MONITORING_PORT
- Default
- 8003
Set to true to enable verbose (-v) server logs (DEBUG level). Leave false for INFO only.
- Target
- VELOX_START_SERVER_VERBOSE
- Default
- false
Velociraptor frontend/client ingress port. Clients connect here.
- Target
- 8000
- Default
- 8000
Velociraptor API/gRPC gateway port. Restrict to trusted networks only.
- Target
- 8001
- Default
- 8001
Velociraptor Web GUI. Open https://[IP]:8889 in your browser.
- Target
- 8889
- Default
- 8889
Prometheus metrics endpoint. Restrict to monitoring network if not needed publicly.
- Target
- 8003
- Default
- 8003
Persistent data directory: config, keys, artifacts and repacked client bundles are all stored here.
- Target
- /velociraptor
- Default
- /mnt/user/appdata/velociraptor