Skip to content

wick233/Move-Car

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

挪车通知系统

一个超简单的挪车通知小工具!把链接贴车上,有人需要你挪车时,手机自动收到通知。

这是什么?

想象这个场景:你的车停在路边,有人被你挡住了想让你挪车。传统做法是在车上贴个手机号,但这样会暴露隐私,还可能被骚扰。

有了这个系统,你只需要:

  1. 在车上贴一个网址(二维码)
  2. 别人访问这个网址,点击"通知车主"
  3. 你的手机立刻收到推送通知(像收微信消息一样)
  4. 点击通知就能看到对方的留言和位置

功能亮点

  • 一键通知车主,手机立刻收到推送
  • 对方可以告诉你在哪(自动显示地图)
  • 你可以回复"我来了",对方也能实时看到
  • 支持 Apple 地图和高德地图
  • 全程不泄露手机号

快速开始(5分钟搞定)

准备工作

你需要:

  1. 一台服务器(阿里云、腾讯云等,最便宜的就行)
  2. 一部 iPhone(用来接收通知)
  3. 基本的电脑操作能力(会复制粘贴命令就行)

第一步:安装 Docker

Docker 是一个可以"一键启动"程序的工具,不用自己装一堆乱七八糟的东西。

# 复制这条命令,粘贴到服务器终端,回车
curl -fsSL https://get.docker.com | sh

# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker

第二步:下载项目文件

# 克隆项目(就是把代码下载下来)
git clone https://github.com/你的用户名/Move-Car.git
cd Move-Car

或者直接把项目文件上传到服务器。

第三步:配置你的信息

# 复制配置文件模板
cp .env.example .env

# 编辑配置文件
nano .env

现在先不用管里面的内容,我们先启动服务。

第四步:启动服务

# 一键启动!
docker compose up -d

# 看到类似这样的提示就成功了:
# ✔ Container bark-server    Started
# ✔ Container movecar-server Started

第五步:设置手机接收通知

这一步很重要!需要用手机上的 Bark App 接收通知。

1. 在 iPhone 上安装 Bark

  • 打开 App Store,搜索 "Bark"
  • 下载安装(免费的)

2. 添加你自己的推送服务器

  • 打开 Bark App
  • 点击右上角的"+"
  • 服务器地址填:http://你的服务器IP:8080
    • 例如:http://123.45.67.89:8080
  • 点击"注册"

3. 获取你的推送地址 注册成功后,Bark 会显示一个地址,类似:

http://123.45.67.89:8080/aBcDeFg123

把这个完整地址复制下来!

4. 填到配置文件里

# 编辑配置文件
nano .env

# 找到 BARK_URL 这一行,改成你刚才复制的地址:
BARK_URL=http://你的服务器IP:8080/aBcDeFg123

# 可选:填写备用电话(推送失败时对方能看到)
PHONE_NUMBER=138xxxxx356

# 按 Ctrl+O 保存,按 Ctrl+X 退出

5. 重启服务让配置生效

docker compose restart movecar-server

第六步:测试一下

1. 打开浏览器访问

http://你的服务器IP:3000

2. 模拟挪车请求

  • 输入留言:"测试一下"
  • 点击"一键通知车主"

3. 检查手机 几秒钟后,你的 iPhone 应该会收到一条推送通知,显示"挪车请求"。

✅ 看到通知了?恭喜,配置成功!

❌ 没收到?往下看常见问题。

实际使用

车主怎么用?

完成上面的配置后:

1. 生成二维码

  • 访问这个网站:https://cli.im/url
  • 输入你的挪车服务地址:http://你的IP:3000
  • 点击生成
  • 下载二维码图片

2. 打印贴车上

  • 把二维码打印出来(建议塑封防水)
  • 贴在车窗或仪表台
  • 加一句提示:"需要挪车?扫码通知我"

3. 收到通知后

  • 手机会弹出推送(就像收到微信消息)
  • 点击推送会打开确认页面
  • 看到对方的留言和位置(如果对方分享了)
  • 点击"我已知晓,正在前往"
  • 对方手机上会实时显示你的回复

别人怎么通知你?

方式一:扫二维码

  1. 扫描你车上的二维码
  2. 打开挪车页面
  3. 可以输入留言(例如:"你挡我出口了")
  4. 可以分享位置(让你知道车在哪)
  5. 点"通知车主"
  6. 等待车主回应

方式二:直接访问网址 如果没二维码,直接在浏览器输入:

http://你的IP:3000

为什么不分享位置会延迟30秒?

设计考虑

  • 分享位置:立刻发送通知(因为有具体信息)
  • 不分享位置:延迟 30 秒(给对方反悔或补充信息的时间)

这样避免误触或恶意刷屏。

配置域名(可选但推荐)

用 IP 地址访问不太方便,配个域名会好很多。

前提条件

  • 拥有一个域名(阿里云、腾讯云可以买,几十块一年)
  • 域名已经解析到你的服务器 IP

使用 Nginx 配置 HTTPS

1. 安装 Nginx 和证书工具

sudo apt install nginx certbot python3-certbot-nginx

2. 创建 Nginx 配置

sudo nano /etc/nginx/conf.d/move.你的域名.com.conf

写入以下内容:

server {
    listen 80;
    server_name move.你的域名.com;

    location / {
        proxy_pass http://127.0.0.1:3000/;
        proxy_http_version 1.1;
        proxy_read_timeout 3600;

        # WebSocket 支持
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 正确传递协议信息(重要!)
        proxy_set_header Host $http_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;
    }
}

3. 申请免费 SSL 证书

# 测试配置
sudo nginx -t

# 重载配置
sudo nginx -s reload

# 申请证书(会自动配置 HTTPS)
sudo certbot --nginx -d move.你的域名.com

4. 搞定! 现在可以用 HTTPS 访问了:

https://move.你的域名.com

更安全,而且浏览器不会提示"不安全"。

配置说明

环境变量文件 .env

配置项 说明 示例 必填吗
PORT 服务运行的端口 3000 否(默认3000)
BARK_URL Bark推送地址 http://IP:8080/key
PHONE_NUMBER 备用联系电话 13800138000

端口用途

  • 8080:Bark 推送服务(手机接收通知)
  • 3000:挪车通知网页服务

常见问题

收不到推送通知?

检查清单

  1. Bark App 设置对了吗?

    # 手动测试推送
    curl "http://你的IP:8080/你的key/测试消息"

    手机应该立刻收到"测试消息"的推送。

  2. 服务启动了吗?

    docker ps
    # 应该能看到两个容器在运行:bark-server 和 movecar-server
  3. 配置文件对了吗?

    cat .env
    # 检查 BARK_URL 是不是你从 Bark App 复制的完整地址
  4. 防火墙开了吗?

    # Ubuntu/Debian 开放端口
    sudo ufw allow 3000
    sudo ufw allow 8080
    
    # CentOS 开放端口
    sudo firewall-cmd --permanent --add-port=3000/tcp
    sudo firewall-cmd --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload

网页打不开?

可能原因

  1. 服务没启动

    # 检查服务状态
    docker ps
    
    # 重启服务
    docker compose restart
  2. 端口没开放(参考上面的防火墙配置)

  3. IP 地址不对

    # 查看服务器公网 IP
    curl ifconfig.me

定位功能不能用?

原因分析

  • 浏览器的定位功能只在 HTTPS 下可用(HTTP 不行)
  • 本地测试(localhost)可以用 HTTP
  • 生产环境必须配置 HTTPS

解决办法

  1. 配置域名和 HTTPS(参考上面的 Nginx 配置)
  2. 或者在手机上允许浏览器使用定位权限

生成的链接是 HTTP 而不是 HTTPS?

这个问题已经在最新版本中修复了!如果你还遇到:

检查 Nginx 配置: 确保有这两行:

proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

检查 Node.js 配置server.js 里应该有:

app.set('trust proxy', true);

都配好后重启服务:

sudo nginx -s reload
docker compose restart movecar-server

重启后数据丢了?

这是正常的

  • 当前版本使用内存存储(速度快,但重启会丢失)
  • 通知记录只需要短期保存(10分钟到1小时)
  • 如果需要长期保存,可以改用 Redis(稍微复杂一点)

一般来说,挪车通知都是临时的,丢失也不影响使用。

想改端口?

修改 .env 文件

PORT=8888

修改 docker-compose.yml

ports:
  - "8888:3000"  # 左边是外部端口,右边是容器内部端口

重启服务

docker compose down
docker compose up -d

维护命令速查

Docker 版本

# 查看运行状态
docker compose ps

# 查看日志(出问题时看这个)
docker compose logs -f

# 重启服务
docker compose restart

# 停止服务
docker compose down

# 更新并重启
docker compose pull
docker compose up -d

如果用的是 PM2(非 Docker)

# 查看状态
pm2 status

# 查看日志
pm2 logs movecar

# 重启
pm2 restart movecar

# 停止
pm2 stop movecar

安全建议

  1. 生产环境一定要用 HTTPS(参考上面的配置方法)
  2. 定期更新系统和 Docker 镜像
  3. 不要把 .env 文件上传到 GitHub(里面有你的密钥)
  4. 定期查看日志,防止被恶意刷屏

技术架构(给开发者看的)

  • 后端:Node.js + Express
  • 推送:Bark(自建服务)
  • 存储:内存(可升级为 Redis)
  • 地图:高德地图 + Apple Maps
  • 坐标转换:WGS-84 → GCJ-02(火星坐标系)
  • 部署:Docker + Docker Compose

许可证

MIT License - 随便用,随便改

遇到问题?

  1. 先看常见问题(上面写得很详细了)
  2. 检查服务日志:docker compose logs -f
  3. 测试 Bark 推送是否正常
  4. 确认防火墙和端口配置

祝使用愉快!

About

智能挪车通知系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •