{"title":"FAQ khắc phục sự cố","slug":"troubleshooting","category":"faq","summary":"Giải pháp cho các vấn đề Synapse phổ biến — xác thực, mạng, dữ liệu, triển khai.","audience":["human","llm"],"tags":["faq","troubleshooting","problems","solutions"],"difficulty":"beginner","updated":"2026-06-27","word_count":850,"read_minutes":4,"lang":"vi","translated":true,"requested_lang":"vi","content_markdown":"\n# FAQ khắc phục sự cố\n\nGiải pháp cho các vấn đề Synapse phổ biến.\n\n## Tôi không thể đăng nhập\n\n### Triệu chứng\n\n- `POST /login` trả về 401\n- \"Invalid email or password\"\n\n### Giải pháp\n\n1. **Xác minh email chính xác** — phân biệt chữ hoa chữ thường\n2. **Kiểm tra mật khẩu** — tối thiểu 6 ký tự\n3. **Đăng ký trước** nếu bạn không có tài khoản: `POST /register`\n4. **Đặt lại mật khẩu** (nếu SMTP được cấu hình) qua giao diện web\n\n## Tôi mất Mind Key\n\n### Triệu chứng\n\n- Không thể truy cập bộ nhớ\n- Mind Key đã bị xóa/mất\n\n### Giải pháp\n\nMind Key không thể khôi phục. Bạn phải:\n\n1. Đăng nhập để lấy JWT: `POST /login`\n2. Liệt kê mind: `GET /minds` (với JWT)\n3. Tạo mind mới: `POST /minds`\n4. Lưu Mind Key mới\n5. (Tùy chọn) Xóa mind cũ: `DELETE /minds/:id`\n\n**Dữ liệu trong mind cũ bị mất** trừ khi bạn có thể tìm thấy Mind Key.\n\n## Lệnh gọi API trả về 401\n\n### Triệu chứng\n\n- Tất cả lệnh gọi API trả về 401 Unauthorized\n- \"Mind Key fehlt oder ungültig\"\n\n### Giải pháp\n\n1. **Xác minh định dạng header**: `Authorization: Bearer mk_...`\n2. **Kiểm tra Mind Key bắt đầu bằng `mk_`** (không phải `eyJ` là JWT)\n3. **Kiểm tra trực tiếp**:\n   ```bash\n   curl -H \"Authorization: Bearer mk_YOUR_KEY\" \\\n        https://synapse.schaefer.zone/memory/recall\n   ```\n4. **Mind Key có thể bị thu hồi** — tạo mind mới\n\nXem [Xác thực](/docs/getting-started/authentication).\n\n## Lệnh gọi API trả về 404\n\n### Triệu chứng\n\n- 404 Not Found\n- \"Route not found\"\n\n### Giải pháp\n\n> [!CRITICAL]\n> Không đoán đường dẫn endpoint. Chỉ đường dẫn trong `GET /endpoints` mới tồn tại.\n\n1. **Kiểm tra endpoint hợp lệ**: `curl https://synapse.schaefer.zone/endpoints`\n2. **So sánh URL chính xác** — phân biệt chữ hoa chữ thường, không có dấu gạch chéo cuối\n3. **Kiểm tra phương thức HTTP** — `GET /memory` khác với `POST /memory`\n\n## Lệnh gọi API trả về 429\n\n### Triệu chứng\n\n- 429 Too Many Requests\n- \"Rate limit exceeded\"\n\n### Giải pháp\n\n1. **Chuyển sang xác thực header** (không giới hạn tốc độ):\n   ```bash\n   # Don't\n   curl \".../memory/recall?key=mk_...\"\n   \n   # Do\n   curl -H \"Authorization: Bearer mk_...\" .../memory/recall\n   ```\n2. **Đợi `Retry-After` giây** nếu bạn phải dùng `?key=`\n\nXem [Giới hạn tốc độ](/docs/api/rate-limits).\n\n## Tìm kiếm bộ nhớ không trả về kết quả\n\n### Triệu chứng\n\n- `GET /memory/search?q=...` trả về rỗng\n- Biết bộ nhớ tồn tại\n\n### Giải pháp\n\n1. **Xác minh bộ nhớ tồn tại**: `GET /memory/recall`\n2. **Kiểm tra cú pháp tìm kiếm** — FTS5 có cú pháp cụ thể\n3. **Thử truy vấn đơn giản hơn** — `?q=docker` thay vì `?q=docker+swarm+deployment`\n4. **Sử dụng tìm kiếm ngữ nghĩa** cho truy vấn khái niệm: `GET /memory/semantic-search?q=...`\n\nXem [Tìm kiếm FTS5](/docs/concepts/fts5-search).\n\n## Bộ nhớ không tồn tại\n\n### Triệu chứng\n\n- POST /memory trả về thành công\n- GET /memory/recall không hiển thị chúng\n\n### Giải pháp\n\n1. **Xác minh cùng Mind Key** — key khác = mind khác\n2. **Kiểm tra phản hồi** — POST trả về `{ \"id\": \"mem_...\", \"status\": \"stored\" }`\n3. **Thử GET /memory** (danh sách JSON) thay vì /memory/recall (văn bản)\n4. **Kiểm tra bộ lọc** — `?category=` hoặc `?tag=` có thể ẩn chúng\n\n## Công cụ không xuất hiện trong Claude Desktop\n\n### Triệu chứng\n\n- Claude Desktop hiển thị 0 công cụ\n- Không có biểu tượng 🔌\n\n### Giải pháp\n\n1. **Khởi động lại Claude Desktop hoàn toàn** (Cmd+Q)\n2. **Xác minh tệp cấu hình** là JSON hợp lệ\n3. **Kiểm tra Node.js 18+** đã cài đặt\n4. **Chạy MCP thủ công**: `npx -y synapse-mcp-api@latest`\n5. **Kiểm tra nhật ký**: `~/Library/Logs/Claude/mcp.log`\n\nXem [Khắc phục sự cố MCP](/docs/mcp/troubleshooting).\n\n## Synapse ngoại tuyến\n\n### Triệu chứng\n\n- Không thể truy cập synapse.schaefer.zone\n- curl hết thời gian chờ\n\n### Giải pháp\n\n1. **Kiểm tra internet của bạn** — thử một trang khác\n2. **Kiểm tra sức khỏe Synapse**: `curl https://synapse.schaefer.zone/health`\n3. **Đợi** — có thể là sự cố tạm thời hoặc triển khai\n4. **Kiểm tra trang trạng thái** (nếu có)\n\nCho tự lưu trữ: kiểm tra trạng thái Docker container, kết nối database.\n\n## Lỗi database\n\n### Triệu chứng\n\n- 500 Internal Server Error\n- \"Database connection failed\"\n\n### Giải pháp\n\nCho tự lưu trữ:\n\n1. **Kiểm tra PostgreSQL đang chạy**: `docker ps | grep postgres`\n2. **Kiểm tra DATABASE_URL** trong env\n3. **Kiểm tra migration**: `npm run migrate:check`\n4. **Kiểm tra không gian đĩa**: `df -h`\n\nCho phiên bản được lưu trữ: báo cáo cho hỗ trợ.\n\n## Webhook không kích hoạt\n\n### Triệu chứng\n\n- Đã đăng ký webhook nhưng không nhận callback\n- Không có POST đến URL của bạn\n\n### Giải pháp\n\n1. **Xác minh URL có thể truy cập**: `curl -X POST your-url -d '{}'`\n2. **Kiểm tra bộ lọc sự kiện** — `memory.*` khớp tất cả sự kiện memory\n3. **Kiểm tra webhook**: `POST /webhooks/:id/test`\n4. **Kiểm tra webhook được bật**: `GET /webhooks/:id`\n5. **Xác minh SSL** — Synapse yêu cầu HTTPS hợp lệ cho URL webhook\n\nXem [Webhooks API](/docs/api/webhooks).\n\n## Cron job không chạy\n\n### Triệu chứng\n\n- Đã tạo cron job nhưng không kích hoạt\n- `next_run` không cập nhật\n\n### Giải pháp\n\n1. **Kiểm tra cú pháp lịch** — phải là cron 5 trường HOẶC số nguyên giây hợp lệ\n2. **Xác minh endpoint được phép** — phải là http(s), không IP riêng\n3. **Kiểm tra job được bật**: `GET /cron`\n4. **Đợi thời gian lên lịch tiếp theo** — cron không tức thời\n\nXem [Cron & Scheduler](/docs/api/cron).\n\n## Cần thêm trợ giúp?\n\n1. **Kiểm tra tài liệu hiện có**: <https://synapse.schaefer.zone/docs>\n2. **Tìm kiếm tài liệu**: `GET /docs/search?q=your+question`\n3. **Mở issue**: <https://gitlab.com/schaefer-services/synapse/-/issues>\n4. **Liên hệ**: xem trang `/support`\n\n## Bước tiếp theo\n\n- [Lỗi & Xử lý lỗi](/docs/api/errors)\n- [FAQ API](/docs/faq/api-faq)\n- [Khắc phục sự cố MCP](/docs/mcp/troubleshooting)\n","content_html":"<h1>FAQ khắc phục sự cố</h1>\n<p>Giải pháp cho các vấn đề Synapse phổ biến.</p>\n<h2>Tôi không thể đăng nhập</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li><code>POST /login</code> trả về 401</li>\n<li>&quot;Invalid email or password&quot;</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Xác minh email chính xác</strong> — phân biệt chữ hoa chữ thường</li>\n<li><strong>Kiểm tra mật khẩu</strong> — tối thiểu 6 ký tự</li>\n<li><strong>Đăng ký trước</strong> nếu bạn không có tài khoản: <code>POST /register</code></li>\n<li><strong>Đặt lại mật khẩu</strong> (nếu SMTP được cấu hình) qua giao diện web</li>\n</ol>\n<h2>Tôi mất Mind Key</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>Không thể truy cập bộ nhớ</li>\n<li>Mind Key đã bị xóa/mất</li>\n</ul>\n<h3>Giải pháp</h3>\n<p>Mind Key không thể khôi phục. Bạn phải:</p>\n<ol>\n<li>Đăng nhập để lấy JWT: <code>POST /login</code></li>\n<li>Liệt kê mind: <code>GET /minds</code> (với JWT)</li>\n<li>Tạo mind mới: <code>POST /minds</code></li>\n<li>Lưu Mind Key mới</li>\n<li>(Tùy chọn) Xóa mind cũ: <code>DELETE /minds/:id</code></li>\n</ol>\n<p><strong>Dữ liệu trong mind cũ bị mất</strong> trừ khi bạn có thể tìm thấy Mind Key.</p>\n<h2>Lệnh gọi API trả về 401</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>Tất cả lệnh gọi API trả về 401 Unauthorized</li>\n<li>&quot;Mind Key fehlt oder ungültig&quot;</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Xác minh định dạng header</strong>: <code>Authorization: Bearer mk_...</code></li>\n<li><strong>Kiểm tra Mind Key bắt đầu bằng <code>mk_</code></strong> (không phải <code>eyJ</code> là JWT)</li>\n<li><strong>Kiểm tra trực tiếp</strong>:<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer mk_YOUR_KEY&quot;</span> \\\n     https://synapse.schaefer.zone/memory/recall</code></pre></li>\n<li><strong>Mind Key có thể bị thu hồi</strong> — tạo mind mới</li>\n</ol>\n<p>Xem <a href=\"/docs/getting-started/authentication\">Xác thực</a>.</p>\n<h2>Lệnh gọi API trả về 404</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>404 Not Found</li>\n<li>&quot;Route not found&quot;</li>\n</ul>\n<h3>Giải pháp</h3>\n<div class=\"callout callout-critical\">Không đoán đường dẫn endpoint. Chỉ đường dẫn trong `GET /endpoints` mới tồn tại.</div><ol>\n<li><strong>Kiểm tra endpoint hợp lệ</strong>: <code>curl https://synapse.schaefer.zone/endpoints</code></li>\n<li><strong>So sánh URL chính xác</strong> — phân biệt chữ hoa chữ thường, không có dấu gạch chéo cuối</li>\n<li><strong>Kiểm tra phương thức HTTP</strong> — <code>GET /memory</code> khác với <code>POST /memory</code></li>\n</ol>\n<h2>Lệnh gọi API trả về 429</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>429 Too Many Requests</li>\n<li>&quot;Rate limit exceeded&quot;</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Chuyển sang xác thực header</strong> (không giới hạn tốc độ):<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Don&#x27;t</span>\ncurl <span class=\"hljs-string\">&quot;.../memory/recall?key=mk_...&quot;</span>\n\n<span class=\"hljs-comment\"># Do</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer mk_...&quot;</span> .../memory/recall</code></pre></li>\n<li><strong>Đợi <code>Retry-After</code> giây</strong> nếu bạn phải dùng <code>?key=</code></li>\n</ol>\n<p>Xem <a href=\"/docs/api/rate-limits\">Giới hạn tốc độ</a>.</p>\n<h2>Tìm kiếm bộ nhớ không trả về kết quả</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li><code>GET /memory/search?q=...</code> trả về rỗng</li>\n<li>Biết bộ nhớ tồn tại</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Xác minh bộ nhớ tồn tại</strong>: <code>GET /memory/recall</code></li>\n<li><strong>Kiểm tra cú pháp tìm kiếm</strong> — FTS5 có cú pháp cụ thể</li>\n<li><strong>Thử truy vấn đơn giản hơn</strong> — <code>?q=docker</code> thay vì <code>?q=docker+swarm+deployment</code></li>\n<li><strong>Sử dụng tìm kiếm ngữ nghĩa</strong> cho truy vấn khái niệm: <code>GET /memory/semantic-search?q=...</code></li>\n</ol>\n<p>Xem <a href=\"/docs/concepts/fts5-search\">Tìm kiếm FTS5</a>.</p>\n<h2>Bộ nhớ không tồn tại</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>POST /memory trả về thành công</li>\n<li>GET /memory/recall không hiển thị chúng</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Xác minh cùng Mind Key</strong> — key khác = mind khác</li>\n<li><strong>Kiểm tra phản hồi</strong> — POST trả về <code>{ &quot;id&quot;: &quot;mem_...&quot;, &quot;status&quot;: &quot;stored&quot; }</code></li>\n<li><strong>Thử GET /memory</strong> (danh sách JSON) thay vì /memory/recall (văn bản)</li>\n<li><strong>Kiểm tra bộ lọc</strong> — <code>?category=</code> hoặc <code>?tag=</code> có thể ẩn chúng</li>\n</ol>\n<h2>Công cụ không xuất hiện trong Claude Desktop</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>Claude Desktop hiển thị 0 công cụ</li>\n<li>Không có biểu tượng 🔌</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Khởi động lại Claude Desktop hoàn toàn</strong> (Cmd+Q)</li>\n<li><strong>Xác minh tệp cấu hình</strong> là JSON hợp lệ</li>\n<li><strong>Kiểm tra Node.js 18+</strong> đã cài đặt</li>\n<li><strong>Chạy MCP thủ công</strong>: <code>npx -y synapse-mcp-api@latest</code></li>\n<li><strong>Kiểm tra nhật ký</strong>: <code>~/Library/Logs/Claude/mcp.log</code></li>\n</ol>\n<p>Xem <a href=\"/docs/mcp/troubleshooting\">Khắc phục sự cố MCP</a>.</p>\n<h2>Synapse ngoại tuyến</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>Không thể truy cập synapse.schaefer.zone</li>\n<li>curl hết thời gian chờ</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Kiểm tra internet của bạn</strong> — thử một trang khác</li>\n<li><strong>Kiểm tra sức khỏe Synapse</strong>: <code>curl https://synapse.schaefer.zone/health</code></li>\n<li><strong>Đợi</strong> — có thể là sự cố tạm thời hoặc triển khai</li>\n<li><strong>Kiểm tra trang trạng thái</strong> (nếu có)</li>\n</ol>\n<p>Cho tự lưu trữ: kiểm tra trạng thái Docker container, kết nối database.</p>\n<h2>Lỗi database</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>500 Internal Server Error</li>\n<li>&quot;Database connection failed&quot;</li>\n</ul>\n<h3>Giải pháp</h3>\n<p>Cho tự lưu trữ:</p>\n<ol>\n<li><strong>Kiểm tra PostgreSQL đang chạy</strong>: <code>docker ps | grep postgres</code></li>\n<li><strong>Kiểm tra DATABASE_URL</strong> trong env</li>\n<li><strong>Kiểm tra migration</strong>: <code>npm run migrate:check</code></li>\n<li><strong>Kiểm tra không gian đĩa</strong>: <code>df -h</code></li>\n</ol>\n<p>Cho phiên bản được lưu trữ: báo cáo cho hỗ trợ.</p>\n<h2>Webhook không kích hoạt</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>Đã đăng ký webhook nhưng không nhận callback</li>\n<li>Không có POST đến URL của bạn</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Xác minh URL có thể truy cập</strong>: <code>curl -X POST your-url -d &#39;{}&#39;</code></li>\n<li><strong>Kiểm tra bộ lọc sự kiện</strong> — <code>memory.*</code> khớp tất cả sự kiện memory</li>\n<li><strong>Kiểm tra webhook</strong>: <code>POST /webhooks/:id/test</code></li>\n<li><strong>Kiểm tra webhook được bật</strong>: <code>GET /webhooks/:id</code></li>\n<li><strong>Xác minh SSL</strong> — Synapse yêu cầu HTTPS hợp lệ cho URL webhook</li>\n</ol>\n<p>Xem <a href=\"/docs/api/webhooks\">Webhooks API</a>.</p>\n<h2>Cron job không chạy</h2>\n<h3>Triệu chứng</h3>\n<ul>\n<li>Đã tạo cron job nhưng không kích hoạt</li>\n<li><code>next_run</code> không cập nhật</li>\n</ul>\n<h3>Giải pháp</h3>\n<ol>\n<li><strong>Kiểm tra cú pháp lịch</strong> — phải là cron 5 trường HOẶC số nguyên giây hợp lệ</li>\n<li><strong>Xác minh endpoint được phép</strong> — phải là http(s), không IP riêng</li>\n<li><strong>Kiểm tra job được bật</strong>: <code>GET /cron</code></li>\n<li><strong>Đợi thời gian lên lịch tiếp theo</strong> — cron không tức thời</li>\n</ol>\n<p>Xem <a href=\"/docs/api/cron\">Cron &amp; Scheduler</a>.</p>\n<h2>Cần thêm trợ giúp?</h2>\n<ol>\n<li><strong>Kiểm tra tài liệu hiện có</strong>: <a href=\"https://synapse.schaefer.zone/docs\">https://synapse.schaefer.zone/docs</a></li>\n<li><strong>Tìm kiếm tài liệu</strong>: <code>GET /docs/search?q=your+question</code></li>\n<li><strong>Mở issue</strong>: <a href=\"https://gitlab.com/schaefer-services/synapse/-/issues\">https://gitlab.com/schaefer-services/synapse/-/issues</a></li>\n<li><strong>Liên hệ</strong>: xem trang <code>/support</code></li>\n</ol>\n<h2>Bước tiếp theo</h2>\n<ul>\n<li><a href=\"/docs/api/errors\">Lỗi &amp; Xử lý lỗi</a></li>\n<li><a href=\"/docs/faq/api-faq\">FAQ API</a></li>\n<li><a href=\"/docs/mcp/troubleshooting\">Khắc phục sự cố MCP</a></li>\n</ul>\n","urls":{"html":"/docs/faq/troubleshooting","text":"/docs/faq/troubleshooting?format=text","json":"/docs/faq/troubleshooting?format=json","llm":"/docs/faq/troubleshooting?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}