Installation Guide¶
This guide covers detailed installation instructions for VPN Exit Controller on various platforms.
System Requirements¶
Minimum Requirements¶
- CPU: 2 cores
- RAM: 4GB
- Storage: 20GB SSD
- Network: 100 Mbps connection
- OS: Ubuntu 22.04 LTS or compatible
Recommended Requirements¶
- CPU: 4+ cores
- RAM: 8GB+
- Storage: 50GB+ SSD
- Network: 1 Gbps connection
- OS: Ubuntu 22.04 LTS
Supported Platforms¶
| Platform | Version | Support Level |
|---|---|---|
| Ubuntu | 22.04 LTS | ✅ Full Support |
| Ubuntu | 20.04 LTS | ✅ Full Support |
| Debian | 11/12 | ✅ Full Support |
| RHEL/CentOS | 8/9 | ⚠️ Community Support |
| Proxmox LXC | 7.x/8.x | ✅ Full Support |
| Docker | 20.10+ | ✅ Full Support |
Installation Methods¶
Method 1: Automated Installation (Recommended)¶
The installer will: - ✅ Check system requirements - ✅ Install dependencies - ✅ Configure services - ✅ Set up systemd units - ✅ Create necessary directories
Method 2: Manual Installation¶
Step 1: Install System Dependencies¶
Step 2: Install Tailscale¶
# Add Tailscale repository
curl -fsSL https://tailscale.com/install.sh | sh
# Start Tailscale
sudo systemctl enable --now tailscaled
Step 3: Clone Repository¶
# Clone from Gitea
git clone https://gitea.rbnk.uk/admin/vpn-controller.git /opt/vpn-exit-controller
cd /opt/vpn-exit-controller
Step 4: Python Environment Setup¶
# Create virtual environment
python3 -m venv venv
# Activate environment
source venv/bin/activate
# Install Python packages
pip install --upgrade pip
pip install -r requirements.txt
Step 5: Configure Environment¶
Required environment variables:
# NordVPN Service Credentials
NORDVPN_USER=your_service_username
NORDVPN_PASS=your_service_password
# Tailscale Configuration
TAILSCALE_AUTH_KEY=tskey-auth-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxx
# API Authentication
API_USERNAME=admin
API_PASSWORD=strong_password_here
# Cloudflare (for DNS management)
CF_API_TOKEN=your_cloudflare_api_token
# Redis Configuration
REDIS_HOST=localhost
REDIS_PORT=6379
Step 6: Create Systemd Service¶
# Create service file
sudo tee /etc/systemd/system/vpn-controller.service << EOF
[Unit]
Description=VPN Exit Controller API
After=network.target redis.service docker.service
Wants=redis.service docker.service
[Service]
Type=exec
User=root
WorkingDirectory=/opt/vpn-exit-controller
Environment="PATH=/opt/vpn-exit-controller/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/opt/vpn-exit-controller/venv/bin/python -m uvicorn api.main:app --host 0.0.0.0 --port 8080
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable --now vpn-controller
Method 3: Docker Installation¶
Using Docker Compose¶
# Create docker-compose.yml
cat > docker-compose.yml << EOF
version: '3.8'
services:
redis:
image: redis:alpine
restart: always
ports:
- "6379:6379"
volumes:
- redis-data:/data
vpn-controller:
build: .
restart: always
ports:
- "8080:8080"
environment:
- REDIS_HOST=redis
env_file:
- .env
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./configs:/app/configs
depends_on:
- redis
volumes:
redis-data:
EOF
# Start services
docker-compose up -d
Post-Installation Setup¶
1. Verify Installation¶
# Check service status
sudo systemctl status vpn-controller
# Test API endpoint
curl http://localhost:8080/api/health -u admin:your_password
2. Configure Firewall¶
3. Set Up SSL Certificates¶
# Using Certbot
sudo certbot --nginx -d vpn-api.yourdomain.com
# Or using Traefik (automatic)
cd traefik && docker-compose up -d
4. Configure DNS Records¶
Add these records to your domain:
| Type | Name | Value | Proxy |
|---|---|---|---|
| A | vpn-api | YOUR_SERVER_IP | ❌ |
| A | proxy-us | YOUR_SERVER_IP | ✅ |
| A | proxy-uk | YOUR_SERVER_IP | ✅ |
| A | proxy-jp | YOUR_SERVER_IP | ✅ |
Troubleshooting Installation¶
Common Issues
Docker Permission Denied
Port Already in Use
Python Version Issues
Uninstallation¶
To completely remove VPN Exit Controller:
# Stop services
sudo systemctl stop vpn-controller
sudo systemctl disable vpn-controller
# Remove files
sudo rm -rf /opt/vpn-exit-controller
sudo rm /etc/systemd/system/vpn-controller.service
# Remove Docker containers
docker stop $(docker ps -a -q --filter name=vpn-)
docker rm $(docker ps -a -q --filter name=vpn-)
# Clean up (optional)
sudo apt remove --purge docker.io docker-compose
Next Steps¶
-
Quick Start
Start using VPN Exit Controller
-
Configuration
Configure advanced settings
-
Security
Harden your installation
Need Help?
If you encounter issues during installation, check our Troubleshooting Guide or open an issue.