Pelican Panel 如何取代传统游戏服务器面板
任何曾在空白虚拟机上搭建 Minecraft、DayZ 或 Satisfactory 专用服务器的人都深知其中的痛苦。首先要安装所需版本的 Java 或 SteamCMD,然后处理库冲突、配置 systemd 自动重启,还要想办法让朋友访问控制台而不必把整个宿主机的 SSH 密钥交出去。
多年来,Pterodactyl 一直是这个领域的事实标准。它是一个很棒的项目,但其代码库和管理后台已经明显过时,而且更新频率很低。开源项目 Pelican Panel 正是为取代它而来,重新思考了游戏服务器管理的架构设计。
底层架构
系统架构分为两个独立部分:Web 面板和主机代理。
Pelican Panel 的 Web 组件基于 Laravel 和 FilamentPHP 构建,负责处理界面、用户认证、权限管理、资源分配和数据库操作。得益于 Filament 的支持,面板拥有简洁的界面,方便分配管理员角色和监控节点负载。
第二个组件叫 Wings,是一个轻量级的 Go 守护进程,直接安装在运行服务器的节点上。Web 面板通过安全 API 向 Wings 发送指令,守护进程则负责管理 Docker 容器。
宿主机系统保持整洁。每个游戏进程都在隔离容器中运行,对 RAM、CPU 和磁盘都有严格限制。如果某个 Palworld 服务器因内存泄漏而疯狂占用资源,守护进程只会将其限制在规定范围内或直接重启,不会影响其他实例。
[ Веб-интерфейс Pelican ]
(Laravel + Filament)
│
REST API / WebSockets
│
▼
[ Демон Wings (Go) ]
│
Docker API (Socket)
┌─────────┴─────────┐
▼ ▼
[ Docker: MC ] [ Docker: CS2 ]
开箱即用的配置模板
在 Pelican 生态中,启动模板被称为 "eggs"(蛋)。这些是 JSON 清单文件,定义了基础 Docker 镜像、环境变量、启动脚本和游戏文件安装规则。
面板支持海量的预置配置库:
- SteamCMD 游戏:Counter-Strike、Rust、ARK、7 Days to Die、Enshrouded、Project Zomboid。
- Minecraft 构建版本:Vanilla、Paper、Sponge、BungeeCord、Waterfall。
- 语音服务器:TeamSpeak、Mumble、Lavalink 实例。
- Discord 机器人和 Python、Node.js、Java 实用工具服务。
- 数据库和监控:Redis、PostgreSQL、Prometheus、Grafana。
如果某个游戏在标准仓库中没有,你可以轻松创建自定义模板,只需指定 Docker 镜像和下载二进制文件的脚本即可。
实践示例:启动与隔离
在日常运维中,Pelican 处理各种常规任务:
- 用户创建和权限分配。你可以只授权给朋友查看控制台和重启按钮的权限,隐藏网络设置和文件编辑功能。
- 内置文件管理器和 SFTP。用户可以直接从浏览器或通过常用的 FTP 客户端上传模组和编辑配置文件,且只能访问自己的文件夹范围。
- 定时任务和触发器。自动备份到 S3 存储、基于 cron 的定时重启、向服务器控制台发送指令,无需折腾 crontab。
- 端口管理。面板会追踪已分配的端口并在各容器间分配,不会产生端口冲突。
适用人群
如果你在家中运行专用服务器,或为和朋友开黑而租用 VPS,Pelican 能让你免去终端操作的麻烦。节点只需配置一次,之后只需几次点击就能部署新游戏。
对于小型游戏托管服务商和社区来说,这是商业解决方案的完整替代品。项目采用 AGPLv3 开源许可证,积极维护,开箱即用,兼容现代 PHP 和 Docker 技术栈。
官方文档和安装指南可在官网 pelican.dev 获取,面板源代码可在项目的 GitHub 仓库中查看。
相关项目