Games/돈스타브 투게더

데디케이티드 서버(Dedicated Server) 만들기 - 리눅스(Linux) 편

la Nube 2017. 7. 17. 14:59
반응형

2017.09.08. 수정 사항

 - server.ini 부분 수정


2017.07.17. 수정 사항

 - cluster.ini와 server.ini 업데이트

 - worldgenoverride.lua 업데이트

 - 데비안 9 및 데비안 8에 대한 테스트 완료


2016.04.25. 수정 사항
 -
우분투 서버 16.04에 대한 테스트 완료


2016.04.24. 수정 사항
 -
게임 업데이트(빌드 174499) / cluster.ini에 languae_code 추가


2016.03.26. 수정 사항

 - 게임 업데이트 / 커맨드라인 -console 제거


2016.02.27. 수정 사항
 -
게임 업데이트 / cluster_ini 세부설정 수정


2016.02.12. 수정 사항
 -
서버 구조가 변경됨에 따라 전체적으로 수정



데디케이티드 서버(Dedicated Server) 만들기 - 초급자 버전

http://la-nube.tistory.com/202

http://cafe.naver.com/babmukda/67002 


데디케이티드 서버(Dedicated Server) 만들기 - 중급자 버전

http://la-nube.tistory.com/203
http://cafe.naver.com/babmukda/77630


운영체제가 윈도 또는 윈도 서버가 아닌 
리눅스에서

데디케이티드 서버를 돌리는 경우에는

윈도/윈도 서버보다 쾌적한 환경에서 돌릴 수 있습니다.


다만, 리눅스라는 운영체제는 우리에게 익숙하지 않기 때문에,

다음의 내용은 리눅스에 익숙한 분들을 대상으로 합니다.



------------------------------------------------------------------------------------------


정상적으로 실행됨을 확인한 리눅스 배포판

 - 데비안 9 Stretch 32/64비트 (Debian 9 Stretch 32/64bit)

 - 데비안 8 Jessie 32/64비트 (Debian 8 Jessie 32/64bit)

 - 우분투 서버 16.04 32/64비트 (Ubuntu Server 16.04 32/64bit)
 - 우분투 서버 14.04 32/64비트 (Ubuntu Server 14.04 32/64bit)

libcurl4-gnutls.so.4가 없어서
실행되지 않음을 확인한 리눅스 배포판
 - CentOS 5
32/64bit, CentOS 6 32/64bit, CentOS 7 64bit 등 레드햇/페도라 계열 리눅스

돈스타브 위키에 따르면 된다고 하나, 테스트해 본 적이 없는 리눅스 배포판
 - 데비안 7 위지 (Debian 7 Wheezy)
 - 젠투 64비트 (Gentoo 64bit)


서버용 리눅스가 아닌 데스크탑용 리눅스인 경우에는 GUI가 필요하다고 나와 있습니다.
데스크탑용 리눅스에서 GUI를 이용하여 실행되는가는 테스트한 적이 없습니다.



------------------------------------------------------------------------------------------

다음의 과정은 모두 데비안(Debian) 및 우분투 서버 (Ubuntu Server)에 맞추어져 있습니다.
다른 리눅스 배포판의 경우에는 정상적인 실행을 보장할 수 없습니다.



1. 데디케이티드 서버를 설치하기 전에 준비물(?)이 있습니다.


32비트 리눅스인 경우에는 다음의 패키지를 설치합니다.


$ sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get autoremove --purge -y && sudo apt-get autoclean

$ sudo apt-get install libgcc1 -y

$ sudo apt-get install libcurl4-gnutls-dev:i386 -y

$ sudo apt-get install wget screen tar -y
$ sudo reboot


 

64비트 리눅스의 경우에는 다음의 패키지를 설치합니다.


$ sudo dpkg --add-architecture i386

$ sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get autoremove --purge -y && sudo apt-get autoclean

$ sudo apt-get install lib32gcc1 -y

$ sudo apt-get install lib32stdc++6 -y

$ sudo apt-get install libcurl4-gnutls-dev:i386 -y

$ sudo apt-get install wget screen tar -y
$ sudo reboot



2. 스팀을 위한 사용자 계정(관리자 계정으로)을 작성하고, 그곳에 스팀CMD 폴더를 만듭니다.


$ sudo adduser steam
$ sudo adduser steam sudo


$ sudo su - steam

$ mkdir ~/steamcmd

$ cd ~/steamcmd



3. 스팀CMD를 다운로드 하여 압축을 해제합니다.


$ wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz

$ tar -xvzf steamcmd_linux.tar.gz



4. 스팀CMD를 실행하여 돈스타브 투게더 데디케이티드 서버를 다운로드 합니다.


$ ./steamcmd.sh


login anonymous

force_install_dir ~/steamapps/DST

app_update 343050 validate

quit



5. update_dst.sh 를 작성하여 이후에 손쉽게 업데이트할 수 있도록 합니다.


$ cd

$ nano update_dst.sh


#!/bin/sh

/home/steam/steamcmd/steamcmd.sh +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +force_install_dir ~/steamapps/DST +app_update 343050 validate +quit


6. update_dst.sh 에 권한을 부여하고, update_dst.sh 를 실행합니다.


$ chmod 700 update_dst.sh

$ sh update_dst.sh


7. cluster_1_master.sh 와 cluster_1_caves.sh 를 작성하여 이후에 손쉽게 데디케이티드 서버를 실행할 수 있도록 합니다.


$ nano cluster_1_master.sh


#!/bin/sh

cd /home/steam/steamapps/DST/bin

/usr/bin/screen -S "DST_Master" /bin/sh -c './dontstarve_dedicated_server_nullrenderer -backup_logs -conf_dir DedicatedServer -cluster Cluster_1 -shard Master'



$ nano cluster_1_caves.sh


#!/bin/sh
cd
/home/steam/steamapps/DST/bin

/usr/bin/screen -S "DST_Caves" /bin/sh -c './dontstarve_dedicated_server_nullrenderer -backup_logs -conf_dir DedicatedServer -cluster Cluster_1 -shard Caves'



8. cluster_1_master.sh 와 cluster_1_caves.sh 에 권한을 부여하고, start_dst.sh 를 실행하여 데디케이티드 서버를 실행합니다.


$ chmod 700 cluster_1_master.sh

$ ./cluster_1_master.sh

지상 서버를 행한 다음, c_shutdown() 를 입력하여 데디케이티드 서버를 정상적으로 종료합니다.


$ chmod 700
cluster_1_caves.sh
$ ./
cluster_1_caves.sh


동굴 서버를 행한 다음, c_shutdown() 를 입력하여 데디케이티드 서버를 정상적으로 종료합니다.


9. 방화벽을 열어야 합니다.


오픈 SSH 서버를 위해 22 TCP 포트를

방화벽에서 개방합니다.


$ sudo apt-get install ufw -y
$ sudo iptables -F
$ sudo ufw enable

$ sudo ufw allow 22/tcp
$ sudo ufw allow 11000/udp
$ sudo ufw allow 11001/udp

$ sudo ufw default deny

$ sudo ufw logging on

$ sudo service ufw restart


방화벽과 포트에 대한 내용은 기본으로 설정되어 있는 부분이므로,

보안을 위해 다른 포트로 변경할 수 있습니다.

22 TCP 포트는 오픈 SSH 서버의 설정 파일에서 수정 가능합니다.


만약, 리눅스를 사용하는 서버가 공유기를 사용하는 경우에는

22 TCP 포트, 11000 UDP 포트, 11001 UDP 포트에 대하여 포트 포워딩이 필요합니다.

2개의 PC에서 지상과 동굴 서버를 각각 열어 서로 연결하는 경우에는
지상서버를 여는 PC에서 10889 UDP 포트에 대하여 포트포워딩이 필요합니다.
아울러 방화벽에서 10889 UDP 포트를 열어야 합니다.

$ sudo ufw allow 10889/udp
$ sudo service ufw restart



10. 오픈 SSH 서버를 설치합니다.


윈도에서 리눅스로 접속하기 쉽게,

그리고 윈도에서 리눅스로 파일을 전송하기 위하여

오픈 SSH 서버를 설치합니다.


$ sudo apt-get install openssh-server openssh-sftp-server -y



11. 윈도용 클라이언트로 리눅스로 접속합니다.


저는 윈도용 클라이언트로 PuTTY 를 사용합니다.

PuTTY : http://www.chiark.greenend.org.uk/~sgtatham/putty/


리눅스의 IP를 확인하여 22번 포트로 접속합니다.

IP는 다음의 명령어로 확인 가능합니다.


$ ifconfig

또는,

$ ip addr show



12. 윈도용 FTP 프로그램으로 리눅스로 파일을 보냅니다. (1)


저는 윈도용 FTP 프로그램으로 FileZilla 를 사용합니다.

FileZilla : https://filezilla-project.org/


리눅스의 IP를 확인하여, 

오픈 SSH 서버를 사용하는 SFTP 방식의 프로토콜로 연결합니다.

이때의 포트는 22번 포트입니다.


리눅스로 보내야 하는 파일은 미리 윈도에서 작성하는 것이 편합니다.



13. 윈도용 FTP 프로그램으로 리눅스로 파일을 보냅니다. (1)


보내야 할 파일과 그 경로는 다음과 같습니다.


/home/steam/steamapps/DST/mods/dedicated_server_mods_setup.lua


/home/steam/.klei/DedicatedServer/Cluster_1/cluster_token.txt
 

/home/steam/.klei/DedicatedServer/Cluster_1/adminlist.txt
 

/home/steam/.klei/DedicatedServer/Cluster_1/blocklist.txt 


/home/steam/.klei/DedicatedServer/Cluster_1/Master/modoverrides.lua
/home/steam/.klei/DedicatedServer/Cluster_1/Caves/modoverrides.lua

/home/steam/.klei/DedicatedServer/Cluster_1/Master/worldgenoverride.lua


(주의) worldgenoverride.lua를 Caves에는 보내지 않습니다.


 

blocklist.txt 파일에 대해서는 쓰기 권한을 부여해야 합니다.


$ chmod 666 /home/steam/.klei/DedicatedServer/Cluster_1/blocklist.txt


14. 동굴을 만들기 위한 worldgenoverride.lua 를 작성합니다.

$ nano /home/steam/.klei/DedicatedServer/Cluster_1/Caves/worldgenoverride.lua


return { override_enabled = true, preset = "DST_CAVE" }


케이브(동굴)서버의 worldgenoverride.lua는 마스터(지상)서버의 worldgenoverride.lua와 서로 내용이 다릅니다.

만약, 케이브(동굴)서버의 worldgenoverride.lua를 수정하고 싶은 경우에는 중급자 버전을 참고하세요.

http://la-nube.tistory.com/203
http://cafe.naver.com/babmukda/77630



15. 서버 클러스터를 만들기 위한 cluster.ini 를 작성합니다.

$ nano /home/steam/.klei/DedicatedServer/Cluster_1/cluster.ini


[GAMEPLAY]
game_mode = survival
max_players = 6
pvp = false
pause_when_empty = false

[NETWORK]
cluster_name = ABCDEFG
cluster_description = HIJKLMN
cluster_password = OPQRSTU
cluster_intention = cooperative
lan_only_cluster = false
offline_cluster = false

[MISC]
console_enabled = true
language_code = korean

[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10889
cluster_key = defaultPass



16. 마스터(지상)서버를 만들기 위한 server.ini 를 작성합니다.

$ touch /home/steam/.klei/DedicatedServer/Cluster_1/Master/server.ini

$ chmod 444 /home/steam/.klei/DedicatedServer/Cluster_1/Master/server.ini
$ nano /home/steam/.klei/DedicatedServer/Cluster_1/Master/server.ini


[NETWORK]
server_port = 11000

[SHARD]
is_master = true

[ACCOUNT]
encode_user_path = true

[STEAM]
master_server_port = 27018
authentication_port = 8768



17. 16번의 파일을 Caves 로 복사하여 해당하는 부분만 다음의 내용으로 수정 및 추가합니다.

$ cp /home/steam/.klei/DedicatedServer/Cluster_1/Master/server.ini /home/steam/.klei/DedicatedServer/Cluster_1/Caves/server.ini
$ nano
/home/steam/.klei/DedicatedServer/Cluster_1/Caves/server.ini

$ chmod 444 /home/steam/.klei/DedicatedServer/Cluster_1/Caves/server.ini


[NETWORK]
server_port = 11001

[SHARD]
is_master = false
name = Caves


[ACCOUNT]
encode_user_path = true


[STEAM]
master_server_port = 27019
authentication_port = 8769



18. 데디케이티드 서버를 실행합니다.


$ cd /home/steam
$ sudo chown -R steam:steam /home/steam
 

$ ./cluster_1_master.sh
Ctrl 키 + a + d

$ ./
cluster_1_caves.sh
Ctrl 키 + a + d


19. 그 외


Ctrl 키 + a + d 를 누르면, 데디케이티드 서버가 실행되고 있는 스크린은 그대로 두고

다시 리눅스의 명령어가 입력 가능한 터미널로 돌아오게 됩니다.


만약, 다시 데디케이티드 서버가 실행되고 있는 스크린으로 돌아가고 싶다면

터미널에 다음과 같이 입력합니다.

$ screen -ls




위와 같이 지상서버는 2376, 동굴서버는 2401로 나와 있습니다.
지상서버로 돌아가기 위해서는 터미널에 다음과 같이 입력합니다.

$ screen -r XXXX   (XXXX에 2376 입력)


※ 첨부파일에 위 명령어를 메모장으로 적어서 올렸습니다. 참고하세요.


리눅스_명령어_170908.txt



------------------------------------------------------------------------------------------
 


리눅스에서 설치하여 운영 중인 돈스타브 투게더 데디케이티드 서버입니다.

렌탈 회사 : Digital Ocean
렌탈 비용 : 한달에 5달러씩
서버 위치 : 싱가포르

OS : Ubuntu Server 12.04 32bit
CPU : 1 Core
메모리 : RAM 512MB
디스크 : SSD 20GB
전송량 : 1TB per month





서버를 이전하였습니다. 아울러 메모리를 2048 MB 로 업그레이드 하였습니다.

렌탈 회사 : Vultr
렌탈 비용 : 한달에 15달러씩
서버 위치 : 일본 도쿄

OS : Ubuntu Server 14.04 64bit
CPU : 2 Core
메모리 : RAM 2048MB
디스크 : SSD 45GB
전송량 : 600GB per month




불법복사는 지적재산을 훔치는 범죄행위입니다.

이 게시물은 다른 카페나 블로그 등 외부로 퍼가는 것을 허용하지 않습니다.

COPYRIGHT ⓒ la Nube(바람구름) ALL RIGHTS RESERVED.


반응형