Skip to content

Multi-architecture Docker images for AdGuard VPN CLI with automated builds. Supports amd64, arm64, and armv7 platforms with daily CI/CD pipeline via GitHub Actions. Available on Docker Hub and GitHub Container Registry.

Notifications You must be signed in to change notification settings

supersunho/docker-adguardvpn-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

45 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Contributors Forks Stargazers Issues Docker Pulls


๐Ÿš€ Docker AdGuard VPN CLI

Multi-architecture AdGuard VPN CLI in Docker containers
Universal compatibility โ€ข Automated builds โ€ข Production ready

Report Bug ยท Request Feature

๐ŸŒŸ About The Project

This project provides AdGuard VPN CLI in Docker containers with universal multi-architecture support. Built with automated CI/CD pipelines, it offers seamless VPN connectivity across all major platforms in a containerized environment.

โœจ Key Features

  • ๐Ÿ—๏ธ Multi-Architecture Support: Native builds for amd64, arm64, and armv7
  • ๐Ÿค– Automated Builds: Daily builds tracking latest AdGuard VPN CLI releases
  • ๐Ÿณ Dual Registry: Available on both Docker Hub and GitHub Container Registry
  • ๐Ÿ”’ Kill Switch: Built-in network protection when VPN disconnects
  • ๐ŸŒ SOCKS5 Proxy: Optional proxy server functionality
  • โšก Production Ready: Optimized for performance and reliability

๐Ÿ—๏ธ Built With

  • Base: Ubuntu 24.04 LTS for maximum compatibility
  • Build System: Docker Buildx with GitHub Actions
  • Architecture: Multi-stage builds with optimized caching
  • Security: Non-root execution and health checks

(back to top)

๐Ÿš€ Getting Started

Quick Start (Universal)

One command works on any architecture:

# Pull the latest image (auto-detects your architecture)
docker pull supersunho/adguardvpn-cli:latest

# Run with environment variables
docker run -d \
  --name adguard-vpn \
  --cap-add NET_ADMIN \
  --device /dev/net/tun \
  -e ADGUARD_USERNAME="your_username" \
  -e ADGUARD_PASSWORD="your_password" \
  -e ADGUARD_CONNECTION_LOCATION="US" \
  supersunho/adguardvpn-cli:latest

๐Ÿณ Available Images

Docker Hub (Recommended)

# Universal images (auto-detect architecture)
supersunho/adguardvpn-cli:latest                   # Latest version
supersunho/adguardvpn-cli:1.2.37                   # Specific version

# Architecture-specific images
supersunho/adguardvpn-cli:latest-amd64              # Intel/AMD (x86_64)
supersunho/adguardvpn-cli:latest-arm64              # Apple Silicon/ARM64
supersunho/adguardvpn-cli:latest-armv7              # Raspberry Pi/ARMv7

GitHub Container Registry (Alternative)

# Universal images
ghcr.io/supersunho/docker-adguardvpn-cli:latest     # Latest version
ghcr.io/supersunho/docker-adguardvpn-cli:1.2.37     # Specific version

# Architecture-specific images
ghcr.io/supersunho/docker-adguardvpn-cli:latest-amd64
ghcr.io/supersunho/docker-adguardvpn-cli:latest-arm64
ghcr.io/supersunho/docker-adguardvpn-cli:latest-armv7

(back to top)

๐Ÿ’ก Usage Examples

AdGuard VPN CLI + qBittorrent

Create a .env file with your credentials (see Environment Variables):

ADGUARD_USERNAME=your_username
ADGUARD_PASSWORD=your_password
ADGUARD_CONNECTION_LOCATION=US
ADGUARD_CONNECTION_TYPE=TUN
ADGUARD_USE_KILL_SWITCH=true

Then use this docker-compose.yml:

version: "3.8"
services:
  adguard-vpn-cli:
    image: supersunho/adguardvpn-cli:latest
  container_name: adguard-vpn-cli
  restart: unless-stopped
  env_file: .env
  cap_add:
    - NET_ADMIN
  devices:
    - /dev/net/tun
  ports:
    - "6089:6089"       # qBittorrent WebUI
    - "6881:6881"       # BitTorrent TCP
    - "6881:6881/udp"   # BitTorrent UDP
  healthcheck:
    test: ["CMD", "ping", "-c", "1", "www.google.com"]
  interval: 60s
  timeout: 10s
  retries: 3

qbittorrent:
  image: linuxserver/qbittorrent:latest
  container_name: qbittorrent
  depends_on:
    - adguard-vpn-cli
  network_mode: service:adguard-vpn-cli
  environment:
    - PUID=1000
    - PGID=1000
    - TZ=Asia/Seoul
  volumes:
    - ./config:/config
    - ./downloads:/downloads
  restart: unless-stopped

Standalone VPN with SOCKS5 Proxy

version: "3.8"
services:
  adguard-vpn:
  image: supersunho/adguardvpn-cli:latest
  container_name: adguard-vpn
  restart: unless-stopped
  cap_add:
    - NET_ADMIN
  devices:
    - /dev/net/tun
  ports:
    - "1080:1080"       # SOCKS5 proxy
  environment:
    - ADGUARD_USERNAME=your_username
    - ADGUARD_PASSWORD=your_password
    - ADGUARD_CONNECTION_LOCATION=JP
    - ADGUARD_CONNECTION_TYPE=SOCKS5
    - ADGUARD_SOCKS5_HOST=0.0.0.0
    - ADGUARD_SOCKS5_PORT=1080
    - ADGUARD_USE_KILL_SWITCH=true

(back to top)

โš™๏ธ Environment Variables

๐Ÿ” Authentication (Required)

Variable Description Default Example
ADGUARD_USERNAME Your AdGuard VPN username "username" "john.doe@example.com"
ADGUARD_PASSWORD Your AdGuard VPN password "password" "your_secure_password"

๐ŸŒ Connection Settings

Variable Description Default Allowed Values
ADGUARD_CONNECTION_LOCATION VPN server location "JP" See Available Locations
ADGUARD_CONNECTION_TYPE VPN operating mode "TUN" TUN / SOCKS5

๐Ÿ”’ SOCKS5 Proxy Settings

Variable Description Default Notes
ADGUARD_SOCKS5_USERNAME SOCKS5 proxy username "username" Required for non-localhost access
ADGUARD_SOCKS5_PASSWORD SOCKS5 proxy password "password" Required for non-localhost access
ADGUARD_SOCKS5_HOST SOCKS5 listen address "127.0.0.1" Use 0.0.0.0 for external access
ADGUARD_SOCKS5_PORT SOCKS5 listen port 1080 Any available port

๐Ÿ›ก๏ธ Security & Network

Variable Description Default Allowed Values
ADGUARD_USE_KILL_SWITCH Enable kill switch protection true true / false
ADGUARD_USE_KILL_SWITCH_CHECK_INTERVAL Kill switch check interval (seconds) 30 10 or higher recommended
ADGUARD_SET_SYSTEM_DNS Set system DNS servers false true / false
ADGUARD_USE_CUSTOM_DNS Use custom DNS servers true true / false
ADGUARD_CUSTOM_DNS Custom DNS server "1.1.1.1" Any valid DNS server

๐Ÿ“Š Advanced Settings

Variable Description Default Allowed Values
ADGUARD_USE_QUIC Enable QUIC protocol true true / false
ADGUARD_SEND_REPORTS Send crash reports false true / false

Important

SOCKS5 Security: When setting ADGUARD_SOCKS5_HOST to non-localhost addresses (e.g., 0.0.0.0), always protect the proxy with username and password authentication.

Tip

Kill Switch Interval: Very short check intervals (< 10 seconds) can cause unnecessary resource usage. 30 seconds is recommended for most use cases.

(back to top)

๐ŸŒ Available Locations

Choose any City, Country, or ISO Code for ADGUARD_CONNECTION_LOCATION:

๐Ÿ—บ๏ธ Complete Location List (Click to expand)
ISO Country City
๐Ÿ‡บ๐Ÿ‡ธ US United States Seattle, Silicon Valley, Phoenix, Las Vegas, Denver, Dallas, Los Angeles, Atlanta, New York, Miami, Boston, Chicago
๐Ÿ‡ฉ๐Ÿ‡ช DE Germany Berlin, Frankfurt
๐Ÿ‡ฌ๐Ÿ‡ง GB United Kingdom Manchester, London
๐Ÿ‡ซ๐Ÿ‡ท FR France Paris, Marseille
๐Ÿ‡ช๐Ÿ‡ธ ES Spain Barcelona, Madrid
๐Ÿ‡ฎ๐Ÿ‡น IT Italy Rome, Milan, Palermo
๐Ÿ‡จ๐Ÿ‡ฆ CA Canada Vancouver, Montreal, Toronto
๐Ÿ‡ฏ๐Ÿ‡ต JP Japan Tokyo
๐Ÿ‡ฐ๐Ÿ‡ท KR South Korea Seoul
๐Ÿ‡ฆ๐Ÿ‡บ AU Australia Sydney
๐Ÿ‡ธ๐Ÿ‡ฌ SG Singapore Singapore
๐Ÿ‡ญ๐Ÿ‡ฐ HK Hong Kong Hong Kong
๐Ÿ‡น๐Ÿ‡ผ TW Taiwan Taipei
๐Ÿ‡ณ๐Ÿ‡ฑ NL Netherlands Amsterdam
๐Ÿ‡จ๐Ÿ‡ญ CH Switzerland Zurich
๐Ÿ‡ฆ๐Ÿ‡น AT Austria Vienna
๐Ÿ‡ง๐Ÿ‡ช BE Belgium Brussels
๐Ÿ‡ฉ๐Ÿ‡ฐ DK Denmark Copenhagen
๐Ÿ‡ซ๐Ÿ‡ฎ FI Finland Helsinki
๐Ÿ‡ณ๐Ÿ‡ด NO Norway Oslo
๐Ÿ‡ธ๐Ÿ‡ช SE Sweden Stockholm
๐Ÿ‡ต๐Ÿ‡ฑ PL Poland Warsaw
๐Ÿ‡จ๐Ÿ‡ฟ CZ Czechia Prague
๐Ÿ‡ญ๐Ÿ‡บ HU Hungary Budapest
๐Ÿ‡ท๐Ÿ‡ด RO Romania Bucharest
๐Ÿ‡ง๐Ÿ‡ฌ BG Bulgaria Sofia
๐Ÿ‡ฌ๐Ÿ‡ท GR Greece Athens
๐Ÿ‡ช๐Ÿ‡ช EE Estonia Tallinn
๐Ÿ‡ฑ๐Ÿ‡ป LV Latvia Riga
๐Ÿ‡ฑ๐Ÿ‡น LT Lithuania Vilnius
๐Ÿ‡ฑ๐Ÿ‡บ LU Luxembourg Luxembourg
๐Ÿ‡ฎ๐Ÿ‡ช IE Ireland Dublin
๐Ÿ‡ต๐Ÿ‡น PT Portugal Lisbon
๐Ÿ‡ท๐Ÿ‡บ RU Russia Moscow
๐Ÿ‡บ๐Ÿ‡ฆ UA Ukraine Kyiv
๐Ÿ‡ฐ๐Ÿ‡ฟ KZ Kazakhstan Astana
๐Ÿ‡ฒ๐Ÿ‡ฉ MD Moldova Chiศ™inฤƒu
๐Ÿ‡ท๐Ÿ‡ธ RS Serbia Belgrade
๐Ÿ‡ญ๐Ÿ‡ท HR Croatia Zagreb
๐Ÿ‡ธ๐Ÿ‡ฐ SK Slovakia Bratislava
๐Ÿ‡จ๐Ÿ‡พ CY Cyprus Nicosia
๐Ÿ‡ฎ๐Ÿ‡ธ IS Iceland Reykjavik
๐Ÿ‡น๐Ÿ‡ท TR Turkey Istanbul
๐Ÿ‡ฎ๐Ÿ‡ฑ IL Israel Tel Aviv
๐Ÿ‡ฆ๐Ÿ‡ช AE UAE Dubai
๐Ÿ‡ช๐Ÿ‡ฌ EG Egypt Cairo
๐Ÿ‡ฎ๐Ÿ‡ท IR Iran Tehran
๐Ÿ‡ฎ๐Ÿ‡ณ IN India Mumbai
๐Ÿ‡จ๐Ÿ‡ณ CN China Shanghai
๐Ÿ‡น๐Ÿ‡ญ TH Thailand Bangkok
๐Ÿ‡ป๐Ÿ‡ณ VN Vietnam Hanoi
๐Ÿ‡ต๐Ÿ‡ญ PH Philippines Manila
๐Ÿ‡ฎ๐Ÿ‡ฉ ID Indonesia Jakarta
๐Ÿ‡ฐ๐Ÿ‡ญ KH Cambodia Phnom Penh
๐Ÿ‡ณ๐Ÿ‡ต NP Nepal Kathmandu
๐Ÿ‡ณ๐Ÿ‡ฟ NZ New Zealand Auckland
๐Ÿ‡ฟ๐Ÿ‡ฆ ZA South Africa Johannesburg
๐Ÿ‡ณ๐Ÿ‡ฌ NG Nigeria Lagos
๐Ÿ‡ง๐Ÿ‡ท BR Brazil Sรฃo Paulo
๐Ÿ‡ฆ๐Ÿ‡ท AR Argentina Buenos Aires
๐Ÿ‡จ๐Ÿ‡ฑ CL Chile Santiago
๐Ÿ‡จ๐Ÿ‡ด CO Colombia Bogotรก
๐Ÿ‡ต๐Ÿ‡ช PE Peru Lima
๐Ÿ‡ฒ๐Ÿ‡ฝ MX Mexico Mexico City

๐ŸŽฏ Quick Examples

ADGUARD_CONNECTION_LOCATION="US"              # Any US server
ADGUARD_CONNECTION_LOCATION="Japan"           # Any Japan server
ADGUARD_CONNECTION_LOCATION="London"          # London specifically
ADGUARD_CONNECTION_LOCATION="Silicon Valley" # Silicon Valley specifically

(back to top)

๐Ÿ—๏ธ Multi-Architecture Support

This project provides native performance across all major architectures:

๐Ÿ–ฅ๏ธ Supported Platforms

Architecture Platform Examples Performance
amd64 Intel/AMD desktops, cloud instances โšก Excellent
arm64 Apple Silicon (M1/M2/M3), ARM servers โšก Native
armv7 Raspberry Pi 3/4, IoT devices โœ… Optimized

๐Ÿš€ Architecture Detection

Docker automatically selects the optimal image for your platform:

# Same command works everywhere
docker pull supersunho/adguardvpn-cli:latest

# Results:
# Intel/AMD (x86_64)    โ†’ pulls amd64 image
# Apple Silicon (M1/M2) โ†’ pulls arm64 image
# Raspberry Pi          โ†’ pulls armv7 image

๐Ÿ”ง Manual Architecture Selection

If needed, you can explicitly specify an architecture:

# Intel/AMD optimized
docker pull supersunho/adguardvpn-cli:latest-amd64

# Apple Silicon optimized
docker pull supersunho/adguardvpn-cli:latest-arm64

# Raspberry Pi optimized
docker pull supersunho/adguardvpn-cli:latest-armv7

(back to top)

๐Ÿค– Automated Builds

๐Ÿ“… Build Schedule

  • Daily Builds: Automatically track latest AdGuard VPN CLI releases
  • Manual Triggers: On-demand builds via GitHub Actions
  • Multi-Registry: Simultaneous publishing to Docker Hub and GHCR

๐Ÿ” Build Verification

Every build includes comprehensive testing:

  • โœ… Binary verification across all architectures
  • โœ… Version compatibility checks
  • โœ… Container health validation
  • โœ… Multi-platform manifest creation

๐Ÿ“Š Build Status

Check the latest build status: GitHub Actions

(back to top)

๐Ÿ”ง Troubleshooting

Common Issues

VPN connection fails
  1. Check credentials: Ensure ADGUARD_USERNAME and ADGUARD_PASSWORD are correct
  2. Verify location: Use a valid location from the Available Locations list
  3. Check permissions: Container needs NET_ADMIN capability and /dev/net/tun access
docker logs adguard-vpn-cli
Kill switch not working
  1. Enable kill switch: Set ADGUARD_USE_KILL_SWITCH=true
  2. Check interval: Ensure ADGUARD_USE_KILL_SWITCH_CHECK_INTERVAL is reasonable (โ‰ฅ10 seconds)
  3. Network configuration: Verify TUN interface is available
SOCKS5 proxy not accessible
  1. Host binding: Set ADGUARD_SOCKS5_HOST=0.0.0.0 for external access
  2. Authentication: Configure ADGUARD_SOCKS5_USERNAME and ADGUARD_SOCKS5_PASSWORD
  3. Port mapping: Ensure Docker port mapping matches ADGUARD_SOCKS5_PORT

๐Ÿฉบ Health Checking

# Check container health
docker inspect adguard-vpn-cli --format='{{.State.Health.Status}}'

# View detailed logs
docker logs --follow adguard-vpn-cli

# Test VPN connectivity
docker exec adguard-vpn-cli curl -s ipinfo.io/ip

(back to top)

๐Ÿค Contributing

Contributions make the open source community amazing! Any contributions are greatly appreciated.

Development Setup

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ› Reporting Issues

Found a bug? Please check existing issues first, then create a new one with:

  • Environment details (OS, Docker version, architecture)
  • Steps to reproduce
  • Expected vs actual behavior
  • Relevant logs

(back to top)

๐Ÿ™ Acknowledgments

(back to top)

About

Multi-architecture Docker images for AdGuard VPN CLI with automated builds. Supports amd64, arm64, and armv7 platforms with daily CI/CD pipeline via GitHub Actions. Available on Docker Hub and GitHub Container Registry.

Topics

Resources

Stars

Watchers

Forks

Packages