Instalación Easy WireGuard
· 20 min · linux
Introducción
En este artículo, te guiaremos a través del proceso de instalación de Easy WireGuard usando Docker. Easy WireGuard es una herramienta que facilita la configuración y gestión de redes privadas virtuales (VPN) utilizando el protocolo WireGuard. A continuación, te mostraremos cómo instalarlo de manera segura y sencilla.
Requisitos previos
Antes de comenzar, asegúrate de tener lo siguiente:
- Un servidor con Docker instalado.
- Acceso a la terminal del servidor.
- Conocimientos básicos de Docker y redes.
- Un dominio o subdominio apuntando a tu servidor (opcional, pero recomendado para facilitar el acceso). En nuestro será vpn.cursosdedesarrollo.com.
- Un cliente WireGuard instalado en tu dispositivo (opcional, pero recomendado para probar la conexión).
Instalación de Easy WireGuard
Para instalar Easy WireGuard, sigue estos pasos:
- Accede a tu servidor: Conéctate a tu servidor mediante SSH o accede directamente a la terminal.
- Crea un directorio para Easy WireGuard:
mkdir -p /opt/easy-wireguard cd /opt/easy-wireguard
- Crea un archivo
compose.yml
: - Crea un archivo llamado
compose.yml
en el directorio/opt/easy-wireguard
con el siguiente contenido:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
networks:
wg:
ipv4_address: 10.42.42.42
ipv6_address: fdcc:ad94:bacf:61a3::2a
volumes:
- ./etc:/etc/wireguard
- /lib/modules:/lib/modules:ro
ports:
- '51820:51820/udp'
- '51821:51821/tcp'
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
# - NET_RAW # ⚠️ Uncomment if using Podman
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
- Inicia el contenedor: Ejecuta el siguiente comando para iniciar Easy WireGuard:
docker compose up -d
- Verifica que el contenedor esté en funcionamiento: Comprueba que el contenedor se haya iniciado correctamente con el siguiente comando:
Deberías ver el contenedordocker compose ps
wg-easy
en estadoUp
. Además debería estar abiertos los puertos 51820/udp y 51821/tcp.
Deberías ver algo como:sudo ss -tuln | grep -E '51820|51821'
udp UNCONN 0 0
- Configura el firewall: Asegúrate de que los puertos UDP 51820 y TCP 51821 estén abiertos en tu firewall para permitir el tráfico de WireGuard. Puedes usar
ufw
oiptables
según tu configuración.sudo ufw allow 51820/udp sudo ufw allow 51821/tcp
- Accede a la interfaz web: Abre tu navegador y accede a
http://<tu_dominio_o_ip>:51821
para acceder a la interfaz web de Easy WireGuard. Si has configurado ya un reverse proxy, puedes acceder directamente ahttps://<tu_dominio_o_ip>
si has redireccionado al puerto 51821.
9. Configura Easy WireGuard: Sigue las instrucciones en la interfaz web para tu usuario.
Pulsa en el botón de Continue.
10. Crea el usuario admin: Desde la interfaz web, puedes crear el usuario admin.
Mete el usuario admin y dos veces la contraseña.
Pulsa en el botón de Create Account.
- Configura el servidor WireGuard: Una vez que hayas creado el usuario admin, crear la configuración del servidor WireGuard desde la interfaz web.
Pulsa en No.
- Crea la configuración para tu servidor: Ahora deberás crear la configuración para tu servidor.
Host: vpn.cursosdedesarrollo.com (la misma que has configurado en los requisitos previos). POrt: 51820 (el puerto que has configurado en el compose.yml).
Pulsa en el botón de Continue.
13. Primera configuración Hecha:
Pulsa en el botón de Sign in.
14. Inicia sesión: Usa el usuario admin que has creado anteriormente para iniciar sesión en la interfaz web de Easy WireGuard.
15. Crea un cliente WireGuard: Desde la interfaz web, puedes crear un cliente WireGuard.
16. Configura el cliente WireGuard: Haz clic en el botón de New Client y configura el cliente con un nombre y una descripción.
Pon un nombre y una fecha de expiración.
Pulsa en el botón de Create Client.
17. Datos del cliente: Una vez creado el cliente, debería aparecer en la lista de clientes.
Deberías ver el cliente que has creado con el nombre y la fecha de expiración. Además de un toggle para activar o desactivar el cliente.
Y cuatro botones:
- Edit: Para descargar la configuración del cliente.
- QR Code: Para mostrar el código QR de la configuración del cliente.
- Download: Para descargar la configuración del cliente en formato
.conf
. - Generate link: Para generar un enlace para descargar la configuración del cliente.
- Descarga la configuración del cliente: Haz clic en el botón de Download para descargar la configuración del cliente en formato
.conf
. - Configura el cliente WireGuard en tu dispositivo movil: Abre la aplicación WireGuard en tu dispositivo móvil y añade una nueva conexión.
- Escanea el código QR o importa el archivo
.conf
que has descargado anteriormente. - Conéctate a la VPN: Una vez que hayas configurado el cliente, conéctate a la VPN desde la aplicación WireGuard en tu dispositivo móvil. Activando el toggle de la conexión y espera a que se establezca la conexión.
- Verifica la conexión: Una vez conectado, verifica que en el easy wg aparece el dispositivo conectado.
- Configura el cliente WireGuard en tu ordenador con Ubuntu: Abre la terminal y crea un directorio para la configuración de WireGuard:
mkdir -p ~/wireguard
cd ~/wireguard
- Copia el archivo
.conf
que has descargado anteriormente al directorio~/wireguard
. - Instala WireGuard en tu ordenador: Si no tienes WireGuard instalado, puedes instalarlo con el siguiente comando:
sudo apt install wireguard
- Configura WireGuard: Abre el archivo
.conf
que has copiado anteriormente en un editor de texto y verifica que la configuración es correcta. - Inicia WireGuard: Usa el siguiente comando para iniciar WireGuard con la configuración que has copiado:
sudo wg-quick up ~/wireguard/<nombre_del_cliente>.conf
- Verifica la conexión: Una vez que hayas iniciado WireGuard, verifica que en Easy WG que estás conectado correctamente.
- Desconecta WireGuard: Cuando hayas terminado de usar la VPN, puedes desconectarte con el siguiente comando:
sudo wg-quick down ~/wireguard/<nombre_del_cliente>.conf
- Configura el cliente WireGuard para conexión automática:
Si deseas que WireGuard se inicie automáticamente al arrancar tu ordenador, promero copia el archivo de configuración al directorio
/etc/wireguard/
:
sudo cp ~/wireguard/<nombre_del_cliente>.conf /etc/wireguard/
- Luego, crea el script de inicio automático:
cat >/usr/local/sbin/wg-ensure-mordor.sh <<'EOF'
#!/bin/bash
set -euo pipefail
IFACE="mordor"
# Handshake válido si ocurrió en los últimos N segundos
MAX_AGE=180
# Si la interfaz no existe o no está UP: reinicia
if ! ip link show "$IFACE" &>/dev/null || ! ip link show "$IFACE" | grep -q "state UP"; then
systemctl restart "wg-quick@$IFACE"
exit 0
fi
# Si no hay peers configurados: reinicia (config rota/cargada a medias)
if ! wg show "$IFACE" peers | grep -q . ; then
systemctl restart "wg-quick@$IFACE"
exit 0
fi
now=$(date +%s)
ok=0
# coge los timestamps de los últimos handshakes (uno por peer)
while read -r ts; do
# ts=0 significa "nunca"
if [ "$ts" -gt 0 ] && [ $(( now - ts )) -le "$MAX_AGE" ]; then
ok=1
break
fi
done < <(wg show "$IFACE" latest-handshakes | awk '{print $2}')
# Si ningún peer tiene handshake reciente: reinicia
if [ "$ok" -ne 1 ]; then
systemctl restart "wg-quick@$IFACE"
fi
EOF
chmod +x /usr/local/sbin/wg-ensure-mordor.sh
- Crea el servicio de systemd:
cat >/etc/systemd/system/wg-ensure-mordor.service <<'EOF'
[Unit]
Description=Ensure WireGuard mordor is up and healthy
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/wg-ensure-mordor.sh
EOF
- Crea el Timer: Esto debería crear un timer que ejecuta el script cada 5 minutos, comenzando 2 minutos después del arranque del sistema.
cat >/etc/systemd/system/wg-ensure-mordor.timer <<'EOF'
[Unit]
Description=Periodic health-check for WireGuard mordor
[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
Unit=wg-ensure-mordor.service
[Install]
WantedBy=timers.target
EOF
- Habilita el servicio:
systemctl daemon-reload
systemctl enable --now wg-ensure-mordor.timer
- Verifica el estado del servicio:
systemctl status wg-ensure-mordor.timer
- Verifica el listado de servicio y timer:
systemctl list-timers | grep wg-ensure
- Verifica la dirección ip:
ip addr show mordor
Conclusión
En este artículo, hemos aprendido cómo instalar Easy WireGuard usando Docker y cómo configurar un cliente WireGuard en un dispositivo móvil y en un ordenador con Ubuntu. Easy WireGuard simplifica la gestión de redes VPN, permitiéndote crear y administrar conexiones de manera eficiente. Si tienes alguna pregunta o necesitas ayuda adicional, no dudes en dejar un comentario. ¡Esperamos que este artículo te haya sido útil!