{"slug": "self-host-feedlog-ai-support-feedback-boards-on-docker-vercel-or-cloudflare", "title": "Self-Host FeedLog: AI Support + Feedback Boards on Docker, Vercel, or Cloudflare Workers", "summary": "A developer has released FeedLog, a self-hostable AI customer-support and feedback-board product that runs on Docker, Vercel, or Cloudflare Workers. The project uses OpenAI's text-embedding-3-large at 768 dimensions stored in pgvector to surface near-duplicate feature requests before a board fragments, and ships an npm-installable widget (@feedlog/widget) that supports guest-only bootstrap or server-signed HS256 JWT authentication and passes page path, title, and meta description as agent context. The developer advises treating the vector store as a first-class infrastructure dependency and backing up embeddings with Postgres rather than as cache.", "body_md": "Optional later: OAuth providers, transactional email (status notifications, password reset), and object storage for attachments.\n\nDuplicate feature requests are the silent killer of feedback boards. FeedLog’s similar-idea path stores embeddings (documented as OpenAI `text-embedding-3-large` at 768 dimensions in the project README) and uses pgvector so new posts can surface near-duplicates before the board fragments.\n\nEngineering takeaway: treat `vector` as a first-class dependency in your infra checklist, same as the app image. If you migrate hosts later, back up embeddings with the rest of Postgres — they are part of product memory, not cache.\n\nCustomers should not leave your product to ask a question or cast a vote. Install the package:\n\n```\nnpm install @feedlog/widget\n```\n\nGuest-only bootstrap:\n\n``` js\nimport { createWidget } from '@feedlog/widget'\ncreateWidget({\n  baseUrl: 'https://acme.feedlog.ai', // your workspace URL\n  theme: 'auto',\n})\n```\n\nFor product accounts, pass `auth.getToken` (server-signed HS256 JWT with required `email` and `exp`) and optional `auth.login` that opens your existing sign-in UI. Call `createWidget()` once in client-only startup — a Nuxt `.client` plugin is a natural fit; the package can be imported during SSR, but initialization must run in the browser.\n\n`openWidget()` / `closeWidget()` / `updateWidget()` let you hide the default launcher and drive Help from your own nav, sync theme, and adjust `zIndex` so the panel does not fight your modals. When a customer sends a message, the widget shares page path, title, and meta description as Agent context (query strings and body content are excluded).\n\nStep-by-step options, SSO claims, and troubleshooting live in the [widget installation guide](https://help.feedlog.ai/developers/widget).\n\n`vector`.\n`@feedlog/widget` behind your auth.", "url": "https://wpnews.pro/news/self-host-feedlog-ai-support-feedback-boards-on-docker-vercel-or-cloudflare", "canonical_source": "https://dev.to/peggggykang/self-host-feedlog-ai-support-feedback-boards-on-docker-vercel-or-cloudflare-workers-5df1", "published_at": "2026-10-29 09:08:36+00:00", "updated_at": "2026-10-29 09:17:12.987071+00:00", "lang": "en", "topics": ["ai-products", "ai-agents", "ai-tools", "ai-infrastructure", "developer-tools"], "entities": ["FeedLog", "OpenAI", "Docker", "Vercel", "Cloudflare Workers", "pgvector", "Nuxt"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/self-host-feedlog-ai-support-feedback-boards-on-docker-vercel-or-cloudflare", "markdown": "https://wpnews.pro/news/self-host-feedlog-ai-support-feedback-boards-on-docker-vercel-or-cloudflare.md", "text": "https://wpnews.pro/news/self-host-feedlog-ai-support-feedback-boards-on-docker-vercel-or-cloudflare.txt", "jsonld": "https://wpnews.pro/news/self-host-feedlog-ai-support-feedback-boards-on-docker-vercel-or-cloudflare.jsonld"}}