SSD Nodes Learn 🎉 VPS desde $5.50/mes
Guías Matt ConnorPor Matt Connor · Actualizado 2026-08-12

Solucionar errores de instalacion de Tailscale en Ubuntu

La mayoria de los errores al instalar Tailscale en Ubuntu son fallos de apt. Aprende a diagnosticar codigos de estado, corregir el nombre en clave y verificar la firma GPG.

Por qué los errores de instalación de Tailscale en Ubuntu son errores de apt

Los errores de instalación de Tailscale en Ubuntu casi siempre ocurren antes de que se ejecute cualquier código de Tailscale. Son errores de apt. Ubuntu no distribuye un paquete tailscale propio: tras verificarlo en el archivo de paquetes de Ubuntu en agosto de 2026, las únicas coincidencias son bibliotecas auxiliares de Go y python3-tailscale, por lo que el daemon debe provenir del repositorio apt propio de Tailscale en pkgs.tailscale.com.

Añadir ese repositorio escribe dos archivos. Un archivo indica a apt dónde residen los paquetes. El otro contiene la clave pública que apt utiliza para verificar la firma en el índice del repositorio. Casi todos los fallos descritos a continuación se deben a que uno de esos dos archivos es incorrecto, o a que un dispositivo entre apt y el repositorio rechaza la solicitud.

Estos son los comandos que Tailscale publica para Ubuntu 24.04:

sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update && sudo apt-get install tailscale

noble es el nombre en clave para Ubuntu 24.04, y aparece en ambas URL. El segundo comando escribe una línea de comentario y una línea deb en /etc/apt/sources.list.d/tailscale.list, y cat le muestra exactamente lo que se guardó allí.

cat /etc/apt/sources.list.d/tailscale.list

Lea esa línea deb como una dirección en cuatro campos: la opción entre corchetes [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg], luego la base del repositorio, que es pkgs.tailscale.com/stable/ubuntu a la que se accede mediante https, después la suite noble y, finalmente, el componente main. apt une la base y la suite en una sola URL y la descarga: https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease. Si usted puede descargar esa URL manualmente, apt también puede hacerlo. Ese es todo el diagnóstico.

Lea el error de apt antes de realizar cambios

Ejecute la actualización por separado para que el error no desaparezca de la pantalla.

sudo apt update

Un repositorio de terceros fallido se muestra de la siguiente manera. El nombre en clave y la dirección IP serán diferentes en su máquina.

E: Failed to fetch https://pkgs.tailscale.com/stable/ubuntu/dists/wilma/InRelease  404  Not Found [IP: 203.0.113.9 443]
E: Some index files failed to download. They have been ignored, or old ones used instead.

Dos elementos en esa salida determinan qué debe hacer a continuación: el código de estado y la URL completa en la línea E: Failed to fetch. No intente adivinar a partir de la línea de resumen al final. Copie la URL y consulte al servidor usted mismo.

curl -sS -o /dev/null -w '%{http_code}\n' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease

Esto imprime 200 para un nombre en clave que Tailscale publica. Verificado en agosto de 2026, noble devuelve un índice firmado que contiene Origin: Tailscale y Codename: noble. Sustituya noble por el nombre en clave de su propio error y ejecútelo de nuevo. Si curl obtiene 200 donde apt obtuvo un error, el repositorio está correcto y el problema reside en la configuración propia de apt.

Lo que indica el código de estado

  • 404 Not Found significa que el repositorio no tiene ningún archivo en esa ruta. En pkgs.tailscale.com, esto casi siempre se debe al nombre en clave (codename) en la URL.
  • 403 Forbidden significa que algo respondió y denegó la petición. A fecha de agosto de 2026, este repositorio devuelve 404 para una ruta inexistente, por lo que un 403 apunta a un proxy, un dispositivo de filtrado o un firewall entre su servidor y Tailscale.
  • 401 Unauthorized o 407 Proxy Authentication Required significa que un proxy solicita credenciales que apt no está enviando.
  • Un error de conexión o un error de resolución de nombres significa que no se produjo ninguna comunicación HTTP. Pase a la sección de IPv6.

El nombre en clave de la URL es uno que Tailscale no publica

Tailscale genera un directorio independiente por cada nombre en clave de Ubuntu. Si solicita un nombre en clave inexistente, obtendrá un error 404, ya que no hay ningún dists/<codename> en el servidor que pueda servirlo. El listado oficial del proveedor en pkgs.tailscale.com/stable muestra cuáles existen. En agosto de 2026, esa lista abarca desde la versión 16.04 hasta la resolute, que corresponde a Ubuntu 26.04.

La forma habitual en que se introduce un nombre en clave incorrecto es mediante lsb_release -cs en una distribución basada en Ubuntu pero que no es Ubuntu. En Linux Mint 22, ese comando imprime wilma, que es el nombre en clave propio de Mint, y Tailscale no publica nada para él. Lea la base de Ubuntu en su lugar.

. /etc/os-release
echo "$VERSION_CODENAME $UBUNTU_CODENAME"

En Ubuntu, ambos valores son idénticos. En una distribución derivada, VERSION_CODENAME es el nombre del derivado y UBUNTU_CODENAME es la versión de Ubuntu sobre la que está construido. Utilice UBUNTU_CODENAME en ambas URLs.

La segunda forma es una actualización de versión. La herramienta de actualización de Ubuntu deshabilita los repositorios de terceros al ejecutarse, por lo que después de actualizar Ubuntu 24.04 a 26.04 encontrará que /etc/apt/sources.list.d/tailscale.list está comentado o sigue haciendo referencia a noble en una máquina que ahora es resolute. Soluciónelo ejecutando de nuevo los dos comandos curl con el nuevo nombre en clave, lo cual sobrescribirá ambos archivos.

La tercera forma es una cuestión de tiempo. En las semanas posteriores al lanzamiento de una nueva versión de Ubuntu, el nombre en clave existe en Canonical antes de que esté disponible en Tailscale. Apuntar el archivo al nombre en clave de la versión LTS anterior normalmente permite la instalación, ya que estos paquetes tienen pocas dependencias, pero estará ejecutando una compilación creada para una versión anterior. Compruebe qué ha obtenido realmente con apt policy tailscale y vuelva a modificar el archivo una vez que aparezca el nombre en clave correcto.

The keyring is empty, and the command that wrote it said nothing

This one is quiet, and it is where most of these end. Look again at the keyring command:

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

The shell builds the whole pipeline before either program runs, so sudo tee opens the keyring path and truncates it to zero bytes immediately. If curl then fails, and -f makes it fail on any HTTP error, curl writes nothing and exits nonzero. The file stays at zero bytes. The exit status of a pipeline is the status of its last command, which is tee, which succeeded. Nothing is printed, and you move on to the next command believing the key is installed.

Check the file, not the command that made it.

ls -l /usr/share/keyrings/tailscale-archive-keyring.gpg
gpg --show-keys /usr/share/keyrings/tailscale-archive-keyring.gpg

A healthy keyring prints a pub line and a uid line naming Tailscale. A zero byte file prints gpg: no valid OpenPGP data found. and nothing else. A file that caught an HTML error page prints the same thing, and head -c 80 on it shows the start of a web page instead of binary key data.

With a keyring that holds no usable key, sudo apt update downloads the index and then refuses it. You get a W: GPG error line naming the Tailscale repository and its suite, the text The following signatures couldn't be verified because the public key is not available: NO_PUBKEY followed by a 16 character key id, and under that an error saying the repository is not signed. Note what apt is telling you: it downloaded the index fine, and it could not check the signature. That is a key problem, not a network problem. If the keyring file is missing altogether, the message is different again, and names the path directly with Could not open file /usr/share/keyrings/tailscale-archive-keyring.gpg.

Write the key in two steps so a failed download cannot destroy a working keyring.

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg -o /tmp/tailscale.gpg
gpg --show-keys /tmp/tailscale.gpg
sudo install -m 0644 -o root -g root /tmp/tailscale.gpg /usr/share/keyrings/tailscale-archive-keyring.gpg

The middle line is the gate: if it does not print a Tailscale uid, stop and do not copy the file. Mode 0644 matters because apt drops to the unprivileged _apt user to fetch and verify, so a keyring only root can read is a keyring apt cannot use.

Tanto un archivo .list como un archivo .sources describen el mismo repositorio

Ubuntu migró sus propias fuentes al formato deb822 en Ubuntu 24.10, donde /etc/apt/sources.list pasó a ser /etc/apt/sources.list.d/ubuntu.sources. Tailscale sigue publicando el formato de una sola línea. Tras una comprobación en agosto de 2026, no existe ningún archivo .sources para descargar desde pkgs.tailscale.com: esa URL devuelve un error 404. Por lo tanto, si su máquina tiene un tailscale.sources, usted o alguna guía lo creó manualmente, y si tailscale.list también sigue ahí, apt tiene ahora el mismo repositorio descrito dos veces.

La versión leve es una advertencia en cada actualización:

W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list.d/tailscale.list:1 and /etc/apt/sources.list.d/tailscale.sources:1

La versión grave ocurre cuando los dos archivos nombran rutas de keyring diferentes, ya que apt no puede decidir qué clave rige el repositorio. Imprime E: Conflicting values set for option Signed-By regarding source, luego el repositorio y su suite, después las dos rutas de keyring con != entre ellas, y finalmente se niega a continuar:

E: The list of sources could not be read.

Ese error bloquea cualquier comando de apt, no solo la actualización, hasta que uno de los archivos desaparece. El mismo fallo aparece con los repositorios propios de Ubuntu, y el error de fuente apt duplicada tras una migración a deb822 explica el caso general.

Localice cada archivo que mencione a Tailscale antes de borrar nada.

grep -RIn tailscale /etc/apt/sources.list /etc/apt/sources.list.d/

Conserve un solo archivo. Para desactivar el otro sin perderlo, cámbiele el nombre: apt solo lee archivos que terminan en .list o .sources, por lo que tailscale.list.bak se omite y permanece en el disco como referencia.

Escritura correcta del archivo de fuentes deb822

Si prefiere el formato más reciente, convierta el archivo que ya tiene en lugar de volver a escribir la dirección del repositorio, ya que un error tipográfico ahí es exactamente como comienzan los errores anteriores. Las versiones recientes de apt incluyen un convertidor que reescribe archivos .list en bloques deb822 y traslada la opción signed-by como Signed-By.

apt modernize-sources --help
sudo apt modernize-sources

Ubuntu 24.04 incluye una versión de apt anterior a ese subcomando, por lo que la línea de ayuda le indicará en un segundo si el suyo lo tiene. Donde no lo tenga, construya el bloque a partir de la línea que ya está en el disco, para que la base provenga del archivo del proveedor y no de su teclado.

. /etc/os-release
{
  echo 'Types: deb'
  echo "URIs: $(awk '/^deb /{print $3}' /etc/apt/sources.list.d/tailscale.list)"
  echo "Suites: $UBUNTU_CODENAME"
  echo 'Components: main'
  echo 'Signed-By: /usr/share/keyrings/tailscale-archive-keyring.gpg'
} | sudo tee /etc/apt/sources.list.d/tailscale.sources
sudo rm /etc/apt/sources.list.d/tailscale.list

Eso imprime el bloque que escribió, para que pueda leer los campos antes del siguiente apt update. Vale la pena conocer cuatro de ellos en detalle, porque cada uno falla de una manera distinta:

  • URIs se detiene en la base del repositorio. Pegar la parte dists/noble en él provoca un error 404, porque apt añade dists/<suite> por sí mismo y solicita dists/noble/dists/noble.
  • Suites es el nombre en clave, exactamente el valor que ocupaba la parte central del formato de una sola línea.
  • Signed-By toma una ruta absoluta a un archivo de llavero. También acepta una clave blindada insertada debajo, donde cada línea de la clave está sangrada con un espacio y cada línea en blanco dentro de la clave se escribe como un punto único.
  • Enabled: no desactiva una fuente sin eliminarla, lo cual es más fácil de deshacer que un cambio de nombre y más fácil de explicar a la siguiente persona.

Mantenga un bloque por archivo para repositorios de terceros y coloque una línea en blanco entre bloques si alguna vez mantiene varios juntos. El índice del repositorio enumera amd64 y arm64 entre sus arquitecturas, por lo que un VPS ARM no necesita un campo Architectures adicional.

Un proxy intermedio devuelve un 403

Debido a que una ruta inexistente en este repositorio devuelve un 404, un 403 significa que otro elemento respondió en su lugar. Comience por la configuración propia de apt, ya que un proxy definido allí se aplica a apt y no a su curl interactivo.

grep -RIn -i proxy /etc/apt/apt.conf.d/ /etc/apt/apt.conf
sudo apt-config dump | grep -i 'acquire::http'

Luego, observe lo que apt envía realmente.

sudo apt -o Debug::Acquire::http=1 update

Esto imprime la línea de petición, las cabeceras que envió apt y el proxy a través del cual se conectó, si existe alguno. Compárelo con un curl simple a la misma URL. Si curl devuelve 200 y apt devuelve 403, ambas peticiones difieren en algo que el dispositivo intermedio tiene en cuenta, y el candidato habitual es el user agent:

curl -sS -o /dev/null -w '%{http_code}\n' -A 'Debian APT-HTTP/1.3' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease

Si este último devuelve 403 mientras que el curl predeterminado devuelve 200, un dispositivo de filtrado está rechazando a apt por su nombre. La solución corresponde a ese dispositivo, no a su servidor. Un proxy corporativo que inspecciona TLS se comporta de otra manera: apt informa de un error de verificación de certificado en lugar de un código de estado, porque el certificado que recibió fue emitido por el proxy y no por la autoridad de certificación de Tailscale. Un firewall de salida en la nube que solo permite los mirrors de Ubuntu es la otra causa común, y allí la solución es permitir pkgs.tailscale.com en el firewall.

Salida exclusiva por IPv6 y errores que no son códigos de estado

Si apt no recibe ninguna respuesta HTTP, pruebe cada protocolo por separado.

curl -4 -sS -o /dev/null -w 'v4 %{http_code}\n' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease
curl -6 -sS -o /dev/null -w 'v6 %{http_code}\n' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease

Cuando IPv4 responde pero IPv6 se queda colgado o informa de Network is unreachable, apt falla porque la biblioteca de resolución prefiere IPv6 y el equipo no tiene una ruta IPv6 funcional. Fuerce una ejecución mediante IPv4 para confirmar la teoría:

sudo apt -o Acquire::ForceIPv4=true update

Si esa actualización tiene éxito, hágalo permanente.

echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4

Sea realista con el caso opuesto. En un VPS que no tiene ninguna dirección IPv4, forzar IPv4 no soluciona nada, ya que no existe una ruta IPv4 por la cual dirigir el tráfico. En ese caso, necesita NAT64 con DNS64 de su proveedor, o un proxy que disponga de una dirección IPv4. El síntoma es un error de conexión que menciona una dirección IPv6, por lo que la línea curl -6 es la que le indica la realidad.

Las alternativas y sus costes

El script de instalación del proveedor. curl -fsSL https://tailscale.com/install.sh | sh es el comando que promociona Tailscale. Al leer el script, este detecta su distribución mediante /etc/os-release y luego escribe las mismas dos rutas que esta guía ha estado corrigiendo, /usr/share/keyrings/tailscale-archive-keyring.gpg y /etc/apt/sources.list.d/tailscale.list, desde las mismas URL. Esto es importante para sus expectativas: no evita un repositorio bloqueado por un proxy. Falla de la misma manera pero con menos información de salida. Enviar un script descargado directamente a un shell como root es un intercambio, no una solución, porque confía en lo que el servidor devuelva en ese momento y no conserva ninguna copia de lo que se ejecutó. Si acepta el intercambio, hágalo con conocimiento de causa:

curl -fsSL https://tailscale.com/install.sh -o install.sh
less install.sh
sh install.sh

Los binarios estáticos. El mismo servidor publica archivos tarball simples en la sección de binarios estáticos de pkgs.tailscale.com/stable. A fecha de agosto de 2026, la versión estable es la 1.102.2 y el archivo para x86 de 64 bits es tailscale_1.102.2_amd64.tgz. Usted coloca el cliente tailscale y el daemon tailscaled manualmente, y usted mismo supervisa el daemon, por lo que no existe la ruta apt upgrade y cada actualización futura es una descarga que debe recordar realizar. Esta opción es útil en un host aislado (air-gapped) o cuando necesita fijar una versión exacta.

El paquete propio de Ubuntu. No existe. Ejecutar sudo apt install tailscale sin el repositorio del proveedor configurado termina en E: Unable to locate package tailscale, y ninguna cantidad de apt update cambiará eso. Si lo que realmente desea es un servidor de coordinación bajo su control en lugar del servidor alojado de Tailscale, esa es una decisión distinta: ejecutar Headscale como su propio servidor de control lo cubre, y la comparativa entre Tailscale y WireGuard estándar trata sobre si realmente necesita toda esta infraestructura.

El paquete se instaló, pero tailscaled no arranca

Una vez que apt finaliza correctamente, los fallos se trasladan al daemon.

systemctl status tailscaled
sudo journalctl -u tailscaled -n 50

En un VPS que utiliza virtualización de contenedores que comparte el kernel del host, como LXC o OpenVZ, el registro contiene una línea sobre la inexistencia de /dev/net/tun. El daemon necesita un dispositivo TUN para crear la interfaz tailscale0, y el contenedor no dispone de uno. Solicite a su proveedor que habilite TUN en el contenedor o migre a un plan KVM donde usted disponga de su propio kernel. En KVM, esto funciona sin configuración adicional.

Después de eso, sudo tailscale up muestra una URL de inicio de sesión y tailscale status debería listar su máquina con una dirección en el rango 100.64.0.0/10. Una máquina que aparece ahí es una máquina sobre la cual puede construir, ya sea anunciando una subred privada desde su VPS o usando el VPS como nodo de salida.

FAQ

¿Por qué apt indica que el repositorio de Tailscale no está firmado?

Porque apt descargó el índice del repositorio y no pudo verificar su firma contra /usr/share/keyrings/tailscale-archive-keyring.gpg. La causa habitual es que el llavero tiene cero bytes: sudo tee truncó el archivo antes de que curl fallara al descargar nada, y la tubería informó de éxito porque tee se ejecutó correctamente. Ejecute gpg --show-keys /usr/share/keyrings/tailscale-archive-keyring.gpg. Un llavero funcional imprime una línea pub y una línea uid que menciona a Tailscale, mientras que uno vacío o corrupto imprime gpg: no valid OpenPGP data found.. Descargue la clave a un archivo temporal, verifíquelo allí y luego cópielo a su ubicación definitiva con el modo 0644 para que el usuario _apt pueda leerlo.

¿Qué nombre en clave de Ubuntu debo poner en las URL de Tailscale?

Utilice el valor de UBUNTU_CODENAME obtenido de /etc/os-release, que es noble en Ubuntu 24.04 y resolute en Ubuntu 26.04. No utilice lsb_release -cs en una distribución derivada de Ubuntu: en Linux Mint 22 imprime wilma, Tailscale no publica nada bajo ese nombre y apt informa de un error 404 en dists/wilma/InRelease. Confirme su elección antes de editar nada obteniendo el índice manualmente con curl -sS -o /dev/null -w '%{http_code}\n' contra https://pkgs.tailscale.com/stable/ubuntu/dists/<codename>/InRelease.

¿Es seguro ejecutar el script de instalación de Tailscale redirigido a una shell?

Es una decisión que debe tomar de forma deliberada. El script proviene de Tailscale y realiza las mismas tareas que los pasos manuales: lee /etc/os-release, escribe el mismo llavero y el mismo /etc/apt/sources.list.d/tailscale.list, y luego instala el paquete. El inconveniente es que ejecuta lo que el servidor devuelva en ese momento, con privilegios de root, y no guarda registro de ello. Descárguelo con -o install.sh, léalo y luego ejecútelo si desea la comodidad sin el riesgo de no saber qué se está ejecutando. Además, no ayuda si el repositorio está bloqueado, ya que utiliza las mismas URL que ya fallaron.

¿Cómo instalo Tailscale en Ubuntu sin el repositorio apt?

Utilice los archivos tar estáticos publicados en pkgs.tailscale.com, que a fecha de agosto de 2026 están en la versión 1.102.2 con un archivo amd64 llamado tailscale_1.102.2_amd64.tgz. Usted mismo instala los programas tailscale y tailscaled y ejecuta el daemon bajo systemd. El inconveniente son las actualizaciones: no hay un paquete apt que descargue una versión nueva, por lo que cada actualización es manual. El archivo de Ubuntu no contiene ningún paquete tailscale propio, por lo que sudo apt install tailscale en una máquina sin el repositorio del proveedor se detiene en E: Unable to locate package tailscale.