尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Linux云服务器搭建《僵尸毁灭工程》私人服务器完整指南

发布时间:2026/9/16 18:56:00

资讯中心
01
ARTICLE

Linux云服务器搭建《僵尸毁灭工程》私人服务器完整指南

Linux云服务器搭建《僵尸毁灭工程》私人服务器完整指南
如果你和我一样想跟几个朋友在《僵尸毁灭工程》里开荒又不想被“房主不在线就没法进图”这件事绑住那在Linux云服务器上搭一个独立的私人服务器几乎是一劳永逸的解法。这游戏官方本来就提供了专门的 Dedicated Server 服务端文件只要你有正版游戏服务端可以免费拉取属于正常玩法不是什么钻空子的事。我自己前前后后搭过三四次从最早在Windows台式机上挂着到后来换成Linux云服务器长期运行踩过的坑不少这篇就把完整流程和避坑点一次性写清楚。这篇文章适合两类人一类是刚接触服务器的小白想开个服跟三五好友玩照着文章敲命令就能跑起来另一类是想从Windows平台迁到Linux平台、图稳定和省资源的进阶服主。我不会默认你懂Linux但也不会啰嗦到每个命令都讲一遍原理尽量做到“能抄作业也能看懂为什么”。1. 先想清楚为什么用Linux云服务器跑PZ而不是Windows或本地电脑1.1 自建服务器在PZ里到底是什么玩法《僵尸毁灭工程》的自建服务器指的就是游戏官方提供的独立服务端。它和单机存档最大的区别在于客户端和服务端完全分离服务端挂在一台7x24小时不关机的机器上房主下线了世界依然在运转其他朋友想什么时候进来都行。这一点在PZ这种生存游戏里非常重要。因为PZ一局动辄几十个小时如果每次都要等房主上线开电脑、加载存档、邀请人整个开荒节奏会被切得稀碎。有了独立服务器设定好规则之后它就是个小世界你有空就上线没空就放着哪怕全员离线世界本身也会按配置继续模拟或者按你的设置暂停。“私服”这个词在PZ社区里就是“私人服务器”的意思游戏官方对自建服务器完全开放没有限制。前提是客户端必须是正版服务器文件则不需要额外购买SteamCMD拉取即可。1.2 Linux比Windows更适合跑游戏服务器的三个原因我在Windows上跑过一阵子PZ服务端稳定性和资源占用都不太理想后来换到Linux云服务器之后差距一下就出来了。第一个原因是资源占用。PZ服务端本质是一个Java服务图形界面对它来说没有任何意义。Windows自带的桌面、进程管理、各种系统服务会白白吃掉几百MB内存而Linux服务器版只保留核心组件省下来的资源全部留给游戏本身。对一台只有4GB或者8GB内存的云服务器来说这差别很实在。第二个原因是维护方便。Windows服务器要远程改配置要么开远程桌面要么折腾各种第三方方案。Linux只需要SSH登录改一个配置文件、执行一条命令就能完成操作日志查看、状态监控也都可以在命令行完成。对服务器维护来说这种工作方式明显高效。第三个原因是可靠性。Linux服务器可以借助systemd把PZ服务变成系统服务开机自启、崩溃自动重启都能原生支持。Windows要做到同样的效果要么写计划任务要么额外装工具折腾不说稳定性也一般。1.3 服务器配置怎么选CPU、内存、带宽和磁盘估算很多人在选云服务器时第一句就问“多少钱”其实关键不在价格而在于“多少钱能买到够用的配置”。PZ服务端不吃显卡不吃高主频CPU最在意的是内存和稳定的网络链路。我按实际经验给一个参考场景CPU内存磁盘带宽2~4人小队2核4GB40GB SSD5Mbps4~8人集体开荒4核8GB60GB SSD5~10Mbps8人以上加大量MOD8核16GB100GB SSD10Mbps以上内存估算参考服务端基础占用大约2.5GB左右每多一个活跃玩家大约增加0.3~0.5GB如果同时在线人数多僵尸数量刷得多内存峰值会明显上浮。带宽方面PZ的同步走UDP协议同一时刻传输的数据量不大5Mbps带8个人正常情况下够用但如果你的朋友经常分头开车探索地图地图区块加载会比较频繁这时候10Mbps会更稳。磁盘空间别买小了。服务端本体虽然只有几个GB但存档会持续膨胀日志文件也会积累再加上创意工坊里订阅的MOD后期占用20GB以上很常见。建议至少40GB起步有条件直接上60GB或者100GB的SSD。2. 服务器端的准备初始化系统、创建专用用户、安装SteamCMD2.1 选择Ubuntu Server版本并完成初始化云服务器厂商提供的系统镜像里选Ubuntu Server 22.04 LTS或者24.04 LTS就好。这两个版本都是长期支持版软件源里的依赖包齐全踩坑的几率最小。CentOS目前官方维护力度已经减弱不推荐新手用了。拿到服务器后第一步永远是更新系统和安装基础工具sudo apt update sudo apt upgrade -y sudo apt install -y curl wget tar unzip lib32gcc-s1 sudo dpkg --add-architecture i386 sudo apt update这里的关键是lib32gcc-s1SteamCMD是32位程序需要32位运行库才能跑起来。后面那条dpkg --add-architecture i386是告诉系统启用32位软件源不然依赖装不上。2.2 为什么建一个独立用户而不是直接用root跑服务很多新手第一次拿到Linux服务器习惯用root用户一条命令敲到底包括直接跑游戏服务端。短期看没毛病长期看是给自己埋坑。PZ服务端只要被入侵拿到的是当前用户的权限。如果它是root对方直接接管整台服务器。如果不是root对方只能在那个用户目录里搞事情破坏范围很有限。另外如果某个配置写错了端口root用户执行时不会受到系统权限限制反而可能把系统级别的服务搞坏。所以建一个专用用户是Linux服务部署的常见做法sudo useradd -m -s /bin/bash pz sudo passwd pzsudo passwd pz会提示你给这个用户设置密码之后涉及到云服务器的SSH登录建议直接使用这个专用用户操作。2.3 安装SteamCMD的两种方式SteamCMD是Valve官方提供的命令行工具用来获取Steam游戏平台的内容包括游戏服务端文件。有两种安装方式推荐第二种。第一种是直接用包管理器安装sudo apt install -y steamcmd这种方式简单但Ubuntu仓库里的SteamCMD有时候版本偏旧而且会默认安装到系统目录目录结构不如自己管理清爽不是首选。第二种是官网下载压缩包放到用户目录下su - pz mkdir -p /home/pz/steamcmd cd /home/pz/steamcmd wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz tar -xzf steamcmd_linux.tar.gz解压之后目录里会有一个steamcmd.sh脚本。先执行一次让它自动更新自己chmod x steamcmd.sh ./steamcmd.sh第一次运行会下载Steam客户端运行组件多等一会儿看到Steam Console Client的提示符就说明安装成功了输入quit退出。这里有个值得注意的体验如果你的云服务商到Steam的网络链路一般SteamCMD的下载速度可能会不稳定表现为卡在某一步长时间不动。不要急着CtrlC给它三五分钟实在没反应再重试。这个阶段多试几次是正常的不是你的操作有问题。3. 拉取PZ服务端文件并完成核心配置3.1 用SteamCMD下载380870服务端进入pz用户后执行下面的命令su - pz mkdir -p /home/pz/pzserver /home/pz/steamcmd/steamcmd.sh force_install_dir /home/pz/pzserver login anonymous app_update 380870 validate quit解释一下这条命令做了什么方便你排查问题。force_install_dir指定服务端文件安装到哪个目录login anonymous表示匿名登录Steam下载服务端不需要账号app_update 380870是重点380870是《僵尸毁灭工程》专用服务器的App IDvalidate会校验已下载文件的完整性下载过程中断了就重跑这个命令它会自动补全缺失文件。下载过程中会看到Update state这样的进度信息从0.0开始走。整个过程可能需要几分钟到十几分钟取决于网络状况。下载完成后/home/pz/pzserver目录下会出现启动脚本start-server.sh和一系列游戏服务端文件。3.2 第一次启动生成配置档案并设置管理员密码服务端文件下载完还不能直接改配置得先启动一次让程序生成配置档案。第一次启动建议手动执行cd /home/pz/pzserver ./start-server.sh -servername myzomboid-servername后面跟的是你的存档名字可以不叫myzomboid建议取个你认识的名字后面配置文件和存档都会以这个名字命名。首次启动会提示你设置管理员密码输入两遍即可。这个密码很重要进游戏后要用它注册管理员身份别随便敲个123456就过去了。设置完密码后服务端会继续启动日志会刷出一大堆信息看到类似“SERVER STARTED”或者“Loading world”结束说明服务已经正常起来。第一次加载地图会比较慢等它完全就绪后按Ctrl C停掉进程。3.3 配置文件在哪里里面哪些参数值得改停掉服务端之后配置档案已经生成。路径在/home/pz/Zomboid/Server/myzomboid.ini用nano编辑它nano /home/pz/Zomboid/Server/myzomboid.ini不需要每个参数都弄明白重点关注下面这几个配置项示例值说明ServerNamemyzomboid服务器显示名玩家加入时看到的名称DefaultPort16261游戏主连接端口UDP协议SteamPort8766Steam查询端口UDP协议MaxPlayers8最大玩家数Password留空服务器密码留空就是无密码PVPfalse是否开启玩家互斗PauseEmptytrue服务器无人时暂停世界模拟省资源SaveWorldEveryMin5自动存档间隔分钟Publicfalse是否出现在Steam服务器公榜不想被陌生人加入就falseMods留空需要加载的MOD列表WorkshopItems留空创意工坊订阅项ID列表如果你朋友都是熟人组队PVP建议保持falsePZ里误伤本来就容易起冲突没必要给队伍加戏。PauseEmpty务必设为true没人上线时世界暂停这样不仅存档节奏更可控也能降低服务器空闲时的资源占用。MaxPlayers不要盲目调大。它只是一个准入上限实际占用的内存由同时在线人数决定。你开个8人服但有12个朋友都想来玩这时宁可在里面排队等待也不要加到12因为8GB内存的实际负荷摆在那。4. 把服务挂到systemd上开机自启、崩溃自动重启4.1 先解决“一关SSH窗口服务就断”的问题直接执行start-server.sh的情况下进程挂在你的SSH会话里。只要断开SSH连接正在运行的服务端大概率会被终止这是新手开服最常遇到的一个问题感觉“刚才还能连关了电脑就没了”。解决办法是用systemd把PZ服务注册成系统服务。这样它就脱离了SSH会话独立运行由Linux系统直接管理。服务器重启后PZ自动启进程意外退出后系统也会尝试重新拉起。4.2 编写PZ服务单元文件创建服务单元文件sudo nano /etc/systemd/system/projectzomboid.service写入以下内容[Unit] DescriptionProject Zomboid Dedicated Server Afternetwork.target [Service] Typesimple Userpz WorkingDirectory/home/pz/pzserver ExecStart/home/pz/pzserver/start-server.sh -servername myzomboid Restarton-failure RestartSec15 [Install] WantedBymulti-user.target保存后重新加载systemd配置并启用sudo systemctl daemon-reload sudo systemctl enable --now projectzomboidenable让服务开机自启--now表示立即启动。等几秒后查看状态sudo systemctl status projectzomboid看到Active: active (running)就说明服务已经由systemd托管现在你可以直接关闭SSH窗口服务端不会中断。这里有两处细节是实际的坑第一WorkingDirectory必须指向pzserver目录因为启动脚本依赖自身相对路径来加载资源第二RestartSec15是个比较稳妥的间隔太短了如果服务因某些配置问题反复崩溃系统会快速反复拉起进程反而把日志刷爆。4.3 日常维护用到的systemctl命令服务托管到systemd之后常用操作就这几条sudo systemctl status projectzomboid # 查看运行状态 sudo systemctl restart projectzomboid # 重启服务 sudo systemctl stop projectzomboid # 停止服务 journalctl -u projectzomboid -f # 实时查看日志想看服务端启动时的完整输出、排查连接问题、确认MOD加载情况都通过journalctl来看。-f参数是follow的意思实时滚动输出和直接在终端里跑服务器的效果差不多。5. 联网配置安全组、防火墙端口与客户端连接5.1 端口放行的完整说明PZ服务端需要两个UDP端口只要你搭过一次就会刻进DNA端口协议用途16261UDP游戏主连接端口8766UDPSteam查询/服务器列表端口注意都是UDP不是TCP。这一点我见过太多人栽在这。云控制台安全组里只放行TCP 16261玩家在Steam服务器列表里刷不出来直连也连不上而且服务端日志里没有任何报错看起来一切正常。原因就是协议选错了。5.2 云控制台安全组和Ufw防火墙的配置云厂商的服务器都有一个安全组/防火墙规则的概念相当于云平台层面的端口过滤。需要在控制台找到安全组入口添加入站规则UDP 16261来源0.0.0.0/0UDP 8766来源0.0.0.0/0如果你的安全组做得比较细只想让队伍里的人连也可以把来源改成你朋友家的公网IP但那样他们一旦换网络环境就进不来熟人社群直接放开更方便。云平台安全组放行之后服务器本机的防火墙也要确认。Ubuntu默认安装了ufw但不一定启用了。如果你之前启用过ufwsudo ufw allow 16261/udp sudo ufw allow 8766/udp这两条命令执行完sudo ufw status能看到两个端口处于allow状态就对了。5.3 客户端如何加入服务端正常启动、端口放行后朋友加入的方式有几种最简单的方式在Steam客户端左上角菜单“查看-服务器”切换到“收藏”标签手动添加你服务器的公网IP端口留16261就能看到服务器状态。这种方式不需要公榜适合Publicfalse的私服。另一种方式直接在PZ主界面选择“加入服务器”在文本框里填IP:16261回车搜索。输入IP地址时不要带前缀直接写数字地址加端口。如果服务器设置了Password首次连接时客户端会提示输密码。确认一次之后PZ会记住服务器信息之后加入都很顺利。6. 实际运行中常见的问题与排查经验6.1 内存不足导致进程被系统杀掉症状很典型服务器跑了一两天玩家开始频繁掉线登录时提示无法连接。查看服务状态时发现服务已经停止journalctl里能看到类似Out of memory的记录。解决方向有两个。一是降低实际负载把MaxPlayers调小把PauseEmpty保持为true不要加载太多大型MOD。二是给JVM合理分配内存。PZ服务端是Java应用启动脚本里可以调整堆内存上限。比如8GB内存的机器给系统和其他进程留2G服务端堆内存设成4G-5G比较合适。找到start-server.sh里的java命令调整-Xmx参数值或者直接修改同目录下对应的.json配置文件里的堆大小。需要提醒的是不要指望用swap来兜底。云服务器上的swap一般是磁盘模拟的内存速度远不如真实内存。PZ服务端在swap上运行会出现明显的卡顿和延迟飙升体验很差。6.2 玩家一直连接超时服务端却看起来正常这种情况优先检查三处。第一云控制台安全组是否放行了UDP 16261和8766。这是头号原因而且很容易被忽略因为TCP和UDP在大多数界面里是分开配置的新手经常只放了一个。第二服务端是否真的在监听端口。在服务器上执行ss -ulnp | grep -E 16261|8766如果没有任何输出说明服务端没有正常运行或者配置文件里的端口被改过。如果能看到进程监听这两个端口问题基本就在云平台安全组或本机防火墙。第三确认你用公网IP连接。有的玩家第一次开服在客户端填的是云服务器的内网IP那当然连不上。要给朋友提供公网IP私服一般是“公网IP:16261”的格式。6.3 连接上了但一直卡在加载地图/无法进入这个情况多见于服务端内存不足或地图生成繁忙。PZ服务端在第一次加载地图时会把整张地图切片加载进内存内存不足时加载速度非常慢甚至看起来像卡死。处理方法先把MaxPlayers调小停掉服务端用free -h确认系统当前内存余量再把JVM堆内存调大一些。也有小概率是存档损坏。如果某次突然断电或者kill -9强杀服务端存档有可能损坏表现就是地图加载卡住。这时候需要从备份恢复存档这也侧面说明定期备份有多重要。6.4 装了MOD但玩家进服提示MOD缺失PZ的MOD管理算是比较容易踩坑的环节。服务端要加载创意工坊MOD需要在配置里开启两件事OpenSteamWorkshoptrue SteamWebAPIKey你的Steam Web API密钥SteamWebAPIKey需要到Steam官网申请获得一串字符填进去。这个密钥的作用是让服务端以你的身份访问Steam创意工坊接口把订阅了的MOD内容拉取到服务器。然后在配置里声明要加载的MODWorkshopItems2853118932 ModsMap:MyMapWorkshopItems填的是创意工坊物品IDMods填的是MOD的官方名称。如果别人加载的MOD和你服务器不一致进服时客户端会提示缺失。最稳妥的做法是让每个玩家都在创意工坊订阅同一个MOD列表进服前先同步一次。还有一点值得提如果服务端下载创意工坊MOD失败服务端会跳过加载但不会明确告诉你失败原因。这时候去日志里搜workshop或steam关键词一般能看出网络原因导致下载失败多试几次或者换个时间段重新订阅再重启服务端。6.5 存档管理备份比什么都重要PZ的存档在哪里默认在用户目录下/home/pz/Zomboid/Saves/Multiplayer/myzomboid/这个目录里是整个世界的数据包括地图变化、角色、物品和僵尸状态。一旦损坏且没有备份整个开荒过程全没。我建议的备份策略是一天至少一次全量备份保留最近7天的版本。写一个简单的cron任务每天凌晨3点执行sudo crontab -e在里面加一行0 3 * * * tar -czf /home/backup/zomboid_$(date \%F).tar.gz -C /home/pz/Zomboid Saves这条命令把Saves目录整体打包文件名带日期方便按天恢复。虽然服务端运行中备份也能用但最稳妥还是服务端停机状态下备份。如果你只有一台服务器不想停机至少要确认备份文件不是0字节的。6.6 日志去哪看排查问题第一步永远是看日志。PZ服务端的运行日志一般输出到systemd的journal里用journalctl -u projectzomboid -f查看。游戏自身的操作日志在存档目录附近或者Zomboid/Logs子目录里。遇到连接不上、MOD加载失败、崩溃等问题先去这两个地方翻日志比盲目重启有效得多。有一点心得想分享每次改完配置后不要急着让全部人进服测试。先自己单客户端连进去跑几步、开车逛一圈、确认没报错再喊朋友。这个习惯能帮你避免很多“人多了一出问题就炸锅”的场面。最后再说一个很日常但容易被忽略的小技巧服务端长期运行后/home/pz/pzserver下的旧日志文件会越来越多建议定期清理或者配置一个按月自动清理的定时任务。磁盘满了比内存满了更难处理因为它不报错直到存不了档才意识到那时候往往已经晚了。搭PZ服务器这件事本质上是个“一劳永逸”的工程。第一次把所有步骤走通之后后面基本只需要偶尔看看日志、清清磁盘、备备份。希望这篇指南能让你跳过我在坑里趟过的弯路顺利把服务器跑起来。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。