LV. 43
GP 218

【密技】從零開始架設專屬伺服器 - GCP + Docker (新手適用)

樓主 幻月

小朋友才選稱號

linty1997
GP43 BP-
本篇參考並整合以下兩篇巴友貼文

依上兩篇文章匯集成更有善於新手的教學

服用本文章需要
1. 持有信用卡/金融卡
2. 擁有 Google 帳號
3. 不怕麻煩的心

架設步驟
一. 開通試用額度 (300美/91天)
1. 前往 GCP (google cloud platform) 並點選免費試用
2. 填入國家/地區 -> 同意並繼續 -> 選個人 填入基本資料/信用卡資料 完成註冊

二. 開啟 Compute Engine API
1. 前往控制台 並在左側選單選擇 Compute Engine -> vm 執行個體
2. 點選啟用 -> 啟用計費功能 -> 設置帳單帳戶 (點啟用後會彈出視窗)
並等待開通完成
(請放心設置, 只要不升級帳戶是不會收費的)

三. 設置 VM
1. 回到剛剛的 VM 執行個體 此時可以點上方藍色按鈕 建立執行個體
2. 進入后可幫VM命名, 地區選擇台灣, 機器大小可以自行依照需求調整
(範例中使用 N2D 高記憶體 2vCPU/16G記憶體, 預計順跑6人且預算控制100USD/月內 試用玩三個月)

3. 設置作業系統及硬碟大小
(範例中使用 Debian, 後面的指令都是依照該系統, 如有更改請自行查詢)
(這邊硬碟大小我設置為 100G, 如果沒有要備份其實不用這麼大 依情況自行更改)

4. 防火牆設置 - 1
勾選允許 HTTP/HTTPS 流量

5. 固定 IP 設置
展開 進階選項 - 網路 - 網路介面 - 展開 default
找到外部 IPv4 位址 - 下拉 保留靜態外部 IP 位址
輸入名稱後 選擇保留, 此時會變成你剛剛設置的名稱 點完成即可

6. 完成上述設置後 確認沒問題 即可建立
7. 防火牆設置 -2
等待機器設置的同時 可至 左側選單 - 虛擬私有雲網路 - 防火牆
上方 建立防火牆規則
名稱自己取, 目標 網路中的所有執行個體, 來源 IPv4 範圍 0.0.0.0/0
方向 輸入, 指定的通訊協定和埠 TCP/UDP 都勾選 輸入 8211 儲存

四. 連入 VM 進行基礎設置
1. 連入機器
一般來說初次會使用 網頁中的 ssh 按鍵先進行第一次連接
點擊後會談出一個視窗 然後授權 即可看到終端機

2. 切換為 root 權限
使用指令 sudo su
(教學方便操作 並避免新手遇到權限問題, root 權限高度風險 請不要在商業用途這樣使用)
如果想要更改密碼 並使用其他 ssh 工具接入 可使用 passwd 指令 設置新密碼
推薦使用 ssh key 的方式連線 較為安全
題外話 如果要使用 root 從其他 ssh 工具登入
ssh 工具如 WinSCP/Termius 都是不錯的選擇
使用指令 sudo nano /etc/ssh/sshd_config
找到 PermitRootLogin 並設置為 yes
保存後重啟 ssh 服務 指令 sudo systemctl restart sshd
即可使用 root 登入 ssh

3. 更新套件/安裝Docker
逐行複製貼上運行即可
套件更新
sudo apt update && upgrade

ufw 安裝/設置
apt-get install ufw
ufw allow 8211

Docker 安裝 (下方整段複製貼上)
sudo apt update && sudo apt install -y ca-certificates curl gnupg && sudo install -m 0755 -d /etc/apt/keyrings && curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg && sudo chmod a+r /etc/apt/keyrings/docker.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && sudo apt update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

至此基礎設置完成

五. 遊戲伺服器安裝/設置

1. 設置遊戲伺服器資料夾
(本人習慣在 home 底下新增 可自行調整位置, 但改了位置後續文件路徑也要記得修改)
新增伺服器文件夾
mkdir /home/palworld-server
移動到指定路徑
cd home/palworld-server
新增遊戲設置資料夾
mkdir data
設置權限
sudo chown -R 1000:1000 ./data
創建 docker 設置檔
nano docker-compose.yaml
複製並依照個人需求修改檔案
基本上就是把要的參數放到 environment 下並設置而已
例如 MAX_PLAYERS 為玩家人數上限
存檔並退出後即可
services:
    palworld-server:
        image: "kagurazakanyaa/palworld"
        container_name: "palworld-server"
        ports:
            - "8211:8211/udp"
        volumes:
            - "/home/palworld-server/data:/opt/palworld/Pal/Saved"
        environment:
            - SERVER_NAME=8787-server
            - SERVER_DESC=this is a 87 server:)
            - ADMIN_PASSWORD=""
            - SERVER_PASSWORD=""
            - MAX_PLAYERS=32
            - FORCE_UPDATE=true
        restart: always

2. 運行遊戲伺服器
運行
docker compose up -d

等待終端中的程序跑完 可使用
docker ps

查看到目前正在運行的容器(遊戲伺服器)資訊

此時應該可以使用剛剛保留的外部IP連入伺服器
假設我取得的ip為 127.0.0.1 則使用 127.0.0.1:8211 連接

如需修改遊戲設置 請至 data 資料夾底下 找到要修改的檔案進行修改
修改後可使用
docker restart 容器 ID 進行重啟並應用
以上圖為例 使用 ps 指令後 可知我的容器 id 為 1fc00b3facbc

以上如有錯誤 再煩指出
本教學僅供私下好友遊玩使用, 商業用途此配置為高風險
43
-
LV. 32
GP 34
2 樓 財子 alanwilly
GP1 BP-
因為只有三個月 能再教一篇 存地圖黨與人物的教學嗎
1
-
LV. 42
GP 320
3 樓 miniChuang eric71331
GP1 BP-
四人遊玩檔案繼, 開過的地圖迷霧恢復與 20帕魯終端機

開過的地圖迷霧恢復與 20帕魯終端機
1. 關閉伺服器

2. 開一個個人世界, 接著將伺服器的世界子ID資料夾完整複製
"C:Users"你的windows登錄使用者帳號"AppDataLocalPalSavedSaveGames世界ID"

3. 回到遊戲標題畫面, 選擇個人遊戲, 選擇伺服器的世界, 左下角選擇自訂難度, 修改最下面的終端機帕魯數量

4. 將這個世界子ID底下的 "WorldOption.sav" 覆蓋回伺服器的 "WorldOption.sav"

5. 啟動伺服器


四人遊玩檔案繼
1. 關閉伺服器 "docker stop 容器名稱"

原房主資料請見末尾
2.
到: C:Users"你的windows登錄使用者帳號"AppDataLocalPalSaved

3.
將裡面整包複製後透過 WinSCP 等FTP工具(方便)丟到 "cd /home/palword-server/data" 資料夾下。

4.
到: "/home/palword-server/data/Config/" 資料夾中,將 "WindowServer" 資料夾更名為 "LinuxServer"。

5. 啟動伺服器
在 SSH cmd 那邊輸入:"docker compose up -d" 開啟伺服器

6.登入遊戲創一隻角色

7. 關閉伺服器 "docker stop 容器名稱"

8.修改世界子ID
回到:"/home/palword-server/data/SaveGames/" 資料夾下,
比對:"/home/palword-server/data/SaveGames/0/" 中的世界子ID
修改:"/home/palword-server/data/SaveGames/舊世界ID/" 中的世界子ID

9.修改世界ID
回到:"/home/palword-server/data/SaveGames/" 資料夾下,
刪除:"/home/palword-server/data/SaveGames/0" 這個資料夾
修改:"/home/palword-server/data/SaveGames/舊世界ID"  的 "舊世界ID" 部分為 "0"

10. 啟動伺服器  "docker compose up -d"

完成。

至於能不能省去 6, 7 步驟,直接修改後面的部分,
我自己試了幾次感覺要先啟動一次伺服器,
讓他產生一次世界子ID編號才能修改,不是很確定有省略嘗試成功的歡迎分享方法呦。




(除了原房主 , 原房主資料請見末尾
1
-
LV. 45
GP 86
4 樓 Eonian

小朋友才選稱號

r26888841
GP0 BP-
請問佬有沒有辦法把Docker設定成開機自動啟動 剛剛查了一下 GCP好像可以有外置的定時開關機功能 如果只是和朋友玩的私人遊戲 應該可以定時將GCP關閉 在額度有限的前提下 可以盡量堆高記憶體或CPU
0
-
LV. 43
GP 346
5 樓 miniChuang eric71331
GP0 BP-
這次更新的更新方式:
ssh 指令介面輸入:
docker compose pull
docker compose up
0
-
LV. 30
GP 1
6 樓 你媽豬肉 jackey3301
GP0 BP-
強烈建議把ssh密碼登入跟root登入設定為no以及GCP上防火牆的ssh拿掉
前幾天一打開ssh就被駭了 , 現在整個專案直接被suspend
0
-
LV. 34
GP 0
7 樓 文鳥 tony123105
GP0 BP-
ssh 一直打不開怎麽辦;;

一直跳

SSH authentication has failed

In order to debug, please analyze the sshd logs on the target machine using the serial console.Reading the recent serial port output may also be helpful.

0
-
LV. 44
GP 44
8 樓 達達 dennis926
GP0 BP-
不好意思 想請問一下v0.1.4.0要如何更新
0
-
LV. 16
GP 384
9 樓 QSCFT qscft1210
GP0 BP-
完全沒摸過GCP&linux的菜鳥按照樓主步驟是架設成功了

但是請問有如何備份及還原伺服器資料的詳細步驟說明嗎?
0
-
LV. 45
GP 86
10 樓 Eonian r26888841
GP1 BP-
※ 引述《eric71331 (miniChuang)》之銘言
大佬 請問輸入指令後 卡在下圖這邊 可能是什麼狀況 能夠怎麼處理?
1
-
LV. 18
GP 0
12 樓 蹦該 yyy321123yyy
GP0 BP-
請問這要如何裝mod呢?
0
-
LV. 27
GP 296
13 樓 楓華在潛水(゚д゚) fenghua
GP0 BP-
您好 想請問一下這樣開服怎麼設定帕魯終端數量? .ini和.sav都丟入過了,但都沒有反應
0
-
LV. 36
GP 21
14 樓 ★熊熊★ how333ck8625
GP0 BP-
請問用這方式架設好了,如果要剔除玩家或是傳送玩家到身邊,這文本裡面的指令要在哪裡打阿??
另外想問怎獲得管理員的權限,看文本他說可以在遊戲裡面打指令不知道怎打
/KickPlayer {SteamID}
/TeleportToMe {SteamID}
0
-
LV. 28
GP 1
15 樓 X秀克斯 myshox
GP0 BP-
這可以開多人嗎
0
-
LV. 45
GP 90
17 樓 Eonian r26888841
GP0 BP-
請問一個現象 這種方法開的Server 會因為什麼問題自己重啟 使用docker ps看好像他偶爾都會非預期重啟 平常遊玩過程中是不常遇到 但很怕他晚上重啟 隔天上線帕魯都站在終端前餓著等死
0
-
LV. 15
GP 0
18 樓 Kevin kevink0623
GP0 BP-
你好 我想請問一下 如果自己在本地有架設伺服器 但現在想把伺服器資料轉移到雲端裡 該怎麼做呢 感謝
0
-
未登入的勇者,要加入 19 樓的討論嗎?
板務人員:(代管中)歡迎申請板主