Acceso Público a Sitios y Servicios Locales de ServBay con Pinggy
Pinggy es una herramienta de túnel inverso extremadamente sencilla de usar. Gracias a la tecnología de proxy inverso, te permite exponer de manera segura a Internet cualquier servicio web que esté corriendo localmente (por ejemplo, en tu entorno ServBay). Esta guía describe en detalle cómo usar Pinggy en un entorno ServBay, facilitando a los desarrolladores el acceso público a sus servicios web locales para demostraciones remotas, colaboración en equipo o recepción de solicitudes Webhook, entre otros escenarios.
Principio Técnico
El núcleo de Pinggy es la creación de un túnel SSH seguro. Este redirige el puerto del servicio alojado localmente (posiblemente detrás de NAT o firewall) hacia un servidor público de Pinggy a través de SSH. Cuando un usuario accede a la URL asignada por Pinggy, la petición se reenvía de forma segura a tu servicio local a través del túnel.
En el contexto de ServBay, esto significa que puedes mapear cualquier sitio web que tengas funcionando en ServBay (por ejemplo: https://myproject.servbay.demo
) a una URL pública mediante Pinggy, sin necesidad de configuración complicada de puertos ni reglas de firewall.
Preparativos del Entorno
Pinggy no requiere instalar ningún software cliente adicional en tu equipo. Solo necesitas:
- ServBay instalado y en funcionamiento: Asegúrate de que tu entorno ServBay esté correctamente instalado y el sitio web o servicio que deseas exponer esté corriendo sin problemas.
- Un sitio ServBay operativo: Deberás haber configurado y arrancado uno o más sitios web locales en ServBay. Normalmente, estos sitios escuchan en los puertos locales 80 (HTTP) o 443 (HTTPS) a través de Caddy o Nginx incluidos en ServBay.
- Terminal compatible con SSH: macOS incluye de fábrica un terminal compatible, o puedes usar cualquier otro emulador de terminal que soporte SSH.
- Conocimientos básicos de SSH: Saber cómo ejecutar comandos SSH en la terminal.
Configuración Práctica del Túnel
Comando Principal
Establecer un túnel con Pinggy es muy fácil: ejecuta un comando SSH en tu terminal. El siguiente ejemplo muestra cómo exponer el sitio servbay.new
(que en ServBay corre en el puerto 443) a Internet:
bash
ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new "u:host:servbay.new"
1
Nota importante: Reemplaza XXXXXXXXXXX
por el nombre de usuario que obtuviste en la web de Pinggy (normalmente una cadena de caracteres). Cambia servbay.new
por el nombre de dominio local de tu sitio en ServBay que quieres exponer públicamente (por ejemplo: myproject.servbay.demo
).
A continuación, explicamos los parámetros clave de este comando:
Componente del parámetro | Descripción funcional |
---|---|
-p 443 | Especifica que la conexión SSH se realiza al puerto 443 del servidor de Pinggy. Usar el puerto predeterminado de HTTPS facilita sortear firewalls. |
-R0:localhost:443 | Es el núcleo del reenvío remoto. 0 indica que el servidor de Pinggy asignará un puerto público aleatorio. localhost:443 redirige el tráfico entrante al puerto 443 local, donde normalmente ServBay (Caddy/Nginx) atiende solicitudes HTTPS. |
-o StrictHostKeyChecking=no | Desactiva la verificación de clave de host SSH. Práctico para la primera conexión o pruebas, pero por seguridad se recomienda mantenerla habilitada en producción. |
-o ServerAliveInterval=30 | Envía una señal de keep-alive cada 30 segundos para evitar que el servidor cierre la conexión SSH por inactividad. |
-t [email protected] | Usuario de Pinggy y dirección del servidor. XXXXXXXXXXX es tu nombre de usuario de Pinggy. |
x:localServerTls:servbay.new | Parámetro personalizado de Pinggy: le indica que tu servicio local soporta TLS (HTTPS) y el dominio local es servbay.new (sustituye por tu propio dominio en ServBay). |
"u:host:servbay.new" | Otro parámetro personalizado: fuerza el encabezado HTTP Host de las peticiones entrantes a servbay.new (sustituye por tu dominio). Esto es esencial en entornos ServBay con múltiples sitios (virtual hosts), ya que determina cuál debe responder. |
Si la ejecución es exitosa, Pinggy mostrará en la terminal una URL pública para acceder a tu servicio local; normalmente verás direcciones tanto HTTP como HTTPS, por ejemplo:
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
1
2
2
Verificación del Servicio
Una vez creado el túnel, puedes comprobar el acceso público de varias maneras:
Comprobación con
curl
(recomendado): Usa el comandocurl
con el parámetro-I
(sólo cabeceras) para testear la URL pública; sustituye el ejemplo por tu URL real:bashcurl -I https://rnirh-172-188-50-148.a.free.pinggy.link
1Si todo funciona correctamente, aparecerá una salida similar con las respuestas de tu servidor web local (Nginx o Caddy, por ejemplo):
HTTP/1.1 200 OK Connection: close Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Access-Control-Allow-Origin: * Cache-Control: max-age=0, must-revalidate, no-cache, no-store, private Connection: keep-alive Content-Type: text/html; charset=UTF-8 Date: Tue, 18 Feb 2025 11:51:48 GMT # La fecha variará Expires: Sun, 02 Jan 1990 00:00:00 GMT Pragma: no-cache Server: nginx # o caddy, según la configuración de ServBay Vary: Accept-Encoding X-Frame-Options: SAMEORIGIN X-Powered-By: PHP/8.4.3 # o similar, depende del stack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Ver el código de estado
HTTP/1.1 200 OK
y el encabezadoServer
correcto indica que la conexión ha sido exitosa y que tu servidor web local responde.Acceso desde el navegador: Abre la URL HTTPS que Pinggy te ha proporcionado en cualquier dispositivo (aunque no esté en tu red local). Deberías ver el mismo contenido que cuando accedes a tu sitio local en ServBay.
Resultados esperados:
- Los usuarios externos pueden acceder a tu sitio/servicio local de ServBay usando la URL pública de Pinggy.
- Si tu servicio local usa HTTPS (por defecto, ServBay genera un certificado autofirmado para sitios locales), Pinggy también soporta automáticamente el acceso HTTPS público, proporcionándote un certificado público gratuito firmado por una CA, sin configuración extra.
- El tiempo de respuesta y la estabilidad dependen de tu conexión local, tu ruta al servidor Pinggy y la carga del servicio Pinggy.
Trucos Avanzados
Exponer diferentes puertos/servicios locales: Si tu servicio local no es Web, o escuha en un puerto distinto a los predeterminados (80/443), simplemente ajusta el parámetro
-R
. Por ejemplo, para exponer el puerto 8000 (por ejemplo, una app Python o Node.js):bashssh -p 443 -R0:localhost:8000 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected]
1En servicios no web o que no gestionan el encabezado
Host
, puedes omitir los parámetrosx:localServerTls
yu:host
.Dominio personalizado (Pinggy Pro): Como usuario Pro, puedes usar tu propio dominio personalizado en vez del subdominio aleatorio asignado por Pinggy, proyectando una imagen más profesional. Consulta la documentación oficial de Pinggy para configurarlo.
Túneles persistentes (
autossh
): Las conexiones SSH pueden caer por variaciones en la red. Si necesitas mantener el túnel mucho tiempo, se recomienda usarautossh
. Este monitoriza la conexión y la restablece automáticamente si se interrumpe. Una vez instalado (brew install autossh
en macOS), ejecútalo así:bashautossh -M 0 -t "ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new \"u:host:servbay.new\""
1-M 0
indica a autossh que no use un puerto extra para el monitoreo, confiando en la opción de keep-alive de SSH.Comandos sin token: Pinggy permite obtener comandos de uso único directamente desde su web, sin incluir tu usuario ni token en el comando. Esto facilita compartir el comando sin preocuparte por la seguridad de tus credenciales.
Casos de Uso Comunes
- Demostraciones remotas: Muestra tu sitio o app localmente desarrollada en ServBay a clientes o miembros del equipo, sin necesidad de desplegar en un entorno de staging o producción.
- Depuración de Webhooks: Recibe solicitudes Webhook de terceros (como pasarelas de pago, GitHub, etc.) y depúralas directamente en tu entorno local.
- Pruebas multiplataforma: Testea el diseño responsivo y la compatibilidad de tu sitio local en distintos dispositivos (móviles, tablets), aunque no compartan la misma red.
- Colaboración en equipo: Facilita que miembros del equipo accedan y prueben los servicios que cada uno tiene en su entorno local de ServBay.
Solución de Problemas
Problema | Solución |
---|---|
Timeout o fallo en conexión SSH | Verifica tu conexión a Internet y asegúrate de que puedes acceder a a.pinggy.io . Comprueba que el firewall local no bloquee las salidas al puerto 443. Verifica que el usuario Pinggy sea el correcto. |
El enlace de Pinggy no responde o arroja errores (como 502 Bad Gateway) | Revisa que el sitio o servicio en ServBay esté en funcionamiento y escuchando en localhost:443 (o el puerto especificado en -R ). Asegúrate de que la configuración de Caddy/Nginx de ServBay sea correcta. |
El enlace de Pinggy devuelve 404 o la página por defecto de ServBay | Si tienes varios sitios (virtual hosts) en ServBay, asegúrate de que los parámetros x:localServerTls y u:host están configurados con el dominio del sitio que deseas exponer (ej: myproject.servbay.demo ). Esto es clave para que el servidor responda correctamente. |
Desconexión intermitente | Suele deberse a inestabilidad de la red o timeout SSH. Prueba subiendo el valor de ServerAliveInterval , o utiliza autossh para las reconexiones automáticas (ver apartado de trucos avanzados). |
Error de certificado HTTPS | Pinggy suele proveer un certificado de CA pública para usuarios gratuitos. Si tu sitio local en ServBay usa un certificado autofirmado, el navegador puede advertir. El certificado público de Pinggy debería eliminar advertencias al acceder desde fuera. Si persisten los problemas, verifica que el servicio expuesto use HTTPS y escuche en el puerto 443. |
Resumen de la Solución
Con Pinggy, los usuarios de ServBay pueden abrir de forma extremadamente sencilla y segura el acceso externo a sus sitios y aplicaciones de desarrollo local. Las principales ventajas de este esquema son:
- Sin instalar clientes adicionales: Configuración y uso simplificados.
- Operación de un solo comando: Inicia el túnel SSH con una instrucción sencilla.
- Soporte automático de HTTPS: Pinggy ofrece un certificado CA público gratuito, resolviendo cualquier problema de HTTPS durante el acceso externo.
- Compatible con HTTP y túneles TCP: Satisface diversas necesidades de exposición de servicios.
- Alta compatibilidad con ServBay: Al ajustar correctamente el encabezado
Host
, puedes exponer fácilmente cualquier sitio local configurado en ServBay. - Opción sin token en comandos: Mejora la seguridad y la comodidad al compartir comandos.
Comparado con otras herramientas de túneles internos que requieren clientes o configuración avanzada, Pinggy es una alternativa ligera y práctica, ideal para desarrolladores ServBay que necesitan compartir rápidamente o hacer pruebas y demostraciones locales. Para usos más profesionales, de alta disponibilidad o dominios personalizados, puedes considerar los planes de pago de Pinggy. La poderosa combinación del entorno local de ServBay y el fácil acceso público de Pinggy mejora notablemente la eficiencia del desarrollo y la colaboración.