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, rode 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 vai permitir que você baixe e instale 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/

Quando o download terminar, 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 sendo o nome do usuário e -p para a senha.

Depois de logado, 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 conceda 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 o banco de dados 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ê vai 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 vai 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 para completar. 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 ele possa sempre 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 abaixo, 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. 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 com 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 rodar na inicialização:

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 seu domínio, configure um registro DNS do tipo A para esse domínio. Isso depende do provedor que você usa, mas geralmente fica disponível em algum painel de DNS ao gerenciar seu domínio. O conteúdo do registro deve ser o endereç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 seu painel Pterodactyl. Decida se quer usar SSL ou não, pois a configuração e os passos vão variar um pouco.

Configurando o Certbot

Para ter um certificado SSL, você deve configurar um sistema que gerencie e renove automaticamente seus certificados. Aqui usaremos o Certbot, que é open-source.

Primeiro instale o Certbot no seu 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

Agora 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 seu provedor, mas deve estar disponível no painel de DNS do seu 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 local correto:

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

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

atenção

Certifique-se de que o certificado SSL está configurado, caso contrário o servidor web não vai 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ê deve conseguir acessar seu painel Pterodactyl usando o domínio configurado nesta seção.

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