Skip to content

AdguardTeam/AdGuardVPNExtension

Repository files navigation

AdGuard VPN extension

Fast, flexible and reliable VPN extension for browsers

Your online safety and anonymity guaranteed by a trusted developer.

Website | Reddit | Twitter | Telegram

Latest release Latest release Latest release

AdGuard VPN serves to protect your online privacy, encrypt your connection, hide your IP address and websites you visit from anyone (including your ISP). Cutting-edge technologies and multiple customization options will help conceal your location and ensure anonymous browsing on the web.

To get more information and to download AdGuard VPN visit our website https://adguard-vpn.com/.

Feedback options

We appreciate your feedback and always welcome both constructive criticism and new ideas.

You can use GitHub to report a bug or to submit a feature request. To do so, go to this page, click the New issue button and choose between creating a bug report or feature request.

Development

Requirements

Install local dependencies

yarn install

Manage environment variables

  • Rename .env.example to .env and fill it with required config data
  • Also, you can provide environment variables through command line like this:
STAGE_ENV=test \
VPN_API_URL="vpn_api_url" \
AUTH_API_URL="auth_api_url" \
FORWARDER_DOMAIN="forwarder_domain" \

Linting

yarn lint

Tests

yarn test

Build

Dev version

yarn dev

Beta version

yarn beta

Release version

yarn release

Builds will be located in the build directory

By default, you will have builds for all browsers:

  • Chrome — both manifest versions 2 and 3
  • Firefox — manifest version 3
  • Edge — manifest version 2
  • Opera — manifest version 2

You can specify browser in arguments. See examples below:

yarn dev chrome
yarn beta chrome-mv2
yarn release opera

Update resources

Before releasing new versions do not forget to update exclusions-services data, which will be used for migration if remote data was not received from the servers.

Artifact builds

Before building artifacts make sure you have build the extension and also make sure you have added credentials:

  • certificate-beta.pem - chrome crx beta certificate
  • certificate-release.pem - chrome crx release certificate
  • mozilla_credentials.json - encrypted credentials - temporary not needed,

to the directory ./private/AdguardVPN.

For testing purposes for artifacts:dev command credentials taken from ./tests/certificate-test.pem file.

WARNING: DO NOT USE TEST CREDENTIALS FOR PRODUCTION BUILDS, BECAUSE THEY ARE AVAILABLE IN PUBLIC.

If you want to generate your own credentials you can go to How to generate credentials for crx builds for more details

To build artifacts, run:

  • CREDENTIALS_PASSWORD=<password> yarn artifacts:dev
  • CREDENTIALS_PASSWORD=<password> yarn artifacts:beta
  • CREDENTIALS_PASSWORD=<password> yarn artifacts:release

Builds will be located in the build directory

By default, you will have builds for:

  • Chrome — manifest versions 3 (chrome.crx)
  • Firefox — manifest version 3 (firefox.xpi) - temporarily disabled

How to generate credentials for crx builds

You can use Crx CLI keygen to generate credentials for crx builds, see the example below:

# Command will generate `key.pem` credential in the `./private/AdguardVPN` directory
yarn crx keygen ./private/AdguardVPN

Special building instructions for Firefox reviewers

  1. Ensure you have installed Node.js and yarn, see Requirements.

  2. To build the Release version, run:

    yarn release firefox
  3. Navigate to the build directory:

    cd ./build/release
  4. Compare the generated firefox.zip file with the uploaded one.

Localization

  • setup your project locales, directories in the file tasks/locales.js
  • yarn locales:upload used to upload base en locale
  • yarn locales:download run to download and save all locales
  • yarn locales:validate used to validate locales
  • yarn locales:validate --min used to validate only major locales

Proto scheme update

After every update of proto scheme in the file src/background/connectivity/connectivity.proto, you have to run yarn compile-proto. This command will update module src/background/connectivity/protobufCompiled.js used to build messages with appropriate scheme for websocket messaging.

Acknowledgments

This software wouldn't have been possible without:

For a full list of all npm packages in use, please take a look at package.json file.

Minimum supported browser versions

Browser Version
Chromium Based Browsers MV3 109
Chromium Based Browsers MV2 66
Firefox 91.1