香港伺服器
07.01.2025
如何在Mac上架設饑荒專用伺服器

本綜合指南將指導您在Mac OS上建立穩定的饑荒專用伺服器,特別關注香港伺服器租用環境的特殊需求。我們的優化配置確保亞太地區玩家獲得最低延遲,同時保持卓越的穩定性。
快速概覽:
本指南涵蓋完整的伺服器架設、效能優化、模組管理和維護流程。預計架設時間:30-45分鐘。
香港伺服器租用的主要優勢:
- 亞太玩家延遲更低(20-60ms)
- 區域遊戲連接更穩定
- 針對中國大陸訪問優化的路由
系統要求和準備工作
在開始伺服器架設之前,請確認您的Mac滿足以下關鍵規格:
- 作業系統: macOS 10.15 (Catalina)或更新版本
- 記憶體: 最低4GB記憶體(模組伺服器建議8GB)
- 儲存空間: 20GB可用空間(建議使用SSD以獲得更好效能)
- 網路: 穩定的網路連接,最低上傳速度10Mbps
- Steam帳號: 擁有饑荒遊戲的有效帳號
- 技術要求: 基本的終端機指令使用經驗
重要準備事項:
- 在開始之前備份所有現有遊戲資料
- 關閉所有執行中的饑荒程式
- 確保終端機擁有完全磁碟存取權限(系統偏好設定 → 安全性與隱私 → 隱私)
- 檢查防火牆設定以允許傳入連接
安裝前檢查清單
繼續前請完成以下步驟:
- ✓ 驗證系統滿足最低要求
- ✓ 安裝最新的macOS更新
- ✓ 檢查可用磁碟空間
- ✓ 測試網路連接速度
- ✓ 配置防火牆設定
- ✓ 驗證Steam帳號存取權限
SteamCMD安裝流程
按照以下步驟安裝SteamCMD,這是Steam的命令列版本,我們將用它來下載和更新伺服器檔案。
步驟1:建立並準備SteamCMD目錄
mkdir ~/steamcmd
cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz" | tar zxvf -
chmod +x steamcmd.sh
安裝驗證:
執行這些指令後,請驗證是否存在以下檔案:
- steamcmd.sh(可執行檔)
- package/steam_cmd_osx
- package/config.vdf
伺服器安裝和配置
步驟2:下載伺服器檔案
# 啟動SteamCMD
./steamcmd.sh
# 在SteamCMD中執行以下指令
login anonymous
force_install_dir ./ds_server
app_update 343050 validate
quit
伺服器設定配置
建立並配置必要的伺服器目錄和設定檔案。
步驟3:建立配置目錄
cd ~/steamcmd/ds_server/data
mkdir -p ~/.klei/DoNotStarve
mkdir -p ~/.klei/DoNotStarve/MyCluster/Master
在您的叢集目錄中建立一個名為’cluster.ini’的新配置檔案,使用以下優化設定:
[GAMEPLAY]
game_mode = endless
max_players = 6
pvp = false
pause_when_empty = true
vote_enabled = true
[NETWORK]
cluster_name = 香港饑荒伺服器
cluster_description = 針對亞太玩家優化
cluster_password = yourpassword
cluster_language = en
autosaver_enabled = true
tick_rate = 15
connection_timeout = 8000
[STEAM]
steam_group_only = false
steam_group_id = 0
steam_group_admins = false
[MISC]
console_enabled = true
max_snapshots = 6
[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10888
cluster_key = yourclusterkey123
安全注意事項:
請記得更改以下預設值:
- cluster_password:設定強伺服器密碼
- cluster_key:產生獨特的叢集金鑰
- bind_ip:如果公開託管,更改為您的伺服器IP
伺服器啟動配置
建立一個啟動腳本,使用最佳參數啟動您的伺服器。
步驟4:建立start_server.sh
#!/bin/bash
cd ~/steamcmd/ds_server/bin
# 設定環境變數
export FPS=30
export PROMETHEUS_METRICS=1
# 使用最佳參數啟動伺服器
./dontstarve_dedicated_server_nullrenderer \
-console \
-cluster MyCluster \
-shard Master \
-monitor_parent_process $$ \
-backup_logs \
-persistent_storage_root ~/.klei
啟動腳本配置:
設定腳本可執行權限並配置正確的權限:
chmod +x start_server.sh
chmod -R 755 ~/.klei/DoNotStarve
網路配置
配置網路設定以獲得最佳效能,這對香港伺服器租用尤為重要。
需要開放的連接埠:
# 添加到您的路由器/防火牆配置中
TCP: 10999 (遊戲連接埠)
UDP: 10999 (遊戲連接埠)
TCP: 8768 (Steam認證)
TCP: 27016 (主伺服器連接埠)
UDP: 27016 (主伺服器連接埠)
香港伺服器租用效能優化
實施這些專門的優化措施來提升亞太地區玩家的伺服器效能。
進階網路配置
# 添加到/etc/sysctl.conf以獲得最佳網路效能
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
區域效能提示:
- 配置CDN設定以加快資源傳遞
- 使用香港本地DNS伺服器以降低延遲
- 實施適當的TCP擁塞控制
- 如果可用,啟用BBR擁塞控制
記憶體和CPU優化
系統資源管理
# 建立資源管理腳本 (resource_manager.sh)
#!/bin/bash
# 設定程序優先順序
sudo renice -n -5 -p $(pgrep -f dontstarve_dedicated_server)
# 設定CPU親和性(如果有多個核心)
taskset -pc 0-3 $(pgrep -f dontstarve_dedicated_server)
# 限制記憶體使用
ulimit -v 8388608 # 將虛擬記憶體限制為8GB
模組整合與管理
正確配置和管理伺服器模組以獲得最佳效能。
建立modoverrides.lua
-- ~/.klei/DoNotStarve/MyCluster/Master/modoverrides.lua
return {
-- 模組配置範例
["workshop-462434129"]={ -- 伺服器API工具
configuration_options = {
["Restart_Interval"] = 0,
["Auto_Restart"] = true,
["Backup_Interval"] = 120
},
enabled = true
},
["workshop-378160973"]={ -- 全球位置
configuration_options = {
SHOWPLAYERSOPTIONS = 1,
FIREOPTIONS = 1,
OVERRIDEMODE = false,
SHAREMINIMAPPROGRESS = true
},
enabled = true
}
}
模組效能注意事項:
- 限制模組總數以維持伺服器穩定性
- 部署前單獨測試每個模組
- 監控模組對伺服器效能的影響
- 保持模組更新到最新版本
效能監控工具
建立監控腳本 (monitor.sh)
#!/bin/bash
# 伺服器監控腳本
while true; do
echo "=== 伺服器狀態檢查 $(date) ==="
# 檢查CPU使用率
ps aux | grep dontstarve_dedicated_server | grep -v grep
# 檢查記憶體使用情況
memory_usage=$(ps -o rss= -p $(pgrep -f dontstarve_dedicated_server))
echo "記憶體使用量: $((memory_usage/1024)) MB"
# 檢查網路連線
netstat -tunap 2>/dev/null | grep dontstarve_dedicated_server
# 檢查磁碟空間
df -h ~/.klei/DoNotStarve
# 記錄結果
echo "----------------------------"
sleep 300 # 每5分鐘檢查一次
done
進階效能調校
建立效能調校腳本 (tune_performance.sh)
#!/bin/bash
# 優化磁碟I/O
sudo blockdev --setra 4096 /dev/sda
# 配置TCP BBR
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 優化網路緩衝區
echo "net.core.rmem_max=16777216" | sudo tee -a /etc/sysctl.conf
echo "net.core.wmem_max=16777216" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_rmem=4096 87380 16777216" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_wmem=4096 87380 16777216" | sudo tee -a /etc/sysctl.conf
# 套用變更
sudo sysctl -p
效能監控指標:
- 伺服器回應時間:目標 < 100ms
- CPU使用率:持續 < 80%
- 記憶體使用:模組伺服器 < 6GB
- 網路延遲:亞太地區 < 150ms
- 磁碟I/O:監控效能瓶頸
伺服器維護和備份系統
建立自動備份腳本 (backup_system.sh)
#!/bin/bash
# 配置
BACKUP_DIR="$HOME/ds_backups"
SERVER_DIR="$HOME/.klei/DoNotStarve"
MAX_BACKUPS=5
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
# 如果備份目錄不存在則建立
mkdir -p "$BACKUP_DIR"
# 建立備份
tar -czf "$BACKUP_DIR/backup_$TIMESTAMP.tar.gz" -C "$SERVER_DIR" .
# 輪替舊備份
ls -t "$BACKUP_DIR"/backup_*.tar.gz | tail -n +$((MAX_BACKUPS + 1)) | xargs -r rm
# 記錄備份完成
echo "備份完成: backup_$TIMESTAMP.tar.gz" >> "$BACKUP_DIR/backup.log"
自動維護排程
建立維護腳本 (maintenance_scheduler.sh)
#!/bin/bash
# 配置
LOG_FILE="$HOME/ds_maintenance.log"
NOTIFICATION_EMAIL="admin@example.com"
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
perform_maintenance() {
log_message "開始維護例行程序"
# 優雅地停止伺服器
./stop_server.sh
sleep 30
# 備份伺服器檔案
./backup_system.sh
# 更新伺服器檔案
cd ~/steamcmd
./steamcmd.sh +login anonymous +force_install_dir ./ds_server +app_update 343050 validate +quit
# 清理舊日誌
find ~/.klei/DoNotStarve -name "*.log" -mtime +7 -delete
# 重新啟動伺服器
./start_server.sh
log_message "維護完成"
}
# 執行維護
perform_maintenance 2>&1 | tee -a "$LOG_FILE"
監控和警報系統
建立監控腳本 (server_monitor.sh)
#!/bin/bash
# 配置
ALERT_THRESHOLD_CPU=80
ALERT_THRESHOLD_MEM=90
ALERT_THRESHOLD_DISK=85
check_server_health() {
# 檢查CPU使用率
CPU_USAGE=$(ps aux | grep dontstarve_dedicated_server | grep -v grep | awk '{print $3}')
# 檢查記憶體使用率
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
# 檢查磁碟使用率
DISK_USAGE=$(df -h ~/.klei/DoNotStarve | tail -1 | awk '{print $5}' | sed 's/%//')
# 超過閾值時發出警報
if (( $(echo "$CPU_USAGE > $ALERT_THRESHOLD_CPU" | bc -l) )); then
send_alert "CPU使用率警告: ${CPU_USAGE}%"
fi
if (( $(echo "$MEM_USAGE > $ALERT_THRESHOLD_MEM" | bc -l) )); then
send_alert "記憶體使用率警告: ${MEM_USAGE}%"
fi
if [ "$DISK_USAGE" -gt "$ALERT_THRESHOLD_DISK" ]; then
send_alert "磁碟使用率警告: ${DISK_USAGE}%"
fi
}
send_alert() {
echo "[警報] $1" >> "$HOME/ds_alerts.log"
# 在此添加您偏好的警報方式(郵件、簡訊等)
}
故障排除指南
常見問題和解決方案:
- 伺服器當機:
# 檢查錯誤日誌 tail -f ~/.klei/DoNotStarve/server_log.txt # 重設伺服器檔案 cd ~/steamcmd ./steamcmd.sh +login anonymous +force_install_dir ./ds_server +app_update 343050 validate +quit
- 效能問題:
# 清理伺服器快取 rm -rf ~/.klei/DoNotStarve/cache/* # 重設世界狀態 rm -rf ~/.klei/DoNotStarve/MyCluster/Master/save/*
- 連線問題:
# 檢查網路狀態 netstat -tunap | grep 10999 sudo tcpdump -i any port 10999
安全措施
安全配置 (security_setup.sh)
#!/bin/bash
# 配置防火牆規則
sudo iptables -A INPUT -p tcp --dport 10999 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 10999 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8768 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 27016 -j ACCEPT
# 設定檔案權限
chmod 750 ~/.klei/DoNotStarve
chmod 640 ~/.klei/DoNotStarve/cluster.ini
# 啟用日誌記錄
sudo iptables -A INPUT -p tcp --dport 10999 -j LOG --log-prefix "DS_SERVER:"
總結
透過以上配置和維護程序,您的饑荒伺服器應該能為亞太地區的玩家提供穩定和優化的遊戲體驗。定期監控和維護是確保持續效能的關鍵。
最終建議:
- 定期檢查伺服器日誌以發現潛在問題
- 將所有腳本和配置置於版本控制之下
- 維護任何自訂修改的文件記錄
- 安排定期效能審查
- 保持備份系統自動化並定期驗證