MiGPT域名访问配置:通过公网远程控制

MiGPT域名访问配置:通过公网远程控制

【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 【免费下载链接】mi-gpt 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt

痛点与解决方案

你是否还在为只能在局域网内控制小爱音箱而烦恼?当你出差在外想远程启动家中设备,或在公司想提前让小爱音箱准备好迎接你的归来时,却发现无法访问?本文将通过域名解析+端口映射+反向代理三步方案,教你实现MiGPT的公网远程控制,让智能家居真正突破空间限制。

读完本文你将掌握:

  • 局域网服务暴露公网的完整配置流程
  • Docker容器端口映射与动态DNS设置
  • Nginx反向代理与HTTPS加密配置
  • 远程访问的安全加固方案

准备工作清单

前置条件具体要求检查方法
公网环境拥有公网IP或通过内网穿透服务访问IP138查看公网IP
域名资源已备案域名(推荐阿里云/腾讯云)域名管理平台确认备案状态
设备权限路由器管理员权限登录路由器管理后台测试
软件环境Docker 20.10+ 或 Node.js 20+docker -vnode -v 命令验证
项目文件完整的MiGPT项目代码git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt

局域网服务配置

Docker容器端口映射

MiGPT默认未暴露网络端口,需通过Docker运行时手动映射:

# 基础运行命令(仅局域网访问)
docker run -d --name migpt \
  --env-file $(pwd)/.env \
  -v $(pwd)/.migpt.js:/app/.migpt.js \
  idootop/mi-gpt:latest

# 添加端口映射(公网访问必备)
docker run -d --name migpt \
  --env-file $(pwd)/.env \
  -v $(pwd)/.migpt.js:/app/.migpt.js \
  -p 3000:3000 \  # 主机端口:容器端口
  --restart=always \  # 自动重启保障
  idootop/mi-gpt:latest

⚠️ 注意:若使用Node.js直接启动,需修改启动脚本添加端口监听(项目暂不支持,推荐Docker方案)

第三方服务地址配置

修改.env文件配置公网可访问的服务地址:

# .env 文件配置示例
TTS_BASE_URL=http://你的域名:3000/api  # 替换为实际域名和端口
# 或使用HTTPS(推荐)
TTS_BASE_URL=https://你的域名/api

网络穿透配置

路由器端口转发

以小米路由器为例,配置步骤如下:

mermaid

关键参数说明

  • 外部端口:公网访问使用的端口(建议避开80/443等常用端口)
  • 内部IP:运行MiGPT设备的局域网IP(可在路由器DHCP列表中固定)
  • 协议选择:TCP(MiGPT通信基于TCP协议)

动态DNS配置(无固定公网IP方案)

当宽带没有固定公网IP时,需配置动态DNS:

  1. 在域名解析平台添加A记录指向当前公网IP
  2. 在路由器中启用DDNS功能(以华为路由器为例):

mermaid

推荐使用阿里云解析API,配置示例:

# 安装阿里云CLI工具
npm install -g aliyun-cli

# 配置自动更新脚本(保存为ddns-update.sh)
#!/bin/bash
NEW_IP=$(curl -s http://ip138.com | grep -oP '\d+\.\d+\.\d+\.\d+')
aliyun alidns UpdateDomainRecord \
  --DomainName yourdomain.com \
  --RecordId 你的解析记录ID \
  --RR @ \
  --Type A \
  --Value $NEW_IP

域名与SSL配置

Nginx反向代理设置

创建Nginx配置文件/etc/nginx/conf.d/migpt.conf

server {
    listen 80;
    server_name migpt.yourdomain.com;  # 替换为实际域名
    
    # 强制HTTPS跳转
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name migpt.yourdomain.com;
    
    # SSL证书配置(Let's Encrypt示例)
    ssl_certificate /etc/letsencrypt/live/migpt.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/migpt.yourdomain.com/privkey.pem;
    
    # 安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    
    # 代理配置
    location / {
        proxy_pass http://127.0.0.1:3000;  # 转发到MiGPT端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    # API接口限流(可选)
    location /api {
        limit_req zone=migpt burst=10 nodelay;
        proxy_pass http://127.0.0.1:3000/api;
    }
}

SSL证书申请

使用Let's Encrypt免费证书:

# 安装Certbot
apt install certbot python3-certbot-nginx -y

# 获取证书并自动配置Nginx
certbot --nginx -d migpt.yourdomain.com

安全加固措施

访问控制配置

修改.migpt.js添加IP白名单限制:

// .migpt.js 安全配置部分
module.exports = {
  // ...其他配置
  security: {
    allowedIPs: [
      "192.168.1.*",  // 允许局域网访问
      "你的常用公网IP"  // 允许指定公网IP访问
    ],
    apiKey: "生成随机字符串作为访问密钥"  // 用于API访问认证
  }
}

防火墙规则

# 设置UFW防火墙规则
ufw allow 22/tcp  # 保留SSH端口
ufw allow 443/tcp  # 允许HTTPS
ufw allow 3000/tcp  # 仅允许本地访问MiGPT端口
ufw default deny incoming
ufw enable

远程控制测试

功能验证清单

测试项测试方法预期结果
基础连接curl https://migpt.yourdomain.com/api/health返回{"status":"ok"}
语音指令通过手机4G网络发送"小爱同学,查询天气"音箱正确响应天气信息
TTS服务调用第三方TTS接口听到清晰的自定义语音回复
安全防护使用未授权IP访问返回403 Forbidden

常见问题排查

mermaid

总结与展望

通过本文配置,你已成功将MiGPT服务暴露至公网,实现随时随地的远程控制。关键步骤包括:

  1. Docker容器端口映射确保服务可访问
  2. 路由器端口转发打通公网通道
  3. Nginx反向代理提供域名访问和SSL加密
  4. 多层次安全防护保障服务安全

未来MiGPT将支持内置Web管理界面和更完善的远程控制功能,敬请关注项目更新。

🔔 如果你觉得本文有帮助,请点赞收藏,并关注后续的「MiGPT高级应用系列」教程

【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 【免费下载链接】mi-gpt 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值