Skip to content
Meith

For communities that already live in chat

Keep the server.Stop losing the good threads.

Nobody is asking you to leave Discord. But the answer somebody wrote out in full on Tuesday is unfindable by Thursday, Slack quietly swallows everything past its message limit, and none of it is reachable from a search engine. Meith is where the things worth keeping go — and the chat carries on exactly as it is.

Read the source
A community's board, in outline — its forums, what is in them, and the last thing said.

Somebody answered this last month. I can't find it.

Chat search returns a list of messages that mention a word. Board search returns the thread that is about your question, ranked ahead of a passing mention of it, and it stays quick however far back the archive goes.

We hit the message limit and lost two years.

Nothing here expires and nothing sits behind a plan. The archive is rows in a Postgres database on a machine you rent, and the only thing that ever removes a post is somebody deciding to.

The same five questions, every week, forever.

Write the answer once, in a thread with an address you can paste. Newcomers find it themselves — which a private server can never let them do, however good the answer was.

None of it is on the open web.

Every public thread has a permanent URL, renders as plain HTML, and turns up in a search engine. A year of good answers stops being invisible and starts bringing you people.

The reason to bother

An archive that is actually findable.

This is the whole trade. Chat is unbeatable for the conversation happening right now and hopeless at everything after it; a board is the exact opposite. Running both is not a compromise — it is the two halves of what a community actually needs.

A thread has an address
Every public thread has a permanent URL you can paste into the chat, into a README, into a reply. Nothing behind a login, nothing that expires, nothing that moves because somebody said something else.
And a search engine can read it
Public forums render as plain HTML, feeds are published as Atom, and there is no third-party script in the way. The answers you have already written start doing the work of finding you people.

Which is the part chat cannot do at any price: a private server is invisible to everybody who has not already joined it.

Coming from Discord or Slack

You do not need to move anything.

There is no clean export out of either, and you would not want one — a chat log poured into a forum is still a chat log. The communities that do this well start the board with the twenty threads that were always worth keeping, and add to it whenever an answer in chat turns out to deserve writing down properly.

The server stays. Nothing about this asks anybody to change where they hang about.

The bit people worry about

“But who's going to run it?”

Somebody in your community already does this for a living, or near enough — every club has one and every project has three. This is a job for them, and it is smaller than they will expect: about half an hour, once, and then it runs. What it needs is a server, a domain, and nobody's permission.

~/boards
git clone https://github.com/meith-dev/meith.git
cd meith && cp .env.example .env
docker compose up -d --build
✔ db started
✔ migrate exited (0)
✔ web started
✔ worker started
→ open /install to name the board

The whole job, by hand. The guided route is the same four containers, with the panel typing the secrets in for you.

Guided, with Coolify

A panel installed on the same server — still your machine, not a service you sign up to. Point it at the repository and it generates the secrets and the database password, issues the certificate, tells the board its own address, and redeploys on push.

Nothing is typed in. About twenty minutes.

The quickstart

Or by hand, if they would rather

The same four containers without the panel — Postgres, a one-shot migration the others wait on, the web server, and the worker that runs the background tick. A clone, an .env with three generated secrets, one command, and a reverse proxy they already run.

Postgres and nothing else — no Redis, no broker, no search cluster.

Deploying by hand

What it costs

A small board is happy on a VPS of about €15 a month, and a busy one wants a bigger machine — that part scales with your board the way anything does.

What never changes is what the bill follows. It follows the machine, never the membership: two hundred members cost exactly what twenty do, and there is no tier that unlocks the private forum.

The operator handbook

Still quick a decade in

Reading never drags.

Long threads, deep pages, a search across everything ever written — pages come back before anyone wonders whether the board is busy, and they keep doing it as the archive grows. Ten years of history is a feature of your community rather than a weight on it.

Measured, not asserted: against a board of 2.3M posts, a thread page renders in 3.3 ms at the 95th percentile — and a run over its 50 ms budget fails the build.

Every measurement, and how it was taken

Coming from somewhere else

Bring the archive if you have one.

A MyBB board imports whole, and the importer is resumable, so a decade of history moves across several sittings rather than one long night. Old links keep working, so every URL anybody ever posted still lands.

Coming from a chat platform or a Facebook group is different, and it is worth being straight about it: there is usually no clean way to get your history out of one. That is their decision rather than ours.

The parity decisions

The licence

Yours to keep.

Meith is free software under the GNU Lesser General Public License v3. Run a board on it for anything at all, commercially included, without publishing a line of your configuration or a word your members wrote. Nobody can put a price on it later, and nobody can switch it off.

Themes and plugins are yours
Both fill an interface this software provides, which is the case the Lesser GPL exists to allow. License yours however you like — it is not obliged to be LGPL because the board it runs in is.
Changes to Meith come back
Modify the board itself and those changes carry the same licence to whoever you hand the modified version to. That is the copyleft, and it is the whole of what is asked.

Which is the point of choosing it: the version you are running stays free software whatever anybody decides later, and anybody can carry it on.

Read the licenceGNU Lesser General Public License v3

LGPLv3 is additional permissions on top of the GNU GPL, which it incorporates. Both texts are in the repository, and both travel with any copy you pass on.

Give the good answers somewhere to live.

On a machine of your own, at your own address, in about half an hour. Have a look at a real board first — and read the source before you run it.

Set one upSource
A machine
Your own, with Docker
A domain
Pointed at it
Everything else
Comes up beside it