wg-easy v15 (2026): instalación con Docker Compose y panel blindado

Instala wg-easy v15 con Docker Compose: el fichero actual, el asistente que sustituye a PASSWORD_HASH, la migración v14, el 2FA y un panel fuera de Internet.

Por Eric GerardFundador · VPNSmith - Especialista en VPN self-host y VPS GDPR

Actualizado 15 min de lectura15 min

Enlaces de afiliado: podemos cobrar una comisión, sin coste extra. Método

Generar mi docker-composeLeer la guía

fig. 01 / self-host-vpnencrypted tunnelUDP 51820DEVICE10.8.0.2SERVER10.8.0.1INTERNETNATAllowedIPs = 0.0.0.0/0, ::/0ListenPort = 51820 (server)
fig. 01 / self-host-vpn

Aviso de afiliación - Esta guía enlaza a Contabo, el proveedor de VPS que toma como ejemplo. 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. El enlace de Ultahost que proponemos como segundo proveedor es un enlace de afiliado en las mismas condiciones.

wg-easy es una imagen Docker gratuita que ejecuta WireGuard con un panel de administración web en tu propio servidor: añades dispositivos, descargas sus configuraciones y muestras códigos QR desde el navegador en lugar de editar wg0.conf. La versión 15 es la actual; necesita un VPS con el puerto UDP 51820 abierto. Esta guía usa un Cloud VPS de Contabo como servidor de ejemplo.

¿Aún no has elegido el servidor? Nuestra clasificación de los VPS más baratos para WireGuard compara lo que cada proveedor cobra de verdad por un servidor usable.

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.

Consejo: si el túnel no conecta, la causa casi siempre es el puerto. Mira nuestra guía sobre el puerto por defecto de WireGuard (UDP 51820) y cómo abrirlo, redirigirlo o cambiarlo.

Sin copiar y pegar: el generador docker-compose de wg-easy, gratuito, escribe el docker-compose.yml de la v15 para tu instalación en el navegador: panel de administración solo en localhost o en HTTPS en tu propio dominio con Caddy, y un primer arranque desatendido opcional.

Genera aquí tu docker-compose.yml de wg-easy v15

Indica la dirección del servidor y cómo accedes al panel: obtienes el archivo compose, el Caddyfile si hace falta y los comandos de instalación.

01Describe tu servidor

Todo se genera en tu navegador. Nada de lo que escribes, contraseña incluida, se envía a nuestros servidores.

La dirección a la que se conectan los clientes WireGuard.

¿Cómo accederás al panel?

Un registro A de este nombre debe apuntar al servidor, con los puertos 80 y 443 abiertos.

Sin instalación desatendida, abre el panel tras el primer arranque: el asistente pide la cuenta de administrador y después el host y el puerto. Introduce el mismo puerto UDP que arriba.

02Copia los archivos

docker-compose.yml
# wg-easy v15 - generated on vpnsmith.com/en/tools/wg-easy-compose-generator
# Host: vpn.example.com - WireGuard port: 51820/udp - panel: https://wg.example.com

volumes:
  etc_wireguard:
  caddy_data:
  caddy_config:

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy
    environment:
      - PORT=80
      - TRUSTED_PROXIES=10.42.42.43,fdcc:ad94:bacf:61a3::2b
    networks:
      wg:
        ipv4_address: 10.42.42.42
        ipv6_address: fdcc:ad94:bacf:61a3::2a
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"   # WireGuard: the only port clients need
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1

  caddy:
    image: caddy:2-alpine
    container_name: caddy
    ports:
      - "80:80/tcp"
      - "443:443/tcp"
      - "443:443/udp"
    networks:
      wg:
        ipv4_address: 10.42.42.43
        ipv6_address: fdcc:ad94:bacf:61a3::2b
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
    restart: unless-stopped

networks:
  wg:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 10.42.42.0/24
        - subnet: fdcc:ad94:bacf:61a3::/64
Caddyfile
wg.example.com {
	reverse_proxy wg-easy:80
}

03Ejecuta los comandos de instalación

install.sh
# 1. Cortafuegos: primero SSH, luego el puerto de WireGuard
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enable
# Ojo: los puertos publicados por Docker saltan ufw. Ábrelos/ciérralos también en el cortafuegos del proveedor.

# 2. Crea la carpeta y pega el o los archivos generados
sudo mkdir -p /etc/docker/containers/wg-easy
cd /etc/docker/containers/wg-easy
sudo nano docker-compose.yml
sudo nano Caddyfile

# 3. Arranca wg-easy
sudo docker compose up -d
# Sigue los registros (Ctrl+C para salir)
sudo docker compose logs -f wg-easy

# 4. Abre el panel: https://wg.example.com

Este archivo necesita un servidor con IP pública

Contabo Cloud VPS 4 (4 vCPU, 8 GB de RAM, IPv4 dedicada, tráfico ilimitado): 5,50 € al mes con permanencia de 24 meses (precio revisado el 17/10/2026), todo lo que necesita wg-easy.

Enlace de afiliado: cobramos una comisión sin coste adicional para ti.

¿Tarjeta rechazada o prefieres un proveedor de EE. UU.? El VPS Basic de Ultahost cuesta 5,52 $/mes a 24 meses (leído el 21 de octubre de 2026) y también acepta Bitcoin, Alipay, WeChat Pay y Qiwi; revisa sus condiciones para tu país. Ver VPS de Ultahost

Ver el plan en Contabo

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.

Cables de fibra óptica turquesa que descienden en bucle hacia una fila de conectores blancos en equipos montados en rack
Cables de fibra óptica turquesa que descienden en bucle hacia una fila de conectores blancos en equipos montados en rack

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. Contabo sirve aquí de ejemplo por su 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 →

Una segunda opción si prefieres un plazo de reembolso de 30 días: el VPS Basic de Ultahost, leído en ultahost.com el 21 de octubre de 2026 a 5,52 $ al mes facturados por 24 meses (precio de lista 9,19 $), con 1 núcleo de CPU, 1 GB de DDR5, 30 GB NVMe, una IPv4 dedicada y garantía de devolución de 30 días. 1 GB basta para Docker y el contenedor wg-easy en una VPN personal. El plan no publica velocidad de puerto ni volumen de tráfico, compruébalos antes de contar con él para un uso intensivo.

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 (wg-easy v15)

Comprobación de versión (24 de octubre de 2026): la versión actual es la v15.5.0 (24 de octubre de 2026). La v15 es una reescritura completa: WG_HOST, PASSWORD_HASH y casi todas las demás variables de la v14 han desaparecido, y sus ajustes se hacen ahora en la interfaz web. Un tutorial v14 pegado sobre la imagen :latest arranca un contenedor que ignora sin avisar tu host y tu contraseña. Todo lo que sigue es el método v15, tomado del fichero compose y de la documentación del proyecto.

La v15.5.0 en un minuto: incluye los parches de seguridad de Node.js de octubre de 2026, así que actualiza aunque todo funcione: sudo docker compose pull && sudo docker compose up -d (la etiqueta :15 que usamos abajo sigue la nueva versión, y tus clientes y claves se quedan en el volumen). Además sube su soporte integrado de AmneziaWG a la versión 3.1, añade WG_INTERFACE (por defecto wg0) para ejecutar dos instancias en un mismo host y TRUSTED_PROXIES para un panel detrás de un proxy inverso (ver la sección de bloqueo). Fuente: notas de la versión v15.5.0 y documentación de configuración opcional del proyecto.

Este fichero sigue el oficial, con un cambio deliberado: la interfaz web solo se publica en 127.0.0.1, así que el panel de administración nunca es accesible desde Internet y lo abres por un túnel SSH. ¿Quieres un panel HTTPS en tu propio dominio con Caddy, o un primer arranque totalmente desatendido? Nuestro generador docker-compose de wg-easy te escribe esa variante.

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy
    environment:
      - INSECURE=true   # panel over plain HTTP, reached only through an SSH tunnel
    networks:
      wg:
        ipv4_address: 10.42.42.42
        ipv6_address: fdcc:ad94:bacf:61a3::2a
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"             # WireGuard data: open to the internet
      - "127.0.0.1:51821:51821/tcp"   # web UI: bound to localhost only
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1

networks:
  wg:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 10.42.42.0/24
        - subnet: fdcc:ad94:bacf:61a3::/64

volumes:
  etc_wireguard:

Qué hace cada parte, y dónde suele fallar:

  • 127.0.0.1:51821:51821/tcp mantiene el panel fuera de la interfaz pública. Importa más de lo que parece: los puertos que publica Docker se saltan UFW, así que un simple "51821:51821/tcp" queda abierto al mundo aunque ufw status diga lo contrario.
  • INSECURE=true es necesario porque aquí el panel se sirve por HTTP simple (el cifrado lo pone el túnel SSH). Sin él, la v15 marca su cookie de sesión como Secure, el navegador la descarta en HTTP y vuelves a la página de inicio de sesión en cada intento.
  • cap_add: NET_ADMIN y sysctls: net.ipv4.ip_forward=1 permiten al contenedor crear la interfaz WireGuard y enrutar para tus clientes. Si falta cualquiera de los dos, el túnel conecta y luego no enruta nada.
  • El volumen con nombre etc_wireguard guarda la base de datos con todas las claves y clientes, así que un docker compose down seguido de up conserva tus dispositivos.

Colócalo y arráncalo, con la estructura de carpetas de la documentación oficial:

sudo mkdir -p /etc/docker/containers/wg-easy
cd /etc/docker/containers/wg-easy
sudo nano docker-compose.yml   # paste the file above
sudo docker compose up -d
sudo docker compose logs -f wg-easy   # Ctrl+C once it is listening

Después abre el panel desde tu propio equipo, a través del túnel:

# on your own computer, not on the server
ssh -L 51821:127.0.0.1:51821 user@YOUR_SERVER_IP
# then open http://localhost:51821 in your browser

Primer arranque: el asistente de configuración (adiós a PASSWORD_HASH)

El PASSWORD_HASH bcrypt y el comando wgpw, a los que todo tutorial v14 dedica una sección, ya no existen. En la primera visita, la v15 abre un asistente:

  1. Crea la cuenta de administración: un usuario y una contraseña. wg-easy guarda la contraseña como hash argon2 por sí mismo, así que no hay nada que generar ni que escapar en un fichero .env.
  2. «¿Tienes una configuración existente?» Responde No en una instalación nueva (Sí es la importación de la v14, más abajo).
  3. Host y puerto: la IP pública o el dominio al que se conectarán tus clientes (una dirección IPv6 va entre corchetes, como [2001:db8::1]) y el puerto UDP, 51820 salvo que hayas cambiado el mapeo. Los clientes reciben exactamente ese valor como Endpoint.

El DNS, el rango de direcciones de los clientes y las allowed IPs por defecto se configuran ahora en el panel de administración, no en variables de entorno. Para saltarte el asistente (Ansible, cloud-init), la v15 lee INIT_ENABLED=true con INIT_USERNAME, INIT_PASSWORD, INIT_HOST e INIT_PORT solo en el primer arranque; quítalas cuando el contenedor esté en marcha para que la contraseña no se quede en el fichero. El generador puede escribir esas líneas por ti.

¿Sin acceso? Restablece la contraseña de administración desde el servidor:

cd /etc/docker/containers/wg-easy
sudo docker compose exec -it wg-easy cli db:admin:reset

Si vienes de la v14

No hay actualización en el sitio. En el panel antiguo, pulsa Backup para descargar wg0.json y apunta tus antiguas variables de entorno, ejecuta docker compose down, arranca el fichero v15 de arriba, responde Sí en el asistente y sube wg0.json: las claves y los clientes se conservan, las variables antiguas no, así que vuelve a fijar DNS y allowed IPs en el panel de administración. Un límite firme de la guía de migración: los hosts armv6 y armv7 (Raspberry Pi antiguas) no pueden pasar a la v15 y deben quedarse fijados en :14.

¿Te quedas en la v14 o abandonas el panel? El mismo archivo de copia se puede pegar en WireGuard Manager, nuestro panel alojado (gratis para 1 servidor y 3 peers): como wg0.json contiene la clave privada de cada cliente, el .conf y el código QR de cada dispositivo vuelven a estar disponibles al momento, y genera un wg0.conf normal para wg-quick si retiras wg-easy. Importar no cambia nada en el servidor.

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.

¿Cliente importado pero no funciona nada? Tres causas cubren casi todos los casos, y cada una tiene su herramienta. El estado sigue sin handshake: el puerto UDP 51820 no llega al contenedor, usa el verificador de puerto WireGuard, que escribe la regla de cortafuegos de tu host (ufw, firewalld, nftables, iptables) y una prueba tcpdump que muestra si llegan los paquetes. Handshake correcto pero las páginas se cuelgan o cargan a medias: un problema de MTU, que la calculadora de MTU ajusta a tu enlace (pon el valor en la config del cliente). Quieres que solo una parte del tráfico vaya por el túnel, o seguir viendo tu red local: la calculadora AllowedIPs da la lista exacta para pegar en las allowed IPs por defecto de wg-easy.

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:

  1. 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.

  2. Contraseña fuerte y luego 2FA. La v15 ofrece inicio de sesión en dos pasos TOTP: abre el menú arriba a la derecha, luego Account, activa la autenticación en dos pasos y escanea el código QR con tu app de autenticación. Trata el acceso al panel como una contraseña de root.

  3. 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.

    Desde la v15.5.0, define también TRUSTED_PROXIES con la dirección de origen de tu proxy (para un contenedor Caddy en la misma red Docker, su IP en esa red). wg-easy solo leerá X-Forwarded-Host y X-Forwarded-For desde esa dirección, y los inicios de sesión fallidos se registran con la IP real del cliente: una herramienta como CrowdSec bloquea al atacante y no a tu proxy. Una dirección mal escrita impide que el contenedor arranque: revisa docker compose logs tras el cambio.

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.conf tú 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.

Para tener lo esencial a mano: la WireGuard Cheat Sheet gratuita (PDF de 5 páginas en inglés, descarga directa, sin registro) reúne las tablas de keepalive y MTU, los comandos wg genkey/wg pubkey/wg genpsk y las cuatro comprobaciones de servidor en una línea que conviene lanzar primero cuando un túnel no pasa tráfico. El WireGuard Self-Hosting Kit de pago (9 USD, en inglés) añade una lista de diagnóstico de 12 causas y 11 plantillas de configuración, entre ellas una para wg-easy.

Una VPN cambia su IP. No cambia su navegador.

Un túnel sustituye la dirección que ve un servicio. No cambia nada de lo que su navegador anuncia por su cuenta - fuentes, pantalla, zona horaria, pila gráfica - y esa combinación suele bastar para reconocerle de una sesión a otra.

Mida su huella de navegador - medición pasiva, sin preguntas, sin cuenta, sin correo electrónico.

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 el DNS en el panel de administración 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.

Enlace de afiliado

Precio revisado el 17/10/2026, permanencia 24 meses

Preguntas frecuentes

¿Qué es wg-easy?
wg-easy es un proyecto de código abierto que envuelve WireGuard en una pequeña interfaz web. Lo ejecutas como un único contenedor Docker; gestiona el servidor WireGuard por ti y te da un panel en el navegador para añadir y quitar clientes, descargar o escanear sus configuraciones por QR y ver la subida/bajada en vivo por peer. El cifrado sigue siendo WireGuard puro corriendo en el núcleo del host - wg-easy solo se ocupa de la gestión de peers y la interfaz, así que no hay penalización de rendimiento frente a una configuración escrita a mano.
¿Es seguro exponer wg-easy a Internet?
Solo el puerto de datos de WireGuard (UDP 51820 por defecto) debe dar a Internet. El puerto web de administración (51821) NO debe estar abierto al mundo - cualquiera que lo alcance y adivine o fuerce la contraseña puede crearse un cliente VPN. Limita el puerto web a tu propia IP con una regla de cortafuegos, ponlo detrás de un proxy inverso con TLS, o alcánzalo a través del propio túnel. En la v15, enlaza el panel a 127.0.0.1 y accede por un túnel SSH, o sírvelo por HTTPS, y activa el inicio de sesión en dos pasos integrado: un panel expuesto es el riesgo principal.
¿Cuál es la diferencia entre wg-easy y PiVPN?
Ambos facilitan WireGuard, pero de forma distinta. PiVPN es un script de instalación que monta WireGuard (u OpenVPN) directamente en el host y te da comandos CLI (pivpn add, pivpn -qr) para gestionar peers - sin contenedor, sin interfaz web. wg-easy corre como un contenedor Docker y todo su sentido es el panel del navegador. Elige PiVPN si te gusta una instalación bare-metal manejada por terminal en una Raspberry Pi o un VPS; elige wg-easy si quieres un panel a clics y estadísticas en vivo.
¿Sigo necesitando un VPS para wg-easy?
Si quieres una VPN a la que conectarte desde cualquier sitio con una IP pública estable, sí - wg-easy sigue necesitando un host con una dirección enrutable, igual que cualquier servidor WireGuard. Un VPS pequeño (4-6 €/mes) es la opción estándar y satura su enlace fácilmente con WireGuard. Solo para acceso remoto a una red doméstica, puedes correr wg-easy en un servidor casero detrás de redirección de puertos, pero pierdes la IP estática limpia.
¿Por qué wg-easy se conecta pero no enruta tráfico?
Casi siempre el cortafuegos del host o el reenvío IP. El contenedor necesita la capacidad NET_ADMIN y el host debe reenviar paquetes (net.ipv4.ip_forward=1) - wg-easy lo configura en su fichero compose, pero el grupo de seguridad aparte de un proveedor cloud puede seguir bloqueando el UDP 51820. Abre ese puerto en el cortafuegos del proveedor, no solo en el host. Si el handshake se completa pero las páginas siguen colgándose, el siguiente sospechoso es el MTU y no wg-easy en sí.