Como criar um servidor de Tibia do zero, o guia completo para iniciantes
Do download da distribuição até o primeiro jogador entrando: banco de dados, config.lua, portas e os erros que travam quem está montando o primeiro OTServ.
Criar um servidor de Tibia parece complicado de fora, e a culpa é dos tutoriais. A maioria assume que você já sabe o que é TFS, o que é schema, o que é porta 7171. Se você nunca montou um OTServ, cada passo esbarra em três termos novos.
Este guia parte do zero de verdade. No fim dele você vai ter um servidor rodando, com banco de dados funcionando e um personagem seu andando dentro do jogo.
Vou avisar de uma vez: montar o servidor é a parte fácil. Manter ele no ar, estável e cheio de gente é o trabalho de verdade. Mas uma coisa por vez.
O que é um OTServ
OTServ é a abreviação de Open Tibia Server. É um servidor de Tibia feito pela comunidade, sem ligação com a CipSoft, a empresa que criou o jogo original.
O funcionamento é simples de entender: o jogo original tem um servidor oficial, que roda nas máquinas da CipSoft e que você não controla. O OTServ é uma reimplementação livre desse servidor. Você roda ele na sua máquina, define as regras, o mapa, as taxas de experiência, os itens, e os jogadores conectam nele usando um cliente configurado para apontar para o seu endereço em vez do oficial.
Na prática isso te dá controle total:
- Taxas de experiência e loot que você define, do clássico 1x ao high rate
- Mapa próprio ou o mapa global, com as cidades que você quiser
- Scripts customizados, criando quests, eventos e sistemas que não existem no jogo original
- Regras próprias de PvP, whitelist, guilds e economia
O projeto mais usado hoje é o TFS, sigla de The Forgotten Server. É a base que a maior parte dos servidores brasileiros usa. Existe também o Canary, mantido pela equipe do OTServBR, que é a escolha comum para quem quer rodar protocolo mais recente, com as mecânicas das versões modernas do jogo.
Uma distinção que confunde muita gente: distribuição não é a mesma coisa que datapack. A distribuição é o motor, o executável que roda o servidor. O datapack é o conteúdo, ou seja, o mapa, os monstros, as quests e os scripts. Uma distribuição sem datapack sobe, mas o mundo fica vazio.
O que você precisa antes de começar
Reúna isso antes de abrir qualquer tutorial. Metade das travadas acontece por falta de um item da lista.
Uma máquina ligada 24 horas. Servidor no seu computador funciona para testar, mas cai toda vez que você desliga, reinicia ou a luz pisca. Para qualquer coisa além de teste você vai precisar de uma VPS. Falo disso em detalhe mais adiante.
A distribuição escolhida. TFS ou Canary. Se está começando, TFS na versão 1.4 ou 1.5 com protocolo 8.60 é o caminho mais tranquilo, porque é onde existe mais material, mais script pronto e mais gente para tirar dúvida.
Um datapack compatível. E aqui vem o ponto que mais gera dor de cabeça: o datapack precisa ser da mesma versão da distribuição. Datapack de TFS 1.2 em TFS 1.5 vai dar erro de script em cascata.
Um banco de dados. MySQL ou MariaDB. Os dois funcionam, o MariaDB é o padrão na maioria das distribuições Linux hoje.
Um cliente configurado. O jogador não entra no seu servidor pelo cliente oficial. Ele usa o OTClient ou um cliente editado com IP e porta apontando para a sua máquina.
Paciência com log. O servidor conversa com você pelo console. Quando algo quebra, a resposta está lá. Aprender a ler aquele texto é metade do trabalho.
Escolhendo entre Linux e Windows
Essa decisão vem antes da instalação, porque muda todo o passo a passo.
Windows te dá área de trabalho, explorador de arquivos e editor de texto com dois cliques. Você conecta na máquina, vê uma tela igual à do seu computador e arrasta os arquivos. Para quem está montando o primeiro servidor, isso reduz muito a chance de travar.
A maioria das distribuições oferece binário pronto para Windows, ou seja, você baixa o executável e roda. Não precisa compilar nada.
Linux entrega mais desempenho na mesma configuração, porque não gasta memória nem processamento desenhando interface gráfica. Um servidor que ocupa 2 GB no Windows costuma ocupar bem menos no Linux, e essa folga vira jogador online.
O preço é que quase tudo acontece pelo terminal, e é comum precisar compilar a distribuição do zero, resolvendo dependências. Se você nunca usou um terminal, prepare-se para uma curva.
Recomendação honesta: se este é o seu primeiro OTServ, comece no Windows. Você vai errar bastante no começo, e errar com interface gráfica é muito mais rápido de consertar. Quando o servidor estiver de pé e você entender como as peças se encaixam, migrar para Linux é um projeto de fim de semana.
Se escolher Linux, tenha à mão os comandos essenciais para VPS Linux e o guia de como conectar na sua VPS Linux. No Windows, o caminho é como conectar na sua VPS Windows.
Instalando o servidor
Vou pelo caminho do Windows, que é o mais provável para quem está lendo isto.
1. Prepare a estrutura de pastas
Crie uma pasta na raiz do disco, algo como C:\otserv. Evite Área de Trabalho e
Documentos: os caminhos ficam longos, cheios de espaço e acento, e isso quebra
script.
Dentro dela vão ficar os arquivos da distribuição e do datapack.
2. Baixe a distribuição e o datapack
Baixe o pacote da distribuição escolhida. Um servidor TFS completo costuma vir com esta estrutura:
theforgottenserver.exe, o executável do servidorconfig.lua, o arquivo central de configuraçãodata/, onde vive todo o conteúdo do jogoschema.sql, a estrutura do banco de dados- Um punhado de
.dll, que são as bibliotecas necessárias
Se faltar qualquer .dll, o executável abre e fecha na hora, sem mensagem. É o
sintoma clássico de pacote incompleto.
3. Instale o XAMPP
O XAMPP entrega Apache e MySQL num instalador só. Baixe do site oficial, instale e abra o painel de controle como administrador. Sem isso os serviços falham ao iniciar.
No painel, clique em Start no Apache e no MySQL. Os dois precisam ficar verdes.
4. Confira as bibliotecas do Visual C++
O executável do TFS depende dos Redistributables da Microsoft. Se o servidor
fecha sozinho logo ao abrir, e você já conferiu as .dll, instale os pacotes
Visual C++ 2015 a 2022, nas versões x86 e x64. É uma das causas mais comuns de
"não abre e não fala nada".
Configurando o banco de dados
Aqui é onde o servidor deixa de ser um monte de arquivo e vira algo que guarda progresso.
Crie o banco
Com o MySQL rodando, acesse http://localhost/phpmyadmin no navegador da
máquina.
Clique em Novo, dê um nome ao banco, algo como otserv, e escolha o
agrupamento utf8mb4_general_ci. Confirme.
Você acabou de criar um banco vazio. Ele ainda não tem nenhuma tabela.
Importe o schema
Com o banco selecionado, vá na aba Importar, escolha o arquivo schema.sql
que veio junto com a distribuição e execute.
Esse arquivo cria todas as tabelas: contas, jogadores, guilds, casas, itens do depot, histórico. Sem ele o servidor sobe e derruba na hora, reclamando de tabela inexistente.
Confira depois de importar. O painel esquerdo deve mostrar dezenas de tabelas. Se aparecerem três ou quatro, a importação falhou no meio, geralmente por limite de tamanho de upload. Nesse caso importe o arquivo em partes ou use a linha de comando.
Aponte o servidor para o banco
Abra o config.lua com um editor de texto decente. Bloco de Notas serve, mas
Notepad++ ou VS Code deixam tudo mais legível.
Procure a seção de banco de dados:
mysqlHost = "127.0.0.1"
mysqlUser = "root"
mysqlPass = ""
mysqlDatabase = "otserv"
mysqlPort = 3306
Ajuste mysqlDatabase para o nome que você criou. No XAMPP recém-instalado o
usuário é root e a senha é vazia.
E aqui vai um aviso que vale mais que o resto do tutorial: senha vazia é aceitável enquanto você testa na sua máquina. No momento em que esse servidor for para uma VPS com IP público, defina uma senha forte para o MySQL. Banco exposto com usuário root e sem senha é a forma mais rápida de perder um servidor inteiro.
Crie a primeira conta
O servidor sobe, mas você ainda não tem como entrar, porque não existe conta nenhuma no banco.
No phpMyAdmin, abra a tabela accounts e insira um registro com nome de conta e
senha. Atenção ao formato da senha: a maioria das distribuições espera SHA1,
não texto puro. Se o config.lua estiver com passwordType = "sha1", a senha
precisa ser gravada já convertida.
Depois crie um registro na tabela players, vinculado ao account_id da conta
que você acabou de criar. Muitos datapacks já trazem um personagem de exemplo
pronto, e nesse caso basta ajustar o vínculo.
O caminho mais confortável é instalar um AAC, o site da comunidade, como MyAAC ou Znote. Com ele você cria conta e personagem por formulário, do jeito que o jogador vai fazer depois.
Abrindo as portas
O servidor pode estar rodando perfeitamente e ninguém conseguir entrar. Quase sempre é porta fechada.
Um OTServ usa duas portas:
| Porta | Função |
|---|---|
| 7171 | Login, onde o cliente valida conta e senha |
| 7172 | Jogo, por onde o personagem entra no mundo |
Se você usa um AAC, some a 80 para o site e a 443 se ele tiver certificado.
As duas portas precisam estar abertas em dois lugares diferentes, e esquecer o segundo é o erro clássico:
- No firewall do sistema operacional, dentro da máquina
- No firewall da hospedagem, se o seu provedor tiver um por fora
No Windows, o passo a passo está em como abrir uma porta na sua VPS. Preste atenção na parte da regra de saída, que costuma passar batido e deixa o servidor inacessível mesmo com a entrada liberada.
No Linux, veja como ativar o firewall e liberar portas. Libere só o que o servidor usa. Firewall desligado não é solução, é adiar problema.
Ajuste o IP no config.lua
No config.lua existe um campo de IP:
ip = "127.0.0.1"
Enquanto você testa dentro da própria máquina, 127.0.0.1 funciona. Para os
jogadores entrarem, ele precisa receber o IP público da VPS, ou o domínio
que você apontou para ela.
Deixar 127.0.0.1 em servidor no ar é o motivo número um de "meu servidor está
online mas ninguém conecta".
Se quiser divulgar um endereço em vez de um IP, o processo está em como redirecionar o domínio para o seu servidor. Vale o esforço: com domínio próprio, trocar de máquina depois não faz você perder quem salvou o endereço antigo.
Escolhendo o VPS
Esta é a decisão que mais afeta a experiência de quem joga, e a que mais gente toma no chute.
O ponto que diferencia o Tibia de outros jogos é que um OTServ raramente é um processo só. Na mesma máquina costumam rodar três coisas ao mesmo tempo:
- O servidor, que carrega o mapa inteiro na memória quando sobe
- O banco de dados, que também usa memória livre como cache
- O site da comunidade, onde o jogador cria conta e vê o highscore
Dimensionar pensando só no servidor é o erro mais comum, e é o que faz a máquina engasgar mesmo com pouca gente online.
Três recursos importam, em ordem:
Processador. A lógica do jogo é concentrada, então clock por núcleo pesa mais que quantidade de núcleos. Um processador com muitos núcleos e clock baixo entrega pior que um com menos núcleos e clock alto. É por isso que servidor de jogo em Xeon antigo costuma decepcionar.
Memória. Aqui o Tibia surpreende. O mapa é carregado inteiro na memória quando o servidor sobe, então mapa customizado grande já ocupa boa parte antes do primeiro jogador entrar. Se o seu projeto tem mapa próprio e muitos scripts, suba um degrau em relação ao que você imaginou.
Disco. SSD NVMe faz diferença real nas consultas ao banco. E reserve espaço para backup: banco com meses de personagens ocupa, e cópia guardada na mesma máquina não é backup.
O dimensionamento detalhado, com os planos e o que cada um aguenta, está em como escolher a VPS para o seu servidor de Tibia.
Sobre a localização: servidor no exterior sai mais barato e cobra a diferença em latência, e nenhuma configuração melhor conserta isso, porque o limite é distância física. No Tibia isso pesa mais que em outros jogos, porque o combate é feito de reação: sair do wave, dar o exori na hora, fugir da trap. Os números estão em por que hospedar no Brasil faz diferença.
Primeiros testes
Servidor de pé não significa servidor funcionando. Faça esta sequência antes de chamar qualquer jogador.
1. O console subiu limpo? Rode o executável e leia a saída inteira. Você deve ver o carregamento de itens, monstros, mapa e scripts terminando sem erro. Aviso amarelo dá para conviver. Erro vermelho vai cobrar depois.
2. Você entra localmente? Abra o cliente na própria máquina apontando para
127.0.0.1, faça login e ande com o personagem. Se falhar aqui, o problema é
servidor ou banco, não rede.
3. Alguém de fora entra? Troque o IP no config.lua pelo público, reinicie o
servidor e peça para um amigo tentar. Se você entra e ele não, o problema é
porta ou firewall.
4. O progresso salva? Entre, mate um monstro, ganhe experiência, saia pelo
logout e entre de novo. Se o personagem voltou ao estado anterior, o servidor
não está gravando no banco. Confira as credenciais no config.lua.
5. O servidor aguenta reinício? Derrube e suba de novo. Um servidor que só funciona na primeira execução tem problema de arquivo ou de permissão que vai aparecer no pior momento.
6. As taxas estão como você quer? Confira experiência, loot e skill no
config.lua. Mudar taxa depois que a comunidade formou gera revolta.
Erros comuns
Estes aparecem quase toda semana em quem está começando.
O executável abre e fecha sem dizer nada. Falta de .dll ou de
Redistributable do Visual C++. Instale os pacotes 2015 a 2022 nas duas
arquiteturas.
"MySQL connection error". Três causas, nesta ordem de probabilidade: o MySQL
não está rodando, o nome do banco no config.lua está diferente do que existe,
ou a senha está errada.
Erro de script em cascata ao subir. Versão do datapack diferente da versão da distribuição. Não tem conserto por remendo. Baixe o datapack correto.
Servidor online mas ninguém entra. Na ordem: IP ainda em 127.0.0.1, porta
fechada no firewall do sistema, porta fechada no firewall do provedor, cliente
do jogador apontando para o endereço errado.
O jogador entra e cai na hora. Geralmente porta 7172 fechada. A 7171 sozinha deixa fazer login e trava na entrada do mundo, o que confunde bastante.
Personagem perde progresso. O servidor não está gravando. Confira as credenciais e se o usuário do banco tem permissão de escrita.
Servidor lento com pouca gente. Quase nunca é falta de máquina no começo. É script pesado rodando em loop. Investigue antes de subir de plano.
Rodar como administrador e depois não. No Windows, arquivo criado com privilégio elevado às vezes não é acessível na execução normal. Mantenha o padrão.
Não ter backup. O primeiro backup do banco leva menos de um minuto. A primeira perda de banco custa a comunidade inteira. Automatize desde o dia um.
Perguntas frequentes
Preciso saber programar para criar um OTServ?
Não para colocar no ar. Instalar, configurar e subir um servidor com datapack pronto não exige programação. Saber Lua passa a fazer diferença quando você quer criar sistemas próprios ou corrigir scripts.
Qual distribuição é melhor para iniciante?
TFS 1.4 ou 1.5 com protocolo 8.60. É onde existe mais material em português, mais datapack pronto e mais gente disposta a ajudar quando algo der errado.
Posso rodar o servidor no meu computador?
Para testar, sim. Para valer, não. Ele cai toda vez que você desliga, reinicia ou a luz pisca, e expor a sua rede doméstica traz riscos de segurança.
Quanto custa manter um servidor de Tibia?
O custo principal é a VPS. Some domínio, que é barato, e eventualmente arte ou script pago. Um servidor iniciante roda tranquilo num plano de entrada.
Qual a diferença entre distribuição e datapack?
A distribuição é o motor, o executável que roda o servidor. O datapack é o conteúdo: mapa, monstros, quests e scripts. Os dois precisam ser da mesma versão.
O que é o AAC?
É o site da comunidade, onde o jogador cria conta, vê highscore e compra pontos. MyAAC e Znote são os mais usados. Não é obrigatório, mas sem ele você cria cada conta manualmente no banco.
Meu servidor sobe mas ninguém entra. O que é?
Na ordem: IP ainda em 127.0.0.1 no config.lua, porta 7171 ou 7172 fechada no
firewall do sistema, porta fechada no firewall do provedor, ou cliente do jogador
apontando para o endereço errado.
Conclusão
O caminho, resumido: escolher a distribuição, montar as pastas, subir o banco,
importar o schema, ajustar o config.lua, abrir as portas e testar em ordem.
Nada aqui é difícil isoladamente. O que trava é fazer fora de ordem e não ler o
console.
E fica um recado que vale mais que qualquer configuração: o servidor mais bem scriptado do mundo não segura ninguém se cair no horário de pico. Jogador de Tibia investe tempo em personagem, e queda no meio de uma hunt ou lag em guerra é o tipo de coisa que faz o jogador ir embora e não voltar. Estabilidade não é detalhe técnico, é retenção.
Por isso, quando sair da fase de teste no seu computador, coloque o projeto numa máquina feita para isso. Os planos de host de Tibia da WyzeHost usam AMD Ryzen 9, que é onde o clock alto que o OTServ pede realmente aparece, com SSD NVMe para o banco responder rápido, proteção DDoS inclusa em todos os planos e servidores no Brasil, que é o que mantém o ping baixo para o seu público.
Some a isso ativação instantânea, painel para gerenciar a máquina sozinho, suporte 24 horas e upgrade sem perder arquivo, e você tira do caminho a parte que não deveria consumir o seu tempo. Assim sobra energia para o que realmente faz diferença: o mapa, os scripts, os eventos e a comunidade.
Com o servidor no ar, os próximos passos naturais são proteger o servidor contra ataques DDoS e cuidar das práticas de segurança da máquina.


