Self-Hosted · WireGuard · Docker

Your VPN,
Your Server

Deploy your own WireGuard VPN infrastructure with Docker. Connect securely from anywhere using our simple CLI client. No subscriptions, no third parties, complete control.

WireGuardDockerGoMySQL
BitVPN Shield

Why BitVPN?

A modern, self-hosted VPN solution built on WireGuard protocol

WireGuard Protocol

Built on the modern WireGuard protocol - faster, simpler, and more secure than OpenVPN or IPSec.

Docker Ready

Deploy with a single docker-compose command. Spin up multiple server locations in minutes.

Simple CLI

Intuitive command-line client. Connect, disconnect, and switch servers with simple commands.

Client-Side Keys

WireGuard keys generated locally. Your private key never leaves your device.

Multi-Server

Deploy VPN servers in multiple locations. Users can choose and switch between them.

Session-Based

Temporary 24-hour sessions with automatic cleanup. No persistent device configs on server.

Load Balanced

Built-in Nginx load balancer for API traffic. VPN traffic goes direct to servers.

Zero Logs

Your server, your rules. No third-party logging or tracking. Complete privacy.

Quick Start

Get your VPN infrastructure running in minutes

1. Deploy Server

Set up your VPN infrastructure

# Download and extract BitVPN server
cd bitvpn-server
# Configure environment
cp .env.example .env
nano .env
# Start the stack
docker-compose up -d

The docker-compose includes VPN servers for multiple locations (India, UK, Japan, US), MySQL database, and Nginx load balancer.

2. Install CLI

Connect from any device

# Build the CLI
cd client
go build -o bit-vpn ./cmd/bitvpn
# Authenticate
./bit-vpn auth
# Connect to VPN
./bit-vpn connect india

Requires Go 1.24+ and WireGuard tools. The CLI handles key generation, session management, and WireGuard configuration automatically.

CLI Commands

bit-vpn auth

Login or register

bit-vpn servers

List VPN locations

bit-vpn connect

Connect to VPN

bit-vpn disconnect

Disconnect VPN

bit-vpn status

Check connection

Architecture

Session-based VPN with client-side key generation

┌─────────────────────────────────────────────────────────────────┐ │ BitVPN Architecture │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ │ │ │ Client │ │ │ │ (CLI) │ │ │ └────┬─────┘ │ │ │ │ │ ├──► API (auth, sessions) ──► Nginx LB ──┬──► VPN India │ │ │ ├──► VPN UK │ │ │ ├──► VPN Japan │ │ │ └──► VPN US │ │ │ │ │ └──► WireGuard (UDP) ─────────────────────► Direct to │ │ Selected │ │ Server │ │ │ └─────────────────────────────────────────────────────────────────┘

API Traffic

Authentication and session management routed through Nginx load balancer

VPN Traffic

WireGuard UDP packets go directly to the selected server endpoint

Sessions

24-hour sessions with max 5 concurrent per user, auto-cleanup on expiry