FreeScout: a self-hosted help desk in PHP that runs on shared hosting
FreeScout — Free self-hosted omnichannel AI-powered helpdesk & shared mailbox
At a glance
- What is it?
- FreeScout is an AGPL-3.0 Laravel application for shared mailboxes and omnichannel support. It installs through a web installer or a Docker image, and its limits show up in the same place as its strengths: PHP and MySQL only.
- Who is it for?
- Adopt FreeScout if you want a shared mailbox and ticketing system you host yourself, with unlimited agents and mailboxes, on plain PHP and MySQL. Do not adopt it if you need a support stack outside PHP or a vendor SLA behind the software.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly PHP, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What FreeScout replaces, and for whom
FreeScout is a help desk and shared inbox that you run on your own server. The README frames it as a free alternative to Zendesk and Help Scout, and states that it was developed from scratch without using copyrighted material from either. The audience is a support team that wants one place for customer conversations, keeps its data on infrastructure it controls, and does not want per-agent pricing. The README lists unlimited support agents, tickets and mailboxes as a feature, which is the direct contrast with per-seat SaaS help desks.
The scope is wider than email. The project describes itself as omnichannel: conversations arrive by email, WhatsApp, Telegram, Facebook, Slack and Live Chat, and land in one queue. Email connection is through SMTP, IMAP or POP3, with OAuth for Microsoft Office 365 and Google Workspace. The interface is translated into 33 languages and the README states it supports screen readers. That combination points at small and mid-sized support operations, internal IT desks, and teams already running their own mail infrastructure.
How the Laravel application is put together
The repository is a conventional Laravel layout: app/, bootstrap/, config/, database/, public/, resources/, routes/, storage/, tests/ and vendor/ at the top level, with artisan and composer.json alongside them. Front-end assets are built with Laravel Mix through webpack.mix.js and the scripts in package.json, which include dev, watch, prod and hot targets. Nothing in that file is unusual, and the devDependencies block is empty in the copy shown, so the build tooling is declared elsewhere.
Two directories tell you more about the design than the framework does. Modules/ holds the module system that the README links to as official and community modules, and overrides/ exists for replacing core behaviour without forking it. That is the extension model: install a module rather than patch the application. The default branch is dist, not master, which matters if you clone the repository directly rather than downloading a release. Configuration lives in .env, and the example file carries the operational switches: APP_URL, APP_PROXY for reaching api.freescout.net when official modules are installed, APP_TRUSTED_PROXIES for correct client IP detection, APP_TIMEZONE, APP_CUSTOM_MAIL_HEADERS, and APP_UPDATE_FOLDER_COUNTERS_IN_BACKGROUND for installations with many folders. The example file states that .env changes require php artisan freescout:clear-cache, which is a real operational detail rather than a cosmetic one.
Installing FreeScout and connecting the first mailbox
The README points at an Installation Guide in the project wiki and lists one-click options including a Docker image, Softaculous, Cloudron, Pikapods, Zenith and Hostinger, plus an interactive bash script for Ubuntu. The requirements are Nginx, Apache or IIS, PHP 7.4 to 8.x, and MySQL 5.0+, MariaDB 5.0+ or PostgreSQL. The README states there are no minimum CPU or RAM requirements and that FreeScout will run on any system, which is why shared hosting is listed as a supported deployment target.
Do not create .env by hand if you intend to use the web installer. The example file is explicit: if .env exists in the root of the app, the web installer will not run. The example file also shows the shape of the configuration you will end up with:
APP_URL=https://example.com
#SESSION_SECURE_COOKIE=true
#APP_PROXY=
#APP_TIMEZONE=Europe/London
#APP_TRUSTED_PROXIES=192.168.1.1,192.168.1.2The APP_URL value is what the application uses to build links, so set it before you finish the installer. After any edit to .env, the file instructs you to run the cache clear command:
php artisan freescout:clear-cacheIf you are behind a reverse proxy or load balancer and client IPs look wrong, the example file says to set APP_TRUSTED_PROXIES, with a single asterisk to trust proxies that connect to your server and a double asterisk to trust a forwarding chain. A common error, quoted in the example file, is "Domain or IP address is not allowed", and the file points to the Installation Guide for the fix. Once installed, the first real task is connecting a mailbox under the mailbox connection settings, using OAuth for Office 365 or Google Workspace where available, or SMTP, IMAP and POP3 otherwise. From there agents work from the conversations list, with collision detection when two agents open the same conversation and automatic refreshing of the list without a page reload.
Where FreeScout is the wrong tool
The stack is the boundary. FreeScout is PHP and MySQL or PostgreSQL, so a team standardized on Python or Node services, or on a managed platform that does not run PHP, gains nothing from adopting it beyond the feature list. The README presents shared hosting compatibility as an advantage, and it is one, but it also means the application inherits the operational ceiling of that environment.
Several features that teams assume are built in are not. The README links to a separate AiIntegration repository for the AI-powered drafting shown in its screenshots, and directs readers to official and community module listings for the rest. WhatsApp, Telegram, Facebook, Slack and Live Chat are described as channels FreeScout centralizes, but the README does not document which of those are core and which arrive through modules, so budget time to check the module pages before you promise a channel to your team. Official modules are obtained through api.freescout.net, and the example environment file notes that APP_PROXY may be needed if that host is not reachable from your server. An installation with no outbound access to that endpoint cannot fetch official modules.
Search is described as powerful and notifications as flexible, but the README gives no sizing guidance beyond "no minimum system requirements". The example file hints at the real constraint with APP_UPDATE_FOLDER_COUNTERS_IN_BACKGROUND, which it recommends uncommenting when you have many folders and are seeing performance issues. That is an admission that folder counting is expensive at scale, and it is the kind of thing you discover on a large mailbox rather than on a demo.
FreeScout compared with osTicket, Zammad and Chatwoot
The repository topics name osTicket and Zendesk as alternatives, and the search interest around this project includes osTicket, Zammad and Chatwoot comparisons. The distinction that matters is architectural rather than feature-by-feature. osTicket is also PHP and MySQL, so it shares the shared-hosting deployment story, but FreeScout is a Laravel application with a module system and an overrides directory, which changes how you extend it: you install or write a module instead of editing core files. Zammad is a different proposition, built on Ruby and Elasticsearch, and that stack buys search and indexing behaviour that a plain MySQL installation does not have, at the cost of a heavier server. Chatwoot targets live chat and conversational support first, while FreeScout's centre of gravity is the shared mailbox and ticket queue, with chat as one of several channels.
The honest summary is that FreeScout competes on deployment cost and on how little infrastructure it needs. If your constraint is a small VPS or a shared host and your team lives in email, that trade is favourable. If your constraint is full-text search across a very large ticket history, or a support model built around real-time chat, the alternatives above are designed around those problems and FreeScout is not.
Licence, updates and what maintenance actually costs
FreeScout is licensed under AGPL-3.0. The practical consequence for a self-hoster is the network clause: if you modify the application and let users interact with it over a network, the licence's terms apply to the modified source. Running an unmodified installation for your own support team is the ordinary case and does not raise that question. If you plan to fork FreeScout, rebrand it, or embed it in a product you offer to others, read the licence text in the repository rather than relying on a summary, and take your own advice on it. This is not legal advice.
The release cadence is visible: 1.8.239 on 2026-09-04, 1.8.240 on 2026-09-12 and 1.8.241 on 2026-09-19, with the last push to the repository on 2026-09-19. Point releases at that rhythm mean an installation that is not updated regularly drifts, and the README advertises a web installer and updater, so the upgrade path is intended to be run from the browser. Two things make upgrades cheaper over time: keep .env changes documented, because the example file says every change needs php artisan freescout:clear-cache to take effect, and treat modules as part of your upgrade surface, since a core update that a module has not caught up with is the failure you will actually hit. The README does not document a rollback procedure, so plan your own backup of the database and the installation directory before running an update.
Editorial conclusion
Adopt FreeScout if you want a shared mailbox and ticketing system you host yourself, with unlimited agents and mailboxes, on plain PHP and MySQL. Do not adopt it if you need a support stack outside PHP or a vendor SLA behind the software. Before committing, confirm three things: that your host meets the PHP 7.4 to 8.x and MySQL, MariaDB or PostgreSQL requirement, that the modules you need exist in the official or community listings, and that you can live with AGPL-3.0 terms for any code you modify. The docker image at freescout.net/docker is the fastest way to check all three against a real installation.
Frequently asked questions
Is FreeScout good?
It depends on your constraints. If you want a self-hosted shared inbox on PHP and MySQL with unlimited agents and mailboxes, the feature list and the shared-hosting deployment story line up well. If you need search over a very large ticket history or a chat-first support model, other tools are built around those problems.
What are the minimum system requirements to run FreeScout?
The README lists Nginx, Apache or IIS, PHP 7.4 to 8.x, and MySQL 5.0+, MariaDB 5.0+ or PostgreSQL. It states there are no minimum CPU or RAM requirements and that FreeScout will run on any system.
How do I install FreeScout on Ubuntu?
The README lists an interactive installation bash script for Ubuntu in its one-click installs section and links to the Installation Guide in the project wiki for the full procedure. If you use the web installer, do not create a .env file first, because the example file states the installer will not run when .env already exists.
Is FreeScout free?
Yes. It is released under AGPL-3.0 and the README positions it as a free alternative to Zendesk and Help Scout. Official and community modules are distributed separately, so check the module pages for anything beyond the core application.
What is FreeScout?
FreeScout is a self-hosted help desk and shared inbox written in PHP on the Laravel framework. It centralizes customer conversations from email, WhatsApp, Telegram, Facebook, Slack and Live Chat in one place.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/freescout-help-desk-freescout)