SSH 접속을 위한 준비
시작하기에 앞서 우선 MobaXterm[클릭]을 설치해 준다.
MobaXterm은 대충 코어 키퍼 서버를 돌릴 구글 클라우드의 컴퓨터를 내 컴퓨터에서 접속하기 위한 프로그램이라고 생각하면 된다.
서버에서 명령어를 실행하거나 모드 추가를 위해 파일을 업로드할 때 사용한다.
다음으로는 PuTTYgen[링크]을 다운로드한다.
구글 클라우드 인스턴스를 생성하고 웹페이지에서도 명령어를 실행시킬 수 있지만, 우리는 MobaXterm을 사용할 예정이기 때문에 이 프로그램으로 SSH 키를 생성해야 된다.
Generate 버튼을 누르고 위의 회색 영역 위에서 커서를 흔들면 초록색 바가 점점 차기 시작한다.
바가 다 차면 위와 같은 화면이 보일 것이다.
Key comment에는 대충 서버에서 사용할 사용자명을 써주고, Key passphrase에는 서버 접속 시 사용할 비밀번호를 입력한다.
그 뒤에는 반드시 위의 저 긴 문자열(ssh-rsa AAAA....)을 복사해서 메모장이든 어디든 복사해 두고 Save private key를 눌러 ppk 파일을 저장한다.
저장한 ppk 파일은 MobaXterm을 통해 서버에 접속할 때 사용된다.
구글 클라우드 VM 인스턴스 생성
구글 클라우드는 처음 사용 시 무료 체험을 위해 무료 크레딧 300$를 주는데, 신용카드마다 다시 신청이 가능하니 나중에 또 쓰고 싶다면 새로운 구글 아이디 + 새로운 신용카드로 무료 체험을 신청하면 된다.
코어 키퍼는 멀티로 하면 아마 한 달 내로 컨텐츠가 끝날 텐데, 이 글 기준으로 아마 월 160불 정도가 청구될 거라 2달 정도는 서버를 사용할 수 있다.
무료 체험 기간 3달이 지나더라도 자동으로 유료 계정으로 전환되지 않으니 돈 나갈 걱정은 하지 않아도 괜찮다.
우선 구글 클라우드 VM 인스턴스를 생성해야 한다.
위와 같은 화면이 나오면 사용을 눌러주면 된다.
3~5분 정도 시간이 걸리면 화면이 새로고침될 텐데, 너무 느리다 싶으면 직접 새로고침을 해주면 된다.
리전(Region)은 서울 리전이 있으니 서울 리전으로 고르면 되고, 영역(Zone)에 asia-northeast3 a~c가 있을 텐데, a가 사용자가 제일 많은지 N1이나 N2는 생성이 불가능할 때가 많다. 그럴 경우 b나 c로 바꿔보고 그래도 안되면 머신 구성을 바꿔줘야 한다.
머신 구성은 이미지에서는 N1이지만 어차피 무료 크레딧이니 N2로 선택해 주고, 아래에 머신 유형은 n2-standard-4(4코어 16GB)로 선택해 주면 된다.
어지간한 게임은 4 코어에 16GB면 충분하다.
아래로 조금 내리면 부팅 디스크 설정이 나온다.
변경 버튼을 눌러서 운영체제는 Ubuntu, 버전은 20.04 LTS를 선택해 준다.
부팅 디스크 유형은 SSD로 선택하고 크기는 50GB로 설정해 준다.
쭉 내려서 고급 옵션(Advanced Options)을 클릭해서 펼치면 가장 위에 네트워킹(Networking) 설정이 있다.
네트워크 인터페이스(Network interfaces)의 default 옆 화살표를 클릭해서 펼쳐주자.
위와 비슷한 화면이 나올 텐데, 다른 건 필요 없고 외부 IPv4 주소를 클릭해서 아래의 고정 외부 IP 주소 예약을 누르고 대충 이름을 설정해 주자.
다 끝나면 꼭 네트워크 인터페이스의 완료 버튼을 누르자.
고급 옵션의 아래쪽에 보안 설정에서 액세스 관리를 클릭해서 펼쳐주자.
위의 이미지와 같이 수동으로 생성된 SSH 키 추가라는 항목이 나오는데, 아까 만들었던 SSH 키를 사용할 것이다.
항목 추가 버튼을 누르고 SSH 키에 아까 복사해 둔 문자열을 입력해 준다.
여기까지 해주고 생성 버튼을 누르면 VM 인스턴스가 생성되면서 창이 새로고침 될 텐데, 새로고침 된 창에 나오는 외부 IP 주소를 사용해서 MobaXterm으로 서버에 접속할 것이다.
여기까지 하면 구글 클라우드에서 할 건 끝났다!
코어 키퍼 서버 설치
이제 MobaXterm을 통해 코어 키퍼 dedicated 서버를 내 구글 클라우드 인스턴스에 설치하고, 서버가 꺼졌을 때 자동으로 재실행하거나 업데이트를 위한 스크립트를 작성할 것이다.
우선 MobaXterm에서 User sessions 아래쪽을 우클릭하고 New session을 클릭한다.
세션 설정 창이 나오면 SSH 탭에서 구글 클라우드 외부 IP와 사용자명을 입력하고, Use private key 체크 후 아까 만든 ppk 파일을 선택한다.
OK를 누르면 서버에 접속이 된다.
비밀번호를 입력하라는 화면이 뜨면 ppk 파일 만들 때 입력한 비밀번호를 입력해 주면 된다.
이런 창이 뜨면 정상적으로 접속이 됐고, 이제부터는 명령어를 입력해 줄 건데, MobaXterm에서는 Ctrl + V가 안되니까 붙여넣기를 하고 싶다면 마우스 우클릭을 해주면 된다.
기억이 가물가물한데 내 기억으로는 구글 클라우드 인스턴스 생성 시 SSH 키를 등록해서 접속하면 사용자에게 sudo 권한(윈도우로 치면 관리자 권한)이 없던 걸로 기억한다.
아래 명령어를 한 줄씩 입력해서 su 권한을 부여한다.
sudo su -
usermod -aG sudo 사용자명
su - 사용자명
이제 코어 키퍼 서버를 실행하기 위해 관련 패키지를 설치하고 코어 키퍼 서버를 설치한다.
sudo apt-get update && sudo apt-get upgrade
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
steamcmd +login anonymous +app_update 1007 validate +app_update 1963720 validate +quit
여기까지 했으면 이제 서버를 실행해서 접속이 가능한데, 접속하는 방법을 쉽게 하고 서버 업데이트 관리나 인스턴스 재시작 후 자동 재실행을 위해 스크립트를 작성해 줄 것이다.
(원래는 systemd service로 등록하면 더 편한데.. 오라클에서는 잘 되던 게 구글 클라우드에서 자꾸 오류가 나서 야매로 때웠다. systemd로 할 거면 [링크]를 참고하자.)
서버 시작 스크립트를 작성하기 위해 아래 명령어를 입력하고 실행하면 뭔가 입력하는 창이 뜰 것이다.
nano ~/start_corekeeper.sh
아래의 내용을 입력하고 Ctrl+X를 입력하면 저장할 것이냐고 물어보는데, Y를 입력하고 엔터를 치면 된다.
내용 그대로 복붙 하지 말고 사용자명은 바꿔줘야 한다.
#!/bin/bash
cd /home/사용자명/.steam/SteamApps/common/Core\ Keeper\ Dedicated\ Server
screen -dmS corekeeper ./_launch.sh
가끔 서버를 오래 켜두게 되면 서버 렉이 생길 때가 있기도 하고, 뭔가 문제가 생겨 코어 키퍼 서버를 재시작해야 할 수도 있다.
재시작을 위해서 이번에는 아래의 명령어로 재시작 스크립트를 작성할 것이다.
nano ~/restart_corekeeper.sh
입력하는 창이 뜨면 아래의 내용을 입력한다.
이번에도 역시 사용자명은 바꿔줘야 하고, Ctrl + X로 저장하면 된다.
#!/bin/bash
# Core Keeper 서버 디렉토리로 이동
cd /home/사용자명/.steam/SteamApps/common/Core\ Keeper\ Dedicated\ Server
# Core Keeper 서버 중지
screen -S corekeeper -X quit
# 30초 대기
sleep 30
# Core Keeper 서버 시작
/home/사용자명/start_corekeeper.sh
코어 키퍼가 업데이트되면 서버도 업데이트를 해줘야 되는데, 하지 않을 경우 월드가 클래식 월드로 변경되어 시즌 이벤트(할로윈, 설날 등)가 적용되지 않는다.
그래서 이번에는 아래의 명령어로 업데이트 스크립트를 생성할 것이다.
nano ~/update_corekeeper.sh
입력하는 창이 뜨면 아래의 내용을 입력한다.
이번에도 역시 사용자명은 바꿔줘야 하고, Ctrl + X로 저장하면 된다.
#!/bin/bash
# Core Keeper 서버 디렉토리 설정
SERVER_DIR="/home/사용자명/.steam/SteamApps/common/Core Keeper Dedicated Server"
# Core Keeper 서버 중지
echo "Stopping Core Keeper server..."
screen -S corekeeper -X quit
# 잠시 대기
sleep 30
# SteamCMD를 사용하여 서버 업데이트
echo "Updating Core Keeper server..."
/usr/games/steamcmd +login anonymous +force_install_dir "$SERVER_DIR" +app_update 1963720 validate +quit
# 서버 재시작
echo "Starting Core Keeper server..."
cd "$SERVER_DIR"
screen -dmS corekeeper ./_launch.sh
echo "Update complete and server restarted."
cd
스크립트 작성 후에는 아래의 명령어로 각 스크립트에 실행 권한을 부여한다.
chmod +x ~/start_corekeeper.sh
chmod +x ~/restart_corekeeper.sh
chmod +x ~/update_corekeeper.sh
그리고 혹시라도 VM 인스턴스가 꺼지거나 재시작이 될 때, 코어 키퍼 서버가 자동으로 실행되게 해 주면 내가 직접 MobaXterm을 켜서 수동으로 켜주지 않아도 될 것이다.
그 작업을 자동화하기 위해 아래의 명령어를 실행한다.
crontab -e
우리가 자동화할 것은 두 가지이다.
- VM 인스턴스가 재시작할 때 코어 키퍼 서버 시작
- 6시간마다 코어 키퍼 서버를 재시작
따라서 crontab -e 명령어 실행 후 나오는 입력창의 맨 아래에 아래의 내용을 입력해 주고 Ctrl + X로 저장한다.
@reboot ~/start_corekeeper.sh
0 */6 * * * ~/restart_corekeeper.sh
코어 키퍼 서버 접속
위에서 작성한 스크립트들로 우리는 이제 서버를 실행하게 될 수 있다.
앞으로 사용하게 될 명령어들은 아래와 같다.
# 서버 시작
~/start_corekeeper.sh
# 서버 재시작
~/restart_corekeeper.sh
# 서버 업데이트
~/update_corekeeper.sh
# 서버 실행 여부 확인 (실행 중이면 corekeeper가 출력됨)
screen -list
서버에 접속하려면 Game ID가 필요한데, Game ID는 서버 최초 실행 시 자동으로 생성된다.
/home/사용자명/.steam/SteamApps/common/Core Keeper Dedicated Server/ 경로로 이동하면 GameID.txt 파일을 찾을 수 있고, MobaXterm에서 파일을 더블클릭하면 Game ID를 확인할 수 있다.
이제 메인 메뉴에서 게임 참여를 누르고 GameID.txt의 코드를 입력하면 서버에 접속할 수 있다.