{"title":"คำถามที่พบบ่อยเกี่ยวกับการแก้ปัญหา","slug":"troubleshooting","category":"faq","summary":"วิธีแก้ปัญหา Synapse ทั่วไป — auth, เครือข่าย, ข้อมูล, deployment","audience":["human","llm"],"tags":["faq","troubleshooting","problems","solutions"],"difficulty":"beginner","updated":"2026-06-27","word_count":510,"read_minutes":3,"lang":"th","translated":true,"requested_lang":"th","content_markdown":"\n# คำถามที่พบบ่อยเกี่ยวกับการแก้ปัญหา\n\nวิธีแก้ปัญหา Synapse ทั่วไป\n\n## ฉันล็อกอินไม่ได้\n\n### อาการ\n\n- `POST /login` ส่งกลับ 401\n- \"Invalid email or password\"\n\n### วิธีแก้\n\n1. **ตรวจสอบ email ถูกต้อง** — sensitive ต่อตัวพิมพ์เล็ก/ใหญ่\n2. **ตรวจสอบรหัสผ่าน** — ขั้นต่ำ 6 ตัวอักษร\n3. **สมัครก่อน** หากคุณยังไม่มีบัญชี: `POST /register`\n4. **รีเซ็ตรหัสผ่าน** (หากกำหนดค่า SMTP แล้ว) ผ่าน web UI\n\n## ฉันสูญเสีย Mind Key\n\n### อาการ\n\n- เข้าถึง memory ไม่ได้\n- Mind Key ถูกลบ/สูญหาย\n\n### วิธีแก้\n\nMind Key กู้คืนไม่ได้ คุณต้อง:\n\n1. ล็อกอินเพื่อรับ JWT: `POST /login`\n2. รายการ mind: `GET /minds` (ด้วย JWT)\n3. สร้าง mind ใหม่: `POST /minds`\n4. บันทึก Mind Key ใหม่\n5. (ตัวเลือก) ลบ mind เก่า: `DELETE /minds/:id`\n\n**ข้อมูลใน mind เก่าสูญหาย** เว้นแต่คุณหา Mind Key ได้\n\n## API call ส่งกลับ 401\n\n### อาการ\n\n- API call ทั้งหมดส่งกลับ 401 Unauthorized\n- \"Mind Key fehlt oder ungültig\"\n\n### วิธีแก้\n\n1. **ตรวจสอบรูปแบบ header**: `Authorization: Bearer mk_...`\n2. **ตรวจ Mind Key ขึ้นต้นด้วย `mk_`** (ไม่ใช่ `eyJ` ซึ่งเป็น JWT)\n3. **ทดสอบโดยตรง**:\n   ```bash\n   curl -H \"Authorization: Bearer mk_YOUR_KEY\" \\\n        https://synapse.schaefer.zone/memory/recall\n   ```\n4. **Mind Key อาจถูกเพิกถอน** — สร้าง mind ใหม่\n\nดู [Authentication](/docs/getting-started/authentication)\n\n## API call ส่งกลับ 404\n\n### อาการ\n\n- 404 Not Found\n- \"Route not found\"\n\n### วิธีแก้\n\n> [!CRITICAL]\n> อย่าเดา endpoint path มีเพียง path ใน `GET /endpoints` เท่านั้นที่มีอยู่\n\n1. **ตรวจสอบ endpoint ที่ถูกต้อง**: `curl https://synapse.schaefer.zone/endpoints`\n2. **เปรียบเทียบ URL ตรงตัว** — sensitive ต่อตัวพิมพ์เล็ก/ใหญ่, ไม่มี trailing slash\n3. **ตรวจสอบ HTTP method** — `GET /memory` กับ `POST /memory` ต่างกัน\n\n## API call ส่งกลับ 429\n\n### อาการ\n\n- 429 Too Many Requests\n- \"Rate limit exceeded\"\n\n### วิธีแก้\n\n1. **เปลี่ยนไปใช้ header auth** (ไม่จำกัดอัตรา):\n   ```bash\n   # Don't\n   curl \".../memory/recall?key=mk_...\"\n   \n   # Do\n   curl -H \"Authorization: Bearer mk_...\" .../memory/recall\n   ```\n2. **รอ `Retry-After` วินาที** หากต้องใช้ `?key=`\n\nดู [Rate Limits](/docs/api/rate-limits)\n\n## การค้นหา memory ส่งกลับไม่มีผลลัพธ์\n\n### อาการ\n\n- `GET /memory/search?q=...` ส่งกลับว่าง\n- รู้ว่ามี memory อยู่\n\n### วิธีแก้\n\n1. **ตรวจสอบ memory มีอยู่**: `GET /memory/recall`\n2. **ตรวจสอบไวยากรณ์ search** — FTS5 มีไวยากรณ์เฉพาะ\n3. **ลอง query ที่ง่ายกว่า** — `?q=docker` แทน `?q=docker+swarm+deployment`\n4. **ใช้ semantic search** สำหรับ query เชิงแนวคิด: `GET /memory/semantic-search?q=...`\n\nดู [FTS5 Search](/docs/concepts/fts5-search)\n\n## memory ไม่คงอยู่\n\n### อาการ\n\n- POST /memory ส่งกลับสำเร็จ\n- GET /memory/recall ไม่แสดง memory เหล่านั้น\n\n### วิธีแก้\n\n1. **ตรวจสอบ Mind Key เดียวกัน** — key ต่างกัน = mind ต่างกัน\n2. **ตรวจสอบ response** — POST ส่งกลับ `{ \"id\": \"mem_...\", \"status\": \"stored\" }`\n3. **ลอง GET /memory** (รายการ JSON) แทน /memory/recall (text)\n4. **ตรวจสอบ filter** — `?category=` หรือ `?tag=` อาจซ่อนไว้\n\n## tool ไม่ปรากฏใน Claude Desktop\n\n### อาการ\n\n- Claude Desktop แสดง 0 tool\n- ไม่มีไอคอน 🔌\n\n### วิธีแก้\n\n1. **รีสตาร์ท Claude Desktop ให้เต็มรูปแบบ** (Cmd+Q)\n2. **ตรวจสอบ config file** เป็น JSON ที่ถูกต้อง\n3. **ตรวจ Node.js 18+** ติดตั้ง\n4. **รัน MCP ด้วยตนเอง**: `npx -y synapse-mcp-api@latest`\n5. **ตรวจ log**: `~/Library/Logs/Claude/mcp.log`\n\nดู [MCP Troubleshooting](/docs/mcp/troubleshooting)\n\n## Synapse ออฟไลน์\n\n### อาการ\n\n- เข้าถึง synapse.schaefer.zone ไม่ได้\n- curl หมดเวลา\n\n### วิธีแก้\n\n1. **ตรวจสอบอินเทอร์เน็ต** — ลองเว็บไซต์อื่น\n2. **ตรวจสอบสุขภาพ Synapse**: `curl https://synapse.schaefer.zone/health`\n3. **รอ** — อาจเป็น outage ชั่วคราวหรือ deployment\n4. **ตรวจสอบหน้าสถานะ** (หากมี)\n\nสำหรับ self-host: ตรวจสอบสถานะ Docker container, การเชื่อมต่อฐานข้อมูล\n\n## ข้อผิดพลาดฐานข้อมูล\n\n### อาการ\n\n- 500 Internal Server Error\n- \"Database connection failed\"\n\n### วิธีแก้\n\nสำหรับ self-host:\n\n1. **ตรวจ PostgreSQL รันอยู่**: `docker ps | grep postgres`\n2. **ตรวจ DATABASE_URL** ใน env\n3. **ตรวจ migration**: `npm run migrate:check`\n4. **ตรวจพื้นที่ดิสก์**: `df -h`\n\nสำหรับโฮสต์: รายงานไปยัง support\n\n## Webhook ไม่ทำงาน\n\n### อาการ\n\n- ลงทะเบียน webhook แล้วแต่ไม่ได้รับ callback\n- ไม่มี POST ไปยัง URL ของคุณ\n\n### วิธีแก้\n\n1. **ตรวจสอบ URL เข้าถึงได้**: `curl -X POST your-url -d '{}'`\n2. **ตรวจสอบ filter event** — `memory.*` ตรงทุก memory event\n3. **ทดสอบ webhook**: `POST /webhooks/:id/test`\n4. **ตรวจ webhook เปิดใช้งาน**: `GET /webhooks/:id`\n5. **ตรวจสอบ SSL** — Synapse ต้องการ HTTPS ที่ถูกต้องสำหรับ webhook URL\n\nดู [Webhooks API](/docs/api/webhooks)\n\n## Cron job ไม่รัน\n\n### อาการ\n\n- สร้าง cron job แล้วแต่ไม่ทำงาน\n- `next_run` ไม่อัปเดต\n\n### วิธีแก้\n\n1. **ตรวจไวยากรณ์ schedule** — ต้องเป็น 5-field cron หรือ integer วินาที\n2. **ตรวจ endpoint ได้รับอนุญาต** — ต้องเป็น http(s), ไม่มี private IP\n3. **ตรวจ job เปิดใช้งาน**: `GET /cron`\n4. **รอเวลาที่ตั้งเวลาไว้ถัดไป** — cron ไม่ใช่ทันที\n\nดู [Cron & Scheduler](/docs/api/cron)\n\n## ต้องการความช่วยเหลือเพิ่มเติม?\n\n1. **ตรวจเอกสารที่มี**: <https://synapse.schaefer.zone/docs>\n2. **ค้นหาเอกสาร**: `GET /docs/search?q=your+question`\n3. **เปิด issue**: <https://gitlab.com/schaefer-services/synapse/-/issues>\n4. **ติดต่อ**: ดูหน้า `/support`\n\n## ขั้นตอนถัดไป\n\n- [Errors & Error Handling](/docs/api/errors)\n- [คำถามที่พบบ่อยเกี่ยวกับ API](/docs/faq/api-faq)\n- [MCP Troubleshooting](/docs/mcp/troubleshooting)\n","content_html":"<h1>คำถามที่พบบ่อยเกี่ยวกับการแก้ปัญหา</h1>\n<p>วิธีแก้ปัญหา Synapse ทั่วไป</p>\n<h2>ฉันล็อกอินไม่ได้</h2>\n<h3>อาการ</h3>\n<ul>\n<li><code>POST /login</code> ส่งกลับ 401</li>\n<li>&quot;Invalid email or password&quot;</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>ตรวจสอบ email ถูกต้อง</strong> — sensitive ต่อตัวพิมพ์เล็ก/ใหญ่</li>\n<li><strong>ตรวจสอบรหัสผ่าน</strong> — ขั้นต่ำ 6 ตัวอักษร</li>\n<li><strong>สมัครก่อน</strong> หากคุณยังไม่มีบัญชี: <code>POST /register</code></li>\n<li><strong>รีเซ็ตรหัสผ่าน</strong> (หากกำหนดค่า SMTP แล้ว) ผ่าน web UI</li>\n</ol>\n<h2>ฉันสูญเสีย Mind Key</h2>\n<h3>อาการ</h3>\n<ul>\n<li>เข้าถึง memory ไม่ได้</li>\n<li>Mind Key ถูกลบ/สูญหาย</li>\n</ul>\n<h3>วิธีแก้</h3>\n<p>Mind Key กู้คืนไม่ได้ คุณต้อง:</p>\n<ol>\n<li>ล็อกอินเพื่อรับ JWT: <code>POST /login</code></li>\n<li>รายการ mind: <code>GET /minds</code> (ด้วย JWT)</li>\n<li>สร้าง mind ใหม่: <code>POST /minds</code></li>\n<li>บันทึก Mind Key ใหม่</li>\n<li>(ตัวเลือก) ลบ mind เก่า: <code>DELETE /minds/:id</code></li>\n</ol>\n<p><strong>ข้อมูลใน mind เก่าสูญหาย</strong> เว้นแต่คุณหา Mind Key ได้</p>\n<h2>API call ส่งกลับ 401</h2>\n<h3>อาการ</h3>\n<ul>\n<li>API call ทั้งหมดส่งกลับ 401 Unauthorized</li>\n<li>&quot;Mind Key fehlt oder ungültig&quot;</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>ตรวจสอบรูปแบบ header</strong>: <code>Authorization: Bearer mk_...</code></li>\n<li><strong>ตรวจ Mind Key ขึ้นต้นด้วย <code>mk_</code></strong> (ไม่ใช่ <code>eyJ</code> ซึ่งเป็น JWT)</li>\n<li><strong>ทดสอบโดยตรง</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 อาจถูกเพิกถอน</strong> — สร้าง mind ใหม่</li>\n</ol>\n<p>ดู <a href=\"/docs/getting-started/authentication\">Authentication</a></p>\n<h2>API call ส่งกลับ 404</h2>\n<h3>อาการ</h3>\n<ul>\n<li>404 Not Found</li>\n<li>&quot;Route not found&quot;</li>\n</ul>\n<h3>วิธีแก้</h3>\n<div class=\"callout callout-critical\">อย่าเดา endpoint path มีเพียง path ใน `GET /endpoints` เท่านั้นที่มีอยู่</div><ol>\n<li><strong>ตรวจสอบ endpoint ที่ถูกต้อง</strong>: <code>curl https://synapse.schaefer.zone/endpoints</code></li>\n<li><strong>เปรียบเทียบ URL ตรงตัว</strong> — sensitive ต่อตัวพิมพ์เล็ก/ใหญ่, ไม่มี trailing slash</li>\n<li><strong>ตรวจสอบ HTTP method</strong> — <code>GET /memory</code> กับ <code>POST /memory</code> ต่างกัน</li>\n</ol>\n<h2>API call ส่งกลับ 429</h2>\n<h3>อาการ</h3>\n<ul>\n<li>429 Too Many Requests</li>\n<li>&quot;Rate limit exceeded&quot;</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>เปลี่ยนไปใช้ header auth</strong> (ไม่จำกัดอัตรา):<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>รอ <code>Retry-After</code> วินาที</strong> หากต้องใช้ <code>?key=</code></li>\n</ol>\n<p>ดู <a href=\"/docs/api/rate-limits\">Rate Limits</a></p>\n<h2>การค้นหา memory ส่งกลับไม่มีผลลัพธ์</h2>\n<h3>อาการ</h3>\n<ul>\n<li><code>GET /memory/search?q=...</code> ส่งกลับว่าง</li>\n<li>รู้ว่ามี memory อยู่</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>ตรวจสอบ memory มีอยู่</strong>: <code>GET /memory/recall</code></li>\n<li><strong>ตรวจสอบไวยากรณ์ search</strong> — FTS5 มีไวยากรณ์เฉพาะ</li>\n<li><strong>ลอง query ที่ง่ายกว่า</strong> — <code>?q=docker</code> แทน <code>?q=docker+swarm+deployment</code></li>\n<li><strong>ใช้ semantic search</strong> สำหรับ query เชิงแนวคิด: <code>GET /memory/semantic-search?q=...</code></li>\n</ol>\n<p>ดู <a href=\"/docs/concepts/fts5-search\">FTS5 Search</a></p>\n<h2>memory ไม่คงอยู่</h2>\n<h3>อาการ</h3>\n<ul>\n<li>POST /memory ส่งกลับสำเร็จ</li>\n<li>GET /memory/recall ไม่แสดง memory เหล่านั้น</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>ตรวจสอบ Mind Key เดียวกัน</strong> — key ต่างกัน = mind ต่างกัน</li>\n<li><strong>ตรวจสอบ response</strong> — POST ส่งกลับ <code>{ &quot;id&quot;: &quot;mem_...&quot;, &quot;status&quot;: &quot;stored&quot; }</code></li>\n<li><strong>ลอง GET /memory</strong> (รายการ JSON) แทน /memory/recall (text)</li>\n<li><strong>ตรวจสอบ filter</strong> — <code>?category=</code> หรือ <code>?tag=</code> อาจซ่อนไว้</li>\n</ol>\n<h2>tool ไม่ปรากฏใน Claude Desktop</h2>\n<h3>อาการ</h3>\n<ul>\n<li>Claude Desktop แสดง 0 tool</li>\n<li>ไม่มีไอคอน 🔌</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>รีสตาร์ท Claude Desktop ให้เต็มรูปแบบ</strong> (Cmd+Q)</li>\n<li><strong>ตรวจสอบ config file</strong> เป็น JSON ที่ถูกต้อง</li>\n<li><strong>ตรวจ Node.js 18+</strong> ติดตั้ง</li>\n<li><strong>รัน MCP ด้วยตนเอง</strong>: <code>npx -y synapse-mcp-api@latest</code></li>\n<li><strong>ตรวจ log</strong>: <code>~/Library/Logs/Claude/mcp.log</code></li>\n</ol>\n<p>ดู <a href=\"/docs/mcp/troubleshooting\">MCP Troubleshooting</a></p>\n<h2>Synapse ออฟไลน์</h2>\n<h3>อาการ</h3>\n<ul>\n<li>เข้าถึง synapse.schaefer.zone ไม่ได้</li>\n<li>curl หมดเวลา</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>ตรวจสอบอินเทอร์เน็ต</strong> — ลองเว็บไซต์อื่น</li>\n<li><strong>ตรวจสอบสุขภาพ Synapse</strong>: <code>curl https://synapse.schaefer.zone/health</code></li>\n<li><strong>รอ</strong> — อาจเป็น outage ชั่วคราวหรือ deployment</li>\n<li><strong>ตรวจสอบหน้าสถานะ</strong> (หากมี)</li>\n</ol>\n<p>สำหรับ self-host: ตรวจสอบสถานะ Docker container, การเชื่อมต่อฐานข้อมูล</p>\n<h2>ข้อผิดพลาดฐานข้อมูล</h2>\n<h3>อาการ</h3>\n<ul>\n<li>500 Internal Server Error</li>\n<li>&quot;Database connection failed&quot;</li>\n</ul>\n<h3>วิธีแก้</h3>\n<p>สำหรับ self-host:</p>\n<ol>\n<li><strong>ตรวจ PostgreSQL รันอยู่</strong>: <code>docker ps | grep postgres</code></li>\n<li><strong>ตรวจ DATABASE_URL</strong> ใน env</li>\n<li><strong>ตรวจ migration</strong>: <code>npm run migrate:check</code></li>\n<li><strong>ตรวจพื้นที่ดิสก์</strong>: <code>df -h</code></li>\n</ol>\n<p>สำหรับโฮสต์: รายงานไปยัง support</p>\n<h2>Webhook ไม่ทำงาน</h2>\n<h3>อาการ</h3>\n<ul>\n<li>ลงทะเบียน webhook แล้วแต่ไม่ได้รับ callback</li>\n<li>ไม่มี POST ไปยัง URL ของคุณ</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>ตรวจสอบ URL เข้าถึงได้</strong>: <code>curl -X POST your-url -d &#39;{}&#39;</code></li>\n<li><strong>ตรวจสอบ filter event</strong> — <code>memory.*</code> ตรงทุก memory event</li>\n<li><strong>ทดสอบ webhook</strong>: <code>POST /webhooks/:id/test</code></li>\n<li><strong>ตรวจ webhook เปิดใช้งาน</strong>: <code>GET /webhooks/:id</code></li>\n<li><strong>ตรวจสอบ SSL</strong> — Synapse ต้องการ HTTPS ที่ถูกต้องสำหรับ webhook URL</li>\n</ol>\n<p>ดู <a href=\"/docs/api/webhooks\">Webhooks API</a></p>\n<h2>Cron job ไม่รัน</h2>\n<h3>อาการ</h3>\n<ul>\n<li>สร้าง cron job แล้วแต่ไม่ทำงาน</li>\n<li><code>next_run</code> ไม่อัปเดต</li>\n</ul>\n<h3>วิธีแก้</h3>\n<ol>\n<li><strong>ตรวจไวยากรณ์ schedule</strong> — ต้องเป็น 5-field cron หรือ integer วินาที</li>\n<li><strong>ตรวจ endpoint ได้รับอนุญาต</strong> — ต้องเป็น http(s), ไม่มี private IP</li>\n<li><strong>ตรวจ job เปิดใช้งาน</strong>: <code>GET /cron</code></li>\n<li><strong>รอเวลาที่ตั้งเวลาไว้ถัดไป</strong> — cron ไม่ใช่ทันที</li>\n</ol>\n<p>ดู <a href=\"/docs/api/cron\">Cron &amp; Scheduler</a></p>\n<h2>ต้องการความช่วยเหลือเพิ่มเติม?</h2>\n<ol>\n<li><strong>ตรวจเอกสารที่มี</strong>: <a href=\"https://synapse.schaefer.zone/docs\">https://synapse.schaefer.zone/docs</a></li>\n<li><strong>ค้นหาเอกสาร</strong>: <code>GET /docs/search?q=your+question</code></li>\n<li><strong>เปิด issue</strong>: <a href=\"https://gitlab.com/schaefer-services/synapse/-/issues\">https://gitlab.com/schaefer-services/synapse/-/issues</a></li>\n<li><strong>ติดต่อ</strong>: ดูหน้า <code>/support</code></li>\n</ol>\n<h2>ขั้นตอนถัดไป</h2>\n<ul>\n<li><a href=\"/docs/api/errors\">Errors &amp; Error Handling</a></li>\n<li><a href=\"/docs/faq/api-faq\">คำถามที่พบบ่อยเกี่ยวกับ API</a></li>\n<li><a href=\"/docs/mcp/troubleshooting\">MCP Troubleshooting</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"]}