ESP32物联网 自动浇水系统(三)

服务端上线树莓派 1Panel 部署指南

环境要求

组件

说明

服务器

Linux (CentOS/Ubuntu/Debian),已安装 1Panel

数据库

无需额外安装,使用 SQLite 自动创建

MQTT

内置 Broker,无需额外安装

Web 服务器

1Panel 内置 OpenResty (Nginx)

第一步:安装 OpenResty

  1. 登录 1Panel 管理面板

  2. 进入 网站 菜单

  3. 如提示未安装 OpenResty,按指引一键安装

第二步:发布并上传项目

在本地发布

# 在项目根目录执行
dotnet publish src/Esp32Watering.Server/Esp32Watering.Server.csproj \
  -c Release \
  -o publish

注意:在 Windows 上发布时不要指定 -r linux-x64,否则 Blazor WebAssembly 无法解析运行时包。发布输出的 DLL 是跨平台的,可直接部署到 Linux 服务器。

打包上传

  1. 将 publish 目录打包为 zip 格式(1Panel 不支持 rar)

  2. 进入 1Panel 文件 管理,上传 zip 包到服务器(如 /opt/esp32-watering/)

  3. 解压 zip 包

第三步:创建 .NET 运行环境

官方文档:https://1panel.cn/docs/v1/user_manual/websites/dotnet/

  1. 进入 网站 → 运行环境 → .NET

  2. 点击 创建运行环境

  3. 填写以下参数:

参数

值

说明

名称

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 端口,并手动映射容器端口(见下文)。

  1. 确认创建,等待 1Panel 自动拉取镜像并启动

第四步:创建网站

  1. 进入 网站 → 创建网站

  2. 类型

    :选择 运行环境

  3. 关联运行环境

    :选择上一步创建的 esp32-watering

  4. 域名

    :填写你的域名(如 watering.yourdomain.com)或留空使用 IP 访问

  5. 确认创建

配置 HTTPS(可选)

  1. 在网站设置中开启 HTTPS

  2. 申请 Let's Encrypt 免费证书

  3. 开启 强制 HTTPS

第五步:防火墙与端口映射

防火墙

在 1Panel 安全 → 防火墙 中放行以下端口:

端口

协议

说明

80/443

TCP

Web 访问

1883

TCP

MQTT Broker(如需外部设备连接)

容器端口映射(如需外部连接 MQTT)

1Panel 的 .NET 运行环境运行在 Docker 容器中,默认只映射了 Web 端口(5167)。如果 ESP32 设备在其他机器上需要连接 MQTT Broker,还需额外映射 1883 端口:

  1. 进入 网站 → 运行环境 → .NET

  2. 找到 esp32-watering,点击 编辑

  3. 在 端口映射 中添加:1883:1883(宿主机端口:容器端口)

  4. 保存并重启运行环境

如果 ESP32 设备和 1Panel 在同一台服务器上(如通过 127.0.0.1 连接),则不需要映射 1883 端口。

验证部署

查看运行状态

进入 网站 → 运行环境 → .NET,确认状态显示 运行中。

访问管理界面

浏览器打开 http://你的服务器IP(或已配置的域名),应看到设备总览页面。

测试 API

curl http://127.0.0.1:5167/api/devices

日志查看

  1. 进入 网站 → 运行环境 → .NET

  2. 找到对应的运行环境

  3. 点击 日志 查看实时输出

更新应用

  1. 在本地重新发布项目

  2. 打包为 zip 并覆盖上传

  3. 在 运行环境 中点击 重启

发表评论