feat: export core Hermes skills
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# Nextcloud Sync Diagnosis via Cloudflare Tunnel
|
||||
|
||||
## 2026-06-12 Incident
|
||||
|
||||
### Symptoms
|
||||
- Doro reported "同步不流畅,更新很难顺利同步"
|
||||
- Multiple PDF files (~10MB each) failed to upload repeatedly over several hours
|
||||
- Desktop client (mirall/33.0.5, Windows 10) kept retrying
|
||||
|
||||
### Log Evidence
|
||||
|
||||
**Nextcloud log** (`/var/www/html/data/nextcloud.log`):
|
||||
```
|
||||
level:3 | user:doro | method:PUT | BadRequest
|
||||
"预期文件大小为10821497字节,实际从Nextcloud客户端读入并写入Nextcloud存储空间的大小为5758976字节。
|
||||
可能是发送端发生了网络问题,或者是服务器写入存储设备时发生错误。"
|
||||
```
|
||||
- Expected: ~10.8MB, actual written: 3-7MB (varies per attempt)
|
||||
- Same file attempted 10+ times between 02:12-08:03 UTC (10:12-16:03 BJT)
|
||||
|
||||
**Cloudflared log** (`journalctl -u cloudflared-nextcloud.service`):
|
||||
```
|
||||
ERR error="Incoming request ended abruptly: context canceled" connIndex=2
|
||||
ERR Request failed error="Incoming request ended abruptly: context canceled"
|
||||
dest=https://maggie-share.shazhou.work/remote.php/dav/files/doro/...万禹案-再审申请书附件材料.pdf
|
||||
```
|
||||
- Also: `failed to run the datagram handler error="timeout: no recent network activity"`
|
||||
- QUIC stream acceptance failures
|
||||
|
||||
### Root Cause Analysis
|
||||
|
||||
1. **Cloudflare free-tier 100-second timeout**: Hard limit on edge nodes for single HTTP requests. Not configurable via tunnel YAML.
|
||||
2. **No chunked upload**: Desktop client uploaded 10MB files as single PUT requests. At Doro's upload bandwidth, 100s wasn't enough.
|
||||
3. **`connectTimeout: 120s`** in tunnel config only governs connection establishment, not transfer duration.
|
||||
4. **Server-side chunking was already enabled** (`chunking: 1.0`, `bigfilechunking: true`) — the problem was purely client-side threshold.
|
||||
|
||||
### Failed Files
|
||||
- 万禹案-再审申请书附件材料-完整版.pdf (~10.8MB, multiple renamed versions)
|
||||
- 万禹案-再审申请书附件材料.pdf (~9.9MB)
|
||||
- 万禹行政诉讼及撤销材料-书签版.pdf (~33MB, different error path)
|
||||
- 0612_万禹案-再审申请书附件材料.pdf (~11.2MB)
|
||||
|
||||
### Fix Applied
|
||||
Client-side: `%APPDATA%\Nextcloud\nextcloud.cfg` → `[General]` → `chunkSize=5242880` (5MB per chunk)
|
||||
|
||||
### Diagnostic Commands
|
||||
```bash
|
||||
# 1. Check server capabilities
|
||||
curl -s -u USER:PASS "http://localhost:5000/ocs/v1.php/cloud/capabilities?format=json" \
|
||||
-H "OCS-APIRequest: true" | python3 -c "
|
||||
import sys,json; d=json.load(sys.stdin)
|
||||
caps=d['ocs']['data']['capabilities']
|
||||
print('DAV:', json.dumps(caps.get('dav',{}), indent=2))
|
||||
print('Files:', json.dumps(caps.get('files',{}), indent=2))"
|
||||
|
||||
# 2. Test chunked upload endpoint
|
||||
curl -s -o /dev/null -w "%{http_code}" -X MKCOL \
|
||||
-u USER:PASS http://localhost:5000/remote.php/dav/uploads/USER/test-chunk
|
||||
# Should return 201
|
||||
|
||||
# 3. Nextcloud error log (today's level 3+ errors)
|
||||
docker exec nextcloud-nextcloud-1 bash -c \
|
||||
"cat /var/www/html/data/nextcloud.log" | grep "$(date -u +%Y-%m-%d)" | grep '"level":3'
|
||||
|
||||
# 4. Cloudflared errors
|
||||
journalctl -u cloudflared-nextcloud.service --since today | grep -i "ERR\|error\|timeout\|cancel"
|
||||
|
||||
# 5. Tunnel config
|
||||
cat /home/maggie/.cloudflared/maggie-share.yml
|
||||
```
|
||||
|
||||
### Infrastructure Context
|
||||
- Tunnel config: `/home/maggie/.cloudflared/maggie-share.yml`
|
||||
- Service: `cloudflared-nextcloud.service` (systemd)
|
||||
- Tunnel ID: 1af48f57-9e20-41d6-a09c-0ef9547eeb88
|
||||
- Hostnames: maggie-share.shazhou.work (Nextcloud), office.shazhou.work (OnlyOffice)
|
||||
- PHP limits: upload_max=512M, post_max=512M, memory=512M — not the bottleneck
|
||||
- Disk: 8% used (412GB free) — not the bottleneck
|
||||
Reference in New Issue
Block a user