Como criar um servidor Tibia OTServ no Windows com TFS: guia técnico

Aprenda a criar um servidor Tibia OTServ no Windows com The Forgotten Server (TFS), MySQL e configuração de portas em uma VPS dedicada.

Rodar um OTServ próprio é um dos exercícios mais educativos para quem quer entender game servers — você lida com banco de dados, sockets TCP, scripting Lua e administração de sistema operacional ao mesmo tempo. The Forgotten Server (TFS) é o engine mais usado da cena de Open Tibia desde meados dos anos 2010, e a versão 1.x trouxe uma base de código C++ moderna que facilita muito a manutenção.

Este guia mostra o caminho completo para colocar um TFS 1.5 rodando no Windows Server 2022, com MySQL configurado, portas liberadas no firewall e o cliente conectando ao servidor. A persona aqui é o owner de OTServ iniciante ou intermediário que prefere ambiente Windows pela curva de aprendizado menor — mesmo que Linux ofereça vantagens de performance no longo prazo.

Tempo estimado de execução: 45 a 60 minutos, considerando download dos binários e download do mapa. A configuração reaproveita as builds pré-compiladas distribuídas pela comunidade, sem necessidade de compilar o TFS do zero.

Pré-requisitos

Antes de começar, confirme que você tem acesso administrativo a uma VPS Windows com IP público dedicado. OTServ não funciona em ambientes com CGNAT ou IP compartilhado porque precisa abrir portas de entrada para o cliente Tibia se conectar.

Pré-requisitos técnicos

Windows Server 2022 (ou Windows 10/11 com acesso administrativo), no mínimo 4 GB de RAM e 2 vCPUs para sustentar 200-300 jogadores, 30 GB de disco livre, e acesso RDP (Remote Desktop) com usuário com permissão de administrador. A VPS precisa de IPv4 dedicado — sem CGNAT.

Porta de login 7171/TCP
Porta do mundo 7172/TCP
Porta MySQL 3306/TCP (local)
RAM mínima 4 GB

Preparando o ambiente Windows

Antes de baixar o TFS, instale as dependências de runtime que os binários pré-compilados esperam encontrar no sistema. Sem isso, o tfs.exe falha ao iniciar com mensagens crípticas sobre DLLs faltando.

01

Conecte na VPS via RDP usando o IP público, usuário Administrator e a senha fornecida no provisionamento. Use o cliente Remote Desktop padrão do Windows ou um cliente RDP de sua preferência.

Após o login, abra o PowerShell como administrador (botão direito no menu Iniciar, “Windows PowerShell (Admin)”). Todos os comandos a seguir rodam nesse contexto.

02

Instale o Visual C++ Redistributable 2015-2022 (x64), que é o runtime exigido pelas builds modernas do TFS:

Invoke-WebRequest -Uri "https://aka.ms/vs/17/release/vc_redist.x64.exe" -OutFile "$env:TEMP\vc_redist.x64.exe"
Start-Process -FilePath "$env:TEMP\vc_redist.x64.exe" -ArgumentList "/install","/quiet","/norestart" -Wait

Esse pacote contém as bibliotecas C++ que o tfs.exe linka dinamicamente. Sem ele, o executável retorna erro “VCRUNTIME140.dll missing” ao tentar abrir.

03

Crie a estrutura de pastas onde o servidor vai rodar:

New-Item -ItemType Directory -Path "C:\otserv" -Force
New-Item -ItemType Directory -Path "C:\otserv\backup" -Force

Manter o OTServ fora de C:\Program Files evita problemas de permissão de escrita do UAC quando o TFS tenta gerar logs ou atualizar arquivos de mundo.

Instalando MySQL para o banco de dados

O TFS usa MySQL (ou MariaDB) para armazenar contas, personagens, casas e estado persistente do mundo. Sem o banco rodando, o servidor não inicia.

04

Baixe o MySQL Community Server 8.0 (instalador MSI) em mysql.com/downloads. Durante a instalação, escolha “Developer Default” como tipo de setup — isso instala o MySQL Server, Workbench e os connectors.

Quando o assistente pedir para configurar uma senha de root, escolha uma senha forte e anote em um gerenciador de senhas. Você vai precisar dela em segundos.

05

Abra o MySQL Workbench e conecte na instância local. Execute o SQL abaixo para criar o banco de dados e o usuário dedicado do TFS:

CREATE DATABASE forgottenserver CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'otserv'@'localhost' IDENTIFIED BY 'TROQUE_ESSA_SENHA_FORTE';
GRANT ALL PRIVILEGES ON forgottenserver.* TO 'otserv'@'localhost';
FLUSH PRIVILEGES;

Usar um usuário dedicado em vez de root reduz risco: se o TFS tiver bug de SQL injection (já aconteceu historicamente em scripts Lua), o estrago fica contido no banco do jogo.

Bind do MySQL

Por padrão o MySQL escuta apenas em 127.0.0.1, o que é correto para esse cenário. NUNCA exponha a porta 3306 para a internet — sempre acesse o banco via SSH/RDP tunelado ou apenas localmente na VPS.

Baixando e configurando o TFS

Com runtime e banco prontos, baixe a build do TFS e importe o schema inicial.

06

Baixe a release mais recente do The Forgotten Server 1.5 em otland.net/forums (seção “Compiled Servers — Windows”). Procure por uma build “downgrade 8.60” se quiser o protocolo clássico mais popular, ou TFS 1.5 vanilla para protocolo 12.x moderno.

Extraia o ZIP em C:\otserv\. Você deve ter estrutura como:

C:\otserv\
  tfs.exe
  config.lua.dist
  schema.sql
  data\
  notes\
07

Importe o schema inicial no banco que você criou:

cd C:\otserv
mysql -u otserv -p forgottenserver < schema.sql

Esse comando cria todas as tabelas: accounts, players, houses, guilds, tile_store e outras. O TFS não roda sem essas tabelas presentes.

08

Copie config.lua.dist para config.lua e edite com os parâmetros do seu servidor:

ip = "SEU_IP_PUBLICO_AQUI"
loginProtocolPort = 7171
gameProtocolPort = 7172
statusProtocolPort = 7171

mysqlHost = "127.0.0.1"
mysqlUser = "otserv"
mysqlPass = "TROQUE_ESSA_SENHA_FORTE"
mysqlDatabase = "forgottenserver"
mysqlPort = 3306

serverName = "Meu OTServ"
ownerName = "Seu Nome"
worldType = "pvp"

O campo ip é o erro mais comum: se ficar como 127.0.0.1 (default), o servidor responde apenas para conexões locais e jogadores externos veem “Cannot connect to login server”.

Liberando portas no firewall

O Windows Firewall bloqueia conexões de entrada por padrão. Você precisa criar regras explícitas para as portas do TFS.

09

Abra o PowerShell admin e crie as regras de entrada:

New-NetFirewallRule -DisplayName "OTServ Login" -Direction Inbound -Protocol TCP -LocalPort 7171 -Action Allow
New-NetFirewallRule -DisplayName "OTServ Game" -Direction Inbound -Protocol TCP -LocalPort 7172 -Action Allow

Confirme que as regras foram criadas:

Get-NetFirewallRule -DisplayName "OTServ*" | Select-Object DisplayName, Enabled, Direction

Você deve ver as duas regras com Enabled: True e Direction: Inbound.

Não desative o firewall inteiro

Tentado por iniciantes para “resolver de uma vez”, desativar o Windows Firewall expõe RDP (porta 3389), MySQL (3306) e todos os serviços internos para a internet. Mantenha o firewall ativo e crie apenas as regras necessárias.

Iniciando o servidor e verificando

Com tudo configurado, é hora de subir o TFS e validar que tudo funciona.

10

Na pasta C:\otserv, dê duplo clique em tfs.exe (ou rode no PowerShell):

cd C:\otserv
.\tfs.exe

Você deve ver saída parecida com:

The Forgotten Server - Version 1.5
Loaded config.lua
Loaded items, monsters, NPCs, spells
Connected to MySQL
Loaded map
[OK] Server Online! - 127.0.0.1:7171

Se aparecer erro de MySQL, revise mysqlPass em config.lua. Se aparecer erro de mapa, confirme que data/world/forgotten.otbm existe.

Verificação

Confirme que o servidor está aceitando conexões externas executando do seu computador local (não da VPS):

telnet SEU_IP_PUBLICO 7171

Se a tela ficar preta sem mensagem de erro, a porta está aberta e o TFS está respondendo. Pressione Ctrl+] e digite quit para sair.

Para testar com o cliente Tibia real, abra o OTClient ou cliente Tibia adaptado, vá em “Server” e configure: IP = seu IP público da VPS, porta = 7171. Crie uma conta via comando in-game ou direto via SQL e tente logar.

Resolução de problemas

”Cannot connect to login server” do lado do cliente

Causa mais comum: ip em config.lua está como 127.0.0.1 ou IP errado. Confirme com ipconfig o IP da interface de rede e ajuste. Em seguida verifique se a porta 7171 está realmente aberta usando um scanner externo como nmap a partir de outra máquina.

TFS fecha sozinho ao iniciar

Geralmente é Visual C++ Redistributable faltando ou versão errada. Confirme que instalou o pacote x64 2015-2022, não o x86. Outra causa comum: data/items/items.otb corrompido ou de versão diferente do protocolo configurado.

Lag/spike de latência com poucos jogadores

Quase sempre é script Lua mal otimizado. Use debug mode no config.lua (logFile = "logs/server.log") e revise scripts globais ou de eventos disparando queries SQL em loops. Em hardware adequado, TFS 1.5 sustenta tranquilamente algumas centenas de jogadores antes de saturar CPU.

Próximos passos

Com o OTServ rodando, considere os próximos pontos para evoluir o projeto:

  • Configure backup automático do MySQL via Task Scheduler do Windows (export diário do dump SQL)
  • Suba um site PHP com login.php para os clientes Tibia modernos buscarem informações do servidor (charlist API)
  • Adicione monitoramento de uptime externo para receber notificação se o tfs.exe cair
  • Customize o mapa com Remere’s Map Editor ou crie quests Lua próprias
  • Migre para protocolo moderno (12.x) se quiser features atuais do Tibia oficial

Se você está colocando o servidor em produção com base de jogadores real, uma VPS Hostini para jogos já vem com IPv4 dedicado, proteção DDoS especializada em portas de game (7171/7172) e baixa latência para o Brasil — o que importa muito quando seus jogadores são daqui.

Perguntas frequentes

Qual versão do TFS escolher para um OTServ novo em 2026?

TFS 1.5 (downgrade 8.60 ou 7.72) é a escolha mais comum para projetos novos por ter base de código moderna em C++17 e ampla disponibilidade de scripts. TFS 1.4 ainda é viável se você usa libs antigas. Evite TFS 0.4 a menos que tenha motivo nostálgico — manutenção e suporte da comunidade migraram para 1.x.

Por que meu cliente Tibia mostra 'Cannot connect to login server' mesmo com o OTServ rodando?

Quase sempre é uma das três causas: o IP em config.lua está como 127.0.0.1 em vez do IP público, a porta 7171 não está liberada no firewall do Windows, ou o login.php do site não aponta para o IP correto da VPS. Verifique os três antes de mexer no código.

Posso rodar OTServ no Windows ou Linux é obrigatório?

Windows roda OTServ sem problemas e é mais comum entre owners iniciantes pela familiaridade com a interface. Linux tende a oferecer melhor performance por core e custo menor de licenciamento, mas exige conforto com linha de comando. Para começar, Windows Server 2022 é uma escolha pragmática.

Quantos jogadores um OTServ aguenta em uma VPS de 4 GB de RAM?

Para TFS 1.5 com mapa custom moderado, 4 GB RAM e 2 vCPUs sustentam tranquilamente 200-300 jogadores online simultâneos. O gargalo geralmente aparece em scripts Lua mal otimizados (queries SQL em loops, eventos globais pesados) antes de saturar hardware.

Preciso de IP dedicado para rodar OTServ?

Sim, é praticamente obrigatório. Jogadores precisam de um IP estável para configurar no cliente Tibia ou no OTClient. IPs compartilhados (CGNAT) não permitem abrir as portas 7171 e 7172 para entrada. Toda VPS Hostini já vem com IPv4 dedicado por padrão.

Como proteger o OTServ contra ataques DDoS sem comprometer latência?

Use proteção em camada de rede que filtre tráfego malicioso antes de chegar ao servidor. O OTServ usa UDP/TCP em portas específicas (7171, 7172) — proteção genérica de HTTP não cobre. VPS com proteção DDoS dedicada para jogos filtra ataques volumétricos sem adicionar latência percebível.

Tópicos:
Próximos passos VPS, dedicado ou painel gerenciado para FiveM, SAMP, MTA, Tibia e mais.Hospede seu servidor de jogos com a Hostini →
Esse tutorial foi útil?
Falar no WhatsApp