VPS에서 FiveM 서버 구축 및 FXServer 설치 방법
Ubuntu 환경에서 FXServer를 설치하고 Cfx.re 라이선스 키를 등록하는 과정을 설명합니다. 30120 포트 설정과 함께 단일 코어 성능이 서버 안정성에 미치는 영향 및 txAdmin 보안 관리 요령을 상세히 안내합니다.
VPS에서 FiveM 서버를 운영하기 위한 필수 요소
VPS에서 FiveM 서버를 운영하려면 권한이 없는 Linux 사용자 계정 하나, Cfx.re에서 제공하는 아티팩트 빌드 하나, 라이선스 키 하나, 그리고 TCP와 UDP 모두에서 열려 있는 포트 하나가 필요합니다. 설치에는 약 10분이 소요됩니다. 이 가이드의 나머지 부분에서는 서버의 플레이 가능 여부를 결정짓는 요소들을 다룹니다. 여기에는 단일 CPU 코어의 속도, 리소스가 요구하는 메모리 용량, 그리고 절대 공용 주소에 그대로 노출해서는 안 되는 관리 패널 등이 포함됩니다.
세 가지 전제 조건은 고정되어 있습니다. 아티팩트라고 불리는 서버 바이너리는 공식 Cfx.re 빌드 목록에서 가져옵니다. 라이선스 키는 portal.cfx.re에 있는 Cfx.re 포털에서 발급받으며, 이전 가이드에서는 이를 keymaster라고 부르기도 했습니다. 이 키는 해당 키를 사용하는 장비의 주소와 연결됩니다. 접속하는 모든 플레이어는 Steam, Rockstar Games Launcher 또는 Epic Games에서 정품 GTA V(Grand Theft Auto V)를 보유하고 있어야 하며, 무료 Cfx.re 계정도 필요합니다. 클라이언트는 시작 시 게임 소유권을 확인하므로, 다른 방식으로 구축된 서버는 작동하지 않으며 어떠한 우회 방법도 이 가이드에서 다루지 않습니다.
서버를 호스팅하는 것은 해당 장비에서 직접 게임을 실행하는 것과는 다른 작업이며, VPS에서 게임 자체를 실행할 수 있는지 여부는 별개의 질문으로 서로 다른 답변이 필요합니다.
단일 코어 속도가 FiveM 서버의 체감 성능을 결정하는 이유
FiveM 서버 바이너리인 FXServer는 게임 로직을 하나의 메인 스레드에서 실행합니다. 모든 리소스 스크립트, 이벤트 핸들러, 상태 업데이트가 이 단일 루프를 거칩니다. 추가 코어는 커널, 데이터베이스, 네트워크 스택에는 도움이 되지만 게임 루프를 분할하지는 않습니다. 따라서 느린 코어를 사용하는 4 vCPU 서버는 부하 발생 시 끊김 현상이 나타나지만, 빠른 코어를 사용하는 2 vCPU 서버는 원활하게 작동합니다.
이는 코어 개수를 주요 지표로 삼는 일반적인 VPS 선택 기준과는 반대입니다. 비용을 지불하기 전에 코어당 속도를 확인하십시오. 먼저 CPU 모델을 확인합니다.
lscpu | grep -E 'Model name|MHz'그다음 해당 모델의 공개된 단일 스레드 점수를 찾아보십시오. PassMark 단일 스레드 등급과 Geekbench 싱글 코어 점수는 모두 공개되어 있으며, 이 수치가 바로 여기서 중요한 단일 코어 작업 성능을 측정합니다. 그 후 실제로 할당받은 서버의 성능을 측정하십시오.
sudo apt update && sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runevents per second 라인을 읽으십시오. 두 후보 제공업체에서 동일한 명령을 실행하면 정직하게 비교할 수 있습니다. 작업 부하가 동일하고 하나의 코어에 국한되기 때문입니다. 반복 가능한 VPS 벤치마크 실행에서는 서버 간에 해당 수치를 비교 가능하게 유지하는 방법을 설명합니다.
그다음 해당 코어가 실제로 귀하의 것인지 확인하십시오.
vmstat 1 5마지막 열인 st은 steal time입니다. 이는 가상 CPU가 실행 준비가 되었음에도 하이퍼바이저가 대기시킨 시간의 비율을 의미합니다. 이 수치가 1 또는 2 이상으로 꾸준히 유지된다면 물리적 코어를 바쁜 이웃과 공유하고 있다는 뜻이며, 게임 루프는 즉시 래버 밴딩(rubber banding) 현상으로 이를 체감하게 됩니다. 노이즈 이웃으로 인한 Steal time에서는 해당 열을 읽는 방법과 대처법을 다룹니다.
메모리는 슬롯 개수가 아니라 실행하는 리소스에 따라 확장됩니다. Cfx.re에서 제공하는 기본 서버 데이터는 수백 MB 내에서 실행됩니다. 40~50개의 리소스와 MariaDB 데이터베이스를 동일한 서버에서 운영하는 롤플레잉 프레임워크는 완전히 다른 환경입니다. 4 GB가 합리적인 최소 사양이며, 32~64 슬롯 환경에서는 8 GB가 적당합니다. 이는 커뮤니티 설정에서 공개된 일반적인 수치이므로 이를 시작점으로 삼고 실제 플레이어 부하 상황에서 free -m를 모니터링하십시오.
사용자 생성 및 의존성 설치
서버는 root가 아닌 일반 사용자로 실행해야 합니다. 여기에는 두 가지 이유가 있습니다. 첫째, 인터넷에 노출된 서비스에서 root를 사용하는 것은 나쁜 습관입니다. 둘째, Linux 아티팩트는 번들로 제공되는 Alpine Linux 루트 파일 시스템 내부에서 실행되므로, root가 압축을 푼 파일은 다른 사용자가 실행할 수 없습니다. 이는 새로 설치한 서비스가 시작되지 않는 가장 흔한 원인입니다.
sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivem아래의 모든 작업은 fivem 사용자로 수행합니다. 다운로드 파일이 .tar.xz 아카이브이므로 xz-utils이 필요하며, 기본 서버 데이터를 복제하기 위해 git을 사용합니다.
고정된 아티팩트 빌드 다운로드
Linux 빌드는 Cfx.re 아티팩트 서버의 build_proot_linux 채널에 위치합니다. 목록에는 권장되는 최신 빌드가 표시되며, 이 레이블은 몇 주마다 새로운 빌드로 이동합니다. 대신 번호가 지정된 폴더를 고정하십시오. 다음 달에 서버를 다시 빌드할 때 이번 달에 테스트한 것과 동일한 바이너리를 사용할 수 있으며, 업그레이드는 사용자가 의도적으로 결정하는 작업이 됩니다.
mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/25770-8ddccd4e4dfd6a760ce18651656463f961cc4761/fx.tar.xz
tar xf fx.tar.xz
ls2026년 8월 목록을 확인했을 당시에는 빌드 25770에 권장 레이블이 붙어 있었습니다. 브라우저에서 동일한 디렉터리를 열어 현재 빌드를 확인한 다음, 빌드 번호와 커밋 해시로 구성된 폴더 이름을 URL에 붙여넣으십시오.
ls에는 이제 run.sh 및 alpine 디렉터리가 표시되어야 합니다. 이 디렉터리가 핵심입니다. Linux 아티팩트는 자체적인 소규모 Alpine 루트 파일 시스템을 포함하며, root 권한 없이 chroot를 에뮬레이트하는 사용자 공간 도구인 proot를 사용하여 서버를 실행합니다. 이것이 바로 별도의 배포판 전용 패키지 없이도 Ubuntu, Debian, Rocky에서 하나의 다운로드 파일로 서버를 실행할 수 있는 이유입니다.
이제 server.cfg이 시작될 때 필요한 기본 리소스를 포함하는 베이스 서버 데이터를 복제하십시오.
git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-data라이선스 키 발급 및 server.cfg 작성
Cfx.re 계정으로 portal.cfx.re에 로그인하여 서버 키를 생성합니다. 포털은 키를 사용할 장비의 IP 주소를 요구하며, 키는 해당 주소에 귀속됩니다. 새로운 VPS로 이전할 경우 포털에서 키를 수정해야 하며, 두 번째 키를 생성해서는 안 됩니다. 수정 사항은 즉시 적용되지만, FXServer는 재시작 시점에만 유효성을 다시 검사합니다.
~/FXServer/server-data/server.cfg를 작성합니다:
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap
sv_hostname "My FiveM server"
sv_maxclients 48
set onesync on
sv_scriptHookAllowed false
sv_licenseKey ChangeMe
add_ace group.admin command allow
add_principal identifier.fivem:1 group.adminsv_maxclients은 1에서 2048 사이의 값을 허용합니다. 32 이상의 값을 설정하려면 onesync을 on 또는 legacy으로 설정해야 하며, 64를 초과하는 값에는 on가 필요합니다. OneSync는 서버의 상태 인식 모드이며, 기본 게임의 적은 슬롯 수를 초과하여 서버를 운영할 수 있게 해줍니다. OneSync를 끈 상태에서 128 슬롯을 설정해도 128 슬롯이 제공되지 않으며, 서버가 거부하는 설정이 됩니다.
sv_licenseKey에는 따옴표나 끝에 공백 없이 키를 입력합니다. FXServer는 해당 줄을 공백 기준으로 분리하므로, 잘못된 문자 하나만 포함되어도 유효성 검사가 실패하여 서버가 시작되지 않습니다.
rcon_password은 의도적으로 해당 파일에서 제외되어 있습니다. RCON(원격 콘솔)은 변수가 설정될 때만 활성화되며, 게임과 동일한 UDP 포트에서 대기합니다. 공개 포트에서의 RCON 비밀번호는 서버에 대한 원격 명령 채널을 여는 것과 같습니다. 특별한 필요가 없다면 설정하지 말고, 반드시 필요한 경우 길고 무작위적인 값을 사용하십시오.
sv_scriptHookAllowed은 false로 유지합니다. 공식 문서에서는 Script Hook V 클라이언트 허용이 클라이언트 측 악용 가능성을 열어두기 때문에 권장하지 않는다고 명시합니다.
add_principal identifier.fivem:1는 Cfx.re 계정 ID 1에 관리자 권한을 부여합니다. 1을 본인의 숫자 ID로 교체하십시오. 그렇지 않으면 타인의 계정에 관리자 권한을 부여하게 되며 본인은 권한을 얻지 못합니다.
수동으로 한 번 시작합니다:
cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfg두 번째 SSH 세션에서 서버 상태를 확인합니다:
curl -s http://127.0.0.1:30120/info.json | head -c 200서버 변수와 리소스가 포함된 JSON이 출력된다면 FXServer가 바인딩되어 응답하고 있는 것입니다. Connection refused이 출력된다면 포트 바인딩에 실패한 것이므로, 추측하지 말고 콘솔 출력을 확인하십시오.
키가 없는 서버는 다음을 출력하고 중단됩니다:
This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.메시지에는 여전히 이전 keymaster 주소가 표시됩니다. 해당 주소는 동일한 Cfx.re 포털로 연결됩니다. 키가 설정되었음에도 서버가 실행되지 않는다면, 키에 등록된 IP 주소와 현재 장비의 IP 주소가 일치하지 않는 경우가 대부분입니다.
FiveM 서버는 어떤 포트를 열어야 합니까?
TCP(Transmission Control Protocol) 및 UDP(User Datagram Protocol)에서 30120 포트를 열어야 합니다. FiveM은 두 프로토콜에 하나의 포트 번호를 사용하며, 두 프로토콜 모두 필요합니다. TCP만 열면 혼란스러운 증상이 나타납니다. http://your.ip:30120/info.json가 브라우저에서 응답하므로 서버는 정상으로 보이지만, 게임 클라이언트는 Failed to get info from server에서 멈춰 접속하지 못합니다. 클라이언트의 쿼리와 게임 트래픽이 UDP를 통해 전달되기 때문입니다.
sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbose방화벽을 활성화하는 동안에는 두 번째 SSH 세션을 열어 두십시오. VPS를 위한 ufw 기초에서는 기본 거부 정책을 설명하며, 이 정책을 사용하면 위의 규칙만으로 충분합니다.
대부분의 제공업체는 게스트 외부에서 네트워크 방화벽을 운영하며, 이는 셸이 아닌 제어판에서 관리합니다. ufw 규칙은 해당 계층에 대해 아무것도 보장하지 않습니다. 외부에서 TCP 응답은 오는데 플레이어가 여전히 접속할 수 없다면, 누군가 접속을 시도할 때 패킷을 모니터링하십시오.
sudo tcpdump -ni any udp port 30120패킷이 도착한다면 외부 방화벽은 정상이며 서버 내부의 문제입니다. 아무런 응답이 없다면 서버 앞단의 무언가가 패킷을 차단하고 있는 것이므로, 제공업체 제어판을 확인하십시오.
외부 노출 없이 txAdmin으로 서버 관리하기
txAdmin은 이미 다운로드한 아티팩트 내부에 포함되어 있습니다. run.sh를 +exec 인수 없이 실행하면 TCP 40120 포트에서 웹 패널이 시작되며, 콘솔에 패널 URL과 일회용 PIN이 출력됩니다. 이 PIN을 사용하여 Cfx.re 계정을 한 번 연동하면, 이후부터는 생성된 관리자 계정으로 로그인할 수 있습니다.
txAdmin에는 기본 비밀번호가 없으므로, 변경하지 않은 자격 증명으로 인한 위험은 없습니다. 이 패널의 위험성은 그 자체의 기능에 있습니다. 패널은 원격 콘솔 역할을 수행합니다. 서버를 재시작하고, server.cfg을 편집하며, 서버 데이터를 배포하고, 서버 사용자의 권한으로 명령을 실행합니다. 40120 포트를 인터넷에서 접근 가능하게 두면 이러한 모든 기능을 제어할 수 있는 로그인 페이지가 공개 주소에 노출되며, 스캐너는 몇 시간 내에 열려 있는 패널 포트를 찾아냅니다. 방화벽에서 40120 포트를 개방하지 마십시오. 본인의 컴퓨터에서 SSH 터널을 통해 접근하십시오.
ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IP그런 다음 브라우저에서 http://127.0.0.1:40120을 엽니다. 패널 트래픽은 SSH 연결 내부를 통해 전달되며, 포트는 다른 모든 사람에게 닫힌 상태로 유지됩니다.
다른 방법으로 이 문제를 해결하기 전에 알아두어야 할 함정이 하나 있습니다. txAdmin은 TXHOST_INTERFACE(기본값 0.0.0.0)을 읽어 바인딩할 인터페이스를 결정하며, 문서에 따르면 동일한 값이 FXServer에도 강제로 적용됩니다. 패널을 숨기기 위해 이 값을 127.0.0.1으로 설정하면 게임 서버도 루프백 주소에 바인딩되어 플레이어가 서버에 전혀 접속할 수 없게 됩니다. 해당 변수가 아닌 방화벽을 사용하여 패널 포트를 닫으십시오. 패널을 다른 포트로 옮기려면 30120을 제외한 모든 값을 허용하는 TXHOST_TXA_PORT을 설정하십시오. 많은 가이드에 등장하는 구형 +set txAdminPort convar는 txAdmin 공식 문서에서 더 이상 사용되지 않는(deprecated) 것으로 표시되어 있으며, 향후 릴리스에서는 작동이 중단될 예정입니다.
로그아웃 후에도 서버를 계속 실행하기
bash run.sh은(는) SSH 세션이 종료될 때 함께 종료됩니다. 테스트 중에는 tmux를 사용해도 괜찮습니다. tmux new -s fivem를 실행하고 서버를 시작한 뒤, Ctrl-b를 누르고 d를 눌러 세션에서 분리(detach)하십시오. 다시 돌아오려면 tmux attach -t fivem를 사용합니다. tmux 세션은 재부팅 시 유지되지 않으므로, 중요한 서비스는 반드시 systemd 유닛으로 관리해야 합니다.
/etc/systemd/system/fivem.service 파일을 작성하십시오:
[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=fivem
Environment=HOME=/home/fivem
WorkingDirectory=/home/fivem/FXServer/server-data
ExecStart=/bin/bash /home/fivem/FXServer/server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -fenable --now은(는) 두 가지 역할을 합니다. 서비스를 즉시 시작하며, 재부팅 후에도 서비스가 자동으로 다시 시작되도록 합니다. 수동으로 시작한 서버는 커널 업데이트 후에는 종료됩니다. 이제 journalctl -u fivem -f이(가) 여러분의 콘솔입니다. systemd 서비스에는 직접 입력할 수 있는 터미널이 없기 때문입니다. 만약 txAdmin을 통해 서버를 관리한다면, ExecStart에서 +exec server.cfg을(를) 제거하고 WorkingDirectory이(가) /home/fivem/FXServer/server을(를) 가리키도록 설정하십시오. txAdmin이 직접 게임 서버를 시작하고 데이터 폴더를 run.sh 옆에 유지하기 때문입니다.
백업 대상과 저장 위치
아티팩트는 고정된 빌드를 언제든 다시 다운로드할 수 있으므로 백업할 가치가 없습니다. 오직 사용자 본인만이 소유한 다음 네 가지 항목이 중요합니다.
~/FXServer/server-data/resources: 설치하거나 구매 또는 직접 작성한 모든 리소스입니다.server.cfg: 서버 설정 전체이며, 관리자 계정 정보를 포함합니다. 저장 위치는 무관합니다.~/FXServer/server/txData: txAdmin 설정, 관리자 목록, 로그입니다. Linux 아티팩트 사용 시 이 폴더는run.sh옆에 생성됩니다.- MariaDB 또는 MySQL 데이터베이스(프레임워크에서 사용하는 경우): 캐릭터, 재화, 차량, 인벤토리 정보는 오직 이곳에만 존재합니다. 따라서 데이터베이스 덤프 없이 리소스만 백업하면 빈 세상이 복구됩니다.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql서버와 동일한 디스크에 저장된 덤프는 백업이 아닙니다. 디스크 장애가 발생하면 함께 소실되기 때문입니다. VPS에서 restic 백업하기를 활용하여 주기적으로 외부 저장소로 전송하십시오.
실패 유형과 표시되는 메시지
로더에 대한 권한 거부(Permission denied on the loader). 서버가 즉시 종료되며 다음과 같은 줄이 표시됩니다.
run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission denied이 문제는 아카이브가 sudo로 압축 해제되어 alpine/ 하위의 모든 파일 소유권이 root로 설정되었고, fivem 사용자가 그 안의 로더를 실행할 수 없기 때문에 발생합니다. sudo chown -R fivem:fivem /home/fivem/FXServer 명령으로 소유권을 수정하거나, 폴더를 삭제한 뒤 fivem 사용자로 다시 압축을 해제하십시오.
tar가 다운로드 파일을 열지 못함. tar (child): xz: Cannot exec: No such file or directory 메시지는 xz-utils 패키지가 누락되어 tar가 .tar.xz 아카이브를 압축 해제할 수 없음을 의미합니다. 해당 패키지를 설치한 뒤 다시 압축을 해제하십시오. 다운로드가 지나치게 빨리 완료된다면 보통 fx.tar.xz으로 저장된 HTML 오류 페이지이며, tar은 이를 손상된 아카이브로 보고합니다.
서버는 실행되지만 아무도 접속할 수 없음. 다음 순서대로 포트를 확인하십시오. 먼저 30120 포트에 대한 TCP 및 UDP ufw 규칙을 확인하고, 다음으로 제공업체의 자체 네트워크 방화벽, 마지막으로 라이선스 키에 등록된 IP를 확인하십시오. 외부에서 curl을 info.json 대상으로 실행하면 네트워크 문제인지 서버 문제인지 한 번의 명령으로 구분할 수 있습니다.
플레이어가 접속함에 따라 틱 타임(Tick time)이 상승함. txAdmin 성능 패널에서 서버 틱 타임을 확인할 수 있습니다. 전체 CPU 사용량은 낮아 보이는데 플레이어 수에 따라 틱 타임이 상승한다면, 특정 리소스가 메인 스레드를 점유하고 있는 것입니다. 다음 계산을 기억하십시오. 4 vCPU 환경에서 하나의 코어가 완전히 부하를 받으면 top상에서는 전체 CPU의 약 25퍼센트로 표시되는데, 이는 유휴 상태처럼 보이지만 실제로는 그렇지 않습니다. 리소스를 하나씩 중지하면서 틱 타임을 관찰하여 부하를 유발하는 리소스를 찾으십시오.
다른 게임 서버와 규모 비교하기
플레이 가능한 FiveM 서버는 빠른 싱글 코어 성능과 실제 실행하는 리소스 목록을 감당할 수 있는 충분한 메모리가 필요합니다. 슬롯 수는 이 두 가지 요소에 따라 결정되며, vCPU 개수를 늘린다고 해서 느린 코어 성능이 해결되지는 않습니다. 게임 서버용 VPS 선택하기에서는 혼합된 서버 환경에서 이러한 트레이드오프를 다루며, VPS에서 Minecraft 서버 운영하기 역시 근본적으로 동일한 구조를 가집니다. 즉, 하나의 메인 틱 루프가 작동하므로 코어당 속도가 서버 성능의 한계를 결정합니다.
FAQ
FiveM 서버에는 어느 정도의 CPU와 RAM이 필요한가요?
FXServer는 게임 로직을 단일 메인 스레드에서 실행하므로, 여러 개의 느린 코어보다 빠른 코어 하나가 더 중요합니다. CPU 모델의 공개된 싱글 스레드 점수를 비교한 뒤, sysbench cpu --threads=1 run 명령어로 서버에서 확인하고 vmstat에서 steal time이 0에 가까운지 점검하십시오. 메모리의 경우, 기본 Cfx.re 서버 데이터는 수백 MB 내외에서 실행되지만, 40~50개의 리소스와 로컬 데이터베이스를 포함한 롤플레잉 프레임워크는 8 GB 정도면 충분하고 4 GB 미만에서는 부족함을 느낄 수 있습니다. 이는 일반적인 커뮤니티 수치이므로, 이를 맹신하기보다 피크 타임에 free -m을 모니터링하십시오.
플레이어가 제 FiveM 서버에 접속하려면 GTA V를 소유해야 하나요?
네. 접속하는 모든 플레이어는 Steam, Rockstar Games Launcher 또는 Epic Games에서 정식 라이선스를 받은 GTA V를 보유해야 하며, 무료 Cfx.re 계정도 필요합니다. FiveM 클라이언트는 접속 전에 게임 소유 여부를 확인합니다. 이를 우회하는 지원되는 방법은 없으며, 우회를 시도하는 서버를 운영하는 것은 Cfx.re의 허용 범위를 벗어납니다.
FiveM 서버를 위해 열어야 하는 포트는 무엇인가요?
TCP와 UDP 모두 30120 포트를 열어야 합니다. info.json와 같은 HTTP 엔드포인트 및 리소스 다운로드는 TCP를 사용하며, 클라이언트의 게임 트래픽은 UDP를 사용합니다. TCP만 열 경우 서버는 브라우저에 응답하지만 플레이어에게는 Failed to get info from server 오류가 발생하는 혼란스러운 상황이 생깁니다. txAdmin은 TCP 40120 포트를 사용하며, 이 포트는 인터넷에 노출되지 않아야 합니다.
txAdmin을 40120 포트로 열어두는 것이 안전한가요?
아니요. txAdmin은 서버를 재시작하고, 설정을 편집하며, 명령어를 실행할 수 있는 원격 콘솔이므로, 노출된 패널은 게임 서버 전체의 제어권이 노출된 것과 같습니다. 기본 비밀번호는 없지만, 공개된 로그인 페이지는 눈에 보이지 않는 자격 증명 공격을 유도합니다. 방화벽에서 40120 포트를 닫아두고, ssh -N -L 40120:127.0.0.1:40120 user@server을 사용한 SSH 터널을 통해 패널에 접근한 뒤 http://127.0.0.1:40120로 접속하십시오. TXHOST_INTERFACE를 사용하여 txAdmin을 127.0.0.1에 바인딩하지 마십시오. 해당 설정은 게임 서버를 루프백 주소로 강제하여 플레이어가 접속할 수 없게 만듭니다.
아티팩트 빌드를 고정해야 하나요, 아니면 항상 최신 권장 버전을 사용해야 하나요?
번호가 매겨진 빌드 폴더를 고정하십시오. 권장 버전 레이블은 주기적으로 새로운 빌드로 변경됩니다. 따라서 권장 빌드를 가져오는 스크립트를 사용하면 재빌드할 때마다 다른 바이너리가 설치될 수 있으며, 어제까지 잘 작동하던 서버가 본인의 변경 사항과 무관한 이유로 재배포 시 중단될 수 있습니다. 테스트를 마친 빌드 번호와 커밋 해시를 기록하고, 의도적으로 업그레이드하십시오. 또한 이전 폴더를 디스크에 보관하여 systemd 유닛의 경로 하나만 수정해 즉시 이전 버전으로 되돌릴 수 있도록 하십시오.