1Panel 开源 Linux 服务器管理面板全解:核心特性、快速部署与源码导读
本文以官方多语言文档中的土耳其语版本 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.go、agent/service/file.go、agent/service/database.go、agent/service/container.go |
| 快速建站:深度集成 WordPress 等建站软件,一键域名绑定与 SSL 配置 | agent/service/website.go、agent/service/website_ssl.go、agent/service/website_acme_account.go |
| 应用商店:高质量开源应用的一键安装与升级 | agent/service/app_install.go、agent/service/app_upgrade.go、agent/service/app_sync_task.go |
| 安全与可靠:容器化隔离、安全的应用部署、防火墙管理与日志审计 | agent/service/firewall.go、agent/service/firewall_docker.go、agent/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:它从数据库读取ServerPort、SSL、SecurityEntrance、BindDomain、SystemIP等键值,拼出访问地址。若启用 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-info(core/cmd/server/cmd/user-info.go)。
因此,推荐的部署验证流程为:
- 以 root 身份执行一键安装脚本;
- SSH 登录服务器执行
1pctl user-info,得到面板访问地址(http(s)://IP:端口/安全入口)与初始用户名/密码; - 浏览器访问该地址完成首次登录,之后建议立即修改密码。
命令行入口一览
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-agent(agent/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-core 与 1panel-agent 两个可执行文件(见 Makefile 的 CORE_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-Token与1Panel-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.go、ro_backup.go、ro_group.go),agent 侧同理位于 agent/router/(如 ro_dashboard.go、ro_website.go)。
四、多语言文档体系与 i18n 机制
本文素材所在的 docs/ 目录是 1Panel 的多语言 README 集合,共 15 个文件:README.tr.md(土耳其语,本文主体)、README.zh-Hans.md、README.zh-Hant.md、README.ja.md、README.ru.md、README.de.md、README.es-es.md、README.fr.md、README.ko.md、README.ar.md、README.id.md、README.ms.md、README.pt-br.md、README.fa.md、README.lo.md,以及维护翻译流程的 docs/TRANSLATION.md。文档内顶部的语言徽章即链接到这些文件(例如土耳其语徽章指向 docs/README.tr.md,根 README 见 README.md 第 29 行附近)。
翻译工作并非只有文档层面。程序自身的多语言同样由仓库内维护:
- 核心文案资源位于 core/i18n/lang/ 与 agent/i18n/lang/,各含 14 个语言包:
zh.yaml、en.yaml、tr.yaml、ja.yaml、ru.yaml等——注意 agent/i18n/lang/tr.yaml 正是土耳其语的界面文案; 1pctl命令输出也走 i18n:user-info支持--language/-l参数切换输出语言(core/cmd/server/cmd/root.go),如1pctl user-info -l tr可以推断会输出土耳其语文案;- 语言初始化逻辑分别在 core/i18n/i18n.go 与 agent/i18n/i18n.go。
特性到源码的索引
结合文档五大特性,给出一份“从文档读到源码”的索引,方便延伸阅读:
| 关注点 | 建议阅读路径 |
|---|---|
| 主机监控/设备信息 | agent/service/monitor.go、agent/service/device.go、agent/utils/psutil/ |
| 容器与 Compose | agent/service/container.go、agent/service/container_compose.go、agent/utils/docker/ |
| 数据库(MySQL/PostgreSQL/MongoDB/Redis) | agent/service/database.go、agent/utils/mysql/、agent/utils/postgresql/、agent/utils/redis/ |
| 网站与 SSL | agent/service/website.go、agent/service/website_ssl.go、agent/utils/ssl/ |
| 应用商店 | agent/service/app_install.go、agent/service/app_sync_task.go |
| 备份(本地/容器/网站/数据库/云存储) | agent/service/backup.go、agent/service/backup_container.go、agent/service/backup_website.go、agent/utils/cloud_storage/ |
| 防火墙(iptables/nftables 双后端) | agent/utils/firewall/iptables_helper/、agent/utils/firewall/nftables_helper/ |
| 计划任务 | agent/cron/cron.go 及 agent/cron/job/ |
| 定时快照/SSL 自动续签 | agent/cron/job/ssl.go、agent/cron/job/website.go |
此外,仓库根目录还包含 AI 管理相关能力(如 agent/service/tensorrt_llm.go、agent/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 + 安全邮箱)。而结合仓库源码后可以补充回答四个更深层的问题:
- 代码怎么组织:core(Web 入口与鉴权)+ agent(主机执行端)+ frontend(Vue 前端)三大模块,由 Makefile 串联构建;
- 安装后怎么运维:
1pctl user-info、1pctl update password等子命令基于 SQLite 配置库(BASE_DIR/1panel/db)实现,源码位于 core/cmd/server/cmd/; - 多语言怎么落地:文档层是 docs/ 下 15 份语言版 README,程序层是 core/i18n/lang/ 与 agent/i18n/lang/ 的 YAML 文案包,含完整的土耳其语支持;
- 接口怎么调用:
/api/v2前缀 +1Panel-Token/1Panel-Timestamp双请求头的 API Key 鉴权约定(见 agent/cmd/server/main.go 注释)。
建议的后续路径:先按本文第二节完成一次真实安装与访问,再沿第四节的“特性到源码索引”选取自己关心的模块(如备份或防火墙)深入阅读对应 service 目录,即可把文档级认知升级为源码级理解。
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