本综合指南将指导您在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:"

总结

通过以上配置和维护程序,您的饥荒服务器应该能为亚太地区的玩家提供稳定和优化的游戏体验。定期监控和维护是确保持续性能的关键。

最终建议:

  • 定期检查服务器日志以发现潜在问题
  • 将所有脚本和配置置于版本控制之下
  • 维护任何自定义修改的文档记录
  • 安排定期性能审查
  • 保持备份系统自动化并定期验证