Your online safety and anonymity guaranteed by a trusted developer.
Website |
Reddit |
Twitter |
Telegram
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/.
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.
Note
For development, our team uses macOS and Linux. It may be possible that some commands not work on Windows, so if you are using Windows, we recommend using WSL or a virtual machine.
pnpm install
- 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" \
pnpm lint
pnpm test
pnpm dev
pnpm beta
pnpm release
Builds will be located in the build
directory
By default, you will have builds for all browsers:
- Chrome — manifest versions 3
- Firefox — manifest version 3
- Edge — manifest version 3
- Opera — manifest version 3
You can specify browser in arguments. See examples below:
pnpm dev chrome
pnpm release opera
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.
Before building crx
make sure you have built
the extension and also make sure you have added credentials:
certificate-beta.pem
- chrome crx beta certificatecertificate-release.pem
- chrome crx release certificate,
to the directory ./private/AdguardVPN
.
For testing purposes for crx: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 crx
, run:
pnpm crx:dev
pnpm crx:beta
pnpm crx:release
crx
will be located in the build/channel
directory
Where channel
is one of the following:
dev
(build/dev/chrome.crx
)beta
(build/beta/chrome.crx
)release
(build/release/chrome.crx
)
By default, you will have builds for:
- Chrome — manifest versions 3 (
chrome.crx
)
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
pnpm crx keygen ./private/AdguardVPN
If you need to build the BETA version:
-
To ensure that the extension is built in the same way, use the docker image:
docker run --rm -it \ -v $(pwd):/workspace \ -w /workspace \ --env-file .env \ adguard/node-ssh:22.14--0 \ /bin/sh -c " pnpm install && \ STAGE_ENV=prod \ pnpm beta firefox"
-
Compare the generated
build/beta/firefox.zip
file with the uploaded one.
If you need to build the RELEASE version:
-
To ensure that the extension is built in the same way, use the docker image:
docker run --rm -it \ -v $(pwd):/workspace \ -w /workspace \ --env-file .env \ adguard/node-ssh:22.14--0 \ /bin/sh -c " pnpm install && \ STAGE_ENV=prod \ pnpm release firefox"
-
Compare the generated
build/release/firefox.zip
file with the uploaded one.
- setup your project locales, directories in the file
tasks/locales.js
pnpm locales:upload
used to upload baseen
localepnpm locales:download
run to download and save all localespnpm locales:validate
used to validate localespnpm locales:validate --min
used to validate only major locales
After every update of proto scheme in the file src/background/connectivity/connectivity.proto
,
you have to run pnpm compile-proto
.
This command will update module src/background/connectivity/protobufCompiled.js
used to build messages
with appropriate scheme for websocket messaging.
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.
Browser | Version |
---|---|
Chromium Based Browsers | 109 |
Firefox | 115 |
Opera | 95 |