首页
/ 1Panel 开源 Linux 服务器管理面板全解:核心特性、快速部署与源码导读

1Panel 开源 Linux 服务器管理面板全解:核心特性、快速部署与源码导读

2026-09-05 20:13:52作者:齐添朝

本文以官方多语言文档中的土耳其语版本 docs/README.tr.md 为核心素材,完整继承其项目定位、五大核心特性、一键安装步骤与安全/许可证说明,并深入当前仓库源码,逐一印证这些特性背后的模块实现、双二进制(core/agent)架构、1pctl 命令行工具与 i18n 多语言体系,帮助读者既能快速部署 1Panel,又能从源码层面理解它的设计与工程组织。

一、1Panel 是什么:定位与五大核心特性

文档开篇的定义很简洁:

1Panel, Linux sunucu yönetimi için modern, açık kaynaklı bir web tabanlı kontrol panelidir. (1Panel 是一款现代化的、开源的、基于 Web 的 Linux 服务器管理控制面板。)

即“一款现代、开源的 Linux 服务器管理面板”。文档随后列出五项核心能力,这些能力在仓库中均有对应的模块落点:

文档中的特性(土耳其语原文大意) 仓库中的实现落点
高效管理:主机监控、文件管理、数据库管理、容器管理 agent/service/monitor.goagent/service/file.goagent/service/database.goagent/service/container.go
快速建站:深度集成 WordPress 等建站软件,一键域名绑定与 SSL 配置 agent/service/website.goagent/service/website_ssl.goagent/service/website_acme_account.go
应用商店:高质量开源应用的一键安装与升级 agent/service/app_install.goagent/service/app_upgrade.goagent/service/app_sync_task.go
安全与可靠:容器化隔离、安全的应用部署、防火墙管理与日志审计 agent/service/firewall.goagent/service/firewall_docker.goagent/middleware/operation.go
一键备份与恢复:支持多种云存储方案,保障数据完整性与可用性 agent/service/backup.go 及 backup_*.go 系列文件、agent/utils/cloud_storage/ 下的多厂商云存储客户端

从源码结构看,上述模块都位于 agent/ 侧,即真正操作宿主机的“执行端”;而 Web 界面、登录认证、分组管理等则由 core/ 侧承担,这一分工在后面的构建与架构部分进一步展开。

二、快速开始:一键安装脚本

文档给出的官方安装方式是“Tek Tuşlu Yükleme”(一键安装):

curl -sSL https://resource.1panel.pro/quick_start.sh -o quick_start.sh && bash quick_start.sh

执行该脚本后按交互提示操作即可完成安装。文档建议读者查阅官方文档站点获取更多细节(docs.1panel.pro,此处不重复外链)。

安装完成后如何访问面板?结合仓库源码可以给出确切答案:

  • 安装入口地址的构成是 协议://地址:端口/安全入口1pctl user-info 子命令的输出逻辑就保存在 core/cmd/server/cmd/user-info.go:它从数据库读取 ServerPortSSLSecurityEntranceBindDomainSystemIP 等键值,拼出访问地址。若启用 SSL 则协议为 https,否则为 http;若配置了绑定域名则优先用域名替代 IP。
  • 凭据展示策略:只有当数据库中没有任何“登录成功”记录时,命令才会显示初始密码,否则密码以 ******** 掩码显示,并提示使用 1pctl update password 重置(见 core/cmd/server/cmd/root.go 中的 shouldShowInitialPassword 逻辑)。
  • 密码在数据库中是加密存储的,命令会用 EncryptKey 配置项解密后再打印(core/cmd/server/cmd/user-info.go),这解释了为什么安装脚本生成的凭据既安全又可通过命令行找回。
  • 权限要求:非 root 用户执行时,命令会直接提示改用 sudo 1pctl user-infocore/cmd/server/cmd/user-info.go)。

因此,推荐的部署验证流程为:

  1. 以 root 身份执行一键安装脚本;
  2. SSH 登录服务器执行 1pctl user-info,得到面板访问地址(http(s)://IP:端口/安全入口)与初始用户名/密码;
  3. 浏览器访问该地址完成首次登录,之后建议立即修改密码。

命令行入口一览

1pctl 对应 core 侧的 cobra 命令树,子命令定义在 core/cmd/server/cmd/ 目录下:

子命令 文件 用途
user-info user-info.go 查看访问地址与凭据
update update.go 更新面板/重置密码(1pctl update password
restore restore.go 恢复快照
reset reset.go 重置配置
version version.go 查看版本
app / listen-ip / user app.go 应用与网络监听相关操作

core 命令通过 ctl_conf.LoadFromFile("/usr/local/bin/1pctl", "BASE_DIR") 从 1pctl 可执行文件中解析出安装基目录,再定位 BASE_DIR/1panel/db 下的 SQLite 数据库(core/cmd/server/cmd/root.go)。这也从源码层面解释了为什么 1pctl 是安装后的“控制中枢”。

三、架构与工程组织:core 与 agent 双端

从仓库目录结构可以清楚看到 1Panel 是“双端”设计:

  • core/:核心服务(Web 服务、会话认证、分组、备份调度、脚本库、命令通道等),入口为 core/cmd/server/main.go,二进制名为 1panel-core
  • agent/:主机侧代理(监控、文件、容器、数据库、网站、备份执行、防火墙等),入口为 agent/cmd/server/main.go,二进制名为 1panel-agent,其根命令名为 1panel-agentagent/cmd/server/cmd/root.go);
  • frontend/:Vue 前端工程,构建产物被嵌入 core 的 Web 资源目录;
  • docs/:各语言 README 与翻译规范(docs/TRANSLATION.md)。

Makefile 完整描述了构建链路:

build_frontend:
	cd $(WEB_PATH) && npm install && npm run build:pro

build_core_on_linux:
	cd $(CORE_PATH) \
	&& CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) $(GOBUILD) -trimpath -ldflags '-s -w' -o $(BUILD_PATH)/$(CORE_NAME) $(CORE_MAIN)

build_agent_on_linux:
	cd $(AGENT_PATH) \
	&& CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) $(GOBUILD) -trimpath -ldflags '-s -w' -o $(BUILD_PATH)/$(AGENT_NAME) $(AGENT_MAIN)

build_all: build_frontend build_core_on_linux build_agent_on_linux

要点:前端先执行 npm run build:pro 产出静态资源(Makefile),随后 core、agent 两个 Go 模块分别在各自模块目录下以 CGO_ENABLED=0-trimpath -ldflags '-s -w' 静态编译(Makefile),最终产出 1panel-core1panel-agent 两个可执行文件(见 MakefileCORE_NAME/AGENT_NAME 变量)。在 macOS 上可用 build_on_local 目标交叉编译出 linux/amd64 二进制(Makefile)。

从源码结构看,这种拆分让 agent 可以在远程节点上独立运行、执行主机级操作,而 core 负责统一的 Web 入口与鉴权——这也为多节点管理类能力提供了基础。

API 风格与 API Key 鉴权

agent/cmd/server/main.go 的 Swagger 注释声明了 API 约定:

  • 所有业务接口挂在 /api/v2 前缀下(@BasePath /api/v2);
  • 支持 API Key 鉴权,Token 计算规则为 md5('1panel' + API-Key + UnixTimestamp)
  • 请求头需携带 1Panel-Token1Panel-Timestamp(当前 Unix 秒级时间戳)。

按该注释给出的调用示例(已转述自源码注释):

curl -X GET "http://{host}:{port}/api/v2/toolbox/device/base" \
  -H "1Panel-Token: <1panel_token>" \
  -H "1Panel-Timestamp: <current_unix_timestamp>"

路由组织方面,core 侧路由按资源拆分在 core/router/(如 ro_setting.goro_backup.goro_group.go),agent 侧同理位于 agent/router/(如 ro_dashboard.goro_website.go)。

四、多语言文档体系与 i18n 机制

本文素材所在的 docs/ 目录是 1Panel 的多语言 README 集合,共 15 个文件:README.tr.md(土耳其语,本文主体)、README.zh-Hans.mdREADME.zh-Hant.mdREADME.ja.mdREADME.ru.mdREADME.de.mdREADME.es-es.mdREADME.fr.mdREADME.ko.mdREADME.ar.mdREADME.id.mdREADME.ms.mdREADME.pt-br.mdREADME.fa.mdREADME.lo.md,以及维护翻译流程的 docs/TRANSLATION.md。文档内顶部的语言徽章即链接到这些文件(例如土耳其语徽章指向 docs/README.tr.md,根 README 见 README.md 第 29 行附近)。

翻译工作并非只有文档层面。程序自身的多语言同样由仓库内维护:

特性到源码的索引

结合文档五大特性,给出一份“从文档读到源码”的索引,方便延伸阅读:

关注点 建议阅读路径
主机监控/设备信息 agent/service/monitor.goagent/service/device.goagent/utils/psutil/
容器与 Compose agent/service/container.goagent/service/container_compose.goagent/utils/docker/
数据库(MySQL/PostgreSQL/MongoDB/Redis) agent/service/database.goagent/utils/mysql/agent/utils/postgresql/agent/utils/redis/
网站与 SSL agent/service/website.goagent/service/website_ssl.goagent/utils/ssl/
应用商店 agent/service/app_install.goagent/service/app_sync_task.go
备份(本地/容器/网站/数据库/云存储) agent/service/backup.goagent/service/backup_container.goagent/service/backup_website.goagent/utils/cloud_storage/
防火墙(iptables/nftables 双后端) agent/utils/firewall/iptables_helper/agent/utils/firewall/nftables_helper/
计划任务 agent/cron/cron.goagent/cron/job/
定时快照/SSL 自动续签 agent/cron/job/ssl.goagent/cron/job/website.go

此外,仓库根目录还包含 AI 管理相关能力(如 agent/service/tensorrt_llm.goagent/utils/ai_tools/ 下的 GPU/NPU 加速工具链),与土耳其语文档中“轻量 AI 管理平台”的项目描述相呼应;如需了解版本能力差异,根 README.md 中给出了 OSS/Pro/Ent 的特性对照表,可作为补充参考。

五、安全信息与许可证

文档“Güvenlik Bilgileri”一节明确给出:发现任何安全问题时,请通过邮件 wanghe@fit2cloud.com 联系项目方披露。根目录的 SECURITY.md 同样描述了漏洞披露流程,建议披露前先阅读。

文档“Lisans”一节的完整表述(转述自 docs/README.tr.md 第 71-75 行):

  • 本软件以 GNU 通用公共许可证 v3(GPLv3) 授权发布;
  • 只能以与许可证兼容的方式使用本软件;
  • 除适用法律要求或书面同意外,按许可证分发的软件按“原样”(OLDUĞU GİBİ / AS IS)提供,不带任何明示或暗示的保证或条件
  • 具体权限与限制条款以许可证原文为准,许可证全文见 LICENSE

这一点也与 agent/cmd/server/main.go 中 Swagger 注释声明的 @license.name GPL-3.0 相互印证:文档、协议文件与源码注释三处一致,均为 GPLv3。

六、小结与延伸阅读

回到本文的核心素材——土耳其语文档本身,它浓缩了 1Panel 的四个信息面:是什么(现代开源 Web 面板)、能做什么(管理/建站/应用商店/安全/备份五大特性)、怎么开始(一键安装脚本)、合规与披露(GPLv3 + 安全邮箱)。而结合仓库源码后可以补充回答四个更深层的问题:

  1. 代码怎么组织:core(Web 入口与鉴权)+ agent(主机执行端)+ frontend(Vue 前端)三大模块,由 Makefile 串联构建;
  2. 安装后怎么运维1pctl user-info1pctl update password 等子命令基于 SQLite 配置库(BASE_DIR/1panel/db)实现,源码位于 core/cmd/server/cmd/
  3. 多语言怎么落地:文档层是 docs/ 下 15 份语言版 README,程序层是 core/i18n/lang/agent/i18n/lang/ 的 YAML 文案包,含完整的土耳其语支持;
  4. 接口怎么调用/api/v2 前缀 + 1Panel-Token/1Panel-Timestamp 双请求头的 API Key 鉴权约定(见 agent/cmd/server/main.go 注释)。

建议的后续路径:先按本文第二节完成一次真实安装与访问,再沿第四节的“特性到源码索引”选取自己关心的模块(如备份或防火墙)深入阅读对应 service 目录,即可把文档级认知升级为源码级理解。

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