# ls-project **Repository Path**: frinder/ls-project ## Basic Information - **Project Name**: ls-project - **Description**: No description available - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-04 - **Last Updated**: 2026-10-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 飞牛 NAS 自动签到系统:DailyCheckin + WorkBuddy 多账号签到 在飞牛 NAS(fnOS,192.168.3.20)上用**一个 Docker 容器**完成两件事: 1. **DailyCheckin**:全站点自动签到(飞牛社区 FNNASCLUB、B站、阿里云盘等,多账号),每日 09:00 2. **WorkBuddy 多账号签到**:直调官方接口领积分(每日 100 + 连签第 7 天 1000),每日 **09:10 主打卡 + 20:10 补漏**,结果推送微信 外加一个 **Web 配置页面**(`http://192.168.3.20:8787`)动态管理 WorkBuddy 账号、SendKey 与测试签到。 ## 目录结构 ``` ls-project/ ├── PLAN.md # 执行计划 ├── README.md # 本文 ├── docker-compose.yml # 容器定义(TZ、端口 8787、四个挂载) ├── config/config.json # DailyCheckin 配置模板(SENDKEY + 站点,多账号数组) ├── cron/crontab_list.sh # 全部定时任务(签到/补漏/日志清理/依赖升级/页面守护) ├── logs/default_task.log # 预创建的空日志(避免首启报错) ├── workbuddy/ # WorkBuddy 签到(详见 workbuddy/README.md) │ ├── checkin.py # 多账号签到主脚本(纯标准库) │ ├── webui.py # Web 配置页面 │ ├── start_webui.sh # 页面守护启动 │ ├── accounts.json # 账号数据模板(真实 token 只存 NAS) │ ├── export_token.ps1 # Windows 取 token 助手(加密版本下已失效,见环境事实 5) │ ├── cdp_capture.mjs # CDP 远程调试抓明文 token(推荐,Node ≥ 21 免安装) │ └── README.md └── deploy/ ├── deploy.ps1 # 一键部署脚本 └── setup_ssh_key.md # 免密登录降级方案 ``` ## 快速部署 ```powershell # 在项目根目录(需能访问 192.168.3.20:22) $env:FNOS_PASSWORD = '' # 仅本进程可见,不写入任何文件 powershell -ExecutionPolicy Bypass -File .\deploy\deploy.ps1 ``` 脚本自动完成:本机密钥 → 免密通道(Posh-SSH 写公钥)→ 建目录 → scp 上传 (**已有 config.json / accounts.json 不会被覆盖**)→ `docker compose up -d` → 验证。 手动方式(不用脚本):把本目录四个文件夹内容放到 NAS `/vol1/1000/docker/dailycheckin/`,再在飞牛 Docker → Compose 导入 `docker-compose.yml` 运行。 ## 部署后要做的三件事 ### 1. DailyCheckin 站点配置 编辑 NAS 上 `config/config.json`(fnOS 文件管理器即可),例如飞牛社区: ```json { "SENDKEY": "SCTxxxx(sct.ftqq.com/sendkey 领取)", "MERGE_PUSH": "true", "FNNASCLUB": [ { "cookie": "F12 → Network → Doc → club.fnnas.com → 复制 Cookie" } ] } ``` - 保存后**无需重启容器**,下次 cron 自动读取 - 支持的所有站点与字段见官方文档: - 验证:`docker exec -it dailycheckin dailycheckin` ### 2. WorkBuddy 账号(配置页面动态添加) 打开 `http://192.168.3.20:8787`(初始密码见部署输出 / `logs/webui.log`,若已在「设置」中改过则用新密码): - 「新增账号」粘贴 uid + accessToken;「测试签到」单账号验证;「🚀 立即执行全部签到」随时手动跑 - **取 token(重要)**:当前 WorkBuddy 版本的 auth 文件里 accessToken 是 `$wbEncrypted` 密文, `export_token.ps1` 导出的同样是密文(**无效**)。改用 CDP 远程调试抓取: ```powershell # 1) 重启 WorkBuddy 并开启调试端口 Get-Process WorkBuddy | Stop-Process -Force; Start-Sleep 3 Start-Process 'C:\Program Files\WorkBuddy\WorkBuddy.exe' -ArgumentList '--remote-debugging-port=9222' # 2) 90 秒窗口内抓取(token 只写入 %TEMP%\wb_token_capture.txt,控制台不回显) node workbuddy/cdp_capture.mjs # 3) 配置页录入 → 「测试签到」通过后,普通重启 WorkBuddy 关闭调试端口 Get-Process WorkBuddy | Stop-Process -Force; Start-Sleep 3 Start-Process 'C:\Program Files\WorkBuddy\WorkBuddy.exe' ``` - token 有效期约 45 天(当前账号 2026-11-18 到期):页面提示「登录态无效 401」时重复上述步骤更新即可 ### 3. 微信推送 配置页面「设置」里填 Server酱 Turbo SENDKEY → 「测试推送」;微信扫码 绑定。 (DailyCheckin 自身的推送用 `config/config.json` 里的 `SENDKEY`,两处填同一个即可。) ## 定时任务一览(cron/crontab_list.sh) | 时间(容器 TZ=Asia/Shanghai) | 任务 | | --- | --- | | 每分钟 | 守护配置页面(防重复拉起) | | 09:00 | DailyCheckin 全站点签到 | | 09:10 | WorkBuddy 多账号签到(主) | | 20:10 | WorkBuddy 多账号签到(补漏兜底,幂等) | | 23:50(隔天) | 清理日志 | | 每 12 小时 | 升级 dailycheckin 依赖 | 修改时间直接编辑 `cron/crontab_list.sh` 并重新上传(cron 文件为挂载,改动即生效,无需重建容器)。 ## 日志与排错 ```bash # NAS 上 tail -f /vol1/1000/docker/dailycheckin/logs/workbuddy.log tail -f /vol1/1000/docker/dailycheckin/logs/dailycheckin.log tail -f /vol1/1000/docker/dailycheckin/logs/webui.log # 手动触发 docker exec -it dailycheckin dailycheckin # 全站点 docker exec dailycheckin python3 /dailycheckin/workbuddy/checkin.py # WorkBuddy ``` 常见问题见 `workbuddy/README.md` 的排错表;免密登录问题见 `deploy/setup_ssh_key.md`。 ## 安全约定 - 仓库内只有**占位模板**;真实 Cookie / SENDKEY / accessToken 只存在 NAS 上的配置文件中 - NAS 密码只通过环境变量 `FNOS_PASSWORD` 或命令行参数传入,不写入仓库(`DailyCheckin.md` 中的凭据为用户原始记录) - 配置页面仅限局域网,**不要映射到公网**;日志与推送对 token 完全脱敏 ## 部署过程中的环境事实(已处理) 1. **飞牛 sshd 默认 `PubkeyAuthentication no`**:部署时已改为 `yes` 并重启 ssh(`/etc/ssh/sshd_config` 第 38 行),免密部署才可用;若系统升级后被重置,重跑 `deploy.ps1` 或按 `deploy/setup_ssh_key.md` 处理 2. **frinder6 无 docker 直接权限**:`deploy.ps1` 自动探测并改用 `sudo -S`(密码取自 `FNOS_PASSWORD`),已验证可用 3. **容器内以 root 运行**:`webui.py` 保存 `accounts.json` 后自动 `chmod 666`,宿主机/fnOS 文件管理器可直接编辑 4. **部署验证脚本**:`deploy/verify_remote.sh`(容器状态、crontab、时区、手动执行的全套检查),也可用 `deploy.ps1` 一键重跑(幂等) 5. **WorkBuddy accessToken 本地是密文**:`%LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\*.info` 中 token 为 `$wbEncrypted` 信封加密,密钥仅在运行时经 IPC 注入进程内存;文件系统、日志(已脱敏 `eyJh***`)均无明文,故 `export_token.ps1` 在当前版本无效。取明文改用 **CDP 远程调试抓取**(`workbuddy/cdp_capture.mjs`,已验证:抓到的 token `sub` 与 `account.uid` 一致,签到 ✅ 成功) 6. **配置页密码可改**:用户已通过「设置」修改管理密码(仓库与文档不记录密码值);忘密码时删除 NAS 上 `workbuddy/accounts.json` 的 `webui_password` 字段重启 webui 即重新生成随机初始密码 ## 参考资料 - DailyCheckin 官方文档: (Docker 部署、FNNASCLUB 配置) - 飞牛部署教程: 、 - WorkBuddy API 直签方案(腾讯云社区):