Home

Awesome

<p align="center"> <img src="docs/header.png" alt="defguard"> </p>

Defguard desktop client

Desktop client for managing WireGuard VPN connections (any WireGuard server and defguard instances).

defguard desktop client

Features

To learn more about the system see our documentation.

Development

Tauri requirements

Make sure to install prerequisites from tauri.

Proto submodule

Make sure you have cloned, and up to date, proto submodule in src-tauri/proto

Protoc compiler

Make sure you have protoc available.

Install pnpm and node deps

pnpm install

Sqlx and local database file

To work with sqlx on a local db file, you'll have to set DATABASE_URL env variable. It's best to set it to absolute path since pnpm tauri dev runs with weird paths.

Init the file with:

export DATABASE_URL=sqlite://<full-path-to-project-dir>/dev.db`
sqlx db create
sqlx migrate run --source src-tauri/migrations/

Then keep the $DATABASE_URL set during development (use direnv etc.)

Dev server command

pnpm tauri dev

Build command

pnpm tauri build

Built packages are available after in src-tauri/target/release/bundle.

Windows

Remove default-run line from [package] section in Cargo.toml to build the project.

Built and sponsored by

<p align="center"> <a href="https://teonite.com/services/rust/" target="_blank"><img src="https://drive.google.com/uc?export=view&id=1z0fxSsZztoaeVWxHw2MbPbuOHMe3OsqN" alt="build by teonite" /></a> </p>

Legal

WireGuard® is registered trademarks of Jason A. Donenfeld.

Known issues

Failed to bundle project

pnpm tauri build may fail with error: Error failed to bundle project: error running appimage.sh. To fix this set the NO_STRIP environment variable:

NO_STRIP=1 pnpm tauri build

Blank screen

The app launches but the window is blank. Set the WEBKIT_DISABLE_DMABUF_RENDERER environment variable:

WEBKIT_DISABLE_DMABUF_RENDERER=1 defguard-client

Failed to run pnpm tauri dev

pnpm tauri dev command may result in the following error:

Error [ERR_REQUIRE_ESM]: require() of ES Module /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/path-type@5.0.0/node_modules/path-type/index.js from /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/read-pkg@3.0.0/node_modules/read-pkg/index.js not supported.
Instead change the require of /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/path-type@5.0.0/node_modules/path-type/index.js in /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/read-pkg@3.0.0/node_modules/read-pkg/index.js to a dynamic import() which is available in all CommonJS modules.
    at TracingChannel.traceSync (node:diagnostics_channel:315:14)
    at Object.<anonymous> (/home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/read-pkg@3.0.0/node_modules/read-pkg/index.js:4:18) {
  code: 'ERR_REQUIRE_ESM'
}

Node.js v22.7.0
 ELIFECYCLE  Command failed with exit code 1.
       Error The "beforeDevCommand" terminated with a non-zero status code.
 ELIFECYCLE  Command failed with exit code 1.

To fix this remove node_modules and rerun pnpm install.