4693c9d68433e0c29ee15320ea1a36f80e828e0c
- w4-body.js: ONE-DIRECTIONAL sync (NocoDB status = SOT, never reverse);
drift matrix: missing user/role (provision w/ username lookup to avoid
duplicates), dangling refs (adopt/recreate), disabled<->status, canonical
base_path '/' + permission 16384, scopes vs calculateEffectiveGrants,
username drift detect+log_only; verify-after-repair on every change;
password never pushed on repair (方案 C); dry-run via ?dryRun=true
- gen_w4.js: daily 03:00 cron + webhook alist-w4-reconcile; API-import-safe
(UUID node ids, no pinData, webhookId)
- ReconcileLogs table mktsb7le6fqr2u1 (add_reconcilelogs_table.py, idempotent,
v2 API); FK column nc_jitu___Customers_id for bt-link writes (v2 ignores
link column itself)
- test_w4_reconcile.js: 34 assertions / 12 mock worlds, ALL PASSED
- live-verified against production: dry-run (3 drifts + 1 error found),
real repair (3 repaired, verify all passed, 4 log rows), idempotent rerun
- NocoDB 2026.08.x pitfalls documented (v1 col endpoints gone, row delete
via body [{Id}]); n8n API import/activation pitfalls (activeVersionId)
- docs: W4-DESIGN.md new; DATABASE_SCHEMA 8 tables; N8N_WORKFLOWS, SETUP,
PROJECT_STATE updated
AList Serve Resource — 客户文件权限与到期管理系统
在 Docker 上运行的客户数字文件交付系统:
- AList = 文件浏览/预览/下载入口(stock image,不 fork、不嵌 custom code)
- NocoDB = 业务授权 Source of Truth(客户/产品/授权/到期)
- n8n = 同步器(NocoDB ↔ AList 官方 Admin API)
架构
Internet
│
▼
DSM nginx (access.hoelee.com)
│
▼
AList (stock, 只读挂载 NAS)
▲
│ 内网 Admin API(http://alist-serve-resource:5244)
│
n8n ──► NocoDB(授权 SOT)
- 客户只经 AList 入口访问,默认严格 read-only(权限 bitmask
0+ Check path limit)。 - 每个客户 = 1 个 AList User + 1 个专属 Role + 多个 path scopes,每个 scope 独立到期(规格 §8)。
- 到期/禁用由 NocoDB + n8n 定时同步撤销,AList 不存业务授权数据。
目录结构
alist-serve-resource/
├── docker-compose.yml # 仅 AList(stock)
├── .env.example # 所有 secrets 模板(复制为 .env)
├── .gitignore
├── docs/
│ ├── API_INTEGRATION.md # ★ AList API 源码级验证
│ ├── ARCHITECTURE.md # 三层职责与数据流
│ ├── PERMISSIONS.md # 权限计算规则
│ ├── ADMIN_GUIDE.md # ★ 管理员操作指南(华文,极简)
│ ├── INSTALL.md
│ ├── CONFIGURATION.md
│ ├── DATABASE_SCHEMA.md
│ ├── N8N_WORKFLOWS.md
│ ├── SECURITY.md
│ ├── BACKUP_RESTORE.md
│ ├── UPGRADE.md
│ └── TROUBLESHOOTING.md
├── n8n/workflows/ # n8n workflow JSON 导出
└── scripts/ # backup/restore/healthcheck
快速开始
关键结论
规格文档 §11 担心的「Role scope 是否能用 API 管理」——答案是能(v3.63.0 源码级验证,
完整 Role CRUD)。无需 fork、无需 integration service。详见
docs/API_INTEGRATION.md。
与旧 alist 的区别
| 旧 alist | 新 alist-serve-resource | |
|---|---|---|
| 镜像 | xhofe/alist:v3.54.0 |
xhofe/alist:v3.63.0 |
| custom.js/css 注入 | 有(custom made) | 无(纯 stock) |
| 入口链 | nginx-limit → traefik-update → alist | DSM nginx → alist(直连) |
| 权限/到期 | 内嵌业务逻辑 | NocoDB + n8n + 官方 API |
| 端口 | 5244/5245/5246 | 5247 |
| 数据目录 | /volume1/docker/alist |
/volume1/docker/alist-serve-resource |
Languages
JavaScript
88.6%
Python
10.8%
Shell
0.6%