Corrigir erros ao instalar o Tailscale no Ubuntu
Veja como interpretar erros do apt no Ubuntu, incluindo codinome de release incorreto, chaveiro de assinatura e códigos de status exibidos pelo apt.
Por que os erros de instalação do Tailscale no Ubuntu são erros do apt
Os erros de instalação do Tailscale no Ubuntu quase sempre ocorrem antes de qualquer código do Tailscale ser executado. São erros do apt. O Ubuntu não fornece um pacote tailscale próprio: verificado no arquivo de pacotes do Ubuntu em agosto de 2026, os únicos resultados são bibliotecas auxiliares do Go e python3-tailscale, portanto o daemon precisa vir do repositório apt próprio do Tailscale em pkgs.tailscale.com.
Adicionar esse repositório grava dois ficheiros. Um ficheiro informa ao apt onde estão os pacotes. O outro contém a chave pública que o apt usa para verificar a assinatura do índice do repositório. Quase todas as falhas abaixo ocorrem porque um desses dois ficheiros está incorreto ou porque um dispositivo entre o apt e o repositório recusou o pedido.
Estes são os comandos publicados pelo Tailscale para o 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 tailscalenoble é o codinome do Ubuntu 24.04 e aparece nos dois URLs. O segundo comando grava uma linha de comentário e uma linha deb em /etc/apt/sources.list.d/tailscale.list, e cat mostra exatamente o conteúdo gravado nesse ficheiro.
cat /etc/apt/sources.list.d/tailscale.listLeia essa linha deb como um endereço com quatro campos: a opção entre colchetes [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg], depois a base do repositório, que é pkgs.tailscale.com/stable/ubuntu acedida por https, depois a suite noble e, por fim, o componente main. O apt combina a base e a suite numa única URL e obtém o conteúdo: https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease. Se conseguir obter essa URL manualmente, o apt também conseguirá. Esse é todo o diagnóstico.
Leia o erro do apt antes de alterar qualquer coisa
Execute a atualização isoladamente para que nada faça o erro desaparecer do ecrã.
sudo apt updateUm repositório de terceiros com falha aparece assim. O codinome e o endereço IP serão diferentes no seu sistema.
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.Dois elementos dessa saída determinam o que deve fazer a seguir: o código de estado e o URL completo na linha E: Failed to fetch. Não tire conclusões a partir da linha de resumo no fim. Copie o URL e consulte diretamente o servidor.
curl -sS -o /dev/null -w '%{http_code}\n' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InReleaseIsto devolve 200 para um codinome publicado pela Tailscale. Verificado em agosto de 2026, noble devolve um índice assinado que contém Origin: Tailscale e Codename: noble. Substitua noble pelo codinome apresentado no seu próprio erro e execute o comando novamente. Se o curl obtiver 200 quando o apt obteve um erro, o repositório está correto e o problema está na própria configuração do apt.
O que o código de estado indica
404 Not Foundsignifica que o repositório não tem nenhum ficheiro nesse caminho. Empkgs.tailscale.com, esse valor é quase sempre o codinome presente no URL.403 Forbiddensignifica que algo respondeu e recusou o pedido. Em agosto de 2026, este repositório devolve 404 para um caminho que não existe. Por isso, um 403 aponta para um proxy, um dispositivo de filtragem ou uma firewall entre o seu servidor e o Tailscale.401 Unauthorizedou407 Proxy Authentication Requiredsignifica que um proxy quer credenciais que o apt não está a enviar.- Um erro de ligação ou de resolução de nomes significa que não ocorreu nenhuma comunicação HTTP. Avance para a secção sobre IPv6.
O codinome no URL não é publicado pela Tailscale
A Tailscale cria um diretório separado para cada codinome do Ubuntu. Se pedir um codinome que não existe, recebe 404, porque não há dists/<codename> no servidor para responder. A listagem da própria fornecedora em pkgs.tailscale.com/stable mostra quais estão disponíveis. Em agosto de 2026, essa lista vai de 16.04 até resolute, que corresponde ao Ubuntu 26.04.
A forma habitual de introduzir um codinome incorreto é executar lsb_release -cs numa distribuição baseada no Ubuntu, mas que não é o Ubuntu. No Linux Mint 22, esse comando mostra wilma, que é o codinome próprio do Mint, e a Tailscale não publica nada para ele. Consulte a base Ubuntu em vez disso.
. /etc/os-release
echo "$VERSION_CODENAME $UBUNTU_CODENAME"No Ubuntu, os dois valores são iguais. Numa derivada, VERSION_CODENAME é o nome da distribuição derivada e UBUNTU_CODENAME é a versão do Ubuntu em que ela se baseia. Use UBUNTU_CODENAME nos dois URLs.
A segunda forma é uma atualização da versão. A ferramenta de atualização do Ubuntu desativa as fontes de terceiros durante a execução. Por isso, depois de atualizar o Ubuntu 24.04 para 26.04, encontrará /etc/apt/sources.list.d/tailscale.list comentado ou ainda a indicar noble numa máquina que agora está em resolute. Corrija o problema executando novamente os dois comandos curl com o novo codinome. Eles substituem os dois ficheiros.
A terceira forma é uma questão de sincronização. Nas semanas seguintes ao lançamento de uma nova versão do Ubuntu, o codinome existe na Canonical antes de existir na Tailscale. Apontar o ficheiro para o codinome da LTS anterior normalmente permite instalar, porque estes pacotes têm poucas dependências. No entanto, estará a executar uma compilação criada para uma versão mais antiga. Verifique o que instalou efetivamente com apt policy tailscale e altere o ficheiro novamente quando o codinome correto aparecer.
O keyring está vazio e o comando que o escreveu não mostrou nada
Este caso é silencioso e é onde a maioria destes problemas termina. Veja novamente o comando do keyring:
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/nullO shell constrói todo o pipeline antes de executar qualquer programa, por isso sudo tee abre o caminho do keyring e trunca o ficheiro imediatamente para zero bytes. Se curl falhar, e -f fizer com que falhe em qualquer erro HTTP, curl não escreve nada e termina com um código diferente de zero. O ficheiro permanece com zero bytes. O estado de saída de um pipeline é o estado do último comando, que é tee, e esse comando foi bem-sucedido. Nada é mostrado e prossegue para o comando seguinte, acreditando que a chave foi instalada.
Verifique o ficheiro, não o comando que o criou.
ls -l /usr/share/keyrings/tailscale-archive-keyring.gpg
gpg --show-keys /usr/share/keyrings/tailscale-archive-keyring.gpgUm keyring válido mostra uma linha pub e uma linha uid com o nome Tailscale. Um ficheiro com zero bytes mostra gpg: no valid OpenPGP data found. e nada mais. Um ficheiro que recebeu uma página de erro HTML mostra o mesmo resultado, e head -c 80 no ficheiro mostra o início de uma página web em vez de dados binários da chave.
Com um keyring que não contém uma chave utilizável, sudo apt update transfere o índice e depois recusa-o. É mostrada uma linha W: GPG error com o nome do repositório Tailscale e da sua suite, seguida do texto The following signatures couldn't be verified because the public key is not available: NO_PUBKEY e de um ID de chave com 16 caracteres. Abaixo disso, aparece um erro a indicar que o repositório não está assinado. Observe o que o apt está a informar: transferiu o índice corretamente, mas não conseguiu verificar a assinatura. É um problema da chave, não da rede. Se o ficheiro do keyring não existir, a mensagem é diferente e identifica diretamente o caminho com Could not open file /usr/share/keyrings/tailscale-archive-keyring.gpg.
Escreva a chave em duas etapas para que uma transferência falhada não destrua um keyring funcional.
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.gpgA linha intermédia é a verificação: se não mostrar um uid do Tailscale, pare e não copie o ficheiro. O modo 0644 é importante porque o apt muda para o utilizador sem privilégios _apt para transferir e verificar, por isso um keyring que apenas o root consegue ler é um keyring que o apt não consegue utilizar.
Um ficheiro .list e um ficheiro .sources descrevem o mesmo repositório
O Ubuntu transferiu as próprias fontes para o formato deb822 no Ubuntu 24.10, quando /etc/apt/sources.list passou a ser /etc/apt/sources.list.d/ubuntu.sources. A Tailscale continua a publicar o formato de uma linha. Verificado em agosto de 2026, não existe nenhum ficheiro .sources para descarregar de pkgs.tailscale.com: esse URL devolve 404. Portanto, se a sua máquina tem um tailscale.sources, foi você ou algum guia que o criou manualmente. Se tailscale.list também ainda estiver presente, o apt tem agora o mesmo repositório descrito duas vezes.
A versão menos grave é um aviso em cada atualização:
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:1A versão grave ocorre quando os dois ficheiros indicam caminhos de keyring diferentes, porque o apt não consegue decidir qual chave controla o repositório. Apresenta E: Conflicting values set for option Signed-By regarding source, depois o repositório e a respetiva suite, em seguida os dois caminhos de keyring separados por !=, e depois recusa continuar:
E: The list of sources could not be read.Esse erro bloqueia todos os comandos do apt, não apenas a atualização, até que um dos ficheiros seja removido. A mesma falha ocorre com os próprios repositórios do Ubuntu, e o erro de fonte apt duplicada após uma migração para deb822 explica o caso geral.
Encontre todos os ficheiros que mencionam Tailscale antes de eliminar qualquer coisa.
grep -RIn tailscale /etc/apt/sources.list /etc/apt/sources.list.d/Mantenha um dos ficheiros. Para desativar o outro sem o perder, altere o respetivo nome: o apt lê apenas ficheiros terminados em .list ou .sources. Por isso, tailscale.list.bak é ignorado e permanece no disco para referência.
Escrever corretamente o ficheiro de fontes deb822
Se preferir o formato mais recente, converta o ficheiro que já tem em vez de voltar a escrever o endereço do repositório, porque um erro de digitação nesse endereço é precisamente a origem dos erros acima. As versões recentes do apt incluem um conversor que reescreve ficheiros .list em stanzas deb822 e transfere a opção signed-by como Signed-By.
apt modernize-sources --help
sudo apt modernize-sourcesO Ubuntu 24.04 inclui uma versão do apt anterior a esse subcomando, por isso a linha de ajuda permite confirmar imediatamente se a sua versão o inclui. Quando não o inclui, crie a stanza a partir da linha que já está no disco, para que a base venha do ficheiro do fornecedor e não do 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.listEsse comando apresenta a stanza que escreveu, para que possa rever os campos antes do próximo apt update. Vale a pena conhecer quatro deles em detalhe, porque cada um falha de uma forma diferente:
URIstermina na base do repositório. Colar nele a partedists/noblegera um erro 404, porque o apt acrescentadists/<suite>por si próprio e procuradists/noble/dists/noble.Suitesé o codename, exatamente o valor que estava no meio do formato de uma linha.Signed-Byrecebe um caminho absoluto para um ficheiro de keyring. Também aceita uma chave armored incluída diretamente abaixo dele, com cada linha da chave indentada por um espaço e cada linha vazia dentro da chave escrita como um ponto isolado.Enabled: nodesativa uma fonte sem a apagar. Isto é mais fácil de reverter do que mudar o nome do ficheiro e mais fácil de explicar à pessoa seguinte.
Mantenha uma stanza por ficheiro para repositórios de terceiros e coloque uma linha vazia entre stanzas se algum dia mantiver várias no mesmo ficheiro. O índice do repositório lista amd64 e arm64 entre as suas arquiteturas, por isso uma VPS ARM não precisa de um campo Architectures adicional.
Um proxy intermediário retorna 403
Como este repositório não tem esse caminho, uma resposta 404 seria esperada. Portanto, 403 significa que outro componente respondeu em seu nome. Comece pela configuração do próprio apt, porque um proxy definido aí aplica-se ao apt, mas não ao seu curl interativo.
grep -RIn -i proxy /etc/apt/apt.conf.d/ /etc/apt/apt.conf
sudo apt-config dump | grep -i 'acquire::http'Em seguida, monitore o que o apt realmente envia.
sudo apt -o Debug::Acquire::http=1 updateIsto mostra a linha de pedido, os cabeçalhos enviados pelo apt e o proxy através do qual a ligação foi feita, se existir. Compare com um curl simples para o mesmo URL. Se o curl retornar 200 e o apt retornar 403, os dois pedidos diferem em algo que o dispositivo intermediário considera relevante. O candidato habitual é o agente do utilizador:
curl -sS -o /dev/null -w '%{http_code}\n' -A 'Debian APT-HTTP/1.3' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InReleaseSe este comando retornar 403 enquanto o curl predefinido retorna 200, um dispositivo de filtragem está a recusar o apt pelo nome. A correção deve ser feita nesse dispositivo, não no seu servidor. Um proxy corporativo que inspeciona TLS comporta-se de outra forma: o apt apresenta uma falha de verificação do certificado, e não um código de estado, porque o certificado recebido foi emitido pelo proxy, e não pela autoridade de certificação da Tailscale. Uma firewall de saída na cloud que permite apenas os mirrors do Ubuntu é outra origem comum. Nesse caso, permita pkgs.tailscale.com na firewall.
Saída apenas por IPv6 e erros que não são códigos de estado
Se o apt nunca recebeu uma resposta HTTP, teste cada protocolo isoladamente.
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/InReleaseQuando o IPv4 responde e o IPv6 fica bloqueado ou apresenta Network is unreachable, o apt falha porque a biblioteca de resolução prefere IPv6 e o servidor não tem um caminho IPv6 funcional. Force uma execução a usar IPv4 para confirmar a hipótese:
sudo apt -o Acquire::ForceIPv4=true updateSe essa atualização for concluída com sucesso, torne a alteração permanente.
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4Considere também o caso oposto. Numa VPS que não tenha qualquer endereço IPv4, forçar IPv4 não resolve nada, porque não existe uma rota IPv4 para encaminhar o tráfego. Nesse caso, precisa de NAT64 com DNS64 do fornecedor ou de um proxy com um endereço IPv4. O sintoma é um erro de ligação que identifica um endereço IPv6; por isso, a linha curl -6 é a que mostra o problema real.
Os métodos alternativos e o custo de cada um
O script de instalação do fornecedor. curl -fsSL https://tailscale.com/install.sh | sh é o comando divulgado pela Tailscale. Ao ler o script, verá que ele deteta a distribuição a partir de /etc/os-release e escreve os mesmos dois caminhos corrigidos neste guia, /usr/share/keyrings/tailscale-archive-keyring.gpg e /etc/apt/sources.list.d/tailscale.list, usando as mesmas URLs. Isto é importante para definir as expectativas: o script não contorna um repositório bloqueado por um proxy. Falha da mesma forma, mas apresenta menos informação. Encaminhar um script descarregado para uma shell como root é uma troca, não uma solução, porque implica confiar no que o servidor devolver naquele momento e não mantém uma cópia do que foi executado. Se aceitar essa troca, faça-o de forma consciente:
curl -fsSL https://tailscale.com/install.sh -o install.sh
less install.sh
sh install.shOs binários estáticos. O mesmo servidor publica tarballs simples na secção de binários estáticos de pkgs.tailscale.com/stable. Em agosto de 2026, a versão estável é 1.102.2 e o ficheiro x86 de 64 bits é tailscale_1.102.2_amd64.tgz. O cliente tailscale e o daemon tailscaled são instalados por si, e também é responsável por supervisionar o daemon. Assim, não existe um caminho apt upgrade e cada atualização futura terá de ser descarregada manualmente. Esta opção é adequada para um host isolado de redes externas ou quando é necessário fixar uma versão exata.
O pacote próprio do Ubuntu. Não existe. Executar sudo apt install tailscale sem configurar o repositório do fornecedor termina em E: Unable to locate package tailscale, e nenhuma alteração em apt update resolve isso. Se o que pretende é um servidor de coordenação sob o seu controlo, em vez do servidor alojado pela Tailscale, essa é uma decisão separada: executar o Headscale como servidor de controlo próprio explica essa opção, e a comparação entre Tailscale e WireGuard simples ajuda a determinar se precisa desta infraestrutura.
O pacote foi instalado, mas tailscaled não inicia
Depois de o apt concluir sem erros, as falhas passam para o daemon.
systemctl status tailscaled
sudo journalctl -u tailscaled -n 50Numa VPS que usa virtualização por contentores e partilha o kernel do host, como LXC ou OpenVZ, o log contém uma linha que indica que /dev/net/tun não existe. O daemon precisa de um dispositivo TUN para criar a interface tailscale0, mas o contentor não recebeu esse dispositivo. Peça ao fornecedor para ativar o TUN no contentor ou mude para um plano KVM, no qual terá o seu próprio kernel. Em KVM, isto funciona sem configuração adicional.
Depois disso, sudo tailscale up mostra um URL de início de sessão, e tailscale status deve listar a sua máquina com um endereço no intervalo 100.64.0.0/10. Uma máquina que aparece aí pode servir de base para outras configurações, seja anunciar uma sub-rede privada a partir da sua VPS ou usar a VPS como nó de saída.
FAQ
Por que o apt informa que o repositório do Tailscale não está assinado?
Porque o apt transferiu o índice do repositório, mas não conseguiu verificar a assinatura com /usr/share/keyrings/tailscale-archive-keyring.gpg. O motivo habitual é o keyring ter zero bytes: sudo tee truncou o ficheiro antes de o curl falhar ao transferir qualquer conteúdo, e o pipeline indicou sucesso porque tee terminou com sucesso. Execute gpg --show-keys /usr/share/keyrings/tailscale-archive-keyring.gpg. Um keyring válido mostra uma linha pub e uma linha uid com o nome Tailscale, enquanto um keyring vazio ou corrompido mostra gpg: no valid OpenPGP data found.. Transfira a chave para um ficheiro temporário, verifique-a nesse local e copie-a depois para o destino com o modo 0644, para que o utilizador _apt a possa ler.
Que codinome do Ubuntu devo usar nos URLs do Tailscale?
Use o valor de UBUNTU_CODENAME obtido de /etc/os-release. Esse valor é noble no Ubuntu 24.04 e resolute no Ubuntu 26.04. Não use lsb_release -cs numa distribuição derivada do Ubuntu: no Linux Mint 22, esse comando mostra wilma, o Tailscale não publica nada com esse nome e o apt informa 404 em dists/wilma/InRelease. Confirme a escolha antes de editar qualquer ficheiro, transferindo manualmente o índice com curl -sS -o /dev/null -w '%{http_code}\n' contra https://pkgs.tailscale.com/stable/ubuntu/dists/<codename>/InRelease.
É seguro executar o script de instalação do Tailscale encaminhado para uma shell?
É uma decisão que deve tomar deliberadamente. O script vem do Tailscale e executa os mesmos passos manuais: lê /etc/os-release, grava o mesmo keyring e o mesmo /etc/apt/sources.list.d/tailscale.list e instala depois o pacote. O custo é executar, com root, tudo o que o servidor devolver naquele momento, sem manter um registo do conteúdo. Transfira-o com -o install.sh, leia-o e execute-o depois se quiser a conveniência sem esse ponto cego. O script também não resolve um repositório bloqueado, porque usa os mesmos URLs que já falharam.
Como instalo o Tailscale no Ubuntu sem o repositório apt?
Use os tarballs estáticos publicados em pkgs.tailscale.com. Em agosto de 2026, estão na versão 1.102.2 e incluem um ficheiro amd64 chamado tailscale_1.102.2_amd64.tgz. Terá de instalar manualmente os programas tailscale e tailscaled e executar manualmente o daemon com systemd. O custo são as atualizações: não existe um pacote apt para obter uma versão nova, por isso cada atualização é manual. O arquivo do Ubuntu não contém um pacote tailscale próprio, portanto sudo apt install tailscale numa máquina sem o repositório do fornecedor termina em E: Unable to locate package tailscale.