Como colocar um OTServer online: guia completo do zero à VPS
Este é o caminho completo para tirar um OTServer do zero e deixar ele online de verdade — não só rodando na sua tela, mas no ar depois que você fechar o terminal e ir dormir.
O exemplo usa CrystalServer em Ubuntu 22.04, mas a lógica vale para qualquer distro moderna baseada em TFS. No fim tem a parte que a maioria dos tutoriais pula, e que é justamente o que separa "consegui rodar" de "está online".
Antes de começar
Você vai precisar de uma VPS Linux com pelo menos 2 GB de RAM e acesso root, e de um cliente SSH. Compilar o servidor consome bastante memória — se a sua VPS tem só 1 GB, a compilação provavelmente vai falhar por falta de RAM no meio do caminho.
1. Atualizar o sistema e instalar as dependências
sudo apt update && sudo apt dist-upgrade -y
sudo apt install git cmake build-essential autoconf libtool ca-certificates \
curl zip unzip tar pkg-config ninja-build ccache -y
São as ferramentas de compilação. O cmake prepara o projeto e o
ninja faz a build.
2. Atualizar o CMake e o compilador
O código moderno do CrystalServer exige versões mais novas do que vêm no repositório padrão.
sudo apt remove --purge cmake -y
sudo apt install snapd -y
sudo snap install cmake --classic
sudo apt install gcc-12 g++-12 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12
sudo update-alternatives --set gcc /usr/bin/gcc-12
gcc-12 --version
3. Instalar o VCPKG
sudo apt install acl -y
cd /home
git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install --triplet x64-linux-release
O VCPKG resolve as bibliotecas sozinho — Boost, Zlib, LuaJIT, Crypto++. Essa etapa é demorada: em VPS modesta pode passar de meia hora. É normal.
4. Baixar e compilar o servidor
cd /home
git clone --depth 1 https://github.com/zimbadev/crystalserver.git
sudo chmod -R 775 crystalserver
cd crystalserver
mv config.lua.dist config.lua
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=/home/vcpkg/scripts/buildsystems/vcpkg.cmake .. --preset linux-release
cmake --build linux-release
cd /home/crystalserver
cp -r build/linux-release/bin/crystalserver .
sudo chmod +x crystalserver
Se a compilação morrer sem mensagem clara, quase sempre é falta de memória. Dá para contornar criando swap temporário ou limitando a build a um job por vez.
5. Banco de dados
sudo apt install mariadb-server mariadb-client -y
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
Rode o mysql_secure_installation mesmo. Ele define senha de root e remove o
usuário anônimo — dois minutos que evitam problema depois.
sudo mysql -u root -p
CREATE DATABASE crystalserver CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'otuser'@'localhost' IDENTIFIED BY 'UMA_SENHA_FORTE_AQUI';
GRANT ALL PRIVILEGES ON crystalserver.* TO 'otuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Não use senha fraca aqui. Tutorial usa ot123 para ficar curto; servidor de
verdade com senha assim é invadido, e junto vai o banco dos seus jogadores. Gere uma com
openssl rand -hex 16.
mysql -u otuser -p crystalserver < /home/crystalserver/schema.sql
6. Conectar o servidor ao banco
cd /home/crystalserver
sudo nano config.lua
sqlType = "mysql"
sqlHost = "127.0.0.1"
sqlPort = 3306
sqlUser = "otuser"
sqlPass = "A_MESMA_SENHA_QUE_VOCE_CRIOU"
sqlDatabase = "crystalserver"
Nome do banco, usuário e senha precisam bater exatamente com o que você criou. Divergência aqui é a causa número um de "compilou mas não sobe".
7. PHP e nginx para o site
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.3 php8.3-fpm php8.3-mysql php8.3-xml php8.3-curl \
php8.3-zip php8.3-gd php8.3-mbstring nginx -y
8. Instalar o MyAAC
cd /var/www/html
sudo git clone https://github.com/zimbadev/crystalserver-myacc.git myaac
sudo chown -R www-data:www-data myaac
sudo chmod -R 775 myaac
9. Configurar o nginx
sudo nano /etc/nginx/sites-available/myaac.conf
server {
listen 80;
server_name SEU_DOMINIO_OU_IP;
root /var/www/html/myaac;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht { deny all; }
}
sudo ln -s /etc/nginx/sites-available/myaac.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx php8.3-fpm
10. Instalar o MyAAC pelo navegador
Acesse http://SEU_IP/ e preencha com host 127.0.0.1, banco
crystalserver, usuário otuser e a senha que você criou.
Terminada a instalação, apague ou proteja a pasta de install do MyAAC. Deixar ela acessível é convite para alguém reinstalar seu site por cima.
11. O que quase todo tutorial esquece
Se você rodar ./crystalserver direto e fechar o SSH, o servidor cai junto. Para
ficar realmente online, ele precisa virar um serviço do sistema.
sudo nano /etc/systemd/system/crystalserver.service
[Unit]
Description=CrystalServer
After=network.target mariadb.service
[Service]
Type=simple
User=root
WorkingDirectory=/home/crystalserver
ExecStart=/home/crystalserver/crystalserver
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now crystalserver
sudo systemctl status crystalserver
Com isso o servidor sobe sozinho quando a VPS reinicia e volta sozinho se travar. Para ver o
log em tempo real: journalctl -u crystalserver -f.
Firewall
Libere só o que precisa:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 7171/tcp
sudo ufw allow 7172/tcp
sudo ufw enable
A 7171 é o login e a 7172 é o jogo. Sem as duas abertas o jogador não entra.
Backup, antes de ter jogador
Configure agora, não depois. Um cron diário do banco já resolve o essencial:
0 4 * * * mysqldump crystalserver | gzip > /root/ot-$(date +\%Y\%m\%d).sql.gz
E leve a cópia para fora da máquina. Backup que mora no mesmo servidor não salva de nada quando a VPS é que morre.
HTTPS no site
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d seudominio.com.br -d www.seudominio.com.br
Site sem cadeado assusta jogador na hora de doar.
Está online. E agora?
Servidor no ar é metade do trabalho. A outra metade é jogador entrar — e isso não acontece sozinho. Cadastre o servidor nas listas de OT, divulgue nos fóruns e no Discord, e mantenha o uptime alto: lista de servidor ordena por tempo no ar, e servidor que cai some do topo.
Hospedagem especializada em OTServer
Anti-DDoS L3/L4/L7, CPU de alta frequência e suporte de quem roda servidor todo dia. De R$ 89 a R$ 370, entrega no mesmo dia e sem fidelidade.
Ver os planos