前置条件
- 1已注册腾讯云账号
- 2已购买一台轻量应用服务器(2C4G 即可起步)
- 3服务器为全新或干净的系统(建议 Ubuntu 22.04)
万小智 AI 建站
AI 全栈建站交付,最低 360 元/年,首年送 .cn 域名,新客再送 2000 灵感值
1Panel 腾讯云部署完整指南
本教程将详细介绍如何在 腾讯云轻量应用服务器上部署国产开源服务器管理面板 1Panel,并完成从面板安装、安全加固、应用商店部署、建站上线,到用反向代理把本机 AI 服务安全暴露出去的完整流程。它是这一系列云服务教程的收尾篇 —— 前面几篇为了解决安全问题都把端口绑在了 127.0.0.1,这一篇负责把它们优雅地对外提供服务。
前置准备
在开始之前,请确保你已经完成以下准备工作:
- 已注册腾讯云账号
- 已购买一台轻量应用服务器(2C4G 即可起步)
- 服务器为全新或干净的系统(建议 Ubuntu 22.04)
警告
⚠️ 重要提醒:面板类软件建议安装在全新系统上。如果机器上已经装了 Nginx、MySQL、宝塔等其他面板,端口与目录冲突的概率很高,出问题很难回滚。真要在已有服务的机器上装,务必先做快照备份。
为什么用面板
命令行能力很强,但对「我要快速上线一个网站」这类诉求,面板的价值是把几十个步骤压缩成几次点击。
一句话定位
信息
1Panel = 现代化 Linux 服务器管理面板 + 应用商店一键部署 + 容器化隔离 + 国产团队活跃维护。
它把原本需要手写 Nginx 配置、手动申请证书、命令行安装数据库的操作,变成了界面上的表单填写。
面板能帮你做什么
| 能力 | 不用面板 | 用面板之后 |
|---|---|---|
| 建静态网站 | 手写 Nginx 配置 | 填域名 + 上传文件 |
| 申请 HTTPS 证书 | certbot 命令 + 配定时任务 | 勾选自动续签 |
| 装 MySQL / Redis | 编译或配源安装 | 应用商店点一下 |
| 看资源占用 | top / htop | 首页仪表盘实时图表 |
| 备份数据 | 自己写脚本 + cron | 图形化定时备份到对象存储 |
| 反代本机服务 | 手写配置懂 WebSocket | 填域名 + 目标地址 |
面板不能替你做什么
❌ 不能替代安全意识:弱密码 + 端口裸奔,再好的面板也救不了
❌ 不能替代故障排查能力:面板崩了照样要 SSH 进来看日志
❌ 不能盲目点升级:生产环境升级前先看变更日志、先备份
提示
💡 正确心态:把面板当成「减少重复劳动的工具」,而不是「不需要懂服务器的黑盒」。懂原理的人用面板效率最高,完全不懂的人容易在出问题时束手无策。
云服务器选型与端口规划
面板本身很轻,2C4G 就完全够用。真正吃资源的是你在面板里装的应用。
| 配置 | 能跑什么 | 适用场景 |
|---|---|---|
| 2C4G | 面板 + 1 到 2 个静态站 / 轻量应用 | 个人博客、练手环境 |
| 4C8G | 面板 + MySQL + Redis + 若干应用 | 小团队多站点 |
| 8C16G | 面板 + 数据库 + AI 服务并存 | 正式业务 + AI 应用混合部署 |
端口规划(安装前先想清楚):
| 端口 | 用途 | 建议暴露策略 |
|---|---|---|
| 22 | SSH | 建议改成非标准端口,或限制来源 IP |
| 80 / 443 | 网站 HTTP/HTTPS | 必须开放 |
| 面板端口 | 1Panel 管理界面 | 限制来源 IP,只允许自己的 IP 访问 |
警告
⚠️ 这一步请在腾讯云控制台的安全组里就配好。很多人的做法是「先全开,装完再收紧」,结果装完就忘了收紧,面板端口在公网裸奔几周。
前往 腾讯云轻量应用服务器 选购页;购买后先在控制台的「防火墙」里按上表放行,面板端口先不要放行,等安装完做了 IP 限制再开。
第一步:安装 Docker 与 1Panel
1. 安装 Docker(走腾讯云内网源)
1Panel 的应用商店基于容器,Docker 是前置依赖:
1apt-get update
2apt-get install -y ca-certificates curl gnupg lsb-release
3
4curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o docker-keyring.gpg
5gpg --dearmor -o /etc/apt/keyrings/docker.gpg docker-keyring.gpg
6
7echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
8
9apt-get update
10apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
11
12mkdir -p /etc/docker
13tee /etc/docker/daemon.json <<-'EOF'
14{
15 "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
16}
17EOF
18
19systemctl daemon-reload
20systemctl restart docker
21systemctl enable docker2. 执行安装脚本
1curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh
2sudo bash quick_start.sh安装过程中会交互式地要求确认几项配置:
| 配置项 | 建议 |
|---|---|
| 安装目录 | 默认 /opt 即可,不建议改到业务目录 |
| 面板端口 | 改成一个你自己记得住的非默认端口 |
| 安全入口 | 保留随机生成的那串,别改成 admin 之类好猜的 |
| 管理员账号 / 密码 | 密码务必用长随机串,不要用常见密码 |
| 是否装 OpenResty | 选装,后面建站会用到 |
警告
⚠️ 安装结束时终端会打印完整的访问地址(形如 http://<IP>:<端口>/<安全入口>),立刻截图或复制保存。事后忘了也很容易找回来 —— 用下面的命令查看:
11pctl user-info3. 确认 1pctl 命令可用
1pctl 是面板的命令行管理工具,忘记密码或查端口都靠它:
1# 查看面板访问信息(端口、安全入口、用户名)
21pctl user-info
3
4# 修改面板密码
51pctl update password
6
7# 修改面板用户名
81pctl update username
9
10# 查看全部可用命令
111pctl help提示
💡 不同 1Panel 版本的 1pctl 子命令名称会有调整,以 1pctl help 的实际输出为准。
第二步:首次登录与安全加固
浏览器打开刚才保存的访问地址,用安装时设置的账号密码登录。
必做的四件事
| # | 操作 | 路径 | 为什么重要 |
|---|---|---|---|
| 1 | 开启面板 HTTPS | 面板设置 → 面板 SSL | 否则账号密码以明文在网络上传输 |
| 2 | 确认端口非默认 | 面板设置 → 面板端口 | 躲开针对默认端口的批量扫描 |
| 3 | 开启两步验证 | 面板设置 → 安全 | 密码泄露时还有第二道防线 |
| 4 | 限制访问来源 IP | 腾讯云控制台安全组 | 只放行自己的出口 IP,直接让扫描器够不着 |
⚠️ 第 4 条是最有效的一条。如果你的家庭宽带 IP 会变,至少放行一个较小的网段(比如 /24),或者退而求其次:面板端口不对全网开放,只在需要远程管理时临时放行。
配置面板 HTTPS
在「面板设置 → 面板 SSL」里选择「Let's Encrypt 证书」或「自签证书」:
- 有域名且解析到了这台机器 → 选 Let's Encrypt,自动签发并续签
- 没有域名只用 IP 访问 → 只能选自签证书,浏览器会提示不安全,但至少加密了传输
警告
⚠️ 用 Let's Encrypt 时,验证方式选 HTTP 的话需要临时放行 80 端口;证书签发完成后可以把 80 关掉只留 443。
第三步:应用商店部署基础组件
进入「应用商店」,按需安装。第一次安装应用时会提示装 Docker 运行环境相关依赖,跟着引导走即可。
建议安装顺序
| 顺序 | 应用 | 用途 | 注意 |
|---|---|---|---|
| 1 | OpenResty | Web 服务器 / 反代底层 | 建站前必须装 |
| 2 | MySQL | 关系型数据库 | 记住生成的 root 密码 |
| 3 | Redis | 缓存 | 按需,非必需 |
| 4 | phpMyAdmin | 数据库管理界面 | 按需,用完建议关掉对外访问 |
警告
⚠️ 装 MySQL 时面板会生成随机 root 密码,务必立刻存到密码管理器里。应用容器重建时密码不变,但你要是忘了就只能进容器重置。
应用的安装参数怎么填
以 MySQL 为例,常见项:
| 参数 | 建议 |
|---|---|
| 端口 | 默认 3306;非必要不要改成奇怪端口,本机应用连接更方便 |
| 端口外部访问 | 关掉。让应用只监听容器网络,本机通过容器名访问最安全 |
| root 密码 | 用面板生成的随机串 |
| CPU / 内存限制 | 小机器建议设上限,避免某个应用吃满整机 |
警告
⚠️ 「端口外部访问」默认是关的,保持关闭是对的。很多安全事件都是把它打开又用了弱密码导致的。
第四步:建站上线
方案 1:静态网站(最快)
适合部署纯 HTML / 前端构建产物(Vue、React 打包结果)。
- 「网站 → 创建网站 → 静态网站」
- 填域名,选择已安装的运行环境(PHP 版本对纯静态站无影响)
- 创建完成后,把文件上传到该站点对应的目录(面板会显示路径,通常在
/opt/1panel/apps/openresty/.../www/sites/<域名>/index)
也可以用命令行上传:
1# 本地打包
2npm run build
3tar czf dist.tar.gz dist
4
5# 上传到服务器站点目录(路径以面板显示为准)
6scp dist.tar.gz root@<你的IP>:/tmp/
7ssh root@<你的IP> "cd /tmp && tar xzf dist.tar.gz && cp -r dist/* /opt/1panel/apps/openresty/openresty/www/sites/<你的域名>/index/"方案 2:WordPress / Halo(动态博客)
动态站需要数据库,步骤稍多:
- 确认已装 MySQL 与 PHP 运行环境
- 「网站 → 创建网站 → 一键部署」,选择 WordPress 或 Halo
- 填域名,绑定刚装的 MySQL(面板会自动建库)
- 安装完成后访问域名,进入程序的安装向导
警告
⚠️ 如果选择「一键部署」,数据库账号密码由面板自动创建并填充,装完不用再手填数据库连接信息。如果选择手动创建站点再自己上传程序,则需要手动建库并记住账号密码。
申请免费 SSL 证书
装完站点后立刻把 HTTPS 配上:
- 进入站点详情 → 「证书」
- 选择 「Let's Encrypt」 → 「申请」
- 验证方式:域名已解析到本机 → 选 HTTP;否则选 DNS 并按提示加解析记录
- 勾选「自动续签」
- 开启「强制 HTTPS」,把 HTTP 请求跳转到 HTTPS
警告
⚠️ 必须确认域名已经解析到这台服务器,否则验证会失败。刚买的域名解析生效可能需要几分钟到几十分钟,可以先 ping <你的域名> 确认 IP 正确。
第五步:用反向代理暴露本机 AI 服务(最实用的一节)
前面几篇教程为了让服务不裸奔,我们都把端口绑在了 127.0.0.1:
| 服务 | 本机端口 | 来自哪篇 |
|---|---|---|
| Open WebUI(Qwen3 前端) | 127.0.0.1:3000 | Qwen3 部署教程 |
| MaxKB 知识库 | 127.0.0.1:8080 | MaxKB 部署教程 |
| vLLM 推理接口 | 127.0.0.1:8000 | Qwen3 部署教程 |
这样安全了,但外网访问不了。用 1Panel 的反向代理,可以不手写一行 Nginx 配置就解决。
操作步骤
- 「网站 → 创建网站 → 反向代理」
- 填主域名,例如
kb.yourcompany.com - 代理地址填
http://<宿主机内网IP>:8080 - 创建后进入站点 → 证书,按上一步申请 SSL 并开启强制 HTTPS
⚠️ 最关键的一点:代理地址不能填 127.0.0.1。
信息
1Panel 的 OpenResty 本身跑在容器里,填 127.0.0.1 指向的是 OpenResty 容器自己,必然连接失败。要填宿主机的内网 IP(在腾讯云控制台可以看到),或 host.docker.internal。
| 填法 | 结果 |
|---|---|
http://127.0.0.1:8080 | ❌ 连不上,因为指向 OpenResty 容器自身 |
http://10.x.x.x:8080(内网 IP) | ✅ 正确 |
http://host.docker.internal:8080 | ✅ 也可用,但依赖 DNS 解析可用性 |
流式输出需要额外配置
AI 对话是流式返回(打字机效果),默认的反代配置会缓冲导致「卡住很久一次性刷屏」。需要在站点的「配置文件」里补几行:
1location / {
2 proxy_pass http://10.x.x.x:8080;
3 proxy_http_version 1.1;
4 proxy_set_header Upgrade $http_upgrade;
5 proxy_set_header Connection "upgrade";
6 proxy_set_header Host $host;
7 proxy_set_header X-Real-IP $remote_addr;
8 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
9 # 流式输出必须关缓冲
10 proxy_buffering off;
11 proxy_cache off;
12 proxy_read_timeout 300s;
13 client_max_body_size 100m;
14}警告
⚠️ proxy_buffering off 与 WebSocket 的两行 Upgrade 都不能少。前者管打字机效果,后者管实时推送。
顺手加一层访问控制
对外暴露的 AI 服务建议再加一层保护,在「站点 → 访问控制」里可以:
- 设置 Basic 认证(用户名密码)
- 限制来源 IP
- 限制请求频率
这样即使服务本身没有鉴权,前面还有一道门。
第六步:备份与维护
配置自动备份
「计划任务」里可以创建定时备份,把数据自动同步到对象存储,避免和整机一起挂掉:
| 备份对象 | 建议频率 |
|---|---|
| 网站文件 | 每天 |
| 数据库 | 每天 |
| 1Panel 面板数据/应用 | 每次重要变更后手动备份一次 |
警告
⚠️ 备份一定要异地。只存在同一台服务器上的备份等于没备份 —— 机器被误删或系统崩溃时,备份一起消失。腾讯云 COS 走内网不计流量费,是最省事的异地目标。
升级注意事项
1# 升级前先看一眼当前版本
21pctl version
3
4# 升级命令(按官方最新文档执行)
5# 建议先做一次备份再升级⚠️ 三条升级纪律:
- 升级前必须备份 —— 尤其是跨大版本
- 不要在生产高峰期升级 —— 选访问量最低的时段
- 先看更新日志 —— 有破坏性变更的版本要评估后再动
故障排查表
| # | 症状 | 可能原因 | 解决方案 |
|---|---|---|---|
| 1 | 安装脚本执行到一半报错 | 系统有残留服务占用端口 | 换全新系统重装;或先停掉冲突服务 |
| 2 | 1pctl: command not found | 环境变量未加载 | 重开 SSH 会话;或 source /etc/profile |
| 3 | 忘了面板访问端口 | 忘了记安装输出 | 1pctl user-info 查看 |
| 4 | 忘了面板密码 | 密码丢失 | 1pctl update password 重置 |
| 5 | 面板打不开 | 安全组没放行端口 | 腾讯云控制台防火墙放行对应端口 |
| 6 | 面板能开但样式错乱 | 容器异常或磁盘满 | df -h 查磁盘;重启面板服务 |
| 7 | 应用商店打开空白 | Docker 未运行 | systemctl status docker;重启 docker |
| 8 | 应用安装卡住 | 镜像拉取慢 | 确认 Docker 加速器已配并重启 docker |
| 9 | MySQL 装完连不上 | 没开外部访问或密码错 | 用面板显示的账号密码;本机应用优先走容器名访问 |
| 10 | 站点访问 403 | 目录没有 index 文件 | 检查站点根目录是否有 index.html |
| 11 | 站点访问 502 | 后端没起来 | 检查反代目标地址;目标服务是否在监听 |
| 12 | 反代 AI 服务连不上 | 填了 127.0.0.1 | 改成宿主机内网 IP |
| 13 | HTTPS 证书申请失败 | 域名没解析到本机 | ping 域名 确认 IP;DNS 生效需要时间 |
| 14 | 证书到期没自动续签 | 未勾自动续签或 80 被封 | 确认勾选;HTTP 验证需临时放行 80 |
| 15 | 上传大文件失败 | 上传大小限制 | 站点配置里调 client_max_body_size |
| 16 | AI 对话一次性刷屏 | Nginx 缓冲未关 | 配置加 proxy_buffering off |
| 17 | 磁盘占满导致面板异常 | 日志或备份堆积 | 清理旧备份与容器日志;挂载数据盘 |
| 18 | 升级后功能异常 | 跨版本破坏性变更 | 回滚到升级前的备份;先在测试环境验证 |
总结
通过本文,你在腾讯云上完成了 1Panel 国产服务器面板的部署,并打通了「面板管理 → 应用部署 → 建站上线 → HTTPS → 反向代理 AI 服务」的完整链路。
| 环节 | 关键点 |
|---|---|
| 心态 | 面板是减少重复劳动的工具,不是「不用懂服务器」的黑盒 |
| 安全 | 改端口、开面板 HTTPS、限来源 IP、强密码,四件事缺一不可 |
| 建站 | 静态站点上传即用;动态站先装数据库再一键部署 |
| HTTPS | 证书支持自动续签,务必勾选并开强制跳转 |
| 反代 | 代理地址填宿主机内网 IP;流式服务必须关 Nginx 缓冲 |
四条落地建议:
- 安全组在安装前就规划好 —— 「先全开后面再收紧」的结果通常是永远收不紧。
- 1pctl 的输出立刻截图保存 —— 端口和安全入口是随机生成的,忘了虽然能查回来,但半夜排查时会很抓狂。
- 反代这条链路一次配通收益最大 —— 它同时解决了 HTTPS、域名记忆、访问控制三个问题,比给每个服务单独配 Nginx 省事得多。
- 备份一定要异地 —— 本机备份挡不住整机故障,接一个对象存储的成本几乎可以忽略。
现在你可以回到前面几篇:把 Qwen3 的 Open WebUI、MaxKB 知识库都通过这里的反代挂上自己的域名 —— 当它们都有正式 HTTPS 地址可以在手机上打开时,这一系列教程才算真正落进了你的日常工作流。
常见问题
Q1Panel 和宝塔面板怎么选?
两者都能大幅降低服务器管理门槛,差异在定位。1Panel 是近年来新兴的国产面板,UI 现代化、基于容器部署应用隔离性更好、更新迭代快,且不强制绑定账号,适合重视清爽体验与容器化的用户。宝塔发展时间更长,插件生态与中文教程更多,Windows 版也成熟,新手遇到问题更容易搜到答案。如果你习惯 Docker 思维、想要干净现代的操作体验,选 1Panel;如果你更依赖海量图文教程和成熟插件市场,宝塔更稳妥。两者可以共存学习,但不建议在同一台生产机上同时安装。
Q装了面板会不会让服务器变不安全?
面板本身不是风险,错误的暴露方式才是。必须做四件事:一是改掉默认端口与随机安全入口,二是面板自身要开启 HTTPS,三是用防火墙限制能访问面板端口的 IP(只放行自己的出口 IP 最稳妥),四是不要用弱密码。做完这些,面板的安全性是可接受的。反过来,如果直接把默认端口和弱密码暴露在公网,任何扫描器都能在几天内找上门。
Q我能不能用 1Panel 管理前面几篇装的 AI 服务?
可以,而且这是它很实用的一个用法。前面几篇为了让服务不裸奔,我们都把端口绑在 127.0.0.1 上,外部访问就成了问题。用 1Panel 的「网站 → 反向代理」功能,可以给这些本机服务配一个域名并自动签发 SSL 证书,既解决了 HTTPS 又不用手写 Nginx 配置。需要注意的是,反向代理目标地址要填宿主机内网 IP 而不是 127.0.0.1,因为 1Panel 的应用本身跑在容器里。