Por qué necesitas esto#
Hace unos meses me enfrenté a un problema común: quería acceder a mis servicios internos (Jellyfin, Home Assistant, etc.) desde fuera de casa, pero no quería exponerlos directamente en internet. Abrir puertos es un riesgo innecesario. La solución fue montar una VPN con Wireguard en Docker. Fue la mejor decisión que tomé para mi infraestructura casera.
Ventajas de Wireguard#
- Ligero: consume menos recursos que OpenVPN
- Rápido: protocolo moderno y eficiente
- Fácil de configurar: comparado con otras alternativas
- Seguro: criptografía de última generación
- Docker-friendly: hay imágenes oficiales excelentes
Preparación#
Necesitas:
- Un servidor con Docker instalado
- El archivo
docker-compose.yml - Un dominio o IP pública (para conectarte desde fuera)
- Los clientes Wireguard en tus dispositivos
Instalación paso a paso#
1. Crear el directorio de configuración#
mkdir -p ~/wireguard/config
cd ~/wireguard2. Docker Compose#
Crea el archivo docker-compose.yml:
version: '3.8'
services:
wireguard:
image: linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
- SERVERURL=tu-dominio-o-ip-publica.com
- SERVERPORT=51820
- PEERS=telefono,laptop,tablet
- PEERDNS=auto
ports:
- "51820:51820/udp"
volumes:
- ./config:/config
- /lib/modules:/lib/modules:ro
networks:
- mi-red
restart: unless-stopped
networks:
mi-red:
driver: bridge
ipam:
config:
- subnet: 10.0.0.0/24Reemplaza:
tu-dominio-o-ip-publica.comcon tu dirección real- Los PEERS con los nombres de tus dispositivos
- La zona horaria según tu ubicación
3. Iniciar el contenedor#
docker-compose up -dLos archivos de configuración se generarán automáticamente en ./config. Espera unos segundos y verifica:
ls -la config/peer_*/4. Obtener los códigos QR#
Para conectar tus dispositivos:
docker exec wireguard cat /config/peer_telefono/peer_telefono.confO directamente los QR:
docker exec wireguard qrencode -t ansiutf8 < /config/peer_telefono/peer_telefono.confEscanea con tu cliente Wireguard en cada dispositivo.
Conectar servicios internos#
Aquí viene lo importante. Quiero acceder a servicios en mi red interna. Para esto, modifico el docker-compose.yml y añado rutas:
environment:
- ALLOWEDIPS=10.0.0.0/24,192.168.1.0/24Esto permite que desde la VPN accedas a la red 192.168.1.0/24 (tu red local).
En el servidor, habilita el forwarding:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -pAcceso desde clientes#
Una vez conectado a la VPN, accedes a tus servicios usando sus IPs internas:
http://192.168.1.100:8096para Jellyfinhttp://192.168.1.50:8123para Home Assistant- Lo que necesites en tu red
Mantenimiento#
Renovar certificados (cada 6 meses aproximadamente):
docker exec wireguard /app/wireguard-tools/show-peer peer_nombreAñadir un nuevo dispositivo:
docker-compose down
# Edita PEERS en docker-compose.yml
docker-compose up -dNotas finales#
- Abre solo el puerto 51820/UDP en tu router
- Usa firewall en el servidor para bloquear acceso innecesario
- Verifica que el forwarding de IPs está activo
- Monitoriza el tráfico de la VPN regularmente
Llevo varios meses con esta configuración y es totalmente estable. Accedo a mis servicios desde cualquier parte sin nervios de seguridad. Definitivamente, recomiendo este setup a cualquiera que quiera mantener su infraestructura doméstica privada pero accesible.
Equipamiento recomendado#
- Raspberry Pi 3 B+ — Servidor ligero de bajo consumo para empezar tu homelab
- Raspberry Pi 4 (4GB) — La base perfecta para homelab, Docker y monitorización
Enlaces de afiliado. Sin coste extra para ti.