Squashed commit of the following:
commit 53948bab8841c8278906cc17d6e306a2547fe908
Author: Sergey Fionov <sfionov@adguard.com>
Date: Sat Aug 2 22:53:36 2025 +0300
Use httpbin.agrd.dev instead of example.com
commit c467b86f3d680e61fcb799dcd65f010d932b7331
Author: Sergey Fionov <sfionov@adguard.com>
Date: Sat Aug 2 22:25:28 2025 +0300
Update images
commit b555b242a124f30595a30d18c3bf5a78349d9819
Author: Sergey Fionov <sfionov@adguard.com>
Date: Sat Aug 2 22:22:05 2025 +0300
Changes for intrumented tests
|
||
|---|---|---|
| .github/workflows | ||
| bamboo-specs | ||
| bench | ||
| endpoint | ||
| lib | ||
| macros | ||
| scripts | ||
| tools | ||
| .dockerignore | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| rust-toolchain.toml | ||
AdGuard VPN Endpoint
Free, fast, open-source, and secure self-hosted VPN server.
Table of Contents
Introduction
Welcome to the AdGuard VPN Endpoint repository! This comprehensive and efficient solution allows you to set up and manage your own VPN server. The repository includes the following components:
-
VPN Endpoint Library: A highly efficient, versatile, and reliable Rust library that implements the VPN endpoint.
-
VPN Endpoint Binary: A standalone application that makes it easy for any user to set up their own VPN server.
-
Setup-Wizard Tool: A user-friendly tool that simplifies the configuration process by guiding you through the necessary steps.
Why AdGuard VPN?
-
AdGuard Protocol: AdGuard VPN utilizes the AdGuard protocol, which is compatible with HTTP/1.1, HTTP/2, and QUIC. By mimicking regular network traffic, it becomes more difficult for government regulators to detect and block.
-
Flexible Traffic Tunneling: AdGuard VPN can tunnel TCP, UDP, and ICMP traffic to and from the client.
-
Platform Compatibility: It is compatible with Linux and macOS systems.
-
Companion Client Repository: An accompanying client is available in a separate repository, allowing you to connect to your VPN server seamlessly.
Getting Started
Prerequisites
Before proceeding, ensure that you have Rust installed on your system. Visit the Rust installation page for detailed instructions. The minimum supported version of the Rust compiler is 1.67. This project is compatible with Linux and macOS systems.
Building
To install AdGuard VPN Endpoint, follow these steps:
-
Clone the repository:
git clone https://github.com/AdguardTeam/VpnLibsEndpoint.git cd VpnLibsEndpoint -
Build the binaries using Cargo:
cargo build --bins --releaseThis command will generate the executables in the
target/releasedirectory.
Usage
Quick Start
To quickly configure and launch the VPN endpoint, run the following commands:
make endpoint/setup # You can skip it if you have already configured the endpoint earlier
make endpoint/run
These commands perform the following actions:
-
Build the wizard and endpoint binaries.
-
Configure the endpoint to listen to all network interfaces for TCP/UDP packets on port number 443.
-
Generate self-signed certificate/private key pair in the current directory under
certs/. -
Store all the required settings in
vpn.tomlandhosts.tomlfiles. -
Start the endpoint.
Alternatively, you can run the endpoint in a docker container:
docker build -t vpn-endpoint:latest . # build an image
docker run -it vpn-endpoint:latest --name vpn-endpoint # create docker container and start it in an interactive mode
docker start -i vpn-endpoint # if you need to start your vpn endpoint again
The generated certificate (by default, it resides in certs/cert.pem or /VpnLibsEndpoint/certs/cert.pem inside your docker volume) should be delivered to the client-side in some way. See the Companion Client Repository for
details.
Customized Configuration
For a more customized configuration experience, run the following commands:
make endpoint/build-wizard # If you skipped the previous chapter
cargo run --bin setup_wizard # Launches a dialogue session allowing you to tweak the settings
cargo run --bin vpn_endpoint -- <lib-settings> <hosts-settings> # File names depend on the previous step
For additional details about the binary, refer to the endpoint/README.md file.
The settings files created by the Setup Wizard contain almost all available settings, including descriptions. You can freely customize them if you are confident in your understanding of the configuration.
Companion Client Repository
To connect to your newly set-up VPN server, you need a client. The companion client's code can be found in this repository.
Roadmap
While our VPN currently supports tunneling TCP/UDP/ICMP traffic, we plan to add support for peer-to-peer communication between clients. Stay tuned for this feature in upcoming releases.
License
This project is licensed under the Apache 2.0 License. See LICENSE.md for details.