服务端上线树莓派 1Panel 部署指南
环境要求
|
组件 |
说明 |
|---|---|
|
服务器 |
Linux (CentOS/Ubuntu/Debian),已安装 1Panel |
|
数据库 |
无需额外安装,使用 SQLite 自动创建 |
|
MQTT |
内置 Broker,无需额外安装 |
|
Web 服务器 |
1Panel 内置 OpenResty (Nginx) |
第一步:安装 OpenResty
-
登录 1Panel 管理面板
-
进入 网站 菜单
-
如提示未安装 OpenResty,按指引一键安装
第二步:发布并上传项目
在本地发布
# 在项目根目录执行
dotnet publish src/Esp32Watering.Server/Esp32Watering.Server.csproj \
-c Release \
-o publish
注意:在 Windows 上发布时不要指定
-r linux-x64,否则 Blazor WebAssembly 无法解析运行时包。发布输出的 DLL 是跨平台的,可直接部署到 Linux 服务器。
打包上传
-
将
publish目录打包为 zip 格式(1Panel 不支持 rar) -
进入 1Panel 文件 管理,上传 zip 包到服务器(如
/opt/esp32-watering/) -
解压 zip 包
第三步:创建 .NET 运行环境
官方文档:https://1panel.cn/docs/v1/user_manual/websites/dotnet/
-
进入 网站 → 运行环境 → .NET
-
点击 创建运行环境
-
填写以下参数:
|
参数 |
值 |
说明 |
|---|---|---|
|
名称 |
esp32-watering |
自定义名称 |
|
.NET 版本 |
9.0 |
选择对应版本 |
|
端口 |
5167 |
ASP.NET Core Web 端口 |
|
运行目录 |
/opt/esp32-watering/publish |
上传解压后的项目路径 |
|
启动命令 |
dotnet Esp32Watering.Server.dll |
项目入口文件 |
注意:
端口号必须与项目启动地址一致。
launchSettings.json中的端口(5167)仅开发环境生效,生产环境需通过环境变量ASPNETCORE_URLS=http://0.0.0.0:5167指定,或在启动命令中设置。MQTT Broker 端口(1883)由应用内部监听,不需要填在这里。如果 ESP32 设备需要从外部连接,需在服务器防火墙放行 1883 端口,并手动映射容器端口(见下文)。
-
确认创建,等待 1Panel 自动拉取镜像并启动
第四步:创建网站
-
进入 网站 → 创建网站
- 类型
:选择 运行环境
- 关联运行环境
:选择上一步创建的
esp32-watering - 域名
:填写你的域名(如
watering.yourdomain.com)或留空使用 IP 访问 -
确认创建
配置 HTTPS(可选)
-
在网站设置中开启 HTTPS
-
申请 Let's Encrypt 免费证书
-
开启 强制 HTTPS
第五步:防火墙与端口映射
防火墙
在 1Panel 安全 → 防火墙 中放行以下端口:
|
端口 |
协议 |
说明 |
|---|---|---|
|
80/443 |
TCP |
Web 访问 |
|
1883 |
TCP |
MQTT Broker(如需外部设备连接) |
容器端口映射(如需外部连接 MQTT)
1Panel 的 .NET 运行环境运行在 Docker 容器中,默认只映射了 Web 端口(5167)。如果 ESP32 设备在其他机器上需要连接 MQTT Broker,还需额外映射 1883 端口:
-
进入 网站 → 运行环境 → .NET
-
找到
esp32-watering,点击 编辑 -
在 端口映射 中添加:
1883:1883(宿主机端口:容器端口) -
保存并重启运行环境
如果 ESP32 设备和 1Panel 在同一台服务器上(如通过
127.0.0.1连接),则不需要映射 1883 端口。
验证部署
查看运行状态
进入 网站 → 运行环境 → .NET,确认状态显示 运行中。
访问管理界面
浏览器打开 http://你的服务器IP(或已配置的域名),应看到设备总览页面。
测试 API
curl http://127.0.0.1:5167/api/devices
日志查看
-
进入 网站 → 运行环境 → .NET
-
找到对应的运行环境
-
点击 日志 查看实时输出
更新应用
-
在本地重新发布项目
-
打包为 zip 并覆盖上传
-
在 运行环境 中点击 重启