Aviso de afiliación — Esta guía enlaza a Contabo, el VPS donde corremos nuestro propio WireGuard autoalojado. Si contratas a través de nuestro enlace ganamos una comisión sin coste extra para ti. Cada comando de abajo está documentado a partir del proyecto oficial wg-easy y escrito para ser reproducible en tu propia máquina.
WireGuard es rápido y moderno, pero la instalación estándar son ficheros y línea de comandos: generar claves, editar wg0.conf a mano, ejecutar wg set por cada dispositivo, mover configuraciones de un lado a otro. Para un dispositivo, vale. Para una familia, varios portátiles y un par de móviles, se vuelve tedioso — y es en lo tedioso donde aparecen los errores (y las claves que se filtran). wg-easy resuelve justo eso: mantiene el WireGuard real debajo, intacto, y le acopla un panel web limpio. Añadir un cliente en dos clics, mostrar un QR para un móvil, ver quién está conectado y cuánto transfiere. Esta es la instalación completa de 2026, incluido el cambio de contraseña que hace tropezar a todo el que actualiza.
Qué es wg-easy realmente (y qué no)
wg-easy es un único contenedor Docker que ejecuta un servidor WireGuard y una pequeña aplicación web para gestionarlo. Lo clave de entender de entrada: no reemplaza ni reimplementa WireGuard. El túnel sigue siendo el mismo WireGuard del núcleo, con las mismas claves y el mismo protocolo en el cable. wg-easy es gestión, no una VPN nueva. Dos consecuencias:
- Sin penalización de velocidad. El rendimiento y la latencia son idénticos a una configuración escrita a mano, porque la ruta de datos nunca toca la aplicación web.
- La interfaz web es la superficie de ataque. El panel puede crear clientes, así que quien lo controla controla tu VPN. Proteger ese panel es toda la historia de seguridad (más abajo).
Lo que obtienes a cambio: una página de navegador que lista cada cliente, crear/desactivar/eliminar a un clic, un código QR por cliente para los móviles y un contador de transferencia en vivo por peer. Para dar de alta un puñado de dispositivos sin tocar la terminal, nada es más rápido.

Antes de empezar: el host que necesitas
wg-easy es un contenedor, así que necesitas un host Linux capaz de correr Docker y con una IP pública. Para una VPN a la que llegar desde cualquier sitio, eso significa un VPS pequeño — WireGuard es tan ligero que una instancia de 4–6 €/mes satura su puerto de red mucho antes de que la CPU se entere. Nosotros corremos el nuestro en Contabo por la relación precio/ancho de banda, y el procedimiento bare-metal está en nuestra guía de WireGuard autoalojado en Contabo por si quieres comparar con la vía manual.
Consigue un VPS Contabo para correr wg-easy →
En el host necesitas Docker y el plugin Compose instalados, el módulo de núcleo de WireGuard disponible (toda distro moderna, Linux 5.6+, lo trae), y poder abrir el UDP 51820 en tanto el cortafuegos del host como el grupo de seguridad de tu proveedor.
El fichero docker-compose
Este es el despliegue moderno de wg-easy. Sustituye WG_HOST por la IP pública o el nombre de host de tu servidor, y define una contraseña de administración fuerte (la siguiente sección explica el requisito de hash en v14+):
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
environment:
- WG_HOST=ip.publica.de.tu.servidor
- PASSWORD_HASH=$2a$12$SUSTITUYE_POR_TU_HASH_BCRYPT
- WG_DEFAULT_DNS=1.1.1.1
volumes:
- ./etc_wireguard:/etc/wireguard
ports:
- "51820:51820/udp" # datos WireGuard — abierto a Internet
- "51821:51821/tcp" # interfaz web — limítalo SOLO a TU IP
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Tres cosas hacen el trabajo real y son los puntos de fallo habituales:
cap_add: NET_ADMINpermite al contenedor gestionar la interfaz WireGuard. Sin ella, el contenedor arranca pero no puede levantar el túnel.sysctls: net.ipv4.ip_forward=1convierte la máquina en un router. Sin ello, el túnel se conecta y luego no enruta nada — el clásico «conectado pero sin Internet».volumespersiste claves y clientes en el host, para que undocker compose down && upno borre todos los dispositivos.
Levántalo con docker compose up -d, luego abre http://IP_DE_TU_SERVIDOR:51821 e inicia sesión.
El cambio de contraseña que rompe las actualizaciones
Este es el mayor escollo de 2026. El antiguo wg-easy usaba una variable de entorno PASSWORD en texto plano. Las versiones recientes (v14 y posteriores) eliminaron el PASSWORD en plano y ahora exigen un hash bcrypt en PASSWORD_HASH. Si copias la línea PASSWORD=secreto de un tutorial viejo a una imagen actual, el contenedor rechazará el inicio de sesión o no arrancará, y jurarás que la documentación está mal.
Genera el hash con la propia imagen para no pegar nunca una contraseña en plano en el historial del shell:
docker run --rm ghcr.io/wg-easy/wg-easy wgpw 'tu-contraseña-fuerte'
# imprime: PASSWORD_HASH=$2a$12$....
Copia el valor $2a$12$... completo en el fichero compose. Ten en cuenta que los caracteres $ deben escaparse (duplicarse como $$) si pones el hash en un fichero .env que Compose interpola — ese fallo de escape es la segunda queja más común tras el cambio de nombre de la variable.
Añade tu primer cliente
Dentro del panel, pulsa New Client, dale un nombre (p. ej. portatil, movil-pixel), y wg-easy genera el par de claves y una configuración lista. Para un ordenador, descarga el .conf e impórtalo en la aplicación WireGuard o las plantillas de configuración; para un móvil, pulsa el icono QR y escanéalo con la app móvil de WireGuard — sin teclear, sin transferir ficheros. El interruptor por cliente desactiva un dispositivo al instante sin borrarlo, que es la forma correcta de revocar un móvil perdido.
Blindar el panel de administración — hazlo ya, no después
La interfaz web puede crear clientes VPN, así que un panel expuesto y mal protegido es el peligro real de wg-easy. Tres capas, por orden de preferencia:
- Nunca publiques 51821 en Internet. En el cortafuegos de tu proveedor de VPS, deja abierto el UDP 51820 y mantén el TCP 51821 cerrado al mundo. Llega al panel solo desde tu propia IP, o — lo más limpio — conéctate primero a la VPN y abre el panel a través del túnel, para que el puerto de administración nunca dé a Internet.
- Usa una contraseña fuerte y hasheada. El requisito
PASSWORD_HASHexiste por esto. Trátalo como una contraseña de root. - Pon TLS por delante si debes alcanzarlo en remoto: un proxy inverso (Caddy, Traefik, nginx) terminando HTTPS con un certificado real, idealmente con lista de permitidos. HTTP en plano sobre un puerto público es la única configuración a evitar.
Una VPN autoalojada a la que cualquier transeúnte puede añadirse es peor que ninguna VPN. El panel son las llaves del reino — protégelo en consecuencia.
wg-easy frente a las alternativas
- vs PiVPN — PiVPN instala WireGuard directamente en el host y gestiona los peers desde la terminal (
pivpn add,pivpn -qr). Sin contenedor, sin interfaz web. Elige PiVPN para una máquina bare-metal ligera y scriptable; elige wg-easy cuando de verdad quieras un panel a clics y estadísticas en vivo. - vs una configuración a mano — Editar
wg0.conftú mismo es la opción más transparente y ligera, ideal para una máquina VPN de un solo propósito y la infraestructura como código. wg-easy cambia un poco de superficie extra (la app web) por una gestión de clientes rápida y sin CLI. - vs otras stacks autoalojadas — Si quieres un mesh (cada dispositivo hablando directamente, con la travesía de NAT gestionada por ti) en vez de un servidor clásico en estrella, wg-easy no tiene la forma adecuada; ese es el terreno de Tailscale/Headscale/NetBird, comparado en nuestra guía de la mejor VPN autoalojada.
wg-easy también convive perfectamente con otros contenedores, de ahí que combine de forma natural con una instalación de WireGuard en Docker más amplia.
Cuándo wg-easy es la elección correcta — y cuándo no
Usa wg-easy cuando das de alta a varias personas o dispositivos, quieres configurar el móvil por QR, te gusta ver el estado de conexión en vivo, o simplemente prefieres un panel a un fichero de configuración. Convierte «configurar un cliente VPN» de una tarea de CLI de cinco minutos en dos clics.
Sáltatelo cuando la máquina no hace más que servir uno o dos peers de WireGuard (una configuración a mano es más simple y tiene una pieza móvil menos), cuando no puedes mantener con seguridad el puerto de administración fuera de Internet, o cuando en realidad quieres un mesh y no un servidor. Para todos los demás, wg-easy es el camino honesto más rápido de un VPS nuevo a una VPN WireGuard funcional y manejable.
La limitación honesta
wg-easy hace WireGuard más fácil de gestionar, no más privado ni más seguro de lo que WireGuard ya es. Comparte el núcleo del host, corre con NET_ADMIN, y está tan blindado como el host y el panel de administración que pongas delante. No audita tus clientes, no impide por sí solo las fugas de DNS (configura WG_DEFAULT_DNS y verifica), y no te protege si dejas 51821 abierto. Trátalo como una capa de comodidad sobre el WireGuard real: despliégalo, endurece el host y el panel, mantén el puerto de datos público y el de administración privado — y tendrás una VPN autoalojada que de verdad puedes operar para todo un hogar sin vivir en la terminal.
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · 200+ Mbps garantizados
Aloja tu VPN en tu propio VPS → ContaboAcceso root completo · IPv4 pública · elige tu región→

