[GCP] GCP로 Core Keeper 24시간 Dedicated Server 열기 -2-
[GCP] GCP로 Core Keeper 24시간 Dedicated Server 열기 -1-
1편에서 인스턴스를 생성했으니
2편에서는 Ubuntu 환경 기본 셋팅을 하고 코어키퍼 서버를 열 Docker 컨테이너를 실행해보도록 하겠다.
잠깐 잡담을 좀 하자면…
처음에는 Docker 컨테이너가 아니라 호스트 환경에서 코어키퍼 서버를 실행하려고 했었다.
하지만 수많은 오류에 가로막히고… 수많은 구글링을 했지만…
코어키퍼 Dedicated Server를 Linux 시스템에 설치하는 여러 가이드를 따라해봐도 성공하지 못했다.
그러던 와중에 레딧 글을 봤는데…
헤드리스 서버는 GPU가 없어서 코어키퍼 서버를 실행할 수 없다는 것이다!!!
(헤드리스 서버란… GUI(Graphic User Interface)없이 동작하는 서버로, 터미널에서만 실행할 수 있다. 우리가 사용하고 있는 서버도 헤드리스 서버이다.)
Dedicated Core Keeper Server: Tips & Tricks
(나를 슬프게 만들었던 레딧 글 박제. 근데 설마 코어키퍼 공식은 아니죠?)
설마 여기까지 했는데 서버를 못 여는 건가?!! 라고 생각한 당신, 안심해도 된다.
난 서버를 여는 데 성공했기 때문이다.
https://github.com/escapingnetwork/core-keeper-dedicated
이쯤에서 다시 서버를 열 수 있게 Docker 이미지를 배포해주신 제작자님께 감사를 표합니다.
내부적으로 어떻게 동작하는지는… 잘 모르겠지만! 아무튼 정상적으로 실행된다.
Ubuntu에 Docker 설치하기
GCP의 Compute Engine → VM 인스턴스로 들어가면, 우리가 지난번에 생성한 인스턴스가 보인다.
오른쪽의 SSH 부분을 클릭하여 SSH 터미널로 접속해준다.
그러면 이렇게! 터미널 창이 나온다.
일반적으로는 보안상 문제로 root 계정을 사용하지 않지만, 설정의 편의성을 위해 root 사용자로 로그인한다.
(나중에 가이드의 사용자 관련 부분은 일반 사용자로 수정할 예정이다.)
sudo su - root
위 명령어를 입력하면 root 사용자로 접속하게 된다.
이제부터 Docker를 설치할텐데, 공식 매뉴얼의 방법을 따르도록 하겠다.
Install Docker Engine on Ubuntu
혼자서 할 때에는 여기저기 검색하다가 오래된 Docker 버전이 설치되어서 오류가 나곤 했는데…
공식 매뉴얼을 따르면 최신 버전을 설치할 수 있다고 해서 따르는 게 좋을 듯 하다.
여기서부터는 직접 입력할 필요 없이 코드블럭을 복사해서 커맨드창에 붙여넣기만 하면 된다!!
직접 입력하려고 했다가 오타가 나면 오히려 곤란해질 수 있다…
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
위 명령어를 입력하면 여러 메세지가 출력되다가… 명령어가 입력된 채로 대기 상태가 된다.
거기서 엔터키를 한번 더 입력해준다.
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
위 명령어도 똑같이 복사 붙여넣기 해준다.
여기까지가 Docker의 저장소 설정을 한 과정이다.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
이제 Docker를 설치할 건데, 마찬가지로 위 명령어를 복사 붙여넣기 해준다.
중간에 Do you want to continue?가 나오면 y를 입력하고 엔터키를 입력하면 된다.
그러면 혼자서 잘 설치된다.
마지막으로 Docker가 잘 설치되었는지 확인하는 과정이다.
sudo service docker start
sudo docker run hello-world
정상적으로 설치가 완료됐으면 위와 같은 메세지들이 뜬다!
여기까지 했으면 정말 다 왔다.
Docker를 설치했으니 이제 컨테이너를 실행하기만 하면 된다.
escaping/core-keeper-dedicated 이미지를 Docker 컨테이너에서 실행하기
기본적으로 사용하려는 이미지의 github에 나와있는 설명을 따르도록 하겠다.
https://github.com/escapingnetwork/core-keeper-dedicated
컨테이너를 실행하기 전에 우리가 할 일은 3가지이다.
- server-data, server-files 디렉터리 생성하기
- docker-compose.yml 파일 생성하기
- .env 파일 생성하기
위 과정을 거친 후, 컨테이너를 실행하면 서버에 접속할 수 있는 GameID를 확인할 수 있다.
1. server-data, server-files 디렉터리 생성하기
절대 디렉터리를 이동하지 않고!
현재 위치에서 새로운 디렉터리를 만들어줄 것이다.
mkdir server-data
mkdir server-files
ls
mkdir로 디렉터리를 만들고, ls 명령어를 사용해 생성된 디렉터리를 확인한다.
2. docker-compose.yml 파일 생성하기
vim docker-compose.yml
위와 같이 명령어를 입력하고 엔터키를 입력하면 빈 파일이 생성된다.
여기다가 아래의 내용을 그대로 작성해준다.
위 화면에서 a 를 누르면 입력 모드로 전환된다.
(원문 docker-compose.yml의 내용과 다르게 호스트의 server-files, server-data 디렉터리가 컨테이너 내부의 파일과 연결되므로, 컨테이너가 삭제되어도 기존 데이터가 유지된다.)
services:
core-keeper:
container_name: core-keeper-dedicated
image: escaping/core-keeper-dedicated
ports:
- "$SERVER_PORT:$SERVER_PORT/udp"
volumes:
- ./server-files:/home/steam/core-keeper-dedicated
- ./server-data:/home/steam/core-keeper-data
restart: unless-stopped
env_file:
- path: override.env
required: false
stop_grace_period: 2m
위 내용을 붙여넣었으면, ESC키를 입력하고, :wq 를 입력하여 파일을 저장하고 빠져나온다.
ls
다시 한 번 ls를 입력해서 파일이 잘 생성됐는지 확인해준다.
3. .env 파일 생성하기
가이드에는 override.env 파일을 생성하라고 되어있지만, 굳이 생성하지 않아도 문제는 없다.
문서를 참고하여 기본값을 변경하고 싶은 사람만 작성해주면 될 듯하다.
다만, .env 파일은 생성하지 않으면 오류가 나는 문제가 있어서 따로 작성해줬다.
vim .env
아까와 같이 새 .env 파일을 생성해주었다.
SERVER_PORT=27015
위 내용만 넣고 아까와 같이 저장해주면 된다!
27015는 Steam relay port인데, 기본으로 설정되어있지 않아서 직접 입력해야 한다.
ls -a
앞에 .이 붙은 파일은 숨김파일이라, 숨김파일을 보여주는 -a 옵션을 추가한 ls -a 명령어를 입력해준다.
.env 파일이 잘 생성된 것을 확인할 수 있다.
여기까지 왔으면 이제 컨테이너 실행만 남았다.
Docker 컨테이너 실행하기
docker compose up -d
위 명령어를 입력하면 컨테이너가 실행이 된다!
그럼 이제 서버가 정상적으로 실행된 것이다.
서버가 잘 열렸는지 확인하기 위해서 GameID를 확인해보자.
docker exec -it core-keeper-dedicated cat core-keeper-dedicated/GameID.txt
이런식으로 GameID가 출력되면 올바르게 서버가 열렸다는 뜻이다.
이제 코어키퍼를 실행해서 게임 참여를 누르고 GameID를 입력하면 서버에 접속이 가능하다.
다음 편에서는 기존에 로컬에서 사용하던 맵을 가져오는 방법, 서버 콘솔 창을 확인하는 방법을 작성하겠다.
Comments