리전: 서버의 위치를 선택하는 옵션입니다. 게임서버에 접속하는 플레이어(친구)들과 게임 서버의 위치가 같아야 반응속도가 빨라지니 서울을 선택했습니다.
영역: 리전내에 데이터 센터의 위치를 선택하는 옵션입니다. 이 부분은 어느 곳이라도 상관없으니 모두를 선택하겠습니다.
2-6. VM 인스턴스 사양 선택
2-6-1. VM 인스턴스 사양 선택
인스턴스 Series, CPU 코어, 메모리를 설정합니다.
인스턴스 Series: 빌릴 컴퓨터의 특성 또는 성격입니다. 서버를 최대한 오랫동안 돌리기 위해서 저렴한 비용의 Series를 선택했습니다.
CPU 코어: CPU 코어 수입니다.
메모리: 메모리 용량입니다. (CPU와 메모리의 최소/권장 사양은 공식문서가 없어 호스팅 업체 등 구글링의 결과를 토대로 설정했습니다.)
원하시는 만큼 사양을 높히거나 낮출 수 있습니다.
2-7. OS 및 스토리지 선택
2-7-1. OS 및 스토리지 페이지
2-7-2. OS 및 스토리지 변경
OS(운영체제) 및 스토리지 설정입니다. 변경 버튼을 눌러 설정합니다.
운영체제: 빌릴 컴퓨터의 운영체제입니다. 서버는 Linux 기반의 OS로 진행할 예정이니 그 중 Ubuntu를 선택했습니다.
버전: 운영체제의 버전입니다. 우선 Ubuntu 24.04 LTS를 사용했습니다. LTS(Long-Term Support)는 오래동안 보안 업데이트, 기술 지원, 버그 수정 등을 지원한다는 뜻이므로 안정성을 위해 선택했습니다. Minimal이 아닌 일반 버전을 사용한 이유는 Minimal은 최소한의 뼈대만 가지고 있는 버전이라 추가적인 패키지 설치를 신경쓰지 않고 진행하기 위해서 일반 버전을 선택했습니다.
부팅 디스크 유형: 부팅 디스크의 유형을 선택할 수 있는 옵션입니다. 파일 입출력이 빨라 게임 성능을 위한 SSD를 선택했습니다
크기: 디스크의 크기입니다. 저는 넉넉하게 100GB 설정했으나, 구글 검색 결과 50GB도 충분할 듯 싶습니다. 저같은 경우 무료 크레딧 90일을 꽉 채울 생각이 없어서 100GB 선택했습니다.
삭제 규칙: VM 인스턴스를 삭제할 때 부팅 디스크를 유지할 것인지 삭제할 것인지 선택할 수 있습니다. 저는 90일 체험동안 사용하고 그 이후에는 인스턴스와 디스크를 사용하지 않을 예정이고, 인스턴스를 삭제했는데 부팅 디스크 유지가 된 상태라면 유지비용이 추가될 수 있으니 삭제 옵션을 선택하겠습니다. 현실로 비유하자면 컴퓨터를 버리는데 컴퓨터와 안에있는 저장 장치를 같이 버릴 것인지, 아니면 저장 장치는 따로 보관한 상태로 삭제할 것인지 선택하는 것입니다.
(Linux가 아닌 Window로도 서버를 열 수 있지만, window는 GPC의 무료버전으로는 지원하지 않고 유료버전으로 진행하더라도 Window 운영체제를 사용한다면 추가 금액이 붙기 때문에 Linux 기반으로 진행합니다.)
2-8. 금액 확인 및 만들기
2-8-1. 금액 확인 및 만들기
금액 확인하시면 월별 예상 가격이 나옵니다. 확인하셨으면 만들기 버튼 클릭합니다.
위 사진에서는 한달에 약 $115달러의 비용이 들고, 처음에 주어지는 $300 90일 무료 크레딧을 가지고 약 78일동안 사용할 수 있습니다. 추가로 게임 플레이어와 게임 서버가 통신하는데 약간의 데이터 통신 비용이 들기 때문에 78일보다 더 빨리 크레딧이 소진될 수 있습니다.
2-9. 검증 절차 진행
2-9-1. 검증 절차 진행1
2-9-2. 검증 절차 진행2
검증 절차를 요구한다면 진행합니다.
2-10. 생성 확인
2-10-1. 생성 확인
인스턴스가 생성된 것을 확인합니다.
3. Project Zomboid 서버 설치 및 설정
pzwiki의 dedicated server 가이드를 보고 필요한 부분만 따라서 진행하겠습니다.
3-1. VM 인스턴스에서 SSH 클릭
3-1. SSH 텍스트를 클릭
3-2. SSH 열린 상태
SSH 텍스트를 클릭해서 인터넷 브라우저에서 서버를 제어할 수 있습니다.
두번째 사진은 브라우저에서 서버와 연결한 사진입니다. 명령어를 통해 서버를 제어할 수 있습니다.
3-2. SteamCMD를 통한 Project Zomboid Dedicated Server 설치
Project Zomboid Dedicated Server Project Zomboid 전용 서버 Dedicated라는 의미는 오직 게임 서버 역할만을 수행한다는 의미입니다.
SteamCMD 스팀 클라이언트의 command-line 도구입니다. 명령줄로 게임 서버 설치나 업데이트를 진행할 수 있습니다.
로그인이 완료되면 좌측의 user 이름이 바뀐 상태가 됩니다. (예. buildifiy365 -> pzuser)
3-2-5. Project Zomboid 전용 서버 설치/업데이트 스크립트 작성
3-2-5. 스크립트 작성
cat >$HOME/update_zomboid.txt <<'EOL'
// update_zomboid.txt
//
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
force_install_dir /opt/pzserver/
//for servers which don't need a login
login anonymous
app_update 380870 validate
quit
EOL
tmux를 이용해서 서버를 실행할 것입니다. 기본적으로 터미널 창을 닫으면 그 터미널에서 실행 중이던 프로그램은 종료됩니다. 이를 방지하기 위해 tmux 라는 도구를 사용할 것입니다.
tmux 한 터미널에서 여러 프로그램을 쉽게 전환하고, 백그라운드에서 계속 실행되도록 할 수 있는 멀티플랙서
3-3-1. tmux 설치 확인
3-3-2. tmux 실행
Ubuntu LTS 버전에는 설치되어있으므로 설치 방법은 생략합니다.
만약 설치가 필요하다면 sudo apt-get install tmux로 설치합니다.
tmux을 입력한다면 한다에 초록색 UI가 나타납니다. 이는 tmux를 실행중이라는 뜻입니다.
tmux를 끄는 방법은 exit를 누릅니다.
3-3-2. 폴더 이동
3-3-2. 폴더 이동
cd /opt/pzserver/
아래 명령어를 입력해 /opt/pzserver/로 이동합니다.
만약 폴더 내용을 보고싶다면 ls -al을 입력하여 확인합니다.
3-3-3. 서버 실행
3-2-3-1. 서버 실행
3-2-3-2. 서버 관리자 비밀번호 설정
bash start-server.sh
bash start-server.sh를 입력하여 좀보이드 서버를 실행합니다.
bash start-server.sh
서버 실행 도중에 비밀번호 입력창이 나온다면 관리자 비밀번호를 원하는대로 입력하고 확인합니다.
3-4-4. 서버 실행 완료
3-2-4. 서버 실행
서버는 OS(Ubuntu)의 16261, 16262 포트에서 외부의 접속을 기다리는 상태가 됩니다.
4. 포트 설정
멀티플레이 게임을 위해 플레이어는 서버의 IP 주소와 포트 번호를 알아야 하며, 서버 역시 외부에서 들어오는 트래픽을 수신할 수 있도록 해당 포트를 열어 두어야 합니다. 이 글에서는 GCP에서 하나의 VM 인스턴스만을 게임 서버 용도로 사용할 것이기 때문에 네트워크 구성을 새로 만들지 않고 기존 네트워크 설정에 필요한 포트 설정만 추가해서 사용하겠습니다.
4-1. VPC 네트워크로 이동
VPC(Virtual Private Cloud) 클라우드(이 글에선 GCP) 안에서 사용하는 가상의 네트워크 공간 서버가 인터넷에 연결되어 동작할 수 있도록 네트워크 관련 기능을 제공하는 역할
4-1-1. VM 인스턴스에서 nic0 클릭
4-1-2. VPC 네트워크 세부정보에서 default 클릭
VM 인스턴스에서 VPC 네트워크로 들어가 방화벽 규칙을 추가하는 방향으로 진행하겠습니다.
nic0 링크를 클릭합니다.
네트워크에서 default를 클릭합니다.
4-2. 방화벽 규칙 추가
방화벽(Firewall) 컴퓨터 네트워크에서 외부의 불법적인 접근을 차단하고 내부의 데이터를 보호하기 위한 보안 시스템
대상: 네트워크의 모든 인스턴스로 설정합니다. VM 인스턴스를 하나만 생성한다면 네트워크에 인스턴스는 하나 뿐이 없기 때문에 해당 옵션을 선택했습니다.
소스 필터: 스킵
소스 IPv4 범위: 0.0.0.0/0으로 설정합니다. 모든 IP에서 접근할 수 있게 설정했습니다.
보조 소스 필터: 스킵
지정한 프로토콜 및 포트: 지정한 프로토콜 및 포트로 설정하고, 좀보이드 서버는 UDP 16261, 16262 포트에서 플레이어의 요청을 기다리고 있기 때문에 16261-16262로 설정합니다.
4-4. 완료 후 확인
4-4. 방화벽 규칙 만들기 후 확인
생성이 된 것을 확인합니다.
5. 동작확인
방화벽 설정 후 스팀을 열고 프로젝트 좀보이드를 실행한 후 접속해서 서버가 동작하는지 확인합니다.
5-1. 멀티플레이 접속
5-1. 멀티플레이 접속
5-2. 서버 추가
5-2-1. 멀티플레이 접속
5-2-2. GCP에서 외부 IP 가져오기
GCP VM 인스턴스에서 생성한 인스턴스와 서버의 정보를 가져옵니다. 그리고 Save(저장) 버튼을 클릭합니다.
Favorite name(서버이름): 별칭으로 지정할 서버 이름을 입력합니다.
IP: VM 인스턴스의 외부 IP를 입력합니다.(내부 IP 사용하지 않기)
Local IP: 빈칸
Port: 16261을 입력합니다.
Server Password(서버 암호): 서버 접속 시 암호입력 설정을 하지 않았으니 빈칸으로 둡니다.
Description(서버설명): 옵션이니 빈칸으로 둡니다.
Account Username: 게임 서버에서 사용할 아이디를 입력합니다.
Account Password: 게임 서버에서 사용할 비밀번호를 입력합니다.
5-3. 확인 및 접속
5-3. 확인 및 접속
REFRESH(새로고침)을 눌러 서버 정보가 뜬다면 접속이 가능한 상태일 것입니다.
그리고 JOIN SERVER(접속하기)를 눌러 서버에 접속합니다.
5-4. 플레이
5-4-1. 플레이
5-4-2. 플레이
5-4-3. 플레이
이제 24시간 멀티 서버에서 친구들과 함께 좀보이드를 즐기면 됩니다!
6. 서버 삭제
서버 운영 도중 VM 인스턴스(서버)를 삭제하고 싶을 수 있습니다. 그 경우를 위한 설명입니다.
6-1. 우측 아이콘 클릭
6-1. 우측 아이콘 클릭
우측 아이콘을 클릭합니다.
6-2. 삭제 버튼 클릭
6-2. 삭제 버튼 클릭
6-2. 삭제 버튼 클릭
- 삭제 버튼을 클릭합니다.
6-3. 삭제 완료
6-3-1. 삭제 중
6-3-2. 삭제 완료
6-4. 할당된 디스크 삭제 확인 및 완료
6-3-1. 할당 된 디스크 확인
6-3-2. 삭제 완료
인스턴스를 만들면서 할당했던 디스크가 남아있는지 확인합니다.
인스턴스를 만들면서 옵션을 잘못 선택해서 인스턴스는 삭제되었는데 디스크가 삭제되지 않는 경우 요금이 계속해서 부과되어 크레딧이 줄어들 수 있습니다.
마무리
24시간 서버를 구축하기 위한 큰 흐름은 다음과 같습니다:
클라우드 플랫폼 가입
가상 머신(컴퓨터) 생성
게임 서버 실행
이 글에서는 예시로 프로젝트 좀보이드를 사용했지만, 마인크래프트나 다른 게임 서버도 동일한 방식으로 설정이 가능할 것입니다. 다만, 해당 게임 서버에 맞는 서버 스펙과 서버 설정 및 실행 방법만 해당 게임에 맞게 바꿔주면 됩니다. 다른 게임 서버를 연다면 요금이 프로젝트 좀보이드와 다르게 나올 수 있기 때문에 해당 게임의 트래픽 비용을 계산해서 진행하는것을 추천드립니다.
그리고 이 글에서는 OS(우분투)에서 방화벽을 따로 설정하지 않았습니다. 왜냐하면 클라우드 플랫폼의 방화벽에서 OS에 트래픽이 도달하기전에 제어하고 있기 때문입니다.