Cuenta con una tarde para el montaje inicial y un coste de hardware similar al de una pizza. Al final del proceso, tu móvil o portátil se conectará de vuelta a tu casa desde cualquier Wi-Fi público, con un túnel cifrado, acceso a tu NAS o a Home Assistant, y una salida que es literalmente la IP de tu propia casa.

Esta guía se centra en uno de los proyectos de nuestra guía general de VPN en Raspberry Pi, el más solicitado: montar un servidor WireGuard personal, comando a comando.

Qué cubre esta guía, y qué no

Esto monta un servidor WireGuard personal alojado en tu Raspberry Pi, vía PiVPN. No es lo mismo que una VPN comercial como NordVPN: no cambia tu ubicación aparente ni te anonimiza entre otros usuarios, porque la salida es la dirección de tu propia casa. A cambio, te da acceso cifrado y gratuito a tu red doméstica desde cualquier lugar, de por vida, sin suscripción.

Una vez en marcha, esta configuración te permite:

  1. Acceder a la interfaz de un NAS (Synology, QNAP, TrueNAS) desde fuera sin exponer su puerto web directamente a internet.
  2. Controlar Home Assistant u otro servidor de domótica desde fuera de la red local, sin pasar por un servicio en la nube de terceros.
  3. Ver tu biblioteca de Plex o Jellyfin desde un hotel o casa de un amigo, apareciendo como un dispositivo más de la red doméstica.
  4. Gestionar remotamente otros equipos de la red (impresora, cámara IP, otra Pi) sin abrir sus puertos individualmente en el router.
  5. Cifrar la navegación en Wi-Fi público no confiable, con una salida que es tu propio router en vez de un servidor de terceros.

Lo que no hace: no oculta tu IP doméstica, el nodo de salida es literalmente tu casa, no desbloquea catálogos extranjeros, y no ofrece ninguna protección frente a tu propio proveedor de internet, que sigue viendo el tráfico WireGuard pasar por tu conexión. Una VPN comercial y este servidor personal resuelven problemas distintos y combinan bien en vez de competir.

Elegir el hardware: qué Pi, qué tarjeta, qué alimentación

Una Raspberry Pi 4 (con 2 GB de RAM basta) o una Pi 5 funcionan bien. Como referencia aproximada, una Pi 4 mueve WireGuard entre 300 y 500 Mbps en uso real, cómodamente por encima de la mayoría de conexiones de fibra residenciales. Una Pi 5 suele superar los 700 Mbps. Una Pi 3 o una Zero 2 W también sirven para este proyecto concreto, ya que el tráfico de una configuración personal se mantiene modesto, pero su techo es mucho más bajo, en torno a 50-100 Mbps, algo que empieza a importar si piensas ver vídeo en 4K a través del túnel. Si la Pi también va a ejecutar Pi-hole (el último paso de esta guía) junto a la VPN, apunta a una Pi 4 o 5 para tener margen.

Para almacenamiento, una microSD de calidad (una marca reconocida, con clasificación A1 o A2) de 32 GB es de sobra. Una alternativa más duradera: arrancar desde un USB 3.0 o una pequeña SSD USB en vez de tarjeta SD, algo que la Pi 4 y la Pi 5 soportan de forma nativa. Lleva algo más de tiempo configurarlo, pero elimina el punto de fallo más habitual en una Pi que funciona sin parar: el desgaste de la tarjeta SD por las escrituras constantes de los registros del sistema.

Para la alimentación, usa la fuente oficial de tu modelo (5V/3A para la Pi 4, USB-C 5V/5A para la Pi 5) o un cargador equivalente de calidad. Una fuente insuficiente provoca caídas de tensión que se traducen en cuelgues aleatorios, tarjetas SD corruptas y conexiones WireGuard que se cortan sin motivo aparente. Es la causa de fallo más infravalorada en este tipo de proyecto.

Por último, prioriza un cable Ethernet al router. El Wi-Fi funciona, pero una conexión por cable elimina una fuente de inestabilidad para un servicio pensado para funcionar de forma continua.

Qué necesitas antes de empezar

Hardware: una Raspberry Pi 4 o 5, una tarjeta microSD de al menos 16 GB (se recomiendan 32 GB) o un USB/SSD, una fuente de alimentación oficial, un cable Ethernet, y un ordenador con lector de tarjetas SD para el flasheo.

Acceso a la red: acceso al panel de administración de tu router, es decir, el usuario admin real, no solo la contraseña del Wi-Fi. Idealmente, una IP pública que no cambie demasiado a menudo. Comprueba si tu proveedor usa CGNAT (compartir una IP pública entre varios hogares): si es así, el autoalojamiento no funcionará desde fuera hasta que consigas una IP pública dedicada de tu proveedor, algo que la mayoría entrega gratis si lo pides.

Paso 1: flashea Raspberry Pi OS en la tarjeta SD

Descarga e instala Raspberry Pi Imager desde raspberrypi.com/software en tu ordenador. Ábrelo y elige Raspberry Pi OS Lite (64 bits) como sistema operativo: la versión sin escritorio, que es de sobra para un servidor VPN, más ligera para funcionar sin parar, y con una superficie de ataque menor que una imagen de escritorio completa.

Selecciona tu tarjeta SD (o unidad USB) como destino. Antes de darle a escribir, abre las opciones avanzadas (el icono del engranaje, o Ctrl+Shift+X) para preconfigurar:

  • un nombre de host, por ejemplo pivpn
  • SSH activado, idealmente con autenticación por clave pública en vez de contraseña (ver la sección de seguridad más abajo para generar esa clave)
  • tu usuario y contraseña
  • credenciales Wi-Fi, solo si no vas a conectar por Ethernet
  • zona horaria y distribución de teclado

Escribe la imagen. Una vez terminado, inserta la tarjeta en la Pi y arráncala, conectada al router por Ethernet. Configurar SSH y la red en esta fase significa que el resto de la guía se puede hacer sin monitor ni teclado conectados a la Pi: todo corre desde tu ordenador habitual, en modo headless.

Paso 2: conéctate por SSH y actualiza el sistema

Desde tu ordenador, abre una terminal (o PowerShell en Windows):

ssh pi@pivpn.local

Cambia pi por el usuario que elegiste y pivpn.local por el nombre de host anterior. Si la resolución .local no funciona (algunos routers bloquean el protocolo mDNS que hay detrás), busca la IP de la Pi en la lista de dispositivos conectados de tu router y conéctate directamente con ssh pi@192.168.1.XX.

Una vez conectado, actualiza el sistema antes de instalar nada:

sudo apt update && sudo apt full-upgrade -y
sudo reboot

Vuelve a conectar por SSH tras el reinicio. Es también un buen momento para comprobar el espacio en disco disponible (df -h) y la temperatura de la CPU (vcgencmd measure_temp).

Paso 3: dale a la Pi una IP local fija

La Pi necesita mantener la misma IP local, o la apertura de puerto que configures después se romperá la primera vez que el router reasigne direcciones. Hay dos opciones.

La primera, recomendada, es una reserva DHCP en el router. En el panel de administración del router, busca la sección DHCP o “dispositivos conectados,” localiza la Pi por su dirección MAC (visible con ip link show eth0 en la Pi) y resérvale una IP fija, por ejemplo 192.168.1.50. Es el método más fiable, porque sobrevive a una reinstalación completa del sistema en la Pi.

La segunda, si el router no ofrece esa opción, es una IP estática configurada directamente en la Pi con sudo nmtui, una interfaz de texto sencilla que evita editar archivos de configuración de red a mano.

Paso 4: instala PiVPN

PiVPN automatiza casi toda la instalación de WireGuard, la generación de claves y la configuración del firewall. Un solo comando lanza el instalador interactivo:

curl -L https://install.pivpn.io | bash

El asistente hace una serie de preguntas. Respóndelas así:

  1. Elección de software VPN: elige WireGuard en vez de OpenVPN. Su código es mucho más reducido, así que es más fácil de auditar, su protocolo es más moderno y su rendimiento es notablemente mejor en hardware modesto como una Pi.
  2. Usuario local: confirma el usuario detectado automáticamente.
  3. IP estática: PiVPN detecta la IP actual y pide confirmación, algo esperado si ya hiciste el paso 3.
  4. Puerto de escucha: el valor por defecto (51820/UDP) funciona para la gran mayoría de configuraciones. Cambiarlo a un puerto aleatorio por encima de 10000 añade una capa menor de discreción frente a escaneos automatizados, ver la sección de seguridad más abajo.
  5. DNS para los clientes: los resolutores públicos (Cloudflare 1.1.1.1 o Quad9 9.9.9.9) funcionan de fábrica. Si añades Pi-hole más adelante, este ajuste se puede cambiar después sin reconfigurar todo.
  6. Dirección pública: aquí es donde importa el DNS dinámico, revisa el siguiente paso antes de confirmar si tu IP pública cambia con regularidad, algo que ocurre en casi todas las conexiones residenciales.
  7. Actualizaciones desatendidas: acéptalas. Esto aplica parches de seguridad del sistema operativo automáticamente sin intervención manual.

Al final, PiVPN ofrece reiniciar:

sudo reboot

Paso 5: configura el DNS dinámico (DDNS)

La mayoría de conexiones residenciales no tienen una IP pública fija: la dirección del router cambia de vez en cuando, a menudo tras un corte de luz, un reinicio, o simplemente después de días o semanas según la política del proveedor. Si el cliente WireGuard apunta a una IP que ya cambió, la conexión falla en silencio, sin ningún mensaje de error claro.

La solución: un servicio de DNS dinámico que asocia un nombre de host fijo, por ejemplo tunombre.duckdns.org, con la IP pública actual, actualizada automáticamente cada vez que cambia.

  1. Crea una cuenta gratuita con un proveedor DDNS. DuckDNS es el más sencillo de automatizar en una Raspberry Pi y está documentado de forma nativa por PiVPN, pero No-IP y FreeDNS son alternativas igual de válidas.
  2. Crea un subdominio y consigue tu token de autenticación.
  3. Instala el script de actualización automática, normalmente una tarea cron que se ejecuta cada cinco minutos y actualiza el registro DNS si la IP cambió. La documentación de DuckDNS lo entrega como una sola línea para pegar en la terminal.
  4. Confirma que la actualización funciona revisando el archivo de log que genera el script, que debería mostrar “OK” tras cada ejecución.
  5. Si PiVPN ya estaba instalado apuntando a una IP directa en vez de a un nombre de host, regenera los perfiles de cliente con pivpn -a para que apunten al nombre de host correcto.

Paso 6: abre el puerto en tu router (port forwarding)

La Pi escucha en el puerto UDP 51820 internamente (o el puerto personalizado elegido en el paso 4), pero el router bloquea por defecto el tráfico entrante no solicitado desde internet. Hace falta una regla de reenvío de puertos, a veces llamada redirección de puertos o NAT/PAT según el fabricante:

  1. Abre el panel de administración del router, normalmente en una dirección como 192.168.1.1 o 192.168.0.1 (el usuario suele venir impreso en la etiqueta del router).
  2. Busca la sección de redes avanzadas, NAT, o reenvío de puertos.
  3. Crea una regla: puerto externo 51820, protocolo UDP, reenviado a la IP local de la Pi fijada en el paso 3, puerto interno 51820.
  4. Guarda y, si se pide, reinicia el router.

Este paso varía mucho según el proveedor y el modelo de router. Si la interfaz descrita aquí no coincide con lo que ves en pantalla, busca “reenvío de puertos” seguido del modelo exacto de tu router.

Una trampa habitual: algunos routers de proveedor funcionan en modo “puente” detrás de otra caja (un router 4G/5G de respaldo, un repetidor que también enruta), lo que añade una capa extra de NAT que sortear. Si el reenvío de puertos por sí solo no funciona, busca un segundo router aguas arriba que también esté bloqueando el tráfico.

Paso 7: crea un perfil de cliente y conéctate

De vuelta en SSH en la Pi, genera un perfil para cada dispositivo que vaya a conectarse: móvil, portátil, tableta. Un perfil por dispositivo, nunca compartido, lo que permite revocar el acceso de uno concreto si se pierde o lo roban:

pivpn -a

Ponle un nombre claro (iphone-nombre, portatil-trabajo). PiVPN genera un archivo .conf y lo guarda en ~/configs/.

Para llevar ese archivo a un móvil, el método más rápido es un código QR:

pivpn -qr

Elige el perfil, y el código QR se imprime directamente en la terminal. Abre la app WireGuard (disponible en App Store y Play Store), toca “+,” luego “Escanear desde código QR,” y escanea la pantalla de la terminal, o una captura de ella si la sesión es remota.

Para un ordenador, transfiere el archivo .conf por SCP e impórtalo en el cliente WireGuard de escritorio:

scp pi@pivpn.local:~/configs/portatil-trabajo.conf .

Importa ese archivo en la app WireGuard instalada en el ordenador (Windows, macOS, Linux).

Por defecto, PiVPN configura un túnel completo: una vez conectado, todo el tráfico del dispositivo, incluida la navegación web normal, pasa de vuelta por la conexión doméstica. Es el comportamiento correcto para cifrar una sesión en Wi-Fi público no confiable, pero usa el ancho de banda de subida del router cada vez que está activo. Para enrutar solo el tráfico destinado a la red doméstica y dejar que el resto salga localmente, edita la línea AllowedIPs en el archivo .conf del cliente: sustituye 0.0.0.0/0 solo por la subred local, por ejemplo 192.168.1.0/24.

Paso 8: confirma que realmente funciona

No te saltes este paso. Apaga el Wi-Fi del móvil, pasa a datos móviles para estar genuinamente fuera de la red local, activa el perfil WireGuard, y luego:

  1. Confirma que puedes acceder a un servicio interno, el NAS o la interfaz de Home Assistant, por ejemplo, mediante su IP local.
  2. Ejecuta un test de fugas de IP desde el dispositivo conectado al túnel: la IP mostrada debería ser la del router de casa, no la del operador móvil.
  3. Comprueba latencia y rendimiento con un test de velocidad rápido mientras el túnel está activo, para tener una referencia con la que comparar si más adelante se reporta lentitud.

Si la conexión falla, aquí están las causas más comunes y cómo comprobar cada una.

SíntomaCausa probableCómo comprobarlo
El cliente no conecta en absolutoPuerto no abierto en el routernc -zvu <IP-pública> 51820 desde una red externa
Funciona en Wi-Fi local, falla en móvilReenvío de puerto mal configurado, o doble NATRevisa el paso 6, busca un router aguas arriba
Funcionaba y dejó de funcionar de un día para otroLa IP pública cambió, DDNS no actualizadonslookup tunombre.duckdns.org debería devolver la IP pública actual
Conectado pero no se alcanza ningún servicioFirewall de la Pi o reenvío de IP desactivadosudo ufw status (el puerto debe estar permitido), sysctl net.ipv4.ip_forward debería devolver 1
Rendimiento muy por debajo de lo normalModelo de Pi con poca potencia (Zero, Pi 3) o Wi-Fi en la PiCambia a Ethernet, o revisa la sección de hardware más arriba
El perfil funciona en un dispositivo pero no en otroArchivo de configuración corrupto o mal transferidoRegenera un perfil nuevo con pivpn -a

Blindar el servidor: lo que no conviene saltarse

Un servidor expuesto a internet, aunque sea a través de un único puerto UDP, merece unos pasos básicos de seguridad que llevan minutos.

Desactiva la autenticación por contraseña en SSH. Si no se hizo ya en el paso 1, genera un par de claves en tu ordenador (ssh-keygen -t ed25519), copia la clave pública a la Pi (ssh-copy-id pi@pivpn.local), y luego pon PasswordAuthentication en no dentro de /etc/ssh/sshd_config. Reinicia el servicio SSH (sudo systemctl restart ssh). Sin esto, la Pi queda expuesta a intentos automatizados de fuerza bruta contra SSH si ese puerto llega a ser alcanzable desde fuera.

Instala fail2ban, que bloquea automáticamente direcciones IP que acumulan intentos de acceso fallidos:

sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban

La configuración por defecto ya cubre SSH de forma efectiva, sin necesidad de ajustes extra.

Cambia el puerto SSH por defecto. El puerto 22 es el primero que escanean los bots automatizados. Cambiarlo por uno aleatorio por encima de 2000 en /etc/ssh/sshd_config reduce mucho el ruido de intentos automatizados, aunque no sustituye a una buena autenticación por clave.

Mantén el sistema actualizado automáticamente. PiVPN activa unattended-upgrades por defecto durante la instalación. Confirma que está activo:

sudo systemctl status unattended-upgrades

Por último, mantén los perfiles WireGuard al mínimo necesario. Cada dispositivo debería tener su propio perfil, nunca un archivo .conf compartido entre personas o equipos. Si un dispositivo se pierde o se presta, revoca ese perfil concreto en vez de seguir usándolo por costumbre.

Copia de seguridad antes de que algo falle

Una tarjeta SD acaba fallando, antes o después, es una propiedad del medio, no señal de una tarjeta mala. Hacer copia de seguridad de los archivos de configuración lleva dos minutos y convierte un fallo de tarjeta en una restauración rápida en vez de una reconstrucción completa.

sudo tar -czvf ~/backup-wireguard-$(date +%F).tar.gz /etc/wireguard ~/configs
scp pi@pivpn.local:~/backup-wireguard-*.tar.gz .

Este archivo contiene las claves del servidor y todos los perfiles de cliente. Guárdalo fuera de la Pi (un ordenador, una nube personal, un disco externo), y repite el proceso después de añadir o revocar un perfil.

Para restaurar en una tarjeta SD nueva tras un fallo, reinstala Raspberry Pi OS y PiVPN como en los pasos 1 y 4, y luego sustituye el contenido de la carpeta /etc/wireguard generada por el de la copia de seguridad antes de reiniciar el servicio WireGuard.

Añadir Pi-hole (opcional pero recomendable)

Una vez que el servidor WireGuard está en marcha, añadir Pi-hole lleva unos diez minutos y convierte el túnel en una VPN más un bloqueador de anuncios y rastreadores para cualquier dispositivo conectado, esté donde esté.

curl -sSL https://install.pi-hole.net | bash

Sigue el asistente: elige la interfaz de red, elige un DNS ascendente (Cloudflare o Quad9 funcionan bien). Una vez instalado, vuelve a la configuración de WireGuard y cambia el DNS entregado a los clientes por la IP local propia de la Pi:

pivpn -d

Apunta el DNS de los clientes a Pi-hole. Regenera los perfiles existentes si hace falta, y confirma desde un dispositivo conectado al túnel que el panel de Pi-hole (en http://<IP-local-Pi>/admin) empieza a registrar consultas bloqueadas.

Mantenimiento: el coste continuo tras el montaje

Actualizaciones: sudo apt update && sudo apt full-upgrade -y una vez al mes es suficiente, ya que PiVPN activa las actualizaciones de seguridad automáticas por defecto.

Revocar un dispositivo perdido: pivpn -r, y elige el perfil a revocar, un solo comando, que merece la pena probar una vez de verdad en vez de descubrirlo bajo presión el día que se pierde un móvil.

Comprobar conexiones activas: pivpn -c lista los perfiles y la fecha de su último handshake, útil para detectar un dispositivo que supuestamente estaba revocado pero sigue mostrando actividad.

Vigilar el DDNS: es el componente silencioso del que depende todo; si las conexiones remotas dejan de funcionar de un día para otro sin ningún otro cambio, es el primer sospechoso.

Comprobar espacio en disco y salud de la tarjeta SD: df -h de vez en cuando, y un vistazo a los logs del sistema (journalctl -p err) para detectar errores de lectura/escritura tempranos.

Presupuesto realista una vez terminado el montaje: una o dos horas al año, cubiertas en su mayoría por las comprobaciones anteriores.

Preguntas frecuentes

¿Puedo usar esto junto a una suscripción VPN comercial? Sí, y de hecho es la configuración más completa: el servidor personal para llegar a casa, una suscripción como NordVPN para todo lo que necesite un cambio de ubicación real o anonimato. Ambos clientes funcionan en dispositivos distintos o en momentos distintos sin ningún conflicto.

¿El CGNAT descarta esto para siempre? No necesariamente. Algunos proveedores entregan una IP pública dedicada gratis si la pides a soporte, con una lógica parecida a la que cubre nuestra guía de IP dedicada. Si eso falla, un servicio de túnel inverso como Tailscale o ZeroTier lo sortea, al precio de depender de un tercero en vez de tener una configuración totalmente autoalojada.

¿Cuántos dispositivos pueden conectarse a la vez? Una Pi 4 o 5 gestiona sin esfuerzo una docena de conexiones WireGuard simultáneas para el uso típico de un hogar. El límite suele venir del ancho de banda de subida del router antes que de la CPU de la Pi.

¿Qué pasa si la Pi se cae mientras estoy de viaje? El túnel simplemente deja de funcionar; ningún otro dispositivo de la red doméstica se ve afectado, porque la Pi solo enruta el tráfico VPN y no está en el camino del resto de la red local. Una razón más para mantener una copia de seguridad actualizada, para que un fallo de hardware signifique una restauración rápida en vez de reconstruir desde cero.

¿Quieres comparar todos los VPN uno al lado del otro? Consulta nuestra tabla comparativa completa con puntuaciones en 18 criterios.

Nuestro veredicto

Un servidor WireGuard personal en una Raspberry Pi sustituye a una VPN comercial para un único trabajo, llegar a casa de forma segura, y lo hace bien, gratis, para siempre. No es un proyecto de anonimato ni de cambio de ubicación; para eso, una suscripción normal sigue siendo la mejor opción. El montaje lleva una tarde y cerca de una hora de mantenimiento al año después. Encaja bien con cualquiera que ya tenga un NAS o Home Assistant que merezca protección, y es un proyecto que se puede saltar quien solo busque desbloquear streaming extranjero.

Esta guía cubre el montaje completo del servidor WireGuard personal, desde la instalación hasta el blindaje y el mantenimiento. Este proyecto encaja junto a los otros dos usos VPN habituales en Raspberry Pi: una puerta de enlace de red y una combinación de Pi-hole con VPN comercial.

Sigue leyendo: Cómo comprobar si tu VPN está filtrando tu IP y Mejor VPN con IP dedicada en 2026.