Por qué autoalojar WireGuard en un VPS
Las VPN comerciales agrupan a miles de usuarios en las mismas direcciones IP, a menudo conservan registros y limitan el ancho de banda. Al desplegar WireGuard en su propio VPS, obtiene una dirección IP de salida dedicada, un caudal garantizado por su plan y una política de logs que define usted mismo. WireGuard funciona en UDP sobre un único puerto, se integra directamente en el núcleo de Linux y negocia una conexión en una fracción del tiempo de OpenVPN. Para un desarrollador o una agencia, es también la forma más limpia de acceder a servicios internos (base de datos, panel de administración, monitorización) sin exponerlos públicamente: se enlazan únicamente a la interfaz de la VPN.
Beneficios concretos de un WireGuard autoalojado
- IP de salida dedicada y estable, ideal para poner en lista blanca accesos API o back-offices.
- Cifrado ChaCha20-Poly1305 moderno con una superficie de ataque mínima (4000 líneas de código).
- Velocidades cercanas a las nativas y reconexión casi instantánea tras un corte de red (roaming).
- Acceso privado a sus servicios internos enlazándolos a la subred de la VPN (10.0.0.0/24) en lugar de a 0.0.0.0.
- Ningún registro de actividad de terceros: usted controla por completo la conservación de los datos.
- Coste fijo y previsible, independiente del número de dispositivos conectados.
Requisitos para este despliegue
WireGuard es extremadamente ligero: un VPS con 1 vCPU y 1 GB de RAM basta de sobra para una decena de clientes, ya que el factor limitante es el ancho de banda y no la CPU. Prevea Docker y Docker Compose instalados (o el paquete nativo wireguard-tools), un núcleo Linux reciente (5.6+ integra WireGuard de forma nativa) y la apertura de un puerto UDP, por convención el 51820. Un nombre de dominio que apunte a su VPS (un registro A vpn.midominio.com) es recomendable para distribuir las configuraciones de los clientes, pero la IP pública por sí sola también funciona.
Desplegar WireGuard en un contenedor
Activar el forwarding IP en el VPS
El servidor debe enrutar el tráfico del túnel hacia Internet. Añada
net.ipv4.ip_forward=1en/etc/sysctl.confy aplique consudo sysctl -p. Sin esto, los clientes se conectan pero no tienen ningún acceso de salida.Lanzar el contenedor wg-easy
El proyecto
wg-easyproporciona WireGuard más una interfaz web de gestión de los pares. En undocker-compose.yml, definaWG_HOST=vpn.midominio.com, una contraseña de administrador y exponga51820/udpasí como51821/tcppara la interfaz. Arranque condocker compose up -d.Abrir el puerto UDP en el firewall
Autorice el tráfico entrante en el puerto del túnel:
sudo ufw allow 51820/udp. Restrinja en cambio el acceso a la interfaz de administración (51821) únicamente a su IP, o colóquela detrás de la VPN una vez conectado el primer cliente.Proteger la interfaz de administración con SSL
Coloque un reverse proxy (Caddy o Traefik) delante del puerto
51821para servir la interfaz por HTTPS envpn.midominio.comcon un certificado Let's Encrypt automático. No deje nunca el panel de administración accesible por HTTP en claro en Internet.Crear un par e importar la configuración
Desde la interfaz, añada un cliente: wg-easy genera un par de claves y un código QR. Escanéelo con la aplicación WireGuard para móvil, o descargue el archivo
.confparawg-quick up. El cliente queda operativo de inmediato.Verificar el túnel
Una vez conectado, compruebe su IP pública de salida (debe ser la del VPS) y el estado del handshake en el servidor con
docker exec wg-easy wg show. Un valor delatest handshakereciente confirma que el túnel está activo.
Para convertir su VPN en una pasarela de acceso a los servicios internos sin exponerlo todo, autorice en el AllowedIPs del cliente únicamente la subred de la VPN (por ejemplo 10.8.0.0/24) en lugar de 0.0.0.0/0. Obtiene así un túnel «split»: solo el tráfico hacia sus servicios privados pasa por el VPS, el resto de su navegación sale por su conexión local. Combínelo con un kill-switch mediante PostUp/PostDown para evitar cualquier fuga si el túnel cae.