Discovery Proxies
Objective: Deploy a vScope Discovery Proxy and connect it to the main vScope to scan remote/segmented networks.
Prerequisites
Section titled “Prerequisites”- Port open from proxy → main vScope (default TCP 4445; configurable).
- Host near the target network:
- OS: Windows (full features). Linux, Docker, and Kubernetes proxies cannot use WMI; use WinRM/PowerShell for Windows targets.
- Windows/Linux host sizing: CPU: 2 cores; RAM: 6 GB (4 GB to vScope); Disk: ~10 GB.
- Main vScope address/hostname and chosen port.
- Network access from the proxy to the discovery targets on the ports required by each datasource.
Install the proxy
Section titled “Install the proxy”- Download the installer: latest-Setup.exe
- Run installer; set Host Address to the main vScope (IP/DNS).
- Set Port (default 4445) if different.
- Finish and start the service.
Change the host or port after installation
Rerun the Windows proxy installer and update Host Address or Port.
If you change the port, also set proxy.master.port=<port> in the main vScope’s config.ini and allow that port through the firewall. All proxies must use the port configured on the main vScope.
-
Download the package as
vscope-proxy-amd64.deb, then install it:Terminal window curl -fL -o vscope-proxy-amd64.deb https://dist.vscope.net/proxy/release/latest-amd64.debsudo apt install ./vscope-proxy-amd64.deb -
Edit
/etc/vscopeproxy/config.ini. ReplaceYOUR-VSCOPE-MASTERwith the main vScope hostname or IP, and change the port if needed:proxy.master.host=YOUR-VSCOPE-MASTERproxy.master.port=4445 -
Edit
/etc/default/vscopeproxy. Set the existingJAVA_OPTSline to allocate a 4 GB maximum Java heap, preserving any other custom JVM options:Terminal window JAVA_OPTS="$JAVA_OPTS -Xmx4g"This assumes the recommended 6 GB proxy host, leaving headroom for the OS and the JVM memory outside the heap.
-
Restart the proxy service to apply the settings:
Terminal window sudo service vscopeproxy restart -
Continue with Register in vScope, then run a discovery to verify the connection.
Change the host or port after installation
Edit proxy.master.host and proxy.master.port in /etc/vscopeproxy/config.ini, then run sudo service vscopeproxy restart.
If you change the port, also set proxy.master.port=<port> in the main vScope’s config.ini and allow that port through the firewall. All proxies must use the port configured on the main vScope.
You need a Docker host with access to the image registry. Commands below use a Bash-compatible shell.
-
Create a volume for the proxy’s identity, configuration, and logs:
Terminal window docker volume create vscope-proxy-data -
Set
-Dproxy.master.hostand-Dproxy.master.portinJAVA_OPTS. ReplaceYOUR-VSCOPE-MASTERwith the main vScope hostname or IP, and change4445if needed.Terminal window docker run -d \--pull always \--name vscope-proxy \--restart unless-stopped \--stop-timeout 330 \--memory 6g \-v vscope-proxy-data:/data \-e 'JAVA_OPTS=-Xmx4g -Dproxy.master.host=YOUR-VSCOPE-MASTER -Dproxy.master.port=4445' \europe-docker.pkg.dev/isl-vscope/release/vscope-proxy:latestAdjust the heap for your discovery workload. Keep the volume mounted at
/data. -
Check that the container is running:
Terminal window docker ps --filter name=vscope-proxyIf startup fails, inspect the container logs.
-
Continue with Register in vScope, then run a discovery to verify the connection.
Change the host or port after installation
Update -Dproxy.master.host or -Dproxy.master.port in the docker run command’s JAVA_OPTS, then recreate the container with the same data volume mounted at /data.
If you change the port, also set proxy.master.port=<port> in the main vScope’s config.ini and allow that port through the firewall. All proxies must use the port configured on the main vScope.
You need a cluster, kubectl access, and a default StorageClass that can provision a ReadWriteOnce volume. Nodes must be able to pull the image, and pods must be able to resolve and reach the main vScope and discovery targets.
-
Choose an existing namespace. The commands and manifest below use
default, matching the server installation guide; replace it throughout if needed:Terminal window kubectl get namespace defaultkubectl get storageclassCheck that a StorageClass is marked
(default). If your cluster has no default, or you need a different class, addstorageClassName: <your-storage-class>under the PVC’sspecin the manifest below. -
Save the following as
vscope-proxy.yaml. Set the master hostname and port inJAVA_OPTS, replacingYOUR-VSCOPE-MASTERand changing4445if needed.If the server was deployed using the server installation guide in the same namespace, use
vscope-serveras the master hostname. From another namespace, usevscope-server.<server-namespace>(for example,vscope-server.default). For a server outside the cluster, use its reachable hostname or IP. The proxy connects to TCP4445, not the server’s HTTP Ingress.apiVersion: v1kind: PersistentVolumeClaimmetadata:name: vscope-proxy-datanamespace: defaultspec:accessModes:- ReadWriteOnceresources:requests:storage: 10Gi---apiVersion: apps/v1kind: Deploymentmetadata:name: vscope-proxynamespace: defaultspec:replicas: 1strategy:type: Recreateselector:matchLabels:app: vscope-proxytemplate:metadata:labels:app: vscope-proxyspec:terminationGracePeriodSeconds: 330containers:- name: vscope-proxyimage: europe-docker.pkg.dev/isl-vscope/release/vscope-proxy:latestimagePullPolicy: Alwaysenv:- name: JAVA_OPTSvalue: >--Xmx4g-Dproxy.master.host=YOUR-VSCOPE-MASTER-Dproxy.master.port=4445resources:requests:cpu: "1"memory: 6Gilimits:memory: 6GivolumeMounts:- name: datamountPath: /datavolumes:- name: datapersistentVolumeClaim:claimName: vscope-proxy-dataKeep one replica and
Recreate. Reuse the PVC when upgrading. -
Apply the manifest:
Terminal window kubectl apply -f vscope-proxy.yaml -
Wait for the deployment and check its storage:
Terminal window kubectl -n default rollout status deployment/vscope-proxy --timeout=600skubectl -n default get pods -l app=vscope-proxykubectl -n default get pvc vscope-proxy-dataExpect a running pod and a PVC with status
Bound. If startup fails, see Check Kubernetes startup. -
Continue with Register in vScope, then run a discovery to verify the connection.
Change the host or port after installation
Update -Dproxy.master.host or -Dproxy.master.port in the manifest’s JAVA_OPTS, then apply the change:
kubectl apply -f vscope-proxy.yamlIf you change the port, also set proxy.master.port=<port> in the main vScope’s config.ini and allow that port through the firewall. All proxies must use the port configured on the main vScope.
Register in vScope
Section titled “Register in vScope”- In vScope, go to Discovery → Proxies → Available; click Refresh if needed.
- Approve the proxy; it moves to Approved. If it shows Pending, wait for first data to be sent and validated.
- (Optional) Rename and assign targets/ranges to the proxy; click Save.
Verify
Section titled “Verify”- Assign a target, an IP or a range to the proxy.
- Run discovery; open Log History or build a quick IP table to confirm assets are found via the proxy.
Troubleshooting
Section titled “Troubleshooting”- Proxy disconnected/pending: see detailed guide → Proxy not appearing or disconnected
- Pending status persists: ensure proxy reaches main vScope on the chosen port; check proxy log
C:\vScopeProxyData\log\debug.log(Windows) or/var/log/vscopeproxy/debug.log(Linux, path may vary). - Failed discovery results: assign correct credentials to targets; ensure target ports are open from the proxy.
Related
Section titled “Related”- Concept: Proxies
- Ports: Ports used by vScope
- FAQ: Discovery Proxy FAQ
- Troubleshooting: Proxy not appearing or disconnected