vpsFocus
Русский Sign in Create account

What we install on your server — and how to verify it yourself

Any monitoring tool asks for a lot of trust. You give it SSH access to your server, it installs its own software there, and that software reads your logs and configs. The promise “we read, we don't change, your data stays with you” sounds good, but a promise is just words.

We wanted our promise to be something you can check. So the vpsFocus code is split into two parts: closed and open. Here's where the line runs, why open code alone isn't enough, and how to compare what's running on your server with what's published.

Where the line runs

vpsFocus has three parts:

The first two run on your computer and on our server. The third runs on your server, often as root and right next to your sites. That's the part we've opened in full: it's in the public repository github.com/zaevlad/vpsfocus-server.

Why not open everything? The app is what we earn from and what sets us apart, and its code does nothing to your server. The code that runs on your server, though, you have every right to read before installing it. That's a sensible line: everything that touches your machine is open.

What's in the open repository

Analytics is Umami, the database is PostgreSQL. We don't rebuild their official images, we only pin them by exact digest.

Why open code alone isn't enough

Say the code is open, you've read it and you like it. But what reaches your server isn't source code — it's ready-made files and built Docker images. How do you know the image your server downloaded was built from the code you read? That nobody added anything between the repository and your server — neither us, nor someone who might have broken into our computer?

That's the signing problem. Open projects usually answer it with “we built it from this code, trust us”. We solved it with two signatures, each with its own job.

Signing the installer files

Every version of the installer files is signed with our release key. What gets signed is the inventory — a list of every file in the version with its permissions and SHA-256 checksum. If a single byte of any file changes, the signature stops matching.

Build signing in GitHub Actions

Our Docker images — the agent and Caddy — aren't built by us on our own computer, but by GitHub Actions in the open repository. Every build gets a build provenance attestation: a record signed by GitHub itself, stating that the image with this digest was built by this workflow from this commit of this repository.

That changes the trust question. Before, you had to take our word for it. Now GitHub vouches for the “image ↔ code” link, and you can check it with one command — without our code and without us.

So that the build itself doesn't become the weak spot:

How the signatures fit together

The chain looks like this:

  1. The install screen in the app names the version of the installer files and links to its tag in the repository.
  2. The version's inventory is signed with our key and lists every file.
  3. In the configuration template, images are referenced not by name but by exact digest (@sha256:…).
  4. Each of those images has a GitHub attestation naming the commit it was built from.
  5. The source code in that commit matches the code in the version's tag.

Every link is checked automatically on release — in the same open repository, with results visible to everyone. A red cross on a tag would be seen by everyone, not just us.

How to verify it yourself

Everything below can be done without us. The exact commands are in the repository README.

The signature and files of a version. One command checks the signature and every file of the version:

git clone https://github.com/zaevlad/vpsfocus-server
cd vpsfocus-server
go run ./tools/verify -version 0.32.1

With the -archive flag it compares the archive the app downloads against the tag, file by file. You can also check the signature with the standard minisign tool, without trusting our check.

Where an image came from. Take an image digest from the version's template and ask GitHub where it came from:

gh attestation verify oci://ghcr.io/zaevlad/vpsfocus-agent@sha256:… \
  --repo zaevlad/vpsfocus-server

What's running on your server. On the server itself, this command shows the digests of the running images — they should match the ones in the version's template:

docker ps --filter name=vpsfocus --format '{{.Names}}  {{.Image}}'

What open code doesn't prove

To be honest about the limits:

License

The code is published under the Business Source License 1.1. You may read, check, modify and run it on your own servers and your clients' servers, including for a fee. You may not build a competing monitoring or analytics product on it. Four years after release, each version becomes Apache 2.0.

Found a vulnerability? Please report it privately through the form in the repository. We answer within 7 days.

In short

Download vpsFocus · What runs on your server