Skip to main content

Servidor Dedicado: Instalação do Pterodactyl

Este guia foi criado com os seguintes produtos:

(Os detalhes podem variar com produtos de diferentes fornecedores, mas os conceitos principais permanecem os mesmos)

Introdução

O Painel Pterodactyl é um painel de controle open source projetado para gerenciar e hospedar servidores de jogos com facilidade. Ele oferece uma interface que permite aos administradores configurar e gerenciar múltiplos servidores de jogos de forma centralizada.

Neste guia, vamos explorar os passos necessários para configurar sua própria instância do Pterodactyl no seu servidor.

Preparação

Você vai precisar de um servidor dedicado rodando Linux para instalar o Painel Pterodactyl. Use um dos sistemas operacionais compatíveis listados na tabela abaixo.

SOVersões compatíveis
Ubuntu20.04, 22.04
CentOS7, 8
Debian11, 12

Dependências

O Pterodactyl requer várias dependências para ser instalado e rodar corretamente. Ele também depende de um gerenciador de dependências popular para PHP chamado Composer.

Lista de Dependências

Aqui está uma lista resumida das dependências que você vai precisar para este guia. Vá para a seção seguinte para aprender como instalar essas dependências.

  • PHP 8.1 com as seguintes extensões: cli, openssl, gd, mysql, PDO, mbstring, tokenizer, bcmath, xml ou dom, curl, zip e fpm.
  • MariaDB
  • Servidor web - Neste guia usaremos Nginx.
  • curl
  • tar
  • unzip
  • git
  • composer v2

Instalando Dependências

Primeiro, execute este comando essencial para permitir que você adicione pacotes que não são padrão no SO.

apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg

Agora instale os repositórios adicionais para PHP, Redis e MariaDB (MySQL).

LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

Você também precisará instalar o Redis, que é necessário para armazenamento temporário de dados.

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Para o servidor web, escolhemos usar Nginx por ser confiável e open-source. Você deve instalar este ou pode usar servidores alternativos como Apache ou Caddy, embora isso não combine com este guia.

sudo apt install nginx # Baixar e instalar Nginx
sudo ufw allow 'Nginx Full' # Ajustar firewall

Recomendamos acessar http://[seu_ip_do_servidor]/, substituindo [seu_ip_do_servidor] pelo IP do seu servidor para testar e garantir que o Nginx está rodando. Você deve ver uma página de boas-vindas padrão.

Continuando, instale o MariaDB, que será usado como seu banco de dados MySQL.

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

Por fim, atualize a lista de repositórios e instale as dependências restantes.

apt update
apt -y install php8.1 php8.1-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis-server

Agora você deve ter todas as dependências necessárias instaladas e pode prosseguir para instalar o Composer.

Instalando o Composer

Com as dependências principais instaladas, você precisa instalar o Composer, que é um gerenciador de dependências popular para PHP. Isso permitirá baixar e instalar facilmente todo o serviço Pterodactyl.

Basta rodar o comando abaixo:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Baixando o Painel

Com todos os pré-requisitos prontos, você deve instalar o Painel Pterodactyl.

Crie uma pasta onde o painel será armazenado usando o comando abaixo.

mkdir /var/www/pterodactyl
cd /var/www/pterodactyl

Agora, clone o repositório oficial do Pterodactyl no GitHub para baixar os arquivos necessários.

curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/

Após o download, o painel estará baixado com sucesso. Na próxima seção, você vai configurar várias opções essenciais para garantir que o painel seja instalado corretamente e funcione bem.

Instalação

A primeira parte da instalação envolve configurar um banco de dados MySQL que armazenará todos os dados do seu painel Pterodactyl. Se você já tem um banco MySQL pronto com um usuário apropriado, pode pular a próxima subseção.

Configuração do Banco de Dados

Você precisa fazer login no seu banco de dados MySQL para começar. Se for uma instância nova, basta rodar:

mysql -u root -p

Se já tiver uma instância MySQL, use seu login com -u para o usuário e -p para a senha.

Após logar, crie um novo usuário para sua instância Pterodactyl. Substitua [sua_senha] pela senha que deseja usar:

CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY '[sua_senha]';

Agora crie o banco de dados para o Pterodactyl e dê permissões ao usuário criado:

CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;

Você configurou com sucesso o usuário e banco MySQL para sua instância Pterodactyl. Use o comando exit para sair do MySQL.

Continuando a Configuração

Agora copie o arquivo de ambiente padrão onde você armazenará seus tokens secretos.

cp .env.example .env

Depois, use o Composer para instalar automaticamente todos os pacotes necessários:

composer install --no-dev --optimize-autoloader

Gere uma chave de criptografia para sua aplicação:

php artisan key:generate --force

Configuração do Ambiente

Configure sua instância Pterodactyl rodando os comandos abaixo. Cada um abrirá um setup interativo cobrindo várias configurações como sessões, email, cache e mais.

php artisan p:environment:setup # Primeiro comando
php artisan p:environment:database # Segundo comando

Configurando o Banco de Dados

Agora configure os dados base necessários para o painel rodar, usando o banco que você criou. Rode o comando abaixo.

informação

Isso pode levar alguns minutos. Não saia do processo para evitar problemas. Tenha paciência :)

php artisan migrate --seed --force

Criando o Usuário Admin

Com o banco pronto, crie seu primeiro usuário administrador para acessar o painel:

php artisan p:user:make

Configurando Permissões

Defina as permissões necessárias para os arquivos do painel para garantir que o painel possa ler e escrever sem problemas.

Rode o comando:

chown -R www-data:www-data /var/www/pterodactyl/*

Agora você deve conseguir acessar seu painel Pterodactyl pelo link, substituindo seu_endereco_ip pelo IP do seu servidor:

http://[seu_endereco_ip]/

Queue Workers

A última etapa da instalação é configurar um cronjob que roda em intervalos regulares junto com um queue worker responsável por várias tarefas em background.

Abra seu crontab com sudo crontab -e e adicione o cronjob que roda a cada minuto para o painel:

* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1

Agora crie um queue worker usando systemd para manter o processo rodando em background.

Crie um arquivo para o worker abrindo o nano:

nano /etc/systemd/system/pteroq.service

Cole o conteúdo abaixo:

# Arquivo do Queue Worker do Pterodactyl
# ----------------------------------

[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service

[Service]
# Em alguns sistemas o usuário e grupo podem ser diferentes.
# Alguns usam `apache` ou `nginx` como usuário e grupo.
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target
nota

Se estiver usando CentOS, substitua redis-server.service por redis.service no arquivo acima.

Salve com CTRL + X e confirme com Y.

Por fim, habilite o serviço do Redis e o serviço que você criou para iniciar junto com o sistema:

sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service

Você instalou o Pterodactyl com sucesso no seu servidor. Acesse o painel pelo link abaixo, substituindo [seu_ip_do_servidor] pelo IP do seu servidor:

http://[seu_ip_do_servidor]

Opcional: Configurando o Servidor Web

Como recurso extra, você pode configurar seu servidor web. Neste guia usamos Nginx, então esta seção mostra como ajustar a configuração para ele.

Configurar o servidor web permite usar seu próprio domínio e configurar um certificado SSL para o site do painel.

Registro DNS do Domínio

Para que seu servidor seja acessível pelo domínio, configure um registro DNS do tipo A para esse domínio. Isso depende do provedor que você usa, mas normalmente fica disponível em algum painel de DNS ao gerenciar seu domínio. O conteúdo do registro deve ser o IP do seu servidor.

Removendo a configuração padrão

Comece removendo a configuração padrão do Nginx. Basta remover o arquivo:

rm /etc/nginx/sites-enabled/default

Agora, use o conteúdo abaixo para criar um novo arquivo de configuração para o site do painel Pterodactyl. Decida se quer usar SSL ou não, pois o conteúdo e passos mudam um pouco conforme a escolha.

Configurando o Certbot

Para ter um certificado SSL, configure um sistema que gerencie e renove automaticamente seus certificados. Usaremos o Certbot, que é open-source.

Primeiro instale o Certbot no servidor. Para Nginx, instale também o pacote python3-certbot-nginx.

sudo apt update
sudo apt install -y certbot
sudo apt install -y python3-certbot-nginx

Depois, configure a verificação para gerar o certificado. Usaremos o desafio DNS, que é mais seguro que o HTTP.

Você precisará criar um registro DNS do tipo TXT para o domínio que quer usar. Isso depende do provedor, mas normalmente fica disponível no painel de DNS do domínio.

Rode o comando abaixo para obter o conteúdo do registro TXT. Substitua [seu_dominio] pelo domínio que quer usar.

certbot -d [seu_dominio] --manual --preferred-challenges dns certonly

Depois de criar o registro DNS, configure a renovação automática com um cronjob. Abra o crontab com sudo crontab -e e adicione o comando para renovar todo dia às 23:00 no horário do sistema.

0 23 * * * certbot renew --quiet --deploy-hook "systemctl restart nginx"

Criando o Arquivo de Configuração

Com o certificado SSL pronto, crie o arquivo de configuração.

Abra o nano no caminho e arquivo indicados:

nano /etc/nginx/sites-enabled/pterodactyl.conf

Cole o conteúdo abaixo, substituindo [seu_dominio] pelo domínio que configurou no DNS.

atenção

Certifique-se de ter configurado o certificado SSL, caso contrário o servidor web não iniciará corretamente.

server_tokens off;

server {
listen 80;
server_name [seu_dominio];
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name [seu_dominio];

root /var/www/pterodactyl/public;
index index.php;

access_log /var/log/nginx/pterodactyl.app-access.log;
error_log /var/log/nginx/pterodactyl.app-error.log error;

client_max_body_size 100m;
client_body_timeout 120s;

sendfile off;

ssl_certificate /etc/letsencrypt/live/[seu_dominio]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[seu_dominio]/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_prefer_server_ciphers on;

add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Frame-Options DENY;
add_header Referrer-Policy same-origin;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}

Aplicando a Configuração

Depois de fazer as alterações, habilite a configuração rodando:

sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf # Não necessário no CentOS

sudo systemctl restart nginx # Reiniciar Nginx

Se tudo foi feito corretamente, agora você pode acessar seu painel Pterodactyl usando o domínio configurado.

Você configurou com sucesso seu servidor web para usar seu domínio e adicionar um certificado SSL ao seu site.