一个超简单的挪车通知小工具!把链接贴车上,有人需要你挪车时,手机自动收到通知。
想象这个场景:你的车停在路边,有人被你挡住了想让你挪车。传统做法是在车上贴个手机号,但这样会暴露隐私,还可能被骚扰。
有了这个系统,你只需要:
- 在车上贴一个网址(二维码)
- 别人访问这个网址,点击"通知车主"
- 你的手机立刻收到推送通知(像收微信消息一样)
- 点击通知就能看到对方的留言和位置
- 一键通知车主,手机立刻收到推送
- 对方可以告诉你在哪(自动显示地图)
- 你可以回复"我来了",对方也能实时看到
- 支持 Apple 地图和高德地图
- 全程不泄露手机号
你需要:
- 一台服务器(阿里云、腾讯云等,最便宜的就行)
- 一部 iPhone(用来接收通知)
- 基本的电脑操作能力(会复制粘贴命令就行)
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-server1. 打开浏览器访问
http://你的服务器IP:3000
2. 模拟挪车请求
- 输入留言:"测试一下"
- 点击"一键通知车主"
3. 检查手机 几秒钟后,你的 iPhone 应该会收到一条推送通知,显示"挪车请求"。
✅ 看到通知了?恭喜,配置成功!
❌ 没收到?往下看常见问题。
完成上面的配置后:
1. 生成二维码
- 访问这个网站:https://cli.im/url
- 输入你的挪车服务地址:
http://你的IP:3000 - 点击生成
- 下载二维码图片
2. 打印贴车上
- 把二维码打印出来(建议塑封防水)
- 贴在车窗或仪表台
- 加一句提示:"需要挪车?扫码通知我"
3. 收到通知后
- 手机会弹出推送(就像收到微信消息)
- 点击推送会打开确认页面
- 看到对方的留言和位置(如果对方分享了)
- 点击"我已知晓,正在前往"
- 对方手机上会实时显示你的回复
方式一:扫二维码
- 扫描你车上的二维码
- 打开挪车页面
- 可以输入留言(例如:"你挡我出口了")
- 可以分享位置(让你知道车在哪)
- 点"通知车主"
- 等待车主回应
方式二:直接访问网址 如果没二维码,直接在浏览器输入:
http://你的IP:3000
设计考虑:
- 分享位置:立刻发送通知(因为有具体信息)
- 不分享位置:延迟 30 秒(给对方反悔或补充信息的时间)
这样避免误触或恶意刷屏。
用 IP 地址访问不太方便,配个域名会好很多。
- 拥有一个域名(阿里云、腾讯云可以买,几十块一年)
- 域名已经解析到你的服务器 IP
1. 安装 Nginx 和证书工具
sudo apt install nginx certbot python3-certbot-nginx2. 创建 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.你的域名.com4. 搞定! 现在可以用 HTTPS 访问了:
https://move.你的域名.com
更安全,而且浏览器不会提示"不安全"。
| 配置项 | 说明 | 示例 | 必填吗 |
|---|---|---|---|
PORT |
服务运行的端口 | 3000 |
否(默认3000) |
BARK_URL |
Bark推送地址 | http://IP:8080/key |
是 |
PHONE_NUMBER |
备用联系电话 | 13800138000 |
否 |
- 8080:Bark 推送服务(手机接收通知)
- 3000:挪车通知网页服务
检查清单:
-
Bark App 设置对了吗?
# 手动测试推送 curl "http://你的IP:8080/你的key/测试消息"
手机应该立刻收到"测试消息"的推送。
-
服务启动了吗?
docker ps # 应该能看到两个容器在运行:bark-server 和 movecar-server -
配置文件对了吗?
cat .env # 检查 BARK_URL 是不是你从 Bark App 复制的完整地址 -
防火墙开了吗?
# 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
可能原因:
-
服务没启动
# 检查服务状态 docker ps # 重启服务 docker compose restart
-
端口没开放(参考上面的防火墙配置)
-
IP 地址不对
# 查看服务器公网 IP curl ifconfig.me
原因分析:
- 浏览器的定位功能只在 HTTPS 下可用(HTTP 不行)
- 本地测试(localhost)可以用 HTTP
- 生产环境必须配置 HTTPS
解决办法:
- 配置域名和 HTTPS(参考上面的 Nginx 配置)
- 或者在手机上允许浏览器使用定位权限
这个问题已经在最新版本中修复了!如果你还遇到:
检查 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 compose ps
# 查看日志(出问题时看这个)
docker compose logs -f
# 重启服务
docker compose restart
# 停止服务
docker compose down
# 更新并重启
docker compose pull
docker compose up -d# 查看状态
pm2 status
# 查看日志
pm2 logs movecar
# 重启
pm2 restart movecar
# 停止
pm2 stop movecar- 生产环境一定要用 HTTPS(参考上面的配置方法)
- 定期更新系统和 Docker 镜像
- 不要把
.env文件上传到 GitHub(里面有你的密钥) - 定期查看日志,防止被恶意刷屏
- 后端:Node.js + Express
- 推送:Bark(自建服务)
- 存储:内存(可升级为 Redis)
- 地图:高德地图 + Apple Maps
- 坐标转换:WGS-84 → GCJ-02(火星坐标系)
- 部署:Docker + Docker Compose
MIT License - 随便用,随便改
- 先看常见问题(上面写得很详细了)
- 检查服务日志:
docker compose logs -f - 测试 Bark 推送是否正常
- 确认防火墙和端口配置
祝使用愉快!