LV. 43
GP 1k

【心得】本地專用伺服器轉移上雲心得 AWS

樓主 布林代數 thomas2013
GP7 BP-

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

基於2024/01/25的資訊
在未來可能會變動 etc:免費額度改變 帕魯伺服器改版..

這篇心得需要有一定的電腦知識才能順利跟隨

這次使用的服務的官網: https://aws.amazon.com/tw/
先講個好消息: 剛註冊的一年,有一個每月免費使用750小時的機器可以用
壞消息: 那機器只有1GB記憶體,開mc伺服器還行,開帕魯會直接讓UE引擎崩潰

所以沒辦法用AWS開免費伺服器,要用GCP,版上有很優質的文章,可以參考那篇
在開始前可以先看一下這一篇,你會更快了解第三步後在做甚麼


第零步: 區域
登入好了,首先要選區域,不然開出來高ping伺服器就沒意義了
滾到最下面點那個Manage Regions

稍微往下滾可以看到一個地方可以管理區域,請隨意選擇一個離你近的啟用 這是地圖


第一步: 開機器
進到EC2然後按下那個大大的橘色按鈕吧,那是建立機器的按鈕

隨意命名

選擇系統類型時注意不能選擇有uefi,且要為x86,否則steamcmd會不支援

機器類型 1G不行(親測) 使用4GB的機器可以在兩人的狀態順利運行,2~3GB就沒有去測試了
預算充足/人數需求,可以往更多RAM或更猛的機型挑選
還有設定ssh key,隨意建立新的或使用現有即可,注意pem和ppk支援的程式不一樣
建立後會自動下載你的key到客戶端,保存好他

順便設定安全群組,可以當成這是在設定路由器
22給ssh,8211 UDP給伺服器

硬碟夠用就好

最後你就可以點右邊那個大大的橘色按鈕開啟機器了


第二步: 進機器
你要連線進那台機器,才能裝伺服器

直接點選上方的Connect

往下滾然後點黃黃的Connect就連進去了
如果跳紅字,那等個一兩分後刷新在試一次
如果還是一樣,恭喜你啊,跟我用另一個作法吧

在剛剛建立機器時有一個key,那個key就是用在這
在這裡找到ip
把ip複製起來
將key檔案放到純英文路徑
開啟cmd
輸入ssh -i "磁碟:路徑\key.xxx" ec2-user@ip或dns 然後按下enter
如果有yes/no之類的yes就好
之後會發現他說你的key太open

改一下安全性
先移除所有人的權限,在給自己權限,很不open,很安全
回到剛剛的cmd
方向鍵上,在按enter就進去了


第三步: 安裝SteamCMD
跟著官方手冊走,使用yum開頭的指令
例如: sudo yum install glibc.i686 libstdc++.i686
有y/n一律選y,如果出現super字眼,那在最前面加上sudo
出現Steam> 後就可以打上exit退出,或是接著下一步


第四步: 安裝與啟動伺服器
./steamcmd.sh +login anonymous +app_update 2394010 validate +exit
這串會啟動steamcmd,接著自己登入+更新與驗證+離開

如果你已經進去steamcmd那就單獨使用吧,要退出來用整串執行也可以
login anonymous
app_update 2394010 validate
exit

等待下載大約1分鐘...
下載好後就能去打開伺服器了,用cd在資料夾間移動,ls查看資料夾內容,pwd查看完整路徑
cd steamapp/scommon/PalServer 進入伺服器根目錄
ls 查看這個目錄有什麼東西

遊戲安裝好後接著做網路設定
"路由器"port已經在開機器時設定好了,現在要設定機器的防火牆

sudo yum install firewalld 安裝
sudo service firewalld start 啟用
sudo firewall-cmd --zone=public --add-port=8211/udp --permanent 增加port
sudo firewall-cmd --reload 刷新

一樣遇到y/n就y
過程沒跳紅字就完成了
最後./Palserver.sh 啟動伺服器

如果在啟動時出現了報錯訊息,在這篇文章內有解法:
mkdir -p ~/.steam/sdk64
ln -s ~/Steam/steamapps/common/PalServer/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
輸入這兩個指令後再次啟動
看到AppID後代表啟動完成

你可以在老地方找到ip
將公有ip放在遊戲的ip欄就能進了,DNS也能用,但他很長



第五步: 檔案上雲
現在要將舊主機的檔案移動到新主機
在經過幾次測試後發現存檔ID沒辦法在GameUserSettings.ini更改
更改之後一啟動伺服器就會被修改回"原本"的ID
也就是不能手動選擇伺服器讀取的目標(也許)

我的解法是將新主機在SaveGames/0/下的資料夾名稱複製,貼上到舊主機的資料夾上
最後將舊主機檔案壓縮,傳輸,解壓縮,完成

以下是實際操作
先將舊存檔複製一份到你方便的地方(請無視那個key2)

找到新主機上的存檔

將舊存檔命名為新存檔

使用7z將他包成tar (加入壓縮檔)

然後打開一個新的cmd 輸入:
scp -i "KEY" 路徑\檔案.tar ec2-user@ip:~/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0/

如果有的話,可以順便把PalWorldSettings.ini也丟過去
scp -i "KEY" 路徑\PalWorldSettings.ini ec2-user@ip:~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/

傳輸完成後回到可以存取雲端主機的地方,ls就能看到他

接下來解壓縮,會直接覆蓋過去
tar xvf F475669409E4443991DD9A21EDACCCD2.tar
看到這樣就好了


最後的最後,使用cd ~/Steam/steamapps/common/PalServer 回到目錄
啟動伺服器./PalServer.sh
進入伺服器,你會看到所有東西都跟上次下線時一模一樣
這是本地伺服器的數據A B

機器: t3.medium 2CPUs 4GB ram ,20GB ssd
區域:Asia Pacific (Hong Kong)
試算24hr 約1310/月
只開12hr 約660/月
RAM每加一倍就多一倍價格(t3系列)
不過還能利用spot或容器化來省錢,至少能省50%,但可以怎麼玩就需要你自己深入研究了

機器沒有要用的時候可以STOP停止 不會再用可以Terminate終止 也就是永久刪除
就算停止還可能會產生少量費用 終止會歸還所有租用的東西
丟著的話會跟我一樣每個月都有0.1usd的發票 哈哈

放到aws上就能玩些有趣的 像是lambda做discord bot來管理伺服器 隔壁mc有人發這種東西 很好玩喔
7
-
未登入的勇者,要加入 2 樓的討論嗎?
板務人員:(代管中)歡迎申請板主