ARKサーバー構築

ARKサーバーの構築メモです
自宅に立ててみたかったので、レンタルサーバとか借りずに、
NUC8I5BEKにUbuntu Server 18.04 LTS入れて構築しました
(Windowsだと高いし、接続数の上限があるっぽい)
 
マイクラサーバーを構築したり、他にも色々遊んでみたかったので、
メモリ(32GB)
SSD(1TB)
メモリを多めに増設してます
(ARKサーバーは最低6GB以上メモリいるらしい)
 

お好みの設定

以下の設定でインストールしますので、お好みで読み替えてください

ユーザー名 steam
インストール先 /home/steam/Steam/servers/ark

 
 

ARKサーバーの構築

ファイアウォール

IPV6 を無効
27015, 7777, 7778 を許可

which ufw || sudo apt install ufw
sudo sed -i.bak -r 's/^IPV6=yes$/IPV6=no/g' /etc/default/ufw
diff -u /etc/default/ufw{.bak,}
-IPV6=yes
+IPV6=no

sudo ufw status
sudo ufw allow 22
sudo ufw allow 27015/udp
sudo ufw allow 7777/udp
sudo ufw allow 7778/udp
sudo ufw default deny
sudo ufw enable
sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
27015/udp                  ALLOW       Anywhere
7777/udp                   ALLOW       Anywhere
7778/udp                   ALLOW       Anywhere

 

パッケージのアップデート

ps aux | grep apt | grep -v 'grep'
sudo apt update
sudo apt upgrade
sudo reboot

 

lib32gcc1のインストール

SteamCmdは32Bitでないと動かないので32bitを使えるようにする
SteamCmdはcurl等でダウンロードしてインストールする方法もあるが、
公式がリポジトリでのインストールを推奨してるっぽいので、従った(公式)

dpkg --print-architecture
dpkg --print-foreign-architectures
sudo dpkg --add-architecture i386
dpkg --print-foreign-architectures
sudo apt install lib32gcc1
sudo apt install steamcmd

 

ファイルオープン数の上限

sedで最終行付近に設定を追記していく

sudo sed -i.bak -e '$a fs.file-max=100000'
diff -u /etc/sysctl.conf{.bak,}
sudo sysctl -p /etc/sysctl.conf

sudo sed -i.bak \
  -e '$i * soft nofile 1000000' \
  -e '$i * hard nofile 1000000' \
/etc/security/limits.conf

diff -u /etc/security/limits.conf{.bak,}
+* soft nofile 1000000
+* hard nofile 1000000
 # End of file

 

pam.dのセッションファイルの編集

sudo sed -i.bak \
  -e '$i session required pam_limits.so'
/etc/pam.d/common-session

diff -u /etc/pam.d/common-session{.bak,}
 session        optional        pam_systemd.so
+session required pam_limits.so
 # end of pam-auth-update config
 

 

steamユーザーの作成

sudo adduser --disabled-password --gecos 'Steam' steam

sudo id steam
uid=1001(steam) gid=1001(steam) groups=1001(steam)

cat /etc/passwd | grep steam
steam:x:1001:1001:Steam,,,:/home/steam:/bin/bash

ls -al /home/steam/

# curl でsteamcmdを入れる場合、このようにする
# sudo mkdir -p /usr/games
# sudo su - steam
# mkdir -p ~/Steam/servers/ark
# cd ~/Steam/
# curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
# sudo ln -s steamcmd.sh /usr/games/steamcmd

 
 

ARKサーバーのインストールと設定

「376030」は Steam で管理されている
ARK のサーバプログラムの ID を示している

steamcmd +login anonymous +force_install_dir ~/Steam/servers/ark/ +app_update 376030 +quit

# steamcmd で対話形式で入れる場合、このようにする
# Steam> login anonymous
# Steam> force_install_dir 
# Steam> app_update 376030 validate
# Steam> exit

 
 

ポート開放

自宅のポートを開放しておく
ブラウザ[192.168.x.x]
・UDP:7777
・UDP:7778
・UDP:27015
上記3ポートをARKサーバのIP(192.168.x.x)に転送するように
 
 

起動テスト

とうとう起動テスト
27015, 7778 が使用されていることを確認

cd ~/Steam/servers/ark/ShooterGame/Binaries/Linux/
./ShooterGameServer TheIsland?listen?SessionName=Teityura?ServerPassword=TestPass?ServerAdminPassword=TestPass -server -log

sudo netstat -anp | grep -e 27015 -e 777[78]
udp        0      0 0.0.0.0:7778            0.0.0.0:*                           2856/ShooterGameSer
udp        0      0 0.0.0.0:27015           0.0.0.0:*                           2856/ShooterGameSer

sudo lsof -i:27015 -i:7777 -i:7778
COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ShooterGa 2809 steam   11u  IPv4  38209      0t0  UDP *:27015
ShooterGa 2809 steam   18u  IPv4  38217      0t0  UDP *:7778

 
 

デーモン化

sudo su - <普段使いのユーザ>

sudo vim /lib/systemd/system/ark-dedicated.service
# ===============================================================================================
[Unit]
Description=ARK: Survival Evolved dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStartPre=/usr/games/steamcmd +login anonymous +force_install_dir /home/steam/Steam/servers/ark +app_update 376030 +quit
#ExecStart=/home/steam/Steam/servers/ark/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=Teityura -server -log
ExecStart=/home/steam/Steam/servers/ark/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=Teityura?ServerPassword=ServerPassword?ServerAdminPassword=AdminPassword -server -log
WorkingDirectory=/home/steam/Steam/servers/ark/ShooterGame/Binaries/Linux
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=steam
Group=steam

[Install]
WantedBy=multi-user.target
# ===============================================================================================

 
設定内容(お好みで変更してください)
起動で -NoBattlEye オプションをつけると、BattlEyeを無効にできるっぽい

マップ名 TheIsland
サーバー名 SessionName=Teityura
サーバーパスワード ServerPassword=ServerPassword
管理者パスワード ServerAdminPassword=AdminPassword

 
 

自動起動

sudo systemctl daemon-reload
sudo systemctl enable ark-dedicated.service
sudo systemctl start ark-dedicated.service
systemctl status ark-dedicated.service

 
 

ARKサーバーへの接続

Steam – ARKサーバーの追加手順
1. Steamのゲームクライアントを起動する
2. メニューバーの「表示」→「サーバー」を選択し、お気に入りタブを選択する
3. 右下の「サーバーを追加」ボタンを押下し、
4. 「192.168.x.x:27015」 を入力し、追加する(ローカル接続)
5. 「teityura.wjg.jp:27015」 を入力し、追加する(グローバル接続)
 
Ark – ARKサーバーの接続手順
1. ARKを起動
2. 「ARKを始める」を選択
3. セッション一覧の左下の、セッションフィルターで「お気に入り」を選択
4. 「サーバー名(Teityura)」が出てくるので、選択
5. 「参加」をクリック
6. 設定したパスワードを入力して、「OK」をクリック
 
 

パラメータ変更前にバックアップ

/home/steam/Steam/servers/ark/ShooterGame/Saved/
上記ディレクトリにセーブデータや設定情報が入っている
初期の状態をバックアップしておくといいかもしれない

# cd ~/Steam/servers/ark/ShooterGame/Saved/Config/LinuxServer/
# cp GameUserSettings.ini GameUserSettings.ini.org
# cp Game.ini Game.ini.org
# vim GameUserSettings.ini
# vim Game.ini
# sudo reboot
# systemctl status ark.service

 

パラメータ変更

サーバーのテイム速度等を変更できる

cd ~/Steam/servers/ark/ShooterGame/Saved/Config/LinuxServer/
vim GameUserSettings.ini
vim Game.ini
diff -u GameUserSettings.ini{.org,}
+TamingSpeedMultiplier=10.00000
+HarvestAmountMultiplier=3.00000
+XPMultiplier=3.00000
+NightTimeSpeedScale=5.00000
+PlayerCharacterWaterDrainMultiplier=0.10000
+PlayerCharacterFoodDrainMultiplier=0.10000
+PlayerCharacterHealthRecoveryMultiplier=5.00000
+DifficultyOffset=1.00000

sudo systemctl restart ark-dedicated.service
sudo reboot

 
 

参考

SteamCMD
Dedicated_Server_Setup
Dedicated_Server_Setup(ja)
Server_Configuration
Server_Configuration(ja)
ARK: Survival Evolved 個人サーバを構築しよう

カテゴリー: 技術

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です