Como Instalar o Servidor TeamSpeak em um VPS (Guia Ubuntu/CentOS)
TeamSpeak é uma plataforma de comunicação de voz auto-hospedada e de baixa latência que funciona como um daemon de servidor independente no Linux. Instalá-lo num VPS dá-lhe controlo administrativo completo sobre canais, permissões, codecs e políticas de segurança — sem depender de infraestrutura de terceiros ou limites de utilização.
Este guia abrange a instalação completa do TeamSpeak 3 Server no Ubuntu (com notas para variantes CentOS/RHEL), incluindo isolamento de utilizador, configuração de serviço systemd, proteção da palavra-passe de administrador e ligação do cliente. Todos os comandos estão prontos para produção e testados num ambiente limpo 22.04 LTS.
Porquê Auto-Hospedar o TeamSpeak num VPS
As plataformas de voz comerciais como o Discord impõem políticas de retenção de dados, moderação algorítmica e limites de taxa que as organizações não podem substituir. Uma instância TeamSpeak auto-hospedada elimina completamente essas restrições. Você controla:
- Qualidade do codec (Opus Voice, Opus Music) e bitrate por canal
- Sistema de permissões com ACLs granulares de grupo de servidor e grupo de canal
- Encriptação via TLS para sinalização e encriptação de voz opcional
- Residência de dados — o seu tráfego de voz nunca transita por um relay de terceiros
- SLA de disponibilidade — diretamente ligado ao seu fornecedor de VPS, não a um serviço cloud partilhado
Para clãs de jogos, organizações de esports, equipas de desenvolvimento remoto e comunicações corporativas, isto traduz-se em vantagens mensuráveis de fiabilidade e conformidade.
Requisitos Mínimos do Sistema
O TeamSpeak 3 Server é excecionalmente leve. As seguintes especificações suportam aproximadamente 50–100 utilizadores simultâneos sem degradação da qualidade de áudio:
| Recurso | Mínimo | Recomendado (100+ utilizadores) |
|---|
| — | — | — |
|---|
| Núcleos CPU | 1 vCPU | 2 vCPU |
|---|
| RAM | 512 MB | 1 GB |
|---|
| Espaço em Disco | 1 GB | 5 GB (logs + DB) |
|---|
| Rede | 10 Mbps | 100 Mbps |
|---|
| SO | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
|---|
| Arquitetura | x86_64 (amd64) | x86_64 (amd64) |
|---|
Um plano de VPS Hosting com 1 vCPU e 512 MB RAM é suficiente para uma pequena comunidade. Escale verticalmente à medida que o número de utilizadores simultâneos cresce.
Portas principais a abrir na sua firewall:
- `9987/UDP` — dados de voz (predefinição)
- `10011/TCP` — ServerQuery (raw ou SSH)
- `30033/TCP` — transferência de ficheiros
Passo 1: Preparar o Servidor
Ligue-se ao seu VPS como root:
“`bash
ssh root@your_server_ip -p your_ssh_port
“`
Atualize todos os pacotes do sistema para eliminar vulnerabilidades conhecidas antes de introduzir novo software:
“`bash
sudo apt update && sudo apt upgrade -y
“`
Instale `bzip2`, que é necessário para extrair o arquivo TeamSpeak:
“`bash
sudo apt install bzip2 -y
“`
No CentOS/AlmaLinux/Rocky Linux, substitua o acima por:
“`bash
sudo dnf update -y && sudo dnf install bzip2 wget -y
“`
Passo 2: Criar um Utilizador de Sistema Dedicado
Executar o TeamSpeak como root é um erro crítico de segurança. Se o processo for alguma vez explorado, um atacante obtém acesso root imediato a todo o host. Isole-o sempre sob um utilizador sem privilégios:
“`bash
sudo adduser teamspeak
“`
Siga as instruções para definir uma palavra-passe. Este utilizador será proprietário de todos os binários TeamSpeak, ficheiros de configuração e da base de dados SQLite.
> Nota de segurança: Para ambientes com maior proteção, considere criar o utilizador com `–disabled-login` e usar `sudo -u teamspeak` para todas as operações, impedindo completamente o acesso à shell interativa.
Passo 3: Descarregar e Extrair o Binário do TeamSpeak Server
Mude para o contexto do utilizador `teamspeak`:
“`bash
sudo su – teamspeak
“`
Descarregue a versão estável mais recente do TeamSpeak 3 Server para Linux de 64 bits. Verifique sempre o número de versão atual na página oficial de downloads do TeamSpeak antes de executar este comando, pois a string de versão muda a cada lançamento:
“`bash
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2 -O teamspeak-server.tar.bz2
“`
Extraia o arquivo e remova o diretório de nível superior para que todos os ficheiros fiquem diretamente no diretório de trabalho atual (`/home/teamspeak/`):
“`bash
tar xvfj teamspeak-server.tar.bz2 –strip-components 1
“`
Aceite o contrato de licença do TeamSpeak criando o ficheiro marcador necessário. O daemon do servidor recusará iniciar sem ele:
“`bash
touch ~/.ts3server_license_accepted
“`
Regresse ao utilizador root:
“`bash
exit
“`
Passo 4: Criar uma Unidade de Serviço systemd
Gerir o TeamSpeak via systemd garante que o processo reinicia automaticamente após uma reinicialização ou falha, integra-se com `journald` para registo centralizado e respeita a ordenação adequada de dependências durante o arranque.
Abra um novo ficheiro de unidade de serviço:
“`bash
nano /etc/systemd/system/teamspeak.service
“`
Cole a seguinte configuração completa da unidade:
“`ini
[Unit]
Description=TeamSpeak 3 Server
After=network.target
[Service]
WorkingDirectory=/home/teamspeak/
User=teamspeak
Group=teamspeak
Type=forking
ExecStart=/home/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini
ExecStop=/home/teamspeak/ts3server_startscript.sh stop
PIDFile=/home/teamspeak/ts3server.pid
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
“`
Principais diretivas explicadas:
- `After=network.target` — impede o arranque antes de a pilha de rede estar pronta, evitando falhas de bind em `9987/UDP`
- `Type=forking` — correto para o script de arranque do TeamSpeak, que cria um processo em segundo plano
- `Restart=on-failure` — recupera automaticamente de falhas inesperadas sem intervenção manual
- `RestartSec=10s` — adiciona um breve atraso antes das tentativas de reinício para evitar ciclos de falha rápidos
Guarde o ficheiro (`Ctrl+S`, depois `Ctrl+X`), depois recarregue o daemon systemd para registar a nova unidade:
“`bash
systemctl daemon-reload
“`
Ative o serviço para iniciar no arranque e inicie-o imediatamente:
“`bash
systemctl enable –now teamspeak
“`
Verifique se o serviço está ativo e em execução:
“`bash
systemctl status teamspeak
“`
A saída esperada inclui `Active: active (running)` com um PID válido. Se o estado mostrar `failed`, inspecione os logs imediatamente:
“`bash
journalctl -u teamspeak -n 50 –no-pager
“`
Passo 5: Obter a Chave de Privilégio de Administrador (Token)
Quando o TeamSpeak Server inicia pela primeira vez, gera uma chave de privilégio (token) nos seus ficheiros de log. Este token concede ao primeiro cliente que se liga direitos completos de administrador do servidor. Deve obtê-lo antes de qualquer outra pessoa se ligar.
“`bash
grep -i token /home/teamspeak/logs/*
“`
A saída conterá uma linha semelhante a:
“`
token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ
“`
Copie este token. Quando se ligar via cliente TeamSpeak pela primeira vez, ser-lhe-á pedido que o introduza. Ao fazê-lo, eleva o seu cliente para o grupo de servidor `Server Admin`.
> Crítico: Este token é de utilização única e é consumido na primeira utilização. Se o perder antes de o usar, deve definir uma nova palavra-passe de administrador manualmente (ver Passo 6). Guarde-o em segurança.
Passo 6: Definir ou Redefinir a Palavra-passe do ServerAdmin
A conta `serveradmin` é usada para acesso ServerQuery — uma interface TCP raw ou SSH que permite administração por scripts, integração de bots e ferramentas de gestão remota como YaTQA ou ts3admin.
Para definir ou redefinir esta palavra-passe, deve parar temporariamente o serviço, iniciar o binário do servidor diretamente com o argumento de palavra-passe, depois pará-lo novamente e reiniciar via systemd:
“`bash
systemctl stop teamspeak.service
“`
Mude para o utilizador teamspeak e defina a palavra-passe:
“`bash
su – teamspeak
./ts3server_startscript.sh start serveradmin_password=YourStrongPassword
“`
Aguarde que o servidor inicialize completamente (observe `TeamSpeak 3 Server started successfully` na saída), depois pare-o:
“`bash
./ts3server_startscript.sh stop
exit
“`
Reinicie o serviço gerido:
“`bash
systemctl start teamspeak.service
“`
Requisitos de palavra-passe: Use um mínimo de 16 caracteres com maiúsculas e minúsculas, números e símbolos. A interface ServerQuery está exposta na porta TCP `10011` e é um alvo comum de força bruta se deixada com uma palavra-passe fraca.
Passo 7: Configurar a Firewall
Se `ufw` estiver ativo no seu servidor, abra as portas necessárias:
“`bash
ufw allow 9987/udp comment "TeamSpeak voice"
ufw allow 10011/tcp comment "TeamSpeak ServerQuery"
ufw allow 30033/tcp comment "TeamSpeak file transfer"
ufw reload
“`
Para `firewalld` (CentOS/AlmaLinux):
“`bash
firewall-cmd –permanent –add-port=9987/udp
firewall-cmd –permanent –add-port=10011/tcp
firewall-cmd –permanent –add-port=30033/tcp
firewall-cmd –reload
“`
> Dica de proteção: Se não precisar de acesso público ao ServerQuery, restrinja a porta `10011` apenas a IPs de gestão específicos. Expô-la publicamente é desnecessário para a operação padrão do servidor de voz.
Passo 8: Ligar a partir do Cliente TeamSpeak
- Descarregue e instale o TeamSpeak 3 Client para o seu SO de ambiente de trabalho (Windows, macOS, Linux).
- Abra o cliente e navegue para Connections > Connect.
- Introduza o endereço IP do seu VPS como Server Nickname or Address.
- Deixe a porta como `9987` a menos que a tenha alterado em `ts3server.ini`.
- Na primeira ligação, o cliente irá pedir-lhe que introduza a chave de privilégio (token). Cole o token obtido no Passo 5.
- O seu cliente é agora o administrador do servidor.
Opcional: Usar o Script de Instalação Automatizada
Para implementação rápida, a AlexHost fornece um script de instalação automatizada que trata da instalação de dependências, criação de utilizador, download de binários e configuração de serviço numa única execução:
“`bash
ssh root@your_server_ip -p your_ssh_port
wget https://bill.alexhost.com/downloads/teamspeak_install.sh
chmod +x teamspeak_install.sh
./teamspeak_install.sh
“`
Reveja o conteúdo do script antes de o executar para compreender que alterações faz ao seu sistema. Os scripts automatizados são convenientes, mas nunca devem ser executados cegamente em infraestrutura de produção.
TeamSpeak vs. Alternativas: Plataformas de Voz Auto-Hospedadas
| Funcionalidade | TeamSpeak 3 | Mumble | Discord (cloud) |
|---|
| — | — | — | — |
|---|
| Auto-hospedado | Sim | Sim | Não |
|---|
| Uso de RAM (inativo) | ~30 MB | ~15 MB | N/A |
|---|
| Latência | Muito baixa | Muito baixa | Baixa–Média |
|---|
| Encriptação | TLS (sinalização) | DTLS + SRTP | Proprietária |
|---|
| Sistema de permissões | ACL Avançado | Moderado | Baseado em funções |
|---|
| Disponibilidade do cliente | Win/Mac/Linux/Mobile | Win/Mac/Linux | Win/Mac/Linux/Mobile |
|---|
| Licença (servidor) | Gratuita até 32 slots | Open source | N/A |
|---|
| Codec | Opus | Opus/CELT | Opus |
|---|
| ServerQuery API | Sim (TCP/SSH) | Não | Apenas REST API |
|---|
A ServerQuery API do TeamSpeak é um diferenciador significativo para organizações que precisam de gestão programática do servidor — criação automatizada de canais, integração de bots ou alterações de permissões acionadas por CI/CD.
Problemas Comuns de Instalação e Soluções
O servidor não inicia — "Could not bind to port 9987"
Outro processo está a usar UDP 9987, ou o serviço iniciou antes de a rede estar pronta. Verifique com `ss -ulnp | grep 9987` e confirme que a diretiva `After=network.target` está presente na sua unidade de serviço.
Erro de ficheiro de licença não encontrado
O ficheiro `.ts3server_license_accepted` deve existir no diretório home do utilizador que executa o processo (`/home/teamspeak/`). Confirme com `ls -la /home/teamspeak/.ts3server_license_accepted`.
Token não encontrado nos logs
O diretório de logs tem como predefinição `/home/teamspeak/logs/`. Se extraiu o arquivo para um caminho diferente, ajuste o comando grep em conformidade. Os tokens apenas aparecem no log do primeiro arranque — se a base de dados já existir, não é gerado nenhum novo token.
Ligação ao ServerQuery recusada
Confirme que a porta `10011/TCP` está aberta na sua firewall e que o processo do servidor está em execução. Teste localmente com `telnet 127.0.0.1 10011` — uma ligação bem-sucedida devolve um banner `TS3`.
Uso elevado de CPU com muitos utilizadores
O TeamSpeak é single-threaded para mistura de voz. Se ultrapassar ~200 utilizadores simultâneos numa única instância de servidor virtual, considere implementar múltiplos servidores virtuais ou atualizar para um plano de Dedicated Servers para velocidade de clock de CPU garantida e sem contenção de vizinhos ruidosos.
Proteger a Sua Implementação TeamSpeak
Para além do isolamento de utilizador e das regras de firewall abordadas acima, aplique estas medidas de proteção:
- Altere as portas predefinidas em `ts3server.ini` para reduzir a exposição a varreduras automatizadas. Atualize as regras de firewall em conformidade.
- Restrinja o ServerQuery (`10011/TCP`) a IPs de gestão usando filtragem de origem na firewall.
- Ative a autenticação por chave SSH no seu VPS e desative o login root baseado em palavra-passe. Consulte o painel de controlo do seu VPS para opções de gestão de chaves SSH.
- Monitorize os logs via `journalctl -u teamspeak -f` para padrões de ligação incomuns ou falhas repetidas de autenticação no ServerQuery.
- Backups regulares de `/home/teamspeak/ts3server.sqlitedb` — este ficheiro contém todas as configurações de canais, grupos de servidor, permissões e identidades de clientes. Perdê-lo significa reconstruir toda a estrutura do servidor do zero.
- Mantenha o binário atualizado. O TeamSpeak lança patches de segurança periodicamente. Subscreva os anúncios de lançamento e repita os Passos 3–4 com o novo tarball de versão quando as atualizações estiverem disponíveis.
Se gerir múltiplos serviços no mesmo VPS, considere combinar a sua instância TeamSpeak com uma solução de VPS Control Panels para simplificar a gestão de serviços, monitorização e tarefas agendadas a partir de uma interface unificada.
Matriz de Decisão: Esta Configuração é Adequada para Si?
| Cenário | Ação Recomendada |
|---|
| — | — |
|---|
| Menos de 32 utilizadores simultâneos, comunidade de jogos | VPS de entrada, licença gratuita TeamSpeak |
|---|
| 32–512 utilizadores simultâneos, organização | Atualização de licença TeamSpeak + VPS com 2–4 vCPU |
|---|
| Necessita de isolamento total de hardware, 500+ utilizadores | Servidor dedicado, múltiplas instâncias de servidor virtual |
|---|
| Pretende painel gerido + TeamSpeak | VPS com cPanel ou DirectAdmin |
|---|
| Requer encaminhamento EU/US de baixa latência | Escolha a localização do datacenter VPS mais próxima dos utilizadores |
|---|
| Necessita de presença web complementar | Adicione [Shared Web Hosting](https://alexhost.com/pt-pt/shared-hosting/) ou subdomínio no mesmo VPS |
|---|
| Requer domínio personalizado para endereço do servidor | [Domain Registration](https://alexhost.com/pt-pt/domains/) + registo DNS A apontando para o IP do VPS |
|---|
Principais Conclusões Técnicas
- Execute sempre o TeamSpeak sob um utilizador dedicado não-root. Isto é inegociável para qualquer serviço voltado para a internet.
- O ficheiro marcador `ts3server_license_accepted` deve existir antes de o daemon iniciar — um ponto de falha comum no primeiro arranque.
- Use `Type=forking` na unidade systemd, não `Type=simple`. O script de arranque cria um processo em segundo plano; `simple` fará com que o systemd rastreie incorretamente o PID.
- Obtenha o token da chave de privilégio dos logs imediatamente após o primeiro arranque. É consumido na primeira utilização e não pode ser regenerado sem um procedimento manual de redefinição de palavra-passe.
- A porta `9987/UDP` é a única porta necessária para a operação básica de voz. `10011/TCP` e `30033/TCP` são opcionais dependendo do seu caso de uso.
- Faça backup de `ts3server.sqlitedb` regularmente. Toda a configuração do servidor reside neste único ficheiro.
- Para implementações em produção, restrinja o ServerQuery ao localhost ou a uma VLAN de gestão — nunca o exponha publicamente sem lista de permissões de IP.
—
Perguntas Frequentes
Qual é o número máximo de utilizadores numa licença gratuita do TeamSpeak?
A licença gratuita sem fins lucrativos suporta até 32 slots simultâneos. Para implementações maiores, o TeamSpeak oferece licenças anuais para 64, 128, 256 ou 512 slots, bem como uma “Activation License” de slots ilimitados para organizações qualificadas.
Posso executar o TeamSpeak Server num VPS com 512 MB RAM?
Sim. O daemon do TeamSpeak 3 Server consome aproximadamente 25–40 MB de RAM em inatividade e escala modestamente com utilizadores simultâneos. Um VPS de 512 MB é suficiente para comunidades com menos de 50 utilizadores simultâneos, com margem confortável para o SO e processos do sistema.
Como atualizo o TeamSpeak Server sem perder a minha configuração?
Pare o serviço com `systemctl stop teamspeak`, descarregue o novo tarball de versão como utilizador `teamspeak`, extraia-o com `–strip-components 1` para o mesmo diretório (substituindo apenas os binários), depois reinicie o serviço. A base de dados `ts3server.sqlitedb` e o ficheiro de configuração `ts3server.ini` não são substituídos por este processo.
Porque é que o meu servidor TeamSpeak não está visível na lista pública de servidores?
Por predefinição, os servidores TeamSpeak não se registam na lista pública de servidores. Para ativar a listagem, defina `machine_id=` e configure `serverip` em `ts3server.ini`, depois ative a opção de listagem pública via ServerQuery ou o painel de administração do servidor do cliente. Certifique-se de que a porta UDP `9987` é acessível a partir da internet.
O tráfego TeamSpeak é encriptado por predefinição?
O tráfego de sinalização (configuração de ligação, chat, permissões) é encriptado via TLS. Os dados de voz transmitidos por UDP não são encriptados por predefinição no TeamSpeak 3. A encriptação de voz pode ser ativada por canal ou em todo o servidor através das definições do servidor, ao custo de um pequeno aumento no uso de CPU. O TeamSpeak 5 (atualmente em desenvolvimento) usa encriptação de ponta a ponta por predefinição.
