Divulgación de afiliados - Este artículo contiene enlaces de afiliados de Contabo. Si contratas un VPS a través de ellos, ganamos una comisión sin coste adicional para ti.
Teclear una clave privada en base64 en el teclado de un teléfono es tan desagradable que la gente acaba copiando las configs por apps de mensajería, lo cual es peor. El código QR existe para evitar ambas cosas.
Es un solo comando, y lo que merece la pena leer es lo que ocurre después de escanearlo.
¿Todavía no tienes config, o no tienes una terminal a mano? Nuestro generador de config WireGuard crea el archivo del servidor y una config de cliente por dispositivo, cada una con su código QR, íntegramente en tu navegador: las claves se generan localmente con Curve25519 y no se envía nada a ningún servidor. No convierte un .conf existente; para eso, la herramienta es qrencode, a continuación. ¿Tampoco tienes servidor? Los archivos que genera funcionan en cualquier VPS con una IPv4 pública, por ejemplo un VPS Cloud 4 de Contabo a 5,50 €/mes (enlace de afiliado, permanencia de 24 meses, IVA incluido).
Generar uno
Instala el codificador:
apt install qrencode # Debian, Ubuntu
dnf install qrencode # Fedora, RHEL
Después, en la máquina que contiene la config del cliente:
qrencode -t ansiutf8 < /etc/wireguard/client1.conf
El código aparece en la terminal, dibujado con caracteres de bloque. Abre WireGuard en el teléfono, añade un túnel, elige escanear desde código QR y apunta la cámara a la pantalla. El túnel se añade con su nombre, direcciones, claves y peer, completo.
No hay ningún formato especial. El código QR contiene el archivo de config como texto plano. Cualquier cosa capaz de leer un código QR puede leer tu config.
El tamaño rara vez es un problema aquí. Una config de cliente WireGuard típica ocupa unos cientos de bytes, y el estándar QR llega hasta la versión 40, una cuadrícula de 177 por 177 módulos que almacena 2 953 bytes en el más bajo de sus cuatro niveles de corrección de errores. Una config cabe de sobra, y precisamente por eso todo, clave privada incluida, viaja en una sola imagen.
Para obtener un archivo en lugar de un dibujo en la terminal:
qrencode -o client1.png < /etc/wireguard/client1.conf
Si el código no se deja escanear, las causas habituales son una fuente de terminal que deforma los bloques, o una config muy larga. -t utf8 en lugar de ansiutf8 lo dibuja más pequeño, y reducir el tamaño de fuente de la terminal ayuda más que cualquier otra cosa.

Lo que importa de verdad
Una config de cliente WireGuard contiene PrivateKey: una clave Curve25519 de 32 bytes, escrita como 44 caracteres base64 en una sola línea. El código QR contiene la config. Por tanto, el código QR es la clave privada, en un formato diseñado para que una cámara lo lea a distancia.
Eso cambia la forma en que debes tratarlo:
- No le hagas una foto. Una foto va a tu carrete y, en la mayoría de los teléfonos, directamente a una copia de seguridad en la nube.
- No lo pongas en un mensaje de chat ni en un correo. Ambos son copias almacenadas que no controlas.
- Limpia la terminal después de escanear.
clearpor sí solo no vacía el historial de desplazamiento. Usareset, o cierra la ventana de la terminal por completo. - Borra los archivos PNG de inmediato. Un
client1.pngolvidado en un directorio personal sobrevive al motivo por el que se creó. - No lo muestres donde una cámara pueda verlo, lo que en una oficina compartida incluye la ventana que tienes detrás.
Una clave privada por cliente es la regla que el código QR hace fácil romper. Generar una sola config y escanearla en tres teléfonos les da a los tres la misma identidad, y entonces el servidor no puede distinguirlos, no puede revocar uno solo y enrutará mal el tráfico cuando dos estén conectados a la vez. Cómo añadir un peer distinto por dispositivo se explica en añadir un peer WireGuard.
Generar primero la config, si no tienes ninguna
El código QR es el último paso. Antes, el cliente necesita un par de claves y una entrada de peer en el servidor:
wg genkey | tee client1.key | wg pubkey > client1.pub
Después, una config que haga referencia a la clave pública del servidor, a su endpoint y a AllowedIPs, y un bloque [Peer] correspondiente en el servidor con client1.pub. Saltarse el lado del servidor es la razón más común por la que un túnel escaneado no se conecta a nada: el teléfono está configurado y el servidor nunca ha oído hablar de él.
Si prefieres no construir los archivos a mano, el generador de config escribe ambos lados a la vez (el [Interface] del servidor con cada bloque [Peer], más un archivo de cliente y un código QR por dispositivo), así que el teléfono que escaneas y el servidor con el que habla son coherentes desde el principio.
El servidor necesita una dirección IP pública que tu teléfono pueda alcanzar desde una red móvil. Una conexión doméstica detrás de CGNAT no la tiene (compruébalo con el verificador de puerto WireGuard); un VPS pequeño sí, por unos 5 € al mes.
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · puerto de 200 Mbit/s
Un servidor WireGuard que tu teléfono siempre puede alcanzar → Contabo Cloud VPS 45,50 €/mes (consultado el 18 oct. 2026, primeros 24 meses) · IPv4 pública fija · 4 vCPU, 8 GB RAM→Las guías completas, incluido el lado del servidor, están en instalar WireGuard con PiVPN para una Raspberry Pi y en autoalojar en un VPS para un servidor alquilado. Ambas generan configs de cliente que puedes pasar directamente a qrencode.
Si el escaneo funciona pero el túnel no
El código QR ha cumplido su función en el momento en que el túnel aparece en la app. Todo lo que viene después es WireGuard normal y corriente.
Comprueba que el teléfono muestra un handshake reciente. Un peer sano repite el handshake aproximadamente cada 120 segundos, así que cualquier cosa de más de unos dos minutos en un túnel activo es un síntoma y no una pausa. Si no es así, repasa la solución de problemas del handshake: dirección del endpoint, puerto accesible desde fuera (51820/UDP por defecto), firewall del servidor y entrada del peer. Si el handshake funciona pero las páginas se quedan colgadas, es la MTU, algo especialmente frecuente en redes móviles.
Las notas de configuración específicas de cada plataforma están en configurar WireGuard en Android y configurar WireGuard en iOS.
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · puerto de 200 Mbit/s
Aloja tu VPN en tu propio VPS → ContaboAcceso root completo · IPv4 pública · elige tu región→


