The self-hosted help desk: real ticketing, without the per-agent bill
Every channel in one ticket queue, on a box you own — the bill doesn't grow when your team does
- A domain or subdomain with a valid HTTPS certificate — neither tool should run customer support over plain HTTP
- A mailbox or SMTP/IMAP relay that can send and receive as your support address, with SPF, DKIM and DMARC set
- A machine that stays on — a mini PC, NAS or cheap VPS, not your laptop
- Agreement inside the team on who owns which channel, or messages still fall through the cracks between people
Version history
A support inbox that used to fit in one person's head now spans email, a chat bubble on the website, and sometimes a messaging app nobody officially signed up for — and the tools built to hold that together charge by the seat, forever.
The problem
A shared inbox works while there's one person and one channel. The moment a second person joins, or a chat widget goes on the website, or a customer starts messaging through whatever app they already have open, the single-inbox trick breaks down: two people answer the same question, a channel nobody "owns" goes quiet for days, and nobody can say how fast the business actually responds because the record is split across three tools and a phone. The commercial fix is a helpdesk platform, and every major one charges per agent, every month, forever — Freshdesk runs EUR 19-89 per agent, Zendesk's Suite plans run EUR 55 up past EUR 169, and Help Scout sits at EUR 25-75 per user, before any AI add-on tacks on another EUR 29-50 per agent. A five-person team on a mid-tier plan is easily EUR 100-300 a month; loaded up with AI extras on a top tier, the same team clears EUR 1,000 a month without anyone quite deciding to spend it. None of that buys a five-person team anything it structurally needs on day one — it buys a per-seat licence for software a EUR 10-a-month server runs just as well.
The architecture
\ | /
▼ ▼ ▼
[ Chatwoot or FreeScout (self-hosted) ]
│ every message becomes one ticket, with one owner
│ canned replies for the questions you answer daily
│ a private note thread the team can use before replying
▼
[ Weekly report: tickets closed, average first-response time ]
One box, one stack. Chatwoot needs Postgres, Redis and a background worker; FreeScout needs only PHP and MySQL — that difference in weight is the main thing separating the two picks below. Whichever you run, the tool owns every channel and every conversation's status once it's live; "who answers this" stops being decided anywhere else.
Tool choices — and why
Chatwoot (MIT licence for the core product, 34.8k stars, weekly releases through July 2026) is the default pick for most small teams because it is genuinely omnichannel: email plus a live-chat widget you drop into the website with one script tag, plus WhatsApp, Instagram and Facebook if you wire them through Meta's API. The self-hosted Community Edition has no seat limit and no ticket cap. What's missing is squarely enterprise-tier: SLA policies, SSO/SAML, custom branding, per-agent capacity limits, and "Captain," Chatwoot's AI copilot, all live in a separately-licensed enterprise/ folder that needs a paid subscription to run in production. A five-person team doesn't need any of that on day one — the day IT mandates SSO is the day to look at the paid tier, not before.
FreeScout (AGPL-3.0, 4.4k stars, active — latest release 04/07/2026) is the pick for a team that wants exactly what Help Scout does — a shared mailbox that looks and behaves like email — and nothing more. It's pure PHP and MySQL, the project states plainly there are "no minimum system requirements," and it runs on hosting that would choke trying to run Chatwoot's Node/Redis/Sidekiq stack. There's no live-chat widget in the free core; that's either a paid module (EUR 12-15, one-time, not required) or a separate tool. If the business doesn't want a chat bubble on the website and just wants its support@ address to stop being chaos, FreeScout is the lighter and cheaper-to-run answer.
Monthly cost. Software: EUR 0, both. Hosting: a EUR 6-15/month VPS runs either stack comfortably for a small team — Chatwoot's Postgres+Redis+worker footprint wants the higher end of that range, FreeScout's PHP+MySQL footprint the lower end. The only optional spend is FreeScout's paid modules if the free core ever feels thin, or a WhatsApp Business API provider if that channel matters — usage-priced, and entirely skippable if email and chat cover it.
Setup outline
1. Pick one: Chatwoot for multi-channel including live chat, FreeScout for email-only simplicity. Deploy via the official Docker image behind HTTPS on a subdomain — support.yourbusiness.example.
2. Connect the support mailbox over IMAP/SMTP so the tool can receive and send as that address.
3. Set SPF, DKIM and DMARC on the sending domain before the first real reply goes out, or replies land in spam — the same ten minutes of DNS every email-sending blueprint in this library needs.
4. Write 5-10 canned replies for the questions asked every week. This is the single biggest time-saver in the whole setup and takes an hour, not a day.
5. If using Chatwoot: add the chat-widget script tag to the website, and decide up front which hours it's actually staffed — a widget that shows "online" with nobody answering is worse than no widget at all.
6. Define ownership: one inbox per channel or per team, simple assignment rules, and what "closed" means for a ticket in this business.
7. Pilot on the real support address for a week before retiring the old inbox — import mistakes are far easier to fix before customers depend on the new one.
Pitfalls — the real ones
Migrating history is the part nobody budgets time for. Neither tool cleanly auto-imports years of Gmail or Outlook history — plan to either start fresh with old threads left where they are, or spend real hours on an import that needs checking by hand.
Chatwoot's Community Edition genuinely has no SLA tracking. If "reply within 4 hours" has to be enforced, not just reported on afterward, the honest answer is the paid Enterprise tier or a manual spreadsheet — not a workaround that quietly doesn't work.
More channels than one team can staff is a self-inflicted wound. Turning on WhatsApp and live chat in the same week a business has never run either is exactly how messages go unanswered on the newest channel first — add one channel at a time.
FreeScout's paid modules are easy to over-buy. Run the free core for a month before deciding whether the Knowledge Base or Customer Portal module actually earns its one-time fee.
This becomes a single point of failure for every customer conversation. It needs the same backup discipline as the rest of the stack — losing this database loses the entire support history at once, not just one file.
Verified repos
Chatwoot — MIT (core; enterprise/ folder separately licensed), 34.8k stars, active (July 2026)
FreeScout — AGPL-3.0, 4.4k stars, active (July 2026)
Get the next blueprint as it publishes — free, practical, verified tooling only.
Get this blueprint tailored to your business — free
Tell us what you run and where. We research your sector's specifics — rules, tools, customer habits — and send you a version of this blueprint rebuilt for your situation, usually within 24 hours.