1Panel 深度解析:现代开源 Linux 服务器管理面板的架构、安装与核心功能实现
1Panel 是一个现代化、开源的 Web 端 Linux 服务器管理面板,本文以项目官方文档(docs/README.de.md 所描述的项目核心内容)为骨架,结合当前仓库的源码实现,系统讲解 1Panel 的功能定位、安装部署方式、core/agent 双组件架构,以及主机监控、应用商店、网站与 SSL 管理、安全加固、备份恢复等核心能力的落地实现。读完后,你将理解 1Panel 的整体技术架构、各功能模块的源码组织方式,并掌握基于官方脚本与 Makefile 的部署和本地构建方法。
一、项目定位与五大核心能力
1Panel 定位为“Web 端 Linux 服务器管理面板”,其价值主张可归纳为五个方面,这也是后续所有功能模块的设计出发点:
- 高效管理:通过图形化 Web 界面管理 Linux 服务器,涵盖主机监控、文件管理、数据库管理、容器管理四大主线。
- 网站快速建站:深度集成 WordPress 等开源建站工具,简化域名绑定与 SSL 证书配置,实现一键完成。
- 应用商店:提供大量优质开源工具与应用,降低安装和升级门槛。
- 安全与可靠性:借助容器化技术和安全的应用部署实践缩小攻击面,并通过内置防火墙管理与审计日志进一步提升安全性。
- 一键备份与恢复:支持多种云存储后端,保障数据的完整性与可用性。
从仓库结构看,这五项能力分别对应 agent 目录下的不同服务模块:监控对应 dashboard.go,应用商店对应 app_install.go 等 app 系列文件,网站与 SSL 对应 website.go 与 website_ssl.go,安全对应 firewall 系列服务,备份对应 backup.go 与 snapshot.go。
二、快速安装
官方推荐的安装方式是运行快速开始脚本,按提示完成 1Panel 的安装:
curl -sSL https://resource.1panel.pro/quick_start.sh -o quick_start.sh && bash quick_start.sh
安装脚本会完成组件下载、服务注册与首次初始化。初始化完成后可通过浏览器访问面板默认端口进入管理界面,首次登录使用脚本生成的账号与端口信息。
安全提示:安装完成后请务必修改默认账号密码、面板端口,并关闭面板的公网暴露或绑定可信 IP。项目将安全问题视为高优先级事项,官方鼓励通过 SECURITY.md 中列出的渠道报告安全漏洞(文档中给出的联系邮箱为 wanghe@fit2cloud.com)。
三、总体架构:core 与 agent 双组件模型
从源码结构看,1Panel 采用“双后端进程 + 前端静态资源”的架构,这与 Makefile 中的构建目标一一对应:
- 1Panel-Core(控制端):入口为 core/cmd/server/main.go,负责面板的 Web 会话、认证鉴权、系统设置、用户组、备份记录、任务管理等“管理面”职责。对应构建目标
build_core_on_linux,产物名为1panel-core。 - 1Panel-Agent(执行端):入口为 agent/cmd/server/main.go,运行在被管理的 Linux 主机上,直接执行主机监控、文件操作、容器编排、数据库、网站、防火墙、快照等“执行面”职责。对应构建目标
build_agent_on_linux,产物名为1panel-agent。 - 前端:frontend 目录基于 Vue/Vite 构建,
build_frontend目标执行npm run build:pro产出静态资源,由 core 侧提供访问。
两个后端均为 Go 语言实现,CGO_ENABLED=0 纯静态编译,并通过 -trimpath -ldflags '-s -w' 精简二进制体积;Makefile 中还提供 upx_bin 目标用于进一步压缩产物。这种 core 与 agent 分离的设计,使同一套 agent 逻辑可以支撑单机管理与多节点纳管两种场景。
3.1 API 与接口规范
两个 main 入口的 Swagger 注解均声明了 @BasePath /api/v2,说明对外 API 统一为 /api/v2 前缀。注解中同时描述了开放 API 的鉴权方式:请求需携带 1Panel-Token(由 md5('1panel' + API-Key + UnixTimestamp) 计算)与 1Panel-Timestamp(Unix 秒级时间戳)两个 Header,例如:
curl -X GET "http://{host}:{port}/api/v2/toolbox/device/base" \
-H "1Panel-Token: <1panel_token>" \
-H "1Panel-Timestamp: <current_unix_timestamp>"
这意味着 1Panel 不仅提供 Web 界面,还具备可用于自动化编排的开放 API 能力。
3.2 配置文件
core 与 agent 各自携带一份 app.yaml 风格的配置文件,例如 core 侧的 core/cmd/server/conf/app.yaml:
base:
install_dir: /opt # 安装目录
mode: dev
is_demo: false
is_offline: false
port: 9999 # core 服务监听端口
username: admin
password: admin123
version: v2.0.0
log:
level: debug # 日志级别
time_zone: Asia/Shanghai
log_name: 1Panel-Core
log_suffix: .log
max_backup: 10 # 日志最大保留份数
agent 侧的 agent/cmd/server/conf/app.yaml 结构相同但缺少端口与账号字段(agent 侧的通信凭证由 core 下发管理),日志名为 1Panel。配置项与日志轮转策略(max_backup)与 log 包中的日志管理实现相配合。
四、核心功能的源码实现
4.1 主机监控与仪表盘
文档中的“主机监控”能力在 agent 侧由 dashboard.go 的 DashboardService 实现。该服务对外暴露 LoadOsInfo(操作系统信息)、LoadBaseInfo(CPU/内存/磁盘/网络基础指标)、LoadCurrentInfo(实时负载)、LoadTopCPU/LoadTopMem(进程排行)等方法。从导入依赖看,指标采集基于 gopsutil/v4(disk/load/mem/net)以及自研的 psutil 封装(CPU、磁盘、进程、宿主机信息),实现了纯 Go 的跨平台指标读取。此外该服务还提供“快捷入口”(LoadQuickOptions/ChangeQuick)与应用启动器(LoadAppLauncher)能力,支撑仪表盘的个性化布局。
4.2 应用商店
“应用商店”对应 agent 侧的 app 模块群:
- app_install.go:
AppInstallService提供已安装应用的分页查询(Page)、存在性检查(CheckExist)、端口加载与连接信息查询(LoadPort/LoadConnInfo)、应用启停操作(Operate)、版本同步与升级(SyncAll/GetUpdateVersions)、参数修改(UpdateAppConfig)等完整生命周期接口; - app_sync_task.go 与 app_upgrade.go:负责应用仓库(应用目录)的同步与批量升级;
- app_ignore_upgrade.go:支持将特定应用加入忽略升级列表;
- compose_template.go:应用以 Docker Compose 模板形式部署,模板管理独立成模块。
数据模型上,agent/app/model 中的 app.go、app_detail.go、app_install.go、app_install_resource.go、app_tag.go、app_launcher.go 等文件分别承载应用元数据、版本详情、安装实例、附属资源(如关联数据库)、应用分类与启动器配置,形成“应用目录 → 应用详情 → 安装实例 → 资源依赖”的完整数据链路。
4.3 网站、域名与 SSL
文档强调的“一键绑定域名与配置 SSL”由 website.go、website_domain.go 与 website_ssl.go 共同实现,并围绕证书自动化拆分为专门服务:
- website_acme_account.go:ACME 账户管理;
- website_ca.go:证书颁发机构(CA)管理;
- website_dns_account.go:DNS 账户配置,用于 DNS 验证签发证书。
底层 SSL 能力封装在 agent/utils/ssl 中(acme.go、dns_provider.go、client.go 等),Nginx 侧则通过 agent/utils/nginx/components 生成站点配置。网站还配套负载均衡(website_lb.go)、反向代理(website_proxy.go)、URL 重写(website_rewrite.go)与基础认证(website_auth_basic.go)等能力,覆盖典型建站场景。
4.4 防火墙与安全
“安全与可靠性”在源码中有明确落点:
- 防火墙服务 firewall.go 及其支撑文件 firewall_docker.go(Docker 容器端口防护)、firewall_setting.go、firewall_sync.go、firewall_selection.go(在 iptables 与 nftables 后端间选择);
- 底层实现位于 agent/utils/firewall:
iptables_helper与nftables_helper两套规则助手、docker_guard容器端口防护、lifecycle防火墙生命周期管理、command_diagnostic.go命令诊断工具; - 审计日志由 core 侧的 middleware/operation.go 中间件实现,对管理操作进行统一记录;
- 认证侧还包括 core/app/auth(会话认证、Passkey 通行密钥)以及 core/middleware 中的 IP 限制(
ip_limit.go)、CSRF 防护(csrf_protect.go)、密码过期检查(password_expired.go)等中间件,共同构成面板自身的安全防线。
4.5 备份、快照与云存储
“一键备份与恢复”分为两个层次:
- 快照(Snapshot):snapshot.go 配合 snapshot_create.go、snapshot_recover.go、snapshot_rollback.go,实现整机环境级别的创建、恢复与回滚;
- 备份(Backup):backup.go 按资源类型拆分为备份服务——应用(
backup_app.go)、Compose 项目(backup_compose.go)、容器(backup_container.go)、MongoDB/MySQL/PostgreSQL/Redis(对应backup_mongodb.go等数据库备份文件)以及网站(backup_website.go),并提供备份记录管理(backup_record.go)。
云存储后端是备份能力的延伸,agent/utils/cloud_storage/client 目录下实现了多厂商适配:阿里 OSS(ali.go)、腾讯云 COS(cos.go)、MinIO(minio.go)、S3 兼容存储(s3.go)、OneDrive(onedrive.go)、Google Drive(google_drive.go)、Kodo(kodo.go)、SFTP(sftp.go)、WebDAV(webdav.go)、本地存储(local.go)等,由 agent/utils/cloud_storage/cloud_storage_client.go 统一抽象调度,与文档所述“支持多种云存储解决方案”的描述完全吻合。
五、本地构建与开发
在具备 Go 与 Node.js 环境的机器上,可通过 Makefile 完成完整构建:
# 前端 + core + agent 一次性构建(Linux 目标)
make build_all
# 分步执行
make build_frontend # 进入 frontend/ 执行 npm install && npm run build:pro
make build_core_on_linux # 静态编译 core/cmd/server/main.go -> build/1panel-core
make build_agent_on_linux # 静态编译 agent/cmd/server/main.go -> build/1panel-agent
在 macOS 上可执行 make build_on_local,该目标会先清理前端静态资源目录(clean_assets 删除 core/cmd/server/web/assets),再以 GOOS=linux GOARCH=amd64 交叉编译出可在 Linux 上运行的二进制。构建产物默认输出到 build/ 目录,可用 make upx_bin 进一步压缩体积。
六、License 与安全
- 1Panel 采用 GNU General Public License v3(GPLv3)许可,见 LICENSE;
- 发现安全漏洞时,请按照 SECURITY.md 的指引联系官方(文档列出的联系方式为 wanghe@fit2cloud.com);
- 项目的多语言文档(德语、英语、简体中文等十余种)统一维护在 docs 目录,如 docs/README.de.md、docs/README.zh-Hans.md。
七、小结
1Panel 以“Web 图形化管理 Linux 服务器”为核心目标,通过 core/agent 双进程架构将“管理面”与“执行面”解耦:core 负责会话、认证与系统配置,agent 基于 gopsutil、Docker Compose、Nginx 组件化配置与多防火墙后端直接操作主机资源。其应用商店、网站与 SSL 自动化、多厂商云存储备份、快照恢复等能力均有清晰的源码模块支撑,配合 /api/v2 开放接口,既可作为运维人员的可视化操作台,也可作为自动化基础设施的管理节点。如需进一步了解某一模块的实现细节,可按本文给出的文件路径在当前仓库中继续深入。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00