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:

Instalación de Easy WireGuard

Para instalar Easy WireGuard, sigue estos pasos:

  1. Accede a tu servidor: Conéctate a tu servidor mediante SSH o accede directamente a la terminal.
  2. Crea un directorio para Easy WireGuard:
    mkdir -p /opt/easy-wireguard
    cd /opt/easy-wireguard
  3. Crea un archivo compose.yml:
  4. 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
  1. Inicia el contenedor: Ejecuta el siguiente comando para iniciar Easy WireGuard:
    docker compose up -d
  2. Verifica que el contenedor esté en funcionamiento: Comprueba que el contenedor se haya iniciado correctamente con el siguiente comando:
     docker compose ps
    Deberías ver el contenedor wg-easy en estado Up. Además debería estar abiertos los puertos 51820/udp y 51821/tcp.
    sudo ss -tuln | grep -E '51820|51821'
    Deberías ver algo como:
    udp    UNCONN  0      0
  3. 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 o iptables según tu configuración.
    sudo ufw allow 51820/udp
    sudo ufw allow 51821/tcp
  4. 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 a https://<tu_dominio_o_ip> si has redireccionado al puerto 51821.

post-18-01-fist-screen.png 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. post-18-02-admin-user.png Mete el usuario admin y dos veces la contraseña. Pulsa en el botón de Create Account.

  1. Configura el servidor WireGuard: Una vez que hayas creado el usuario admin, crear la configuración del servidor WireGuard desde la interfaz web. post-18-03-fist-setup.png Pulsa en No.
  2. Crea la configuración para tu servidor: Ahora deberás crear la configuración para tu servidor. post-18-04-setup-host-port.png 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: post-18-05-finish-first-setup.png 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. post-18-06-list-clients.png 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. post-18-07-new-client.png 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. post-18-08-new-client-in-list.png 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:

  1. Descarga la configuración del cliente: Haz clic en el botón de Download para descargar la configuración del cliente en formato .conf.
  2. 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.
  3. Escanea el código QR o importa el archivo .conf que has descargado anteriormente.
  4. 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.
  5. Verifica la conexión: Una vez conectado, verifica que en el easy wg aparece el dispositivo conectado.
  6. 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
  1. Copia el archivo .conf que has descargado anteriormente al directorio ~/wireguard.
  2. Instala WireGuard en tu ordenador: Si no tienes WireGuard instalado, puedes instalarlo con el siguiente comando:
sudo apt install wireguard
  1. Configura WireGuard: Abre el archivo .conf que has copiado anteriormente en un editor de texto y verifica que la configuración es correcta.
  2. 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
  1. Verifica la conexión: Una vez que hayas iniciado WireGuard, verifica que en Easy WG que estás conectado correctamente.
  2. Desconecta WireGuard: Cuando hayas terminado de usar la VPN, puedes desconectarte con el siguiente comando:
sudo wg-quick down ~/wireguard/<nombre_del_cliente>.conf
  1. 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/
  1. 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
  1. 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
  1. 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
  1. Habilita el servicio:
systemctl daemon-reload
systemctl enable --now wg-ensure-mordor.timer
  1. Verifica el estado del servicio:
systemctl status wg-ensure-mordor.timer
  1. Verifica el listado de servicio y timer:
systemctl list-timers | grep wg-ensure
  1. 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!