/sentinel-dvpn-desktop

Sentinel dVPN for macOS, Windows & Linux

Primary LanguageJavaScriptMIT LicenseMIT

Sentinel dVPN

Project setup for developers

Overview

1. Install WireGuard and Sentinel CLI

It uses two rest servers which are included in sentinel-cli. Run the script to install dependencies:

sudo sh scripts/linux/install-dev-dependencies

There is an auto-launching daemon. It may be necessary to restart a system.

2. Install Node.js

Node.js must be 14.17.6 LTS or later. Download.

4. Install Vue CLI

CLI must be v4. Download.

5. Install npm dependencies

yarn install
# OR
npm install

Development

Compiles and hot-reloads for development

yarn electron:serve

Production

Compiles and minifies for production

yarn electron:build

The build will be placed in /dist_electron. There will be the unpacked application and a bundled executable file for your system.

Folder structure

├── dist_electron/
│ ├── bundled/..  # where webpack outputs compiled files
│ ├── linux-unpacked/..  # unpacked Electron app (main app and supporting files)
│ ├── Sentinel dVPN-[version].deb  # installer for Electron app
│ ├── index.js  # compiled background file used for electron:serve
├── bin/linux/ # additional application binaries
│ ├── sentinelcli-dvpn-desktop # cli-client
├── build/ # build resources directory
│ ├── icons/.. # shortcuts
├── public/..  # Files placed here will be available through __static or process.env.BASE_URL
├── scripts/.. # scripts to install or remove additional binaries and daemons
├── src/
│ ├── background.js  # electron entry file (for Electron's main process)
│ ├── main.js  # the app's entry file (for Electron's render process)
│ └── ...

Troubleshooting

connect ECONNREFUSED 127.0.0.1:10000

The app uses two rest servers from sentinel-cli. The problem is the app uses the hard coded address to connect to the servers. If the host is not available the app won't work. Maybe it'll recognize an available host dynamically in the future.

The first server is a keyring handler. It's launched and closed together with the app. The host 127.0.0.1 is hard coded for KeyApi.js and must be available. The port value is taken from ~/.config/Sentinel\ dVPN/config.json keyringRestServerPort. You can change it manually and restart the app.

There is a command how to run the server manually if the app doesn't launch it by itself.

sentinelcli-dvpn-desktop start --home ${HOME}/.sentinelcli-dvpn-desktop --listen 127.0.0.1:10000 --with-keyring

The second server is a connection service. It's used as a daemon and is installed with the app and started with a system. The host and the port 127.0.0.1:12000 are hard coded for DvpnApi.js and must be available. The daemon is described in scripts/linux/sentinelcli-dvpn.service. You can change it, but you'll have to rebuild the app! You can change the daemon script and reinstall it. Then change a port value in src/main/rest/dvpn.js. Then rebuild the app.

There is a command how to run the server manually if the daemon doesn't work.

sentinelcli-dvpn-desktop start --home ${HOME}/.sentinelcli-dvpn-desktop --listen 127.0.0.1:12000 --tty --with-service

key with name desktop_dvpn_key_name already added

The easiest way is to reinstall the app. Or you can remove folder ~/.config/Sentinel\ dVPN, ~/.sentinelcli-dvpn-desktop and kill all sentinelcli-dvpn-desktop processes.