首页
/ 1Panel 深度解析:现代开源 Linux 服务器管理面板的架构、安装与核心功能实现

1Panel 深度解析:现代开源 Linux 服务器管理面板的架构、安装与核心功能实现

2026-09-05 10:40:26作者:胡唯隽

1Panel 是一个现代化、开源的 Web 端 Linux 服务器管理面板,本文以项目官方文档(docs/README.de.md 所描述的项目核心内容)为骨架,结合当前仓库的源码实现,系统讲解 1Panel 的功能定位、安装部署方式、core/agent 双组件架构,以及主机监控、应用商店、网站与 SSL 管理、安全加固、备份恢复等核心能力的落地实现。读完后,你将理解 1Panel 的整体技术架构、各功能模块的源码组织方式,并掌握基于官方脚本与 Makefile 的部署和本地构建方法。

一、项目定位与五大核心能力

1Panel 定位为“Web 端 Linux 服务器管理面板”,其价值主张可归纳为五个方面,这也是后续所有功能模块的设计出发点:

  1. 高效管理:通过图形化 Web 界面管理 Linux 服务器,涵盖主机监控、文件管理、数据库管理、容器管理四大主线。
  2. 网站快速建站:深度集成 WordPress 等开源建站工具,简化域名绑定与 SSL 证书配置,实现一键完成。
  3. 应用商店:提供大量优质开源工具与应用,降低安装和升级门槛。
  4. 安全与可靠性:借助容器化技术和安全的应用部署实践缩小攻击面,并通过内置防火墙管理与审计日志进一步提升安全性。
  5. 一键备份与恢复:支持多种云存储后端,保障数据的完整性与可用性。

从仓库结构看,这五项能力分别对应 agent 目录下的不同服务模块:监控对应 dashboard.go,应用商店对应 app_install.go 等 app 系列文件,网站与 SSL 对应 website.gowebsite_ssl.go,安全对应 firewall 系列服务,备份对应 backup.gosnapshot.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.goDashboardService 实现。该服务对外暴露 LoadOsInfo(操作系统信息)、LoadBaseInfo(CPU/内存/磁盘/网络基础指标)、LoadCurrentInfo(实时负载)、LoadTopCPU/LoadTopMem(进程排行)等方法。从导入依赖看,指标采集基于 gopsutil/v4(disk/load/mem/net)以及自研的 psutil 封装(CPU、磁盘、进程、宿主机信息),实现了纯 Go 的跨平台指标读取。此外该服务还提供“快捷入口”(LoadQuickOptions/ChangeQuick)与应用启动器(LoadAppLauncher)能力,支撑仪表盘的个性化布局。

4.2 应用商店

“应用商店”对应 agent 侧的 app 模块群:

  • app_install.goAppInstallService 提供已安装应用的分页查询(Page)、存在性检查(CheckExist)、端口加载与连接信息查询(LoadPort/LoadConnInfo)、应用启停操作(Operate)、版本同步与升级(SyncAll/GetUpdateVersions)、参数修改(UpdateAppConfig)等完整生命周期接口;
  • app_sync_task.goapp_upgrade.go:负责应用仓库(应用目录)的同步与批量升级;
  • app_ignore_upgrade.go:支持将特定应用加入忽略升级列表;
  • compose_template.go:应用以 Docker Compose 模板形式部署,模板管理独立成模块。

数据模型上,agent/app/model 中的 app.goapp_detail.goapp_install.goapp_install_resource.goapp_tag.goapp_launcher.go 等文件分别承载应用元数据、版本详情、安装实例、附属资源(如关联数据库)、应用分类与启动器配置,形成“应用目录 → 应用详情 → 安装实例 → 资源依赖”的完整数据链路。

4.3 网站、域名与 SSL

文档强调的“一键绑定域名与配置 SSL”由 website.gowebsite_domain.gowebsite_ssl.go 共同实现,并围绕证书自动化拆分为专门服务:

底层 SSL 能力封装在 agent/utils/ssl 中(acme.godns_provider.goclient.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.gofirewall_sync.gofirewall_selection.go(在 iptables 与 nftables 后端间选择);
  • 底层实现位于 agent/utils/firewalliptables_helpernftables_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 备份、快照与云存储

“一键备份与恢复”分为两个层次:

  1. 快照(Snapshot)snapshot.go 配合 snapshot_create.gosnapshot_recover.gosnapshot_rollback.go,实现整机环境级别的创建、恢复与回滚;
  2. 备份(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.mddocs/README.zh-Hans.md

七、小结

1Panel 以“Web 图形化管理 Linux 服务器”为核心目标,通过 core/agent 双进程架构将“管理面”与“执行面”解耦:core 负责会话、认证与系统配置,agent 基于 gopsutil、Docker Compose、Nginx 组件化配置与多防火墙后端直接操作主机资源。其应用商店、网站与 SSL 自动化、多厂商云存储备份、快照恢复等能力均有清晰的源码模块支撑,配合 /api/v2 开放接口,既可作为运维人员的可视化操作台,也可作为自动化基础设施的管理节点。如需进一步了解某一模块的实现细节,可按本文给出的文件路径在当前仓库中继续深入。

登录后查看全文
热门项目推荐
相关项目推荐