A Node.js backend for managing WireGuard VPN, providing a simple REST API for VPN management without the complexity of traditional VPN setups.
Tunnel is a self-hosted VPN solution built with NestJS that lets you manage WireGuard interfaces, peers, and configurations through a simple REST API. It's designed to be undetectable by network censors, running as a lightweight service that can be deployed in any environment that supports Docker.
- WireGuard Management: Create and configure WireGuard interfaces
- Peer Management: Add, remove, and update peers
- Secure Key Management: Automatic private/public key generation and handling
- API-driven: Full REST API to manage your VPN programmatically
- Containerized: Ready to run in Docker with proper network capabilities
- Node.js v16+
- Docker
Using Docker (Recommended)
# Clone the repository
git clone https://github.com/ekalkutin/tunnel
# Start the development server
docker-compose -f docker-compose.dev.yml up- The service requires
NET_ADMINandSYS_MODULEcapabilities to manage network interfaces - You should secure the API with proper authentication in production
- WireGuard keys are stored in the configuration and should be protected