LV. 15
GP 8

【攻略】使用 Docker 容器化架設伺服器

樓主 貞香 hmes98318
GP61 BP-
上篇文【攻略】Linux 伺服器架設 搞起來的步驟過於繁瑣,我自己都看的眼睛花花,
所以乾脆直接把他包成 container 來運行,省去架設的繁瑣步驟



第一步: 從 github clone 或下載程式碼並進入目錄 (或創建一個目錄新增一個 docker-compose.yml)
(我把它存在 ~/palworld-docker 接下來都依照此路徑說明)
$ cd palworld-docker


第二步: 編輯 docker-compose.yml
修改你想要的設置 (記得設密碼)
(配置文件可能會跟 github 上的有差距,以 github 上的為主,這邊不會即時更新)

```
version: '3.8'

services:
  palserver:
    image: hmes98318/palworld-docker:latest
    container_name: palserver
    restart: always
    environment:
      TZ: "Asia/Taipei"
      CHECK_UPDATE_ON_START: true
      PORT: 8211
      PLAYERS: 32
      MULTITHREAD: true
      ADMIN_PASSWORD: "youradminpassword"
      SERVER_NAME: "Palworld Server"
      SERVER_DESC: "Palworld Server Description"
      SERVER_PASSWORD: ""
      # COMMUNITY: false
      # COMMUNITY_IP:
      # COMMUNITY_PORT: 8211
      RCON_ENABLED: false
      RCON_PORT: 25575
    volumes:
      - ./palSaved:/home/steam/palworld/Pal/Saved
    ports:
      - 8211:8211/udp
```

以下為環境變數說明,詳細內容可參考 github
CHECK_UPDATE_ON_START: 是否在每次啟動時自動檢查遊戲更新 (預設值: true) (允許值: true/false)
PORT: 伺服器監聽端口號 (預設值: 8211) (允許值: 0-65535)
PLAYERS: 最大玩家人數 (預設值: 16) (允許值: 1-32)
MULTITHREAD: 是否啟用多執行緒 (預設值: true) (允許值: true/false)

volumes 中的 ./palSaved 則為遊戲存檔及遊戲設定的存放目錄,你可以修改成任意名稱只要本地目錄與 docker-compose.yml 上的相同即可


第三步: 創建存檔目錄
$ mkdir palSaved
需修改存檔目錄的權限,否則容器中的使用者無法有完整讀寫權限
(我懶得設權限 問就是 777)
$ chmod -R 777 ./palSaved

遊戲設定檔在本地目錄 ./palSaved/Config/LinuxServer/PalWorldSettings.ini(第一次運行後會自動生成)。
可參考 DefaultPalWorldSettings.ini 進行修改


第四步: 啟動容器
$ sudo docker compose up -d
(-d 表示在背景運行)
第一次啟動時會下載 Palworld 伺服器資料,可能會有一段時間 (依照你的網速決定)

// 停止容器
$ sudo docker compose stop

// 重啟容器
$ sudo docker compose restart

// 刪除容器 (刪除後須重新下載伺服器資料)
$ sudo docker compose down

// 查看容器 log
$ sudo docker compose logs -f


第一次啟動成功的狀態為以下

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

如果你想把原本的存檔遷移過來可以查看以下內容
(先完成上述步驟把伺服器檔案下載下來後停止容器再來執行)

修改第三步:
假設你的伺服器目錄為 ~/Steam/steamapps/common/PalServer (接下來依照此目錄為範例)
則存檔的目錄則在 ~/Steam/steamapps/common/PalServer/Pal/Saved/

複製存檔到 palworld-docker 目錄下 (用複製的避免翻車沒檔案救)
$ cp -r ~/Steam/steamapps/common/PalServer/Pal/Saved ~/palworld-docker/

刪除新的存檔 (沒有就跳過)
$ rm -r palSaved/

重命名複製過來的存檔目錄並給他權限
$ mv Saved/ palSaved/
$ chmod -R 777 palSaved/

以上就完成了資料遷移 (我自己是這樣搞沒翻車)
再來就繼續進行第四步啟動容器

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

如果你想更新 Palserver 容器版本請參考以下內容
(目前的更新都會向下兼容,不用擔心升級後遊戲存檔不能用的問題)

先把容器停止並刪除容器
$ sudo docker compose down


刪除舊版鏡像檔
使用以下命令列出所有鏡像,選擇刪除
$ sudo docker images
$ sudo docker rmi <IMAGE_ID>
(如果你原本就是 latest 標籤的,把他刪除再去拉取最新的 latest 標籤)


修改你的 docker-compose.yml
修改 image: hmes98318/palworld-docker 冒號後面的版本號,更改到你要的新版本
(如果想使用最新版,可以直接把冒號後的版本號改成 latest 標籤就好)
新版本有新增參數的話可以去 Github 上看有哪些新參數可以用
修改完成後就可以回到第四步啟動容器了


如果你原本就是 git clone 下來的,不想手動修改想用 git 來更新 docker-compose.yml 檔案可以使用此方法

拉取最新提交 (執行 git pull 或 git pull origin main 都行)
$ git pull

如果跳出以下錯誤表示你修改過本地檔案未保存與遠端分支衝突

執行 git status 查看未保存的檔案,並把 git pull 上寫的衝突檔案還原成剛 clone 下來的狀態
(如果 docker-compose.yml 中有參數要保留的記得先另外存起來)
(git status 底下的 Untracked files 應該會有地圖存檔及你創建的其他檔案,不用去動他)
$ git status
$ git restore docker-compose.yml

完成後再次 git pull 拉取最新提交
$ git pull


拉取完成後編輯 docker-compose.yml 放入你要的參數


再來就可以回到第四步啟動容器了
$ sudo docker compose up -d


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

61
-
LV. 45
GP 1k
2 樓 「星降る火龍廟」 r2010cj6gl6p
GP5 BP-
給推文效能疑問一點參考
CPU 2700X 環境 Ubuntu 22.04.3 LTS 跑 Linux版本的PalServer
啟動參數 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
服上最多7人連線(非公開),進度落在28等上下,2700X效能尚在Server能跑滿60FPS的邊緣
但是16G昨天加今天各種RAM吃到滿,滿了就Crash,直到今天加到32G才解決
只能說官方文件沒唬爛,16G基本32G穩定

這階段要長期架的不論是硬體上還是維運上建議三思
5
-
LV. 38
GP 60
3 樓 阿金 kprlling
GP0 BP-
折騰了快20小時,我和我朋友兩人看著樓主的文章還是找不到解決的辦法
目前可以確定
1.固定ip已取得
2.pull IMAGE也有了
3.tplink的port 8211也設定給主機了
4.使用的是trueNAS
5.有爬過reddit還是樓主你這份能成功而已

比較有疑惑的是
第三步: 創建存檔目錄 $ mkdir palSaved】
這步驟我們存檔資料夾並沒有因為初次運行完
出現資料?

所以發文想直接問樓主
想和您一步一步對步驟架設
下圖是最後跑出來目前的結果

真的不知道哪裡做錯了
再請樓主指導了,感謝您
如果能加DC,再拜託您了
DC:neo1789
0
-
LV. 23
GP 4
4 樓 Diz

善待新手・理性討論

Dizire
GP1 BP-
感謝大大的分享:
弄了幾天零碎時間 也成功了..
本身第一次接觸docker:
我先說一下我的使用環境
群暉NAS DSM 7.2 版 + zerotier 將電腦們都掛在一起
所有的步驟都依照 樓主大大的指令 就可以完成
但是有個地方要注意 就是
指令4.  $ sudo docker compose up -d
我需要鍵入多一個"-"
4. $ sudo docker-compose up -d 我才能執行(我不知道原因 但是這樣可行)
也跟朋友一起在nas上度過一個愉快的夜晚
謝謝大大的分享~~ ^^

1
-
LV. 36
GP 21
5 樓 ★熊熊★ how333ck8625
GP0 BP-
請問照上面執行我的雲端有執行成功一整天都沒毛病但到隔天早上的時候發生網路連接超時不知道為什麼會這樣,我打docker ps 他也是有在持續運行 cpu使用率正常但記憶體好像怪怪的(但沒有人玩為什麼記憶體好像爆高噎) 機器是R2d 2vcpu 16gb
0
-
LV. 39
GP 985
6 樓 ┌迷糊〃亞〞 KIJJY123
GP0 BP-
不好意思 可以問一下
因移轉伺服器時沒有 chmod -R 777 palSaved
兩天後才發現自動存檔沒有在執行
就算發現當下修改palSaved權限也不會自動存檔
現在只要重啟docker資料都會回朔到移轉時的樣子
請問要怎麼手動保存當下的存檔呢?

0
-
未登入的勇者,要加入 7 樓的討論嗎?
板務人員:(代管中)歡迎申請板主