Run it yourself
One program, one folder, one afternoon. This is what it will take once there is a release. There is not one yet.
- A machine
- With a public address. One CPU core and 1 GB of memory is the target for 500 members.
- A host name
- Pointing at it. Choose it with care: passkeys are tied to it, and changing it later means everyone makes new ones.
- Ports
- 80 and 443. Calls also need 24877, on UDP and TCP.
- Nothing else
- No mail server, no separate database, no cache, no configuration file.
Alone untried
churr serve -hostname chat.example.com \
-data /var/lib/churr
Churr listens on 80 and 443 and fetches and renews its own certificate. Fetching a real certificate has not been tried yet; serving one you supply has.
Behind a proxy untried
churr serve -behind-proxy \
-hostname chat.example.com \
-data /var/lib/churr
Churr serves plain HTTP on localhost and your proxy handles HTTPS. The Caddy and nginx examples in the guide have not been tried.
In a container untried
cp .env.example .env
docker compose up -d
A compose.yaml comes with the source. It has never been built or started.
Either way, the log prints a one-time setup link. Open it, make the owner's passkey, confirm what the server may reach, and invite people.
Back up
churr backup -data /var/lib/churr /backups/today
Runs while the server runs. The result is a complete data folder: database, keys and uploaded files. Try a restore on a spare machine before you rely on it.
Upgrade
Back up, replace the program, start it. The database is migrated at start. There is no downgrade: to go back, restore the backup.
Other commands
- recovery
- A one-time link for someone who is locked out.
- migrate-db
- Moves a community between SQLite and PostgreSQL.
- export
- Everything the server can read, as files.
- import slack
- Reads a Slack export into a new community.
These are measurements of single runs with the load generator on the same machine, and nothing more. No files, search, calls or phones were part of them.
- 500 members
- All 500 connected on one CPU core with SQLite. At 5 messages a second, half of all posts were answered within 30 ms and 99 in 100 within 114 ms.
- Memory
- 77 MiB with everyone connected. 147 MiB at its highest, at 20 messages a second.
- 5,000 members
- On PostgreSQL. Not run.
- Calls
- A 25-person call was run on one laptop, not on a server.
Not out yet. Nearly a thing.
There is nothing to download today. The status page says exactly what is built, what is being built and what has never been tried, and it is updated as that changes.