Minecraft 외 게임 서버
VPS에서 CS2, Rust, Terraria, Valheim, Palworld 서버를 호스팅하는 방법이에요. 티어 요구 사항, SteamCMD를 통한 설치, 포트, 그리고 일반적인 문제를 알아봐요.
업데이트 2026년 8월 23일
대부분의 게임 서버는 SteamCMD로 설치하고 일반 Linux 서비스로 실행해요. VDS에서 전체 root 권한을 가지면 무엇이든 실행할 수 있지만, 메모리와 코어 수, 그리고 많은 게임이 메인 루프에 코어 하나만 사용한다는 점이 유일한 제약이에요.
무엇이 무엇을 제한하는가
| 게임 | 메모리 | 비고 |
|---|---|---|
| Terraria, Factorio | 1–2 GB | VDS-1이면 충분해요 |
| Valheim | 4–6 GB | 월드 크기에 따라 늘어나며, VDS-2 또는 VDS-3 |
| CS2 | 2–4 GB | 코어 수가 아니라 코어 클럭 속도가 중요해요 |
| Rust | 12–16 GB | VDS-4 이상, 맵 때문에 디스크가 빠르게 차요 |
| Palworld | 8–16 GB | 눈에 띄는 메모리 누수가 있어 정기적인 재시작이 필요해요 |
Ryzen 9 7950X는 높은 클럭 속도를 제공하므로, 낮은 티어에서는 보통 CPU가 아니라 메모리가 제약 요인이 돼요.
SteamCMD로 설치하기
dpkg --add-architecture i386 && apt update
apt install -y steamcmd lib32gcc-s1
useradd -m -d /srv/game -s /bin/bash game
sudo -u game /usr/games/steamcmd \
+force_install_dir /srv/game/server \
+login anonymous \
+app_update 896660 validate \
+quit
게임마다 고유한 app ID가 있어요. 서버 업데이트도 같은 명령을 사용하며, 변경된 파일을 내려받아요.
서비스와 포트
[Service]
User=game
WorkingDirectory=/srv/game/server
ExecStart=/srv/game/server/start.sh
Restart=on-failure
RestartSec=20
[Install]
WantedBy=multi-user.target
게임 서버는 보통 TCP가 아니라 UDP로 수신 대기해요. 이것이 “서버는 실행 중인데 보이지 않는다”의 흔한 원인이에요:
ufw allow 2456:2458/udp
ss -ulpn | grep 2456
공인 IPv4 주소는 /hosting/vds/m/<id> 제어판의 “개요” 탭에서 확인할 수 있어요. 두 번째 주소도 IPv6도 없으므로, 같은 게임의 서버 두 개는 주소가 아니라 서로 다른 포트로 구분해요.
자동 재시작과 백업
메모리 누수가 있는 게임은 야간 재시작을 설정하세요:
0 6 * * * systemctl restart valheim
저장 파일을 일정에 따라 복사하고 머신 밖으로 옮기세요. 자동 백업이나 스냅샷은 없어요:
tar czf /srv/backups/world-$(date +%F).tar.gz /srv/game/server/saves
rsync -az /srv/backups/ backup@other-host:/store/
일반적인 방법은 데이터베이스 백업에 설명되어 있어요. 저장 파일에도 동일하게 적용돼요.
흔한 실수
| 증상 | 원인 |
|---|---|
| 목록에 서버가 보이지 않음 | UDP 포트가 닫혀 있거나 쿼리 포트가 열려 있지 않음 |
| 몇 시간 후 크래시 | 메모리 누수, MemoryMax 없음, 야간 재시작 없음 |
steamcmd: not found | 패키지가 multiverse 또는 non-free 섹션에서 설치됨 |
| 서버가 가득 찼을 때 렉 | 단일 스레드 루프가 코어 하나를 최대로 사용함 — 더 높은 클럭 속도만이 도움이 돼요 |
| 공간 부족 | 로그와 오래된 저장 파일, “개요”의 디스크 사용량 링을 확인하세요 |
게임 서버를 root로 실행하는 것은 좋지 않아요. 엔진은 패킷 파싱에서 정기적으로 취약점이 발견돼요. 게임마다 별도의 시스템 사용자를 두는 것은 필수예요.