Pterodactyl 구축(찍먹)하기

Pterodactyl 이란 Docker 엔진을 활용한 게임서버 구동기 입니다. 도커 가상화를 사용하기에 거의 모든 게임 백엔드가 지원이 되고 각종 Environmet 이미지를 제공합니다 그런데 파이썬은 없어서 하나 만들어야 했음

크게 2파트로 나뉘는데

  • PHP+MySql 프론트엔드와
  • Wing을 사용한 도커 백엔드
    두개를 배워야 합니다

1. 필요한 환경 설치

- Web 프론트엔드 : Debian 12 / aaPanel+LNMP : 2 core 4GB
- Wing 도커 백엔드 : Clear Linux* 41840 : 20 core 48 GB

1.1 Web 환경

공식문서에는 직접 하나하나 받아서 구축하라고 하지만 터미널 싫어하고 귀찮은 사람은 그냥 aaPanel을 사용합시다.

만능 aaPanel 설치 명령어

1
wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh

설치 해야되는 것들

  • PHP 8.1
  • MySQL 5.7.22 +
  • nginx

image-20240620224250949

LNMP 환경이 설치가 다 되었다면 php 설정에서 다음 기능을 활성화 해야합니다

putenv exec proc_open shell_exec

그리고 확장 프로그램 fileinfo 이랑 redis설치를 해줘용

image-20240705232250601

image-20240705232613044

1.2 웹사이트 세팅

  1. pterodactyl 깃허브에서 소스코드를 다운한 다음 755권환을 주고 압축해제 해서 폴더에 넣습니다.
1
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz

그런다음, .env.example파일을 .env로 rename합니다

  1. 이제 Composer 를 설치해야 하는데 뭐하는건지는 잘 모르겠지만 아무튼 aaPanel 기능으로 간편히 설치가 가능합니다

image-20240705234116818

1
composer install --no-dev --optimize-autoloader # 추가 명령어
  1. 설치 완료 후 php로 사이트가 열리게 laravel5로 rewrite 설정을 해야합니다 안그러면 이상한 에러 뜸

image-20240705234422429

1
2
3
location / {  
try_files $uri $uri/ /index.php$is_args$query_string;
}
  1. 사이트 실행 다렉토리를 /public로 변경해줍니다

    image-20240705234658205

1.3 APP KeyDB 랑 유저 생성하기

1
2
3
## 앱키 생성
cd /www/wwwroot/panel # 자신의 사이트 다렉토리로 이동
php artisan key:generate --force

image-20240705235035229

1
2
3
4
## 데베 유저 메일 설정
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:smtp # smtp/mail 고를수 있지만 smtp가 근본

image-20240705235601127

드라이버 모드는 아무거나 해도 되는데 aaPanel에서 레디스 설치하고 recommended 되어있으니 redis로 지정해요

image-20240706000100352

  1. 설정을 데베로 이동하기
1
php artisan migrate --seed --force

image-20240706000310395

이렇게 하면 성공입니다 (99%)

1.4 유저 생성

1
php artisan p:user:make

일단 어드민 유저를 하나 생성합니다

image-20240706000604293

1.5 cron 및 서비스 등록

cron : 매 1분마다 php /www/wwwroot/panel/artisan schedule:run >> /dev/null 2>&1 실행

php쓰는 오픈소스들 특징인거 같은데 이걸 안하면 사이트가 죽습니다

주의 : 자신의 다렉토리 주소로 변경하세요

image-20240706000826022

다 했으면
service : /etc/systemd/system 폴더 안에 pteroq.service파일 생성 후 다음과 같이 작성합니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=pt panel

[Service]
User=www
Group=www
Restart=always
ExecStart=/usr/bin/php /www/wwwroot/panel/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3 # 자기주소로 변경!!
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target

image-20240706001127647

작성 후 systemctl로 실행해요

1
systemctl enable --now pteroq.service

2. 테스트

image-20240706150924641

image-20240706150934198


3. 백엔드 Wing 설치

찍먹테스트 돌릴 환경은 Clear* Linux 를 사용하기 때문에 다음 명령어로 도커엔진을 설치합니다 (25.1.4 업데이트: 클리어리눅스 난이도가 무슨 alpine급이라서 버리고 데비안으로 갈아탐)

1
2
swupd bundle-add containers-basic
sudo systemctl enable --now docker

image-20240707221113274

Wings를 설치하기 위해서 먼저 디렉토리 하나를 만들어 줘야해용 그런 다음 필요한 파일을 다운해주고 사용하기 위해 알맞은 권한을 부여합니다

1
2
3
sudo mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
sudo chmod u+x /usr/local/bin/wings

님이 만약에 로컬을 제대로 설정했다면 wings 명령어로 바로 실행이 가능해집니다

image-20240707225220702

그치만 아직 멀었고 경고문이 말하듯이 config.yml 파일을 세팅해줘야 합니다. 그러니 패널에서 노드를 추가해줘서 자동으로 config 파일 생성하게 해요

image-20240707225736421

생성된 설정을 그냥 복붙 해주고 난 다음 certbot으로 ssl 인증서를 받아오면 됩니다.

하지만 저는 그냥 aaPanel을 이용해서 하나 발급했습니다 (사실 내부망이라 80포트 없어서 dns challenge 해야하는데 귀찮아서)

image-20240707230040238

세팅 완료 후, 서비스로 등록을 해주면 끝 이빈다

1
cd /etc/systemd/system && nano wings.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service

[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target
1
systemctl enable --now wings

image-20240707230411845


Pterodactyl 구축(찍먹)하기
https://furry.blog/pterodactyl/
작성자
Jaiyeon Sim (DAVID)
게시일
2025년 6월 14일
라이선스