当前版本:V3.6
RemnaShop-Pro 是一个面向 Remnawave 面板 的 Telegram 机器人,提供订阅售卖、续费、状态查询与基础运维能力。
- 购买新订阅(选择套餐并提交付款信息)
- 我的订阅 / 续费
- 订阅详情查看(到期时间、状态、流量使用)
- 订阅链接二维码生成
- 节点状态查询
- 联系客服
- 套餐管理(新增、查看、删除)
- 用户列表与订阅管理(查看、删除、重置流量、重置策略)
- 订单审核(通过 / 拒绝)
- 到期提醒天数设置
- 过期清理天数设置
- 异常检测阈值与检测周期设置
本仓库 仅支持 Docker Compose 部署,不再支持 systemd / 纯 Python / 服务器裸装方式。
- Linux 服务器(推荐 Debian / Ubuntu)
- 网络可访问 GitHub 与 Docker 镜像仓库
- 以可提权用户执行(root 或具备 sudo 权限)
curl -fsSL https://raw.githubusercontent.com/ike-sh/RemnaShop-Pro/main/bootstrap.sh | bash该命令会执行仓库内 bootstrap.sh,自动完成:
- 检查并自动安装通用基础依赖(缺失时):
curl、ca-certificates、git、bash、tar、gzip、unzip、jq、sed、grep、awk、coreutils - 检查并安装 Docker(缺失时)
- 检查并安装 Docker Compose 插件(缺失时)
- 克隆/更新仓库到
/opt/remnashop-pro - 若
.env不存在则基于.env.example自动创建 - 使用中文交互收集必填
ADMIN_ID与BOT_TOKEN(已有值可选择保留或替换),并自动写入.env - 启动 Docker Compose 栈
- 等待
remnashop容器健康状态变为healthy后才报告安装成功
示例交互(节选):
[remnashop-bootstrap] 正在配置必填环境变量(仅 ADMIN_ID 与 BOT_TOKEN)。
请输入 ADMIN_ID:
请输入 BOT_TOKEN:
bootstrap.sh支持两种模式:
- 交互菜单(直接执行
bash bootstrap.sh)- 非交互参数:
bash bootstrap.sh install/bash bootstrap.sh uninstall
cd /opt/remnashop-pro
bash bootstrap.sh uninstallcurl -fsSL https://raw.githubusercontent.com/ike666888/RemnaShop-Pro/main/bootstrap.sh | bash -s -- uninstall卸载会仅清理以下 RemnaShop-Pro 资源:
- Compose 项目
remnashop - 该项目创建的容器
- 该项目创建的本地镜像(
--rmi local) - 该项目创建的卷(
-v) - 项目目录
/opt/remnashop-pro
不会触碰其他 Compose 项目或无关 Docker 资源。
卸载安全行为:
- 检测到交互终端时,必须手动确认才会执行删除(支持
YES/yes/Y/y);- 非交互场景(如远程
curl | bash -s -- uninstall)会跳过确认,但仍只针对remnashop项目资源操作;- 卸载为幂等操作:资源已不存在时只给出提示,不会报错中断。
安装脚本的成功判定不是 docker compose up -d 返回成功,而是:
remnashop容器实际进入health=healthy状态。
若出现以下情况会直接判定安装失败并给出日志排查提示:
- 容器退出(
exited/dead) - 健康检查
unhealthy - 容器持续重启(
restarting或重启次数异常增长) - 在超时时间内未进入
healthy
手动复核命令:
cd /opt/remnashop-pro
docker --version
docker compose version
test -f .env && echo ".env exists"
docker compose -p remnashop ps
docker compose logs --tail=100 remnashop预期结果:
docker --version能输出版本号docker compose version能输出版本号.env exists输出成功docker compose -p remnashop ps显示remnashop服务为running且健康检查最终为healthy- 日志中无持续崩溃重启
cd /opt/remnashop-pro
./docker-manage.sh ps
./docker-manage.sh logs
./docker-manage.sh restart
./docker-manage.sh down首次安装会自动从 .env.example 生成 .env(若不存在),并在安装过程中交互收集并写入以下必填项:
ADMIN_IDBOT_TOKEN
.env.example 中这两个字段默认是空值(ADMIN_ID=、BOT_TOKEN=),用于确保首次安装必须由管理员输入真实值。
若 .env 已存在,脚本会展示当前值,并询问你“保留还是替换”。
若 .env 来自模板且 ADMIN_ID / BOT_TOKEN 为空,脚本会直接要求输入新值,不会询问“是否保留空值”。
脚本会校验 ADMIN_ID 与 BOT_TOKEN 不可为空,否则不会继续部署。
脚本通过 /dev/tty 进行交互输入;若当前执行环境无可用 TTY,则会明确报错并提示先在 .env 预置必填值后再执行安装。
以下变量在安装阶段均为可选,不会阻塞部署;可后续在机器人/应用内配置:
PANEL_URLPANEL_TOKENSUB_DOMAINGROUP_UUIDPANEL_VERIFY_TLS
生产镜像通过 .dockerignore 排除非运行时文件,不会打包以下内容:
tests/docs/README.mdAGENTS.mdLICENSE.gitignore.env.example
旧版 install.sh + systemd(remnashop.service) 部署流已移除。
迁移步骤:
- 备份旧机器中的
config.json与starlight.db - 执行新的一键安装命令(见上)
- 将备份数据恢复到 Docker 数据卷(或容器
/data) - 使用
docker compose ps与日志确认服务正常
若旧机器仍在运行
remnashop.service,请先停用旧服务再切换,避免重复实例同时运行。
bot.py:主程序入口docker-compose.yml:唯一部署编排入口bootstrap.sh:一键安装引导脚本(用于 curl | bash)docker-manage.sh:Docker Compose 运维助手handlers/:消息与回调处理辅助代码services/:面板 API、订单相关服务代码storage/:数据库初始化与访问辅助代码jobs/:定时任务辅助代码utils/:通用工具函数
- 作者:ike
- 群组:https://t.me/Remnawarecn
本项目仅供学习交流使用,请遵守当地法律法规。