[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-/blog/tutorial/configurar-vpn-wireguard":3,"prev-/blog/tutorial/configurar-vpn-wireguard":1620,"next-/blog/tutorial/configurar-vpn-wireguard":1623,"related-/blog/tutorial/configurar-vpn-wireguard":1626},{"id":4,"title":5,"author":6,"authorUrl":7,"body":8,"category":1587,"cta":1588,"date":1591,"dateModified":1591,"description":1592,"draft":1593,"extension":1594,"faq":1595,"featured":1593,"image":1608,"imageAlt":1609,"meta":1610,"navigation":170,"path":1611,"readingTime":315,"seo":1612,"stem":1613,"tags":1614,"__hash__":1619},"blog/blog/tutorial/configurar-vpn-wireguard.md","Configurar VPN WireGuard en tu servidor en 10 minutos","Syswork México","/nosotros",{"type":9,"value":10,"toc":1563},"minimark",[11,15,18,23,32,36,79,82,111,115,118,193,196,243,246,250,253,364,392,395,434,438,468,472,516,523,527,530,535,569,573,634,637,664,666,670,673,756,765,773,777,780,815,822,826,830,872,875,927,931,938,942,945,949,952,982,986,1483,1485,1489,1492,1498,1505,1509,1512,1550,1559],[12,13,14],"p",{},"WireGuard es el protocolo VPN que debería haber existido desde el principio. Es rápido (más que OpenVPN e IPsec), simple (un archivo de configuración de 10 líneas), seguro (criptografía moderna sin opciones inseguras) y está integrado en el kernel de Linux desde la versión 5.6. Si necesitas conectar tu equipo de forma segura a tus servidores, WireGuard es la respuesta.",[12,16,17],{},"En esta guía vas a tener un servidor VPN funcionando en menos de 10 minutos.",[19,20,22],"h2",{"id":21},"requisitos-previos","Requisitos previos",[12,24,25,26,31],{},"Un servidor Ubuntu 24.04 con IP pública y acceso root. Tu ",[27,28,30],"a",{"href":29},"/blog/configurar-firewall-ufw-linux","firewall UFW"," debe permitir el puerto UDP que elijas para WireGuard.",[19,33,35],{"id":34},"paso-1-instalar-wireguard","Paso 1: Instalar WireGuard",[37,38,43],"pre",{"className":39,"code":40,"language":41,"meta":42,"style":42},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","sudo apt update\nsudo apt install wireguard -y\n","bash","",[44,45,46,62],"code",{"__ignoreMap":42},[47,48,51,55,59],"span",{"class":49,"line":50},"line",1,[47,52,54],{"class":53},"sbgvK","sudo",[47,56,58],{"class":57},"s_sjI"," apt",[47,60,61],{"class":57}," update\n",[47,63,65,67,69,72,75],{"class":49,"line":64},2,[47,66,54],{"class":53},[47,68,58],{"class":57},[47,70,71],{"class":57}," install",[47,73,74],{"class":57}," wireguard",[47,76,78],{"class":77},"stzsN"," -y\n",[12,80,81],{},"WireGuard ya está en los repositorios oficiales de Ubuntu 24.04. Verifica:",[37,83,85],{"className":39,"code":84,"language":41,"meta":42,"style":42},"sudo modprobe wireguard\nlsmod | grep wireguard\n",[44,86,87,97],{"__ignoreMap":42},[47,88,89,91,94],{"class":49,"line":50},[47,90,54],{"class":53},[47,92,93],{"class":57}," modprobe",[47,95,96],{"class":57}," wireguard\n",[47,98,99,102,106,109],{"class":49,"line":64},[47,100,101],{"class":53},"lsmod",[47,103,105],{"class":104},"smGrS"," |",[47,107,108],{"class":53}," grep",[47,110,96],{"class":57},[19,112,114],{"id":113},"paso-2-generar-llaves-del-servidor","Paso 2: Generar llaves del servidor",[12,116,117],{},"WireGuard usa criptografía de llave pública — cada peer (servidor y cada cliente) tiene un par de llaves:",[37,119,121],{"className":39,"code":120,"language":41,"meta":42,"style":42},"# Generar llaves del servidor\nwg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key\n\n# Proteger la llave privada\nsudo chmod 600 /etc/wireguard/server_private.key\n",[44,122,123,129,165,172,178],{"__ignoreMap":42},[47,124,125],{"class":49,"line":50},[47,126,128],{"class":127},"sutJx","# Generar llaves del servidor\n",[47,130,131,134,137,139,142,145,148,150,153,156,158,160,162],{"class":49,"line":64},[47,132,133],{"class":53},"wg",[47,135,136],{"class":57}," genkey",[47,138,105],{"class":104},[47,140,141],{"class":53}," sudo",[47,143,144],{"class":57}," tee",[47,146,147],{"class":57}," /etc/wireguard/server_private.key",[47,149,105],{"class":104},[47,151,152],{"class":53}," wg",[47,154,155],{"class":57}," pubkey",[47,157,105],{"class":104},[47,159,141],{"class":53},[47,161,144],{"class":57},[47,163,164],{"class":57}," /etc/wireguard/server_public.key\n",[47,166,168],{"class":49,"line":167},3,[47,169,171],{"emptyLinePlaceholder":170},true,"\n",[47,173,175],{"class":49,"line":174},4,[47,176,177],{"class":127},"# Proteger la llave privada\n",[47,179,181,183,186,190],{"class":49,"line":180},5,[47,182,54],{"class":53},[47,184,185],{"class":57}," chmod",[47,187,189],{"class":188},"srdBf"," 600",[47,191,192],{"class":57}," /etc/wireguard/server_private.key\n",[12,194,195],{},"Guarda las llaves — las necesitarás en la configuración:",[37,197,199],{"className":39,"code":198,"language":41,"meta":42,"style":42},"echo \"Privada: $(sudo cat /etc/wireguard/server_private.key)\"\necho \"Pública: $(sudo cat /etc/wireguard/server_public.key)\"\n",[44,200,201,225],{"__ignoreMap":42},[47,202,203,207,211,214,217,219,222],{"class":49,"line":50},[47,204,206],{"class":205},"sptTA","echo",[47,208,210],{"class":209},"sjJ54"," \"",[47,212,213],{"class":57},"Privada: ",[47,215,216],{"class":209},"$(",[47,218,54],{"class":53},[47,220,221],{"class":57}," cat /etc/wireguard/server_private.key",[47,223,224],{"class":209},")\"\n",[47,226,227,229,231,234,236,238,241],{"class":49,"line":64},[47,228,206],{"class":205},[47,230,210],{"class":209},[47,232,233],{"class":57},"Pública: ",[47,235,216],{"class":209},[47,237,54],{"class":53},[47,239,240],{"class":57}," cat /etc/wireguard/server_public.key",[47,242,224],{"class":209},[244,245],"ad-banner",{},[19,247,249],{"id":248},"paso-3-configurar-el-servidor","Paso 3: Configurar el servidor",[12,251,252],{},"Crea el archivo de configuración de la interfaz WireGuard:",[37,254,256],{"className":39,"code":255,"language":41,"meta":42,"style":42},"sudo tee /etc/wireguard/wg0.conf > /dev/null \u003C\u003CEOF\n[Interface]\n# Llave privada del servidor\nPrivateKey = $(sudo cat /etc/wireguard/server_private.key)\n\n# IP del servidor dentro del túnel VPN\nAddress = 10.10.0.1/24\n\n# Puerto UDP donde escucha WireGuard\nListenPort = 51820\n\n# Reglas para enrutar tráfico de los clientes a internet\nPostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\nPostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\nEOF\n",[44,257,258,279,284,289,303,307,313,319,324,330,336,341,347,353,359],{"__ignoreMap":42},[47,259,260,262,264,267,270,273,276],{"class":49,"line":50},[47,261,54],{"class":53},[47,263,144],{"class":57},[47,265,266],{"class":57}," /etc/wireguard/wg0.conf",[47,268,269],{"class":104}," >",[47,271,272],{"class":57}," /dev/null",[47,274,275],{"class":104}," \u003C\u003C",[47,277,278],{"class":209},"EOF\n",[47,280,281],{"class":49,"line":64},[47,282,283],{"class":57},"[Interface]\n",[47,285,286],{"class":49,"line":167},[47,287,288],{"class":57},"# Llave privada del servidor\n",[47,290,291,294,296,298,300],{"class":49,"line":174},[47,292,293],{"class":57},"PrivateKey = ",[47,295,216],{"class":209},[47,297,54],{"class":53},[47,299,221],{"class":57},[47,301,302],{"class":209},")\n",[47,304,305],{"class":49,"line":180},[47,306,171],{"emptyLinePlaceholder":170},[47,308,310],{"class":49,"line":309},6,[47,311,312],{"class":57},"# IP del servidor dentro del túnel VPN\n",[47,314,316],{"class":49,"line":315},7,[47,317,318],{"class":57},"Address = 10.10.0.1/24\n",[47,320,322],{"class":49,"line":321},8,[47,323,171],{"emptyLinePlaceholder":170},[47,325,327],{"class":49,"line":326},9,[47,328,329],{"class":57},"# Puerto UDP donde escucha WireGuard\n",[47,331,333],{"class":49,"line":332},10,[47,334,335],{"class":57},"ListenPort = 51820\n",[47,337,339],{"class":49,"line":338},11,[47,340,171],{"emptyLinePlaceholder":170},[47,342,344],{"class":49,"line":343},12,[47,345,346],{"class":57},"# Reglas para enrutar tráfico de los clientes a internet\n",[47,348,350],{"class":49,"line":349},13,[47,351,352],{"class":57},"PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\n",[47,354,356],{"class":49,"line":355},14,[47,357,358],{"class":57},"PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\n",[47,360,362],{"class":49,"line":361},15,[47,363,278],{"class":209},[365,366,369],"alert",{"title":367,"type":368},"Interfaz de red","info",[12,370,371,372,375,376,379,380,383,384,387,388,391],{},"Cambia ",[44,373,374],{},"eth0"," por el nombre de tu interfaz de red principal. Puedes verificarlo con ",[44,377,378],{},"ip route | grep default",". En muchos servidores cloud es ",[44,381,382],{},"ens3",", ",[44,385,386],{},"ens5"," o ",[44,389,390],{},"enp0s3",".",[12,393,394],{},"Habilita el reenvío de paquetes IP (necesario para que los clientes puedan acceder a internet o a otras redes a través del servidor):",[37,396,398],{"className":39,"code":397,"language":41,"meta":42,"style":42},"echo \"net.ipv4.ip_forward = 1\" | sudo tee -a /etc/sysctl.conf\nsudo sysctl -p\n",[44,399,400,424],{"__ignoreMap":42},[47,401,402,404,406,409,412,414,416,418,421],{"class":49,"line":50},[47,403,206],{"class":205},[47,405,210],{"class":209},[47,407,408],{"class":57},"net.ipv4.ip_forward = 1",[47,410,411],{"class":209},"\"",[47,413,105],{"class":104},[47,415,141],{"class":53},[47,417,144],{"class":57},[47,419,420],{"class":77}," -a",[47,422,423],{"class":57}," /etc/sysctl.conf\n",[47,425,426,428,431],{"class":49,"line":64},[47,427,54],{"class":53},[47,429,430],{"class":57}," sysctl",[47,432,433],{"class":77}," -p\n",[19,435,437],{"id":436},"paso-4-abrir-el-puerto-en-el-firewall","Paso 4: Abrir el puerto en el firewall",[37,439,441],{"className":39,"code":440,"language":41,"meta":42,"style":42},"sudo ufw allow 51820/udp comment 'WireGuard VPN'\n",[44,442,443],{"__ignoreMap":42},[47,444,445,447,450,453,456,459,462,465],{"class":49,"line":50},[47,446,54],{"class":53},[47,448,449],{"class":57}," ufw",[47,451,452],{"class":57}," allow",[47,454,455],{"class":57}," 51820/udp",[47,457,458],{"class":57}," comment",[47,460,461],{"class":209}," '",[47,463,464],{"class":57},"WireGuard VPN",[47,466,467],{"class":209},"'\n",[19,469,471],{"id":470},"paso-5-arrancar-wireguard","Paso 5: Arrancar WireGuard",[37,473,475],{"className":39,"code":474,"language":41,"meta":42,"style":42},"# Levantar la interfaz\nsudo systemctl enable --now wg-quick@wg0\n\n# Verificar estado\nsudo wg show\n",[44,476,477,482,498,502,507],{"__ignoreMap":42},[47,478,479],{"class":49,"line":50},[47,480,481],{"class":127},"# Levantar la interfaz\n",[47,483,484,486,489,492,495],{"class":49,"line":64},[47,485,54],{"class":53},[47,487,488],{"class":57}," systemctl",[47,490,491],{"class":57}," enable",[47,493,494],{"class":77}," --now",[47,496,497],{"class":57}," wg-quick@wg0\n",[47,499,500],{"class":49,"line":167},[47,501,171],{"emptyLinePlaceholder":170},[47,503,504],{"class":49,"line":174},[47,505,506],{"class":127},"# Verificar estado\n",[47,508,509,511,513],{"class":49,"line":180},[47,510,54],{"class":53},[47,512,152],{"class":57},[47,514,515],{"class":57}," show\n",[12,517,518,519,522],{},"Deberías ver la interfaz ",[44,520,521],{},"wg0"," con la llave pública del servidor y el puerto de escucha.",[19,524,526],{"id":525},"paso-6-agregar-un-cliente","Paso 6: Agregar un cliente",[12,528,529],{},"Para cada cliente que quieras conectar, necesitas generar un par de llaves y agregar su configuración al servidor.",[531,532,534],"h3",{"id":533},"generar-llaves-del-cliente","Generar llaves del cliente",[37,536,538],{"className":39,"code":537,"language":41,"meta":42,"style":42},"# En el servidor (o en cualquier máquina con wg)\nwg genkey | tee client1_private.key | wg pubkey > client1_public.key\n",[44,539,540,545],{"__ignoreMap":42},[47,541,542],{"class":49,"line":50},[47,543,544],{"class":127},"# En el servidor (o en cualquier máquina con wg)\n",[47,546,547,549,551,553,555,558,560,562,564,566],{"class":49,"line":64},[47,548,133],{"class":53},[47,550,136],{"class":57},[47,552,105],{"class":104},[47,554,144],{"class":53},[47,556,557],{"class":57}," client1_private.key",[47,559,105],{"class":104},[47,561,152],{"class":53},[47,563,155],{"class":57},[47,565,269],{"class":104},[47,567,568],{"class":57}," client1_public.key\n",[531,570,572],{"id":571},"agregar-el-peer-al-servidor","Agregar el peer al servidor",[37,574,576],{"className":39,"code":575,"language":41,"meta":42,"style":42},"sudo tee -a /etc/wireguard/wg0.conf > /dev/null \u003C\u003CEOF\n\n[Peer]\n# Cliente: laptop-juan\nPublicKey = $(cat client1_public.key)\nAllowedIPs = 10.10.0.2/32\nEOF\n",[44,577,578,596,600,605,610,625,630],{"__ignoreMap":42},[47,579,580,582,584,586,588,590,592,594],{"class":49,"line":50},[47,581,54],{"class":53},[47,583,144],{"class":57},[47,585,420],{"class":77},[47,587,266],{"class":57},[47,589,269],{"class":104},[47,591,272],{"class":57},[47,593,275],{"class":104},[47,595,278],{"class":209},[47,597,598],{"class":49,"line":64},[47,599,171],{"emptyLinePlaceholder":170},[47,601,602],{"class":49,"line":167},[47,603,604],{"class":57},"[Peer]\n",[47,606,607],{"class":49,"line":174},[47,608,609],{"class":57},"# Cliente: laptop-juan\n",[47,611,612,615,617,620,623],{"class":49,"line":180},[47,613,614],{"class":57},"PublicKey = ",[47,616,216],{"class":209},[47,618,619],{"class":53},"cat",[47,621,622],{"class":57}," client1_public.key",[47,624,302],{"class":209},[47,626,627],{"class":49,"line":309},[47,628,629],{"class":57},"AllowedIPs = 10.10.0.2/32\n",[47,631,632],{"class":49,"line":315},[47,633,278],{"class":209},[12,635,636],{},"Recarga la configuración sin desconectar clientes existentes:",[37,638,640],{"className":39,"code":639,"language":41,"meta":42,"style":42},"sudo wg syncconf wg0 \u003C(sudo wg-quick strip wg0)\n",[44,641,642],{"__ignoreMap":42},[47,643,644,646,648,651,654,657,659,662],{"class":49,"line":50},[47,645,54],{"class":53},[47,647,152],{"class":57},[47,649,650],{"class":57}," syncconf",[47,652,653],{"class":57}," wg0",[47,655,656],{"class":209}," \u003C(",[47,658,54],{"class":53},[47,660,661],{"class":57}," wg-quick strip wg0",[47,663,302],{"class":209},[244,665],{},[531,667,669],{"id":668},"crear-la-configuración-del-cliente","Crear la configuración del cliente",[12,671,672],{},"Este archivo se copia al dispositivo del usuario:",[37,674,676],{"className":39,"code":675,"language":41,"meta":42,"style":42},"cat > client1.conf \u003C\u003CEOF\n[Interface]\nPrivateKey = $(cat client1_private.key)\nAddress = 10.10.0.2/24\nDNS = 1.1.1.1, 8.8.8.8\n\n[Peer]\nPublicKey = $(sudo cat /etc/wireguard/server_public.key)\nEndpoint = TU_IP_PUBLICA:51820\nAllowedIPs = 0.0.0.0/0\nPersistentKeepalive = 25\nEOF\n",[44,677,678,691,695,707,712,717,721,725,737,742,747,752],{"__ignoreMap":42},[47,679,680,682,684,687,689],{"class":49,"line":50},[47,681,619],{"class":53},[47,683,269],{"class":104},[47,685,686],{"class":57}," client1.conf",[47,688,275],{"class":104},[47,690,278],{"class":209},[47,692,693],{"class":49,"line":64},[47,694,283],{"class":57},[47,696,697,699,701,703,705],{"class":49,"line":167},[47,698,293],{"class":57},[47,700,216],{"class":209},[47,702,619],{"class":53},[47,704,557],{"class":57},[47,706,302],{"class":209},[47,708,709],{"class":49,"line":174},[47,710,711],{"class":57},"Address = 10.10.0.2/24\n",[47,713,714],{"class":49,"line":180},[47,715,716],{"class":57},"DNS = 1.1.1.1, 8.8.8.8\n",[47,718,719],{"class":49,"line":309},[47,720,171],{"emptyLinePlaceholder":170},[47,722,723],{"class":49,"line":315},[47,724,604],{"class":57},[47,726,727,729,731,733,735],{"class":49,"line":321},[47,728,614],{"class":57},[47,730,216],{"class":209},[47,732,54],{"class":53},[47,734,240],{"class":57},[47,736,302],{"class":209},[47,738,739],{"class":49,"line":326},[47,740,741],{"class":57},"Endpoint = TU_IP_PUBLICA:51820\n",[47,743,744],{"class":49,"line":332},[47,745,746],{"class":57},"AllowedIPs = 0.0.0.0/0\n",[47,748,749],{"class":49,"line":338},[47,750,751],{"class":57},"PersistentKeepalive = 25\n",[47,753,754],{"class":49,"line":343},[47,755,278],{"class":209},[12,757,758,764],{},[759,760,761],"strong",{},[44,762,763],{},"AllowedIPs = 0.0.0.0/0"," enruta TODO el tráfico del cliente por la VPN (full tunnel). Si solo quieres que el tráfico hacia tu red interna pase por la VPN (split tunnel), cámbialo por la subred específica:",[37,766,771],{"className":767,"code":769,"language":770},[768],"language-text","AllowedIPs = 10.10.0.0/24, 10.0.1.0/24\n","text",[44,772,769],{"__ignoreMap":42},[531,774,776],{"id":775},"generar-código-qr-para-móviles","Generar código QR para móviles",[12,778,779],{},"Para conectar desde el celular, genera un QR que la app de WireGuard puede escanear:",[37,781,783],{"className":39,"code":782,"language":41,"meta":42,"style":42},"sudo apt install qrencode -y\nqrencode -t ansiutf8 \u003C client1.conf\n",[44,784,785,798],{"__ignoreMap":42},[47,786,787,789,791,793,796],{"class":49,"line":50},[47,788,54],{"class":53},[47,790,58],{"class":57},[47,792,71],{"class":57},[47,794,795],{"class":57}," qrencode",[47,797,78],{"class":77},[47,799,800,803,806,809,812],{"class":49,"line":64},[47,801,802],{"class":53},"qrencode",[47,804,805],{"class":77}," -t",[47,807,808],{"class":57}," ansiutf8",[47,810,811],{"class":104}," \u003C",[47,813,814],{"class":57}," client1.conf\n",[365,816,819],{"title":817,"type":818},"Seguridad de las llaves","warning",[12,820,821],{},"La llave privada del cliente es como una contraseña. Envíala por un canal seguro (no por correo sin cifrar) y borra los archivos de llaves del servidor después de entregar la configuración al usuario.",[19,823,825],{"id":824},"paso-7-conectar-el-cliente","Paso 7: Conectar el cliente",[531,827,829],{"id":828},"linux","Linux",[37,831,833],{"className":39,"code":832,"language":41,"meta":42,"style":42},"sudo apt install wireguard -y\nsudo cp client1.conf /etc/wireguard/wg0.conf\nsudo wg-quick up wg0\n",[44,834,835,847,859],{"__ignoreMap":42},[47,836,837,839,841,843,845],{"class":49,"line":50},[47,838,54],{"class":53},[47,840,58],{"class":57},[47,842,71],{"class":57},[47,844,74],{"class":57},[47,846,78],{"class":77},[47,848,849,851,854,856],{"class":49,"line":64},[47,850,54],{"class":53},[47,852,853],{"class":57}," cp",[47,855,686],{"class":57},[47,857,858],{"class":57}," /etc/wireguard/wg0.conf\n",[47,860,861,863,866,869],{"class":49,"line":167},[47,862,54],{"class":53},[47,864,865],{"class":57}," wg-quick",[47,867,868],{"class":57}," up",[47,870,871],{"class":57}," wg0\n",[12,873,874],{},"Verifica la conexión:",[37,876,878],{"className":39,"code":877,"language":41,"meta":42,"style":42},"# Ver estado de WireGuard\nsudo wg show\n\n# Ping al servidor dentro del túnel\nping 10.10.0.1\n\n# Verificar que tu IP pública cambió (si usas full tunnel)\ncurl ifconfig.me\n",[44,879,880,885,893,897,902,910,914,919],{"__ignoreMap":42},[47,881,882],{"class":49,"line":50},[47,883,884],{"class":127},"# Ver estado de WireGuard\n",[47,886,887,889,891],{"class":49,"line":64},[47,888,54],{"class":53},[47,890,152],{"class":57},[47,892,515],{"class":57},[47,894,895],{"class":49,"line":167},[47,896,171],{"emptyLinePlaceholder":170},[47,898,899],{"class":49,"line":174},[47,900,901],{"class":127},"# Ping al servidor dentro del túnel\n",[47,903,904,907],{"class":49,"line":180},[47,905,906],{"class":53},"ping",[47,908,909],{"class":188}," 10.10.0.1\n",[47,911,912],{"class":49,"line":309},[47,913,171],{"emptyLinePlaceholder":170},[47,915,916],{"class":49,"line":315},[47,917,918],{"class":127},"# Verificar que tu IP pública cambió (si usas full tunnel)\n",[47,920,921,924],{"class":49,"line":321},[47,922,923],{"class":53},"curl",[47,925,926],{"class":57}," ifconfig.me\n",[531,928,930],{"id":929},"macos-y-windows","macOS y Windows",[12,932,933,934,937],{},"Descarga la app oficial de WireGuard, importa el archivo ",[44,935,936],{},"client1.conf"," y activa el túnel.",[531,939,941],{"id":940},"ios-y-android","iOS y Android",[12,943,944],{},"Descarga la app WireGuard desde la App Store o Play Store, escanea el código QR y activa.",[19,946,948],{"id":947},"agregar-más-clientes","Agregar más clientes",[12,950,951],{},"Para cada cliente nuevo, repite el proceso:",[953,954,955,959,973,979],"ol",{},[956,957,958],"li",{},"Generar par de llaves",[956,960,961,962,965,966,383,969,972],{},"Agregar ",[44,963,964],{},"[Peer]"," al archivo del servidor con una IP diferente (",[44,967,968],{},"10.10.0.3/32",[44,970,971],{},"10.10.0.4/32",", etc.)",[956,974,975,976],{},"Recargar con ",[44,977,978],{},"wg syncconf",[956,980,981],{},"Crear el archivo de configuración del cliente",[531,983,985],{"id":984},"script-para-automatizar","Script para automatizar",[37,987,989],{"className":39,"code":988,"language":41,"meta":42,"style":42},"#!/bin/bash\n# add-client.sh — Agrega un nuevo cliente WireGuard\n# Uso: sudo ./add-client.sh nombre-del-cliente 10.10.0.X\n\nCLIENT_NAME=$1\nCLIENT_IP=$2\nSERVER_PUBKEY=$(sudo cat /etc/wireguard/server_public.key)\nSERVER_ENDPOINT=\"TU_IP_PUBLICA:51820\"\n\n# Generar llaves\nwg genkey | tee \"/etc/wireguard/clients/${CLIENT_NAME}_private.key\" \\\n  | wg pubkey > \"/etc/wireguard/clients/${CLIENT_NAME}_public.key\"\n\nCLIENT_PRIVKEY=$(cat \"/etc/wireguard/clients/${CLIENT_NAME}_private.key\")\nCLIENT_PUBKEY=$(cat \"/etc/wireguard/clients/${CLIENT_NAME}_public.key\")\n\n# Agregar peer al servidor\ncat >> /etc/wireguard/wg0.conf \u003C\u003CEOF\n\n[Peer]\n# ${CLIENT_NAME}\nPublicKey = ${CLIENT_PUBKEY}\nAllowedIPs = ${CLIENT_IP}/32\nEOF\n\n# Recargar\nwg syncconf wg0 \u003C(wg-quick strip wg0)\n\n# Generar config del cliente\ncat > \"/etc/wireguard/clients/${CLIENT_NAME}.conf\" \u003C\u003CEOF\n[Interface]\nPrivateKey = ${CLIENT_PRIVKEY}\nAddress = ${CLIENT_IP}/24\nDNS = 1.1.1.1\n\n[Peer]\nPublicKey = ${SERVER_PUBKEY}\nEndpoint = ${SERVER_ENDPOINT}\nAllowedIPs = 0.0.0.0/0\nPersistentKeepalive = 25\nEOF\n\necho \"Cliente ${CLIENT_NAME} creado. Config en /etc/wireguard/clients/${CLIENT_NAME}.conf\"\nqrencode -t ansiutf8 \u003C \"/etc/wireguard/clients/${CLIENT_NAME}.conf\"\n",[44,990,991,996,1001,1006,1010,1023,1033,1053,1068,1072,1077,1109,1135,1139,1166,1193,1198,1204,1218,1223,1228,1241,1252,1267,1272,1277,1283,1302,1307,1313,1339,1344,1355,1370,1376,1381,1386,1397,1409,1414,1419,1424,1429,1458],{"__ignoreMap":42},[47,992,993],{"class":49,"line":50},[47,994,995],{"class":127},"#!/bin/bash\n",[47,997,998],{"class":49,"line":64},[47,999,1000],{"class":127},"# add-client.sh — Agrega un nuevo cliente WireGuard\n",[47,1002,1003],{"class":49,"line":167},[47,1004,1005],{"class":127},"# Uso: sudo ./add-client.sh nombre-del-cliente 10.10.0.X\n",[47,1007,1008],{"class":49,"line":174},[47,1009,171],{"emptyLinePlaceholder":170},[47,1011,1012,1016,1019],{"class":49,"line":180},[47,1013,1015],{"class":1014},"su5hD","CLIENT_NAME",[47,1017,1018],{"class":104},"=",[47,1020,1022],{"class":1021},"s99_P","$1\n",[47,1024,1025,1028,1030],{"class":49,"line":309},[47,1026,1027],{"class":1014},"CLIENT_IP",[47,1029,1018],{"class":104},[47,1031,1032],{"class":1021},"$2\n",[47,1034,1035,1038,1040,1043,1045,1048,1051],{"class":49,"line":315},[47,1036,1037],{"class":1014},"SERVER_PUBKEY",[47,1039,1018],{"class":104},[47,1041,216],{"class":1042},"sP7_E",[47,1044,54],{"class":53},[47,1046,1047],{"class":57}," cat",[47,1049,1050],{"class":57}," /etc/wireguard/server_public.key",[47,1052,302],{"class":1042},[47,1054,1055,1058,1060,1062,1065],{"class":49,"line":321},[47,1056,1057],{"class":1014},"SERVER_ENDPOINT",[47,1059,1018],{"class":104},[47,1061,411],{"class":209},[47,1063,1064],{"class":57},"TU_IP_PUBLICA:51820",[47,1066,1067],{"class":209},"\"\n",[47,1069,1070],{"class":49,"line":326},[47,1071,171],{"emptyLinePlaceholder":170},[47,1073,1074],{"class":49,"line":332},[47,1075,1076],{"class":127},"# Generar llaves\n",[47,1078,1079,1081,1083,1085,1087,1089,1092,1095,1097,1100,1103,1105],{"class":49,"line":338},[47,1080,133],{"class":53},[47,1082,136],{"class":57},[47,1084,105],{"class":104},[47,1086,144],{"class":53},[47,1088,210],{"class":209},[47,1090,1091],{"class":57},"/etc/wireguard/clients/",[47,1093,1094],{"class":209},"${",[47,1096,1015],{"class":1014},[47,1098,1099],{"class":209},"}",[47,1101,1102],{"class":57},"_private.key",[47,1104,411],{"class":209},[47,1106,1108],{"class":1107},"s_hVV"," \\\n",[47,1110,1111,1114,1116,1118,1120,1122,1124,1126,1128,1130,1133],{"class":49,"line":343},[47,1112,1113],{"class":104},"  |",[47,1115,152],{"class":53},[47,1117,155],{"class":57},[47,1119,269],{"class":104},[47,1121,210],{"class":209},[47,1123,1091],{"class":57},[47,1125,1094],{"class":209},[47,1127,1015],{"class":1014},[47,1129,1099],{"class":209},[47,1131,1132],{"class":57},"_public.key",[47,1134,1067],{"class":209},[47,1136,1137],{"class":49,"line":349},[47,1138,171],{"emptyLinePlaceholder":170},[47,1140,1141,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164],{"class":49,"line":355},[47,1142,1143],{"class":1014},"CLIENT_PRIVKEY",[47,1145,1018],{"class":104},[47,1147,216],{"class":1042},[47,1149,619],{"class":53},[47,1151,210],{"class":209},[47,1153,1091],{"class":57},[47,1155,1094],{"class":209},[47,1157,1015],{"class":1014},[47,1159,1099],{"class":209},[47,1161,1102],{"class":57},[47,1163,411],{"class":209},[47,1165,302],{"class":1042},[47,1167,1168,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191],{"class":49,"line":361},[47,1169,1170],{"class":1014},"CLIENT_PUBKEY",[47,1172,1018],{"class":104},[47,1174,216],{"class":1042},[47,1176,619],{"class":53},[47,1178,210],{"class":209},[47,1180,1091],{"class":57},[47,1182,1094],{"class":209},[47,1184,1015],{"class":1014},[47,1186,1099],{"class":209},[47,1188,1132],{"class":57},[47,1190,411],{"class":209},[47,1192,302],{"class":1042},[47,1194,1196],{"class":49,"line":1195},16,[47,1197,171],{"emptyLinePlaceholder":170},[47,1199,1201],{"class":49,"line":1200},17,[47,1202,1203],{"class":127},"# Agregar peer al servidor\n",[47,1205,1207,1209,1212,1214,1216],{"class":49,"line":1206},18,[47,1208,619],{"class":53},[47,1210,1211],{"class":104}," >>",[47,1213,266],{"class":57},[47,1215,275],{"class":104},[47,1217,278],{"class":209},[47,1219,1221],{"class":49,"line":1220},19,[47,1222,171],{"emptyLinePlaceholder":170},[47,1224,1226],{"class":49,"line":1225},20,[47,1227,604],{"class":57},[47,1229,1231,1234,1236,1238],{"class":49,"line":1230},21,[47,1232,1233],{"class":57},"# ",[47,1235,1094],{"class":209},[47,1237,1015],{"class":1014},[47,1239,1240],{"class":209},"}\n",[47,1242,1244,1246,1248,1250],{"class":49,"line":1243},22,[47,1245,614],{"class":57},[47,1247,1094],{"class":209},[47,1249,1170],{"class":1014},[47,1251,1240],{"class":209},[47,1253,1255,1258,1260,1262,1264],{"class":49,"line":1254},23,[47,1256,1257],{"class":57},"AllowedIPs = ",[47,1259,1094],{"class":209},[47,1261,1027],{"class":1014},[47,1263,1099],{"class":209},[47,1265,1266],{"class":57},"/32\n",[47,1268,1270],{"class":49,"line":1269},24,[47,1271,278],{"class":209},[47,1273,1275],{"class":49,"line":1274},25,[47,1276,171],{"emptyLinePlaceholder":170},[47,1278,1280],{"class":49,"line":1279},26,[47,1281,1282],{"class":127},"# Recargar\n",[47,1284,1286,1288,1290,1292,1294,1297,1300],{"class":49,"line":1285},27,[47,1287,133],{"class":53},[47,1289,650],{"class":57},[47,1291,653],{"class":57},[47,1293,656],{"class":209},[47,1295,1296],{"class":53},"wg-quick",[47,1298,1299],{"class":57}," strip wg0",[47,1301,302],{"class":209},[47,1303,1305],{"class":49,"line":1304},28,[47,1306,171],{"emptyLinePlaceholder":170},[47,1308,1310],{"class":49,"line":1309},29,[47,1311,1312],{"class":127},"# Generar config del cliente\n",[47,1314,1316,1318,1320,1322,1324,1326,1328,1330,1333,1335,1337],{"class":49,"line":1315},30,[47,1317,619],{"class":53},[47,1319,269],{"class":104},[47,1321,210],{"class":209},[47,1323,1091],{"class":57},[47,1325,1094],{"class":209},[47,1327,1015],{"class":1014},[47,1329,1099],{"class":209},[47,1331,1332],{"class":57},".conf",[47,1334,411],{"class":209},[47,1336,275],{"class":104},[47,1338,278],{"class":209},[47,1340,1342],{"class":49,"line":1341},31,[47,1343,283],{"class":57},[47,1345,1347,1349,1351,1353],{"class":49,"line":1346},32,[47,1348,293],{"class":57},[47,1350,1094],{"class":209},[47,1352,1143],{"class":1014},[47,1354,1240],{"class":209},[47,1356,1358,1361,1363,1365,1367],{"class":49,"line":1357},33,[47,1359,1360],{"class":57},"Address = ",[47,1362,1094],{"class":209},[47,1364,1027],{"class":1014},[47,1366,1099],{"class":209},[47,1368,1369],{"class":57},"/24\n",[47,1371,1373],{"class":49,"line":1372},34,[47,1374,1375],{"class":57},"DNS = 1.1.1.1\n",[47,1377,1379],{"class":49,"line":1378},35,[47,1380,171],{"emptyLinePlaceholder":170},[47,1382,1384],{"class":49,"line":1383},36,[47,1385,604],{"class":57},[47,1387,1389,1391,1393,1395],{"class":49,"line":1388},37,[47,1390,614],{"class":57},[47,1392,1094],{"class":209},[47,1394,1037],{"class":1014},[47,1396,1240],{"class":209},[47,1398,1400,1403,1405,1407],{"class":49,"line":1399},38,[47,1401,1402],{"class":57},"Endpoint = ",[47,1404,1094],{"class":209},[47,1406,1057],{"class":1014},[47,1408,1240],{"class":209},[47,1410,1412],{"class":49,"line":1411},39,[47,1413,746],{"class":57},[47,1415,1417],{"class":49,"line":1416},40,[47,1418,751],{"class":57},[47,1420,1422],{"class":49,"line":1421},41,[47,1423,278],{"class":209},[47,1425,1427],{"class":49,"line":1426},42,[47,1428,171],{"emptyLinePlaceholder":170},[47,1430,1432,1434,1436,1439,1441,1443,1445,1448,1450,1452,1454,1456],{"class":49,"line":1431},43,[47,1433,206],{"class":205},[47,1435,210],{"class":209},[47,1437,1438],{"class":57},"Cliente ",[47,1440,1094],{"class":209},[47,1442,1015],{"class":1014},[47,1444,1099],{"class":209},[47,1446,1447],{"class":57}," creado. Config en /etc/wireguard/clients/",[47,1449,1094],{"class":209},[47,1451,1015],{"class":1014},[47,1453,1099],{"class":209},[47,1455,1332],{"class":57},[47,1457,1067],{"class":209},[47,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481],{"class":49,"line":1460},44,[47,1462,802],{"class":53},[47,1464,805],{"class":77},[47,1466,808],{"class":57},[47,1468,811],{"class":104},[47,1470,210],{"class":209},[47,1472,1091],{"class":57},[47,1474,1094],{"class":209},[47,1476,1015],{"class":1014},[47,1478,1099],{"class":209},[47,1480,1332],{"class":57},[47,1482,1067],{"class":209},[244,1484],{},[19,1486,1488],{"id":1487},"vpn-sitio-a-sitio-conectar-dos-redes","VPN sitio a sitio (conectar dos redes)",[12,1490,1491],{},"WireGuard también sirve para conectar dos redes — por ejemplo, la oficina con el centro de datos o con un cloud:",[37,1493,1496],{"className":1494,"code":1495,"language":770},[768],"Oficina (10.0.1.0/24) ◄──WireGuard──► Datacenter (10.0.2.0/24)\n",[44,1497,1495],{"__ignoreMap":42},[12,1499,1500,1501,1504],{},"La configuración es similar, pero en ",[44,1502,1503],{},"AllowedIPs"," de cada peer pones la subred del otro lado. Ambos lados pueden iniciar tráfico — ideal para que los usuarios de la oficina accedan a los servidores del datacenter y viceversa.",[19,1506,1508],{"id":1507},"siguientes-pasos","Siguientes pasos",[12,1510,1511],{},"Con WireGuard corriendo, puedes mejorar la configuración:",[1513,1514,1515,1521,1535,1541],"ul",{},[956,1516,1517,1520],{},[759,1518,1519],{},"DNS privado"," — configura un servidor DNS dentro de la VPN (Pi-hole o Unbound) para resolver nombres internos",[956,1522,1523,1526,1527,1531,1532],{},[759,1524,1525],{},"Monitoreo"," — agrega métricas de WireGuard a ",[27,1528,1530],{"href":1529},"/blog/monitoreo-grafana-prometheus","Prometheus y Grafana"," con ",[44,1533,1534],{},"wireguard_exporter",[956,1536,1537,1540],{},[759,1538,1539],{},"Alta disponibilidad"," — dos servidores WireGuard con failover DNS para que la VPN no tenga punto único de falla",[956,1542,1543,1549],{},[759,1544,1545],{},[27,1546,1548],{"href":1547},"/servicios/redes","Redes empresariales"," — diseño de VPN multi-sitio con segmentación y políticas de acceso por grupo",[1551,1552],"call-to-action",{"description":1553,"eyebrow":1554,"icon":1555,"label":1556,"title":1557,"to":1558},"Diseñamos e implementamos VPN con WireGuard para conectar tus ubicaciones con seguridad, rendimiento y simplicidad.","Conectividad segura","i-lucide-shield-check","Solicitar evaluación","¿Necesitas conectar sucursales o equipos remotos de forma segura?","/contacto",[1560,1561,1562],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":42,"searchDepth":64,"depth":167,"links":1564},[1565,1566,1567,1568,1569,1570,1571,1577,1582,1585,1586],{"id":21,"depth":64,"text":22},{"id":34,"depth":64,"text":35},{"id":113,"depth":64,"text":114},{"id":248,"depth":64,"text":249},{"id":436,"depth":64,"text":437},{"id":470,"depth":64,"text":471},{"id":525,"depth":64,"text":526,"children":1572},[1573,1574,1575,1576],{"id":533,"depth":167,"text":534},{"id":571,"depth":167,"text":572},{"id":668,"depth":167,"text":669},{"id":775,"depth":167,"text":776},{"id":824,"depth":64,"text":825,"children":1578},[1579,1580,1581],{"id":828,"depth":167,"text":829},{"id":929,"depth":167,"text":930},{"id":940,"depth":167,"text":941},{"id":947,"depth":64,"text":948,"children":1583},[1584],{"id":984,"depth":167,"text":985},{"id":1487,"depth":64,"text":1488},{"id":1507,"depth":64,"text":1508},"tutorial",{"title":1589,"description":1590,"label":1556,"to":1558,"icon":1555},"¿Necesitas una VPN empresarial para tu equipo?","Diseñamos e implementamos VPN con WireGuard para conectar sucursales, equipos remotos y acceso seguro a tu infraestructura.","2026-01-28","Guía rápida para instalar y configurar un servidor VPN con WireGuard en Ubuntu, conectar clientes y asegurar el tráfico entre tu equipo y tus servidores.",false,"md",[1596,1599,1602,1605],{"question":1597,"answer":1598},"¿WireGuard es más seguro que OpenVPN?","WireGuard tiene una superficie de ataque mucho menor — aproximadamente 4,000 líneas de código vs. 600,000 de OpenVPN. Usa criptografía moderna (ChaCha20, Curve25519, BLAKE2) sin opciones configurables que permitan usar algoritmos débiles. En la práctica, ambos son seguros si se configuran correctamente, pero WireGuard es más difícil de configurar mal.",{"question":1600,"answer":1601},"¿WireGuard sirve para conectar sucursales?","Sí. WireGuard funciona tanto para VPN de acceso remoto (un usuario se conecta al servidor) como para VPN sitio a sitio (dos redes se conectan entre sí). Para conexiones entre sucursales con múltiples servicios, es una alternativa más ligera y rápida que IPsec.",{"question":1603,"answer":1604},"¿Puedo usar WireGuard en celulares?","Sí. WireGuard tiene apps oficiales para iOS y Android. La configuración se importa escaneando un código QR que puedes generar desde el servidor. La conexión es rápida y consume menos batería que OpenVPN.",{"question":1606,"answer":1607},"¿Cuántos clientes soporta un servidor WireGuard?","WireGuard es extremadamente eficiente. Un servidor modesto puede manejar cientos de clientes simultáneos. El límite práctico suele ser el ancho de banda del servidor, no WireGuard en sí.","/images/blog/wireguard-vpn.jpg","Diagrama de red mostrando conexión VPN WireGuard entre clientes remotos y servidor empresarial",{},"/blog/tutorial/configurar-vpn-wireguard",{"title":5,"description":1592},"blog/tutorial/configurar-vpn-wireguard",[1615,1616,828,1617,1618,1587],"vpn","wireguard","seguridad","redes","2UtFWw4l1Xf2In8hJqnheeMpcDt_ytyL1-W-Jr-PzzQ",{"path":1621,"title":1622},"/blog/tutorial/migrar-mysql-a-postgresql","Cómo migrar de MySQL a PostgreSQL sin perder datos",{"path":1624,"title":1625},"/blog/tutorial/monitoreo-grafana-prometheus","Monitoreo de servidores con Grafana y Prometheus desde cero",[1627,1634,1641],{"path":1628,"title":1629,"description":1630,"date":1631,"category":1587,"image":1632,"imageAlt":1633,"readingTime":343},"/blog/tutorial/apis-rest-python-fastapi","Crear APIs REST con Python y FastAPI para integraciones empresariales","Guía paso a paso para construir una API REST profesional con Python y FastAPI que conecte tu ERP, CRM o cualquier sistema con validación, autenticación y documentación automática.","2026-03-04","/images/blog/fastapi-api-rest.jpg","Editor de código mostrando una API FastAPI con documentación Swagger generada automáticamente",{"path":1635,"title":1636,"description":1637,"date":1638,"category":1587,"image":1639,"imageAlt":1640,"readingTime":321},"/blog/tutorial/configurar-firewall-ufw-linux","Configurar firewall en Linux con UFW — reglas esenciales","Guía paso a paso para configurar UFW (Uncomplicated Firewall) en Ubuntu y Debian con las reglas esenciales para proteger servidores de producción.","2026-03-01","/images/blog/ufw-firewall-linux.jpg","Terminal de Linux mostrando reglas de firewall UFW activas protegiendo un servidor de producción",{"path":1642,"title":1643,"description":1644,"date":1645,"category":1587,"image":1646,"imageAlt":1647,"readingTime":332},"/blog/tutorial/traefik-reverse-proxy-docker","Configurar Traefik como reverse proxy para contenedores Docker","Guía paso a paso para instalar Traefik como reverse proxy con descubrimiento automático de contenedores Docker, SSL con Let's Encrypt y dashboard de monitoreo.","2026-02-28","/images/blog/traefik-docker.jpg","Dashboard de Traefik mostrando rutas automáticas hacia múltiples contenedores Docker con SSL activo"]