Índice de la guía1 de 9
Instalar el servidor
Tu VPS, con HTTPS automático o detrás del nginx que ya tienes.
Antes de empezar
- DNS: un registro A de
tunnels.midominio.comy otro de*.tunnels.midominio.coma la IP del VPS. - Puertos: el TCP 443 libre (lo coge LnkStart) y el 80 libre o en un proxy que le pase sus nombres.
setupmira qué hay antes de tocar nada y dice qué camino toca. - Opcional, más rápido: UDP 443 abierto en el cortafuegos, para QUIC.
- Recomendado: un registro NS de
_acme-challenge.tunnels.midominio.comhacialnk.tunnels.midominio.com, y el puerto 53 (UDP y TCP) abierto. Así hay un solo certificado para todos los nombres.
Qué hay ya en el VPS decide el camino. setup lo mira antes de tocar nada y te lo dice:
| Tipo | Qué hay en el VPS | Qué hace setup | Sigue en |
|---|---|---|---|
| A | Nada en el 80 ni en el 443 | Se queda los dos. HTTPS automático | Instalación normal |
| B | nginx, Traefik, Caddy o Apache con webs en el 443 | Para sin tocar nada, dice qué sitios hay y los dos caminos | Detrás de un proxy que ya tienes |
| C | Algo sólo en el 80: la bienvenida de nginx, apps en otros puertos | Se queda el 443 y te da el bloque para que ese proxy le pase el 80. HTTPS automático | Instalación normal |
| D | Sin systemd: un contenedor, WSL | Para y te lleva a la instalación a mano | Sin systemd, o a mano |
Instalación normal: HTTPS automático
En el VPS
curl -fsSL https://lnkstart.com/ install.sh | sudo sh -s -- server tunnels.midominio.com tu@correo.com
Comprueba la máquina, los puertos y el DNS; escribe /etc/lnkstart/server.toml; registra la licencia gratuita a ese correo; crea un usuario del sistema propio, instala el servicio systemd y lo arranca; comprueba que lnk.tunnels.midominio.com llega de verdad a este servidor, y termina imprimiendo la línea de tu primera máquina. Al acabar, bien o mal, envía un aviso anónimo con el paso al que llegó y cómo terminó (ni dominio, ni correo, ni IP; ver «Qué se envía»).
El certificado de cada web lo pide el propio servidor a Let's Encrypt al publicarla, y lo renueva solo. No hay que ejecutar certbot. Los servicios TCP y UDP van por su puerto y no llevan certificado.
Con un registro más en tu DNS, _acme-challenge.tunnels.midominio.com de tipo NS hacia lnk.tunnels.midominio.com, y el puerto 53 abierto (UDP y TCP), el servidor pide un único certificado comodín para *.tunnels.midominio.com: un nombre nuevo tiene HTTPS al instante. Ese registro sólo deja al servidor contestar la comprobación de Let's Encrypt; no guarda ninguna clave de tu proveedor de DNS. Sin él, cada nombre lleva el suyo. sudo lnkstart server dice cuál de los dos tienes.
Todo certificado queda anotado en registros públicos (Certificate Transparency) que cualquiera puede consultar, por ejemplo en crt.sh: la lista de nombres de tu dominio no es secreta, y los robots que la leen visitan un nombre nuevo a los pocos minutos. Si publicas para clientes, usa nombres que no los delaten (c1, demo-3) en vez de su nombre, y protege desde el primer momento lo que no deba verse («Proteger el acceso»). Con el comodín (el registro de _acme-challenge) o uno propio («Certificado propio»), no sale ningún nombre: sólo *.tunnels.midominio.com.
Los agentes entran por lnk.tunnels.midominio.com, que es sólo del servidor; ningún servicio puede llamarse lnk. Todo lo demás es tuyo: tunnels.midominio.com para tu web, y app.tunnels.midominio.com, api.tunnels.midominio.com o lo que publiques.
En el VPS
sudo systemctl status lnkstart-server sudo journalctl -u lnkstart-server -f
Estado y registro de lo que pasa.
En un VPS nuevo, sin entrar en él
Al crear el VPS, la mayoría de proveedores dejan pegar un «user data» o «cloud-init» que se ejecuta en el primer arranque (Hetzner, DigitalOcean, Vultr o Scaleway lo llaman así). Pega esto con tu dominio y tu correo, crea el VPS y pon los dos registros A con su IP: el servidor espera hasta una hora a que el DNS apunte a él, y se instala solo.
user data (cloud-init)
#cloud-config runcmd: - curl -fsSL https://lnkstart.com/ install.sh | LNKSTART_WAIT_DNS=60 sh -s -- server tunnels.midominio.com tu@correo.com
En el VPS, al terminar
sudo grep 'join LD1' /var/ log/ cloud-init-output.log
La línea de tu primera máquina queda en el registro del primer arranque, que sólo leen los administradores del VPS. Si pasó la hora sin que el DNS apuntara, ese mismo registro dice qué falló: se arregla y se repite la instalación normal.
Detrás de un proxy que ya tienes
Tipo B: si el 443 ya es de nginx, Traefik o Caddy con tus webs, LnkStart se pone detrás. Hay dos formas, y la primera conserva el HTTPS automático.
Sin descifrar: el proxy mira el nombre que pide cada visitante y, si es de tunnels.midominio.com, le pasa la conexión cifrada tal cual, con la IP del visitante en una cabecera PROXY. LnkStart sigue pidiendo y renovando sus certificados, y lo demás sigue yendo a tus sitios.
En el VPS
curl -fsSL https://lnkstart.com/ install.sh | sudo sh -s -- server tunnels.midominio.com tu@correo.com --sni-proxy
Al terminar imprime la configuración del proxy que tengas en marcha, ya con tus nombres, y qué sitios tuyos tienen que dejar el 443. Pégala, recarga el proxy y pulsa Enter: setup reinicia LnkStart para que pida sus certificados y comprueba que llega. Sin nadie delante (cloud-init), reinícialo tú con sudo systemctl restart lnkstart-server.
| Proxy | Qué necesita |
|---|---|
| nginx | El módulo stream (en Debian y Ubuntu, libnginx-mod-stream). Tus sitios HTTPS dejan el 443 y pasan a 127.0.0.1:8443. |
| Traefik | La versión 3.5.2 o posterior. En Docker, la dirección del anfitrión en lugar de 127.0.0.1. |
| Caddy | Compilado con el módulo layer4 (xcaddy build --with github.com/mholt/caddy-l4). |
| Nginx Proxy Manager | No reparte por nombre sin descifrar: usa la segunda forma. |
Con nginx, el bloque stream se queda con el 443: cada listen 443 de tus sitios pasa a 127.0.0.1:8443. Si queda uno, nginx no arranca, y al recargar sigue con lo de antes sin avisar: nginx -t no lo ve (el motivo queda en /var/log/nginx/error.log). Compruébalo con sudo lnkstart server, que dice si lnk.<dominio> llega a LnkStart. Y certbot --nginx vuelve a escribir listen 443 ssl cada vez que pone el certificado de un sitio: después, pásalo otra vez a 127.0.0.1:8443.
El puerto local de LnkStart sólo contesta con la cabecera PROXY delante: sin ella no se sabe de quién es la conexión. Para probarlo a mano, curl --haproxy-protocol.
Descifrando en el proxy: si tu proxy no puede repartir sin descifrar, LnkStart escucha en HTTP en un puerto local y el proxy le pasa el tráfico. El certificado pasa a ser cosa tuya (el comodín necesita DNS-01, o un certificado por nombre).
En el VPS
curl -fsSL https://lnkstart.com/ install.sh | sudo sh -s -- server tunnels.midominio.com tu@correo.com --behind-proxy 127.0.0.1:20002
Al terminar imprime el bloque de nginx que hay que pegar, ya con tus nombres.
El bloque incluye la cabecera Upgrade: sin ella, los agentes no pueden conectarse por WebSocket y los WebSockets de tus apps tampoco funcionan.
Certificado propio
Con un comodín que ya compraste o que emites por DNS-01, LnkStart puede quedarse con el 443 y usar tu certificado. Se edita la configuración y se reinicia.
/etc/lnkstart/server.toml
[tls] mode = "manual" cert = "/etc/ ssl/ midominio/ fullchain.pem" key = "/ etc/ ssl/ midominio/ privkey.pem"
En el VPS
sudo systemctl restart lnkstart-server
Consola en el navegador
Tu servidor trae una consola web: desde ella añades, apruebas y retiras máquinas, proteges servicios con contraseña o token, cambias dominios, puertos y licencia, y ves quién hizo cada cambio. Vive en tu servidor, así que nada de lo que enseña nos llega, y no se entra con tu cuenta de lnkstart.com: tiene sus propios administradores. setup te pregunta si la enciendes; si no, se enciende con un comando.
En el VPS
sudo lnkstart server admin enable
El servidor en marcha la enciende solo en unos segundos, sin reiniciar, y te da un enlace de un solo uso que vale 10 minutos. Con él creas tu usuario: contraseña y el código de una app de autenticación del móvil. Desde ahí entras con ellos; a otros administradores (hasta 3) los invitas desde la consola, y cada uno pone su contraseña y su app. El enlace sigue sirviendo si pierdes el móvil.
Para que la consola sólo exista desde tus redes, añade --allow con ellas. Otro enlace más tarde: sudo lnkstart server admin link. Apagarla: sudo lnkstart server admin disable.
En el VPS
sudo lnkstart server admin enable --allow 203.0.113.7/32
Avisos: en «Ajustes → Avisos» pones un webhook (Slack, Discord, Mattermost, n8n…), un bot de Telegram o tu propio servidor de correo, y el servidor te avisa él mismo cuando una máquina o la app de un servicio siguen caídas unos minutos, cuando un certificado va a caducar o falla, y cuando la licencia está por caducar. Una vez al caer y otra al volver; también cuando una máquina nueva espera tu aprobación y cuando se instala solo un arreglo forzado. Con un botón para mandar una prueba. Sale de tu servidor hacia donde tú digas, nunca hacia nosotros.
Sin systemd, o a mano
En el VPS
sudo lnkstart server init --domain tunnels.midominio.com sudo lnkstart server register --email tu@correo.com sudo lnkstart server run
init escribe la configuración, register pide la licencia y run arranca el servidor en primer plano.
En el VPS
lnkstart service systemd --server -- server run
Imprime la unidad de systemd por si la quieres instalar tú.
Puertos del cortafuegos
| Puerto | Para qué | ¿Obligatorio? |
|---|---|---|
| TCP 443 | Visitantes y agentes | Sí |
| TCP 80 | Certificados de Let's Encrypt y redirección a HTTPS | Sí en modo automático |
| UDP 443 | QUIC: conexión más rápida de los agentes | No, pero se nota |
| UDP y TCP 53 | El certificado comodín (el registro de _acme-challenge) | No: sin él, un certificado por nombre |
| Rango TCP | Servicios TCP públicos (SSH, bases de datos…) | Sólo si los usas |
| Rango UDP | Servicios UDP públicos (VoIP, juegos…) | Sólo si los usas |
Copia y mudanza a otro VPS
Si el VPS se muere, lo rehaces en otro en unos minutos. Guarda de vez en cuando una copia (un fichero cifrado con tu contraseña: máquinas, servicios, certificados, licencia, consola y avisos) y tenla fuera del servidor:
En el VPS
sudo lnkstart server backup
En el VPS nuevo, instala lnkstart (sólo el binario), copia allí el fichero y restáuralo; después, el setup de siempre, que se queda con esa configuración y su licencia. Cambia el DNS de tu dominio al VPS nuevo y tus máquinas se reconectan solas, con su mismo código.
En el VPS nuevo
sudo lnkstart server restore lnkstart-backup.lnkbak sudo lnkstart server setup tunnels.midominio.com tu@correo.com
Quitarlo del servidor
En el VPS
sudo systemctl disable --now lnkstart-server lnkstart-update.timer sudo rm /etc/ systemd/ system/ lnkstart-server.service / etc/ systemd/ system/ lnkstart-update.* sudo systemctl daemon-reload sudo rm -r / etc/ lnkstart / var/ lib/ lnkstart sudo userdel lnkstart sudo rm / usr/ local/ bin/ lnkstart
Para el servidor y quita el servicio, el temporizador de los arreglos forzados, la configuración, los datos, su usuario del sistema y el binario.
En /var/lib/lnkstart están la licencia, las máquinas unidas, la protección de cada servicio y los certificados. Si vas a instalarlo en otro VPS con el mismo dominio, haz antes una copia (sudo lnkstart server backup, en «Copia y mudanza a otro VPS»): con ella, tus máquinas vuelven a entrar sin unirlas otra vez.
La licencia se queda en tu cuenta como un servidor que ya no da señales; no hay que hacer nada más. Los registros DNS de tunnels.midominio.com los quitas tú en tu proveedor.