Share the local console on a team server
By default the Vulkro for Salesforce console runs on your own machine:
vulkro-sf serve starts a local web app, binds to loopback (127.0.0.1),
and opens your browser. Nothing leaves the machine.
You can also run one console on a shared server and let a small team
open it from their browsers. It is the same published vulkro-sf binary
and the same point-in-time, offline engine: it never sends your source,
metadata or findings anywhere. Set VULKRO_OFFLINE=1 on the server to stop
it making any outbound call at all.
This page is about sharing the local console. For per-user roles, single sign-on, scheduled scans of every org and an activity log, see Vulkro Cloud, or Vulkro Cloud on your own servers to run the full product on your own infrastructure.
The model
- Point-in-time, offline scanner. A scan reflects the code and (if you run the org passes) the org configuration at the moment it ran. There is no always-on agent and no background polling.
- One shared console, one access token. The server holds the projects, scans and triage decisions in a SQLite database in its data directory. Everyone who has the access token sees the same state. There are no per-user accounts.
- Org access stays with the
sfCLI. Live-org passes shell out to thesfCLI on the machine where they run. The console holds no Salesforce token of its own. See Live-org setup for the precise privacy contract. - No vendor round-trip. The console does not send scans to Vulkro. Running it on a server only moves where the binary runs.
Install the binary on the server
Use the same one-line installer as on a laptop (see Install):
curl -fsSL https://dist.vulkro.com/install-sf.sh | bash
vulkro-sf --version
Configure it
The console always requires an access token. On a laptop a new random token is minted on every start and printed in the console link. On a shared server, set your own, because a network bind is refused without it:
| Variable | Default | Purpose |
|---|---|---|
VULKRO_SERVE_TOKEN | A new random token per start | The access token. Required for any non-loopback bind. It is not printed: sign in with it at the console's sign-in page, or open <console address>/?token=<token>. The general vulkro serve console honours the same variable. |
VULKRO_SF_BIND | 127.0.0.1 | Bind address. Loopback keeps the console local-only. Set 0.0.0.0 to expose it on the network (then put a reverse proxy in front, below). |
VULKRO_SF_PORT | A free port the system picks | Pin a fixed port. The --port flag overrides it. |
VULKRO_SF_DATA_DIR | ~/.vulkro-sf/data | Directory for the SQLite database and on-disk state. Put it on a disk that is backed up. |
VULKRO_SERVE_ALLOWED_HOSTS | (none) | Comma-separated hosts (for example sf.internal:8443) whose Origin the console also accepts, for a console behind a reverse proxy that rewrites Host. |
A browser that presents the token gets an HttpOnly, SameSite=Strict
session cookie. Scripts send it as Authorization: Bearer <token>. A request
without the token gets HTTP 401, and a request sent by another web page gets
403. Rotating VULKRO_SERVE_TOKEN signs every browser out.
Run it
export VULKRO_SERVE_TOKEN="$(openssl rand -hex 24)" # keep it in your secret store
export VULKRO_SF_BIND=127.0.0.1 # the reverse proxy reaches it on loopback
export VULKRO_SF_PORT=8923
export VULKRO_SF_DATA_DIR=/var/lib/vulkro-sf
vulkro-sf serve --no-browser
To keep it running, start the same command from your service manager (for example a systemd unit) with those variables set, as a non-root user that owns the data directory.
Put a reverse proxy in front
Terminate TLS in a reverse proxy, not in the console:
- Keep the console on loopback (or an internal-only network).
- Run a reverse proxy (for example Caddy or nginx) that listens on
443, terminates TLS, can add your own SSO in front, and proxies to the console. - Publish only the proxy. If the proxy rewrites
Host, list the public host inVULKRO_SERVE_ALLOWED_HOSTS.
What this is not
- Not multi-user. Everyone with the token shares one project list and one triage queue. There is no per-user or per-team separation.
- Not a managed service. You run and patch the server. Upgrade the
binary with
vulkro-sf update(seevulkro-sf update) and restart the service.
For the single-developer workflow you need none of this: run vulkro-sf serve and use the console locally. See Install
and Your first scan.