mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-09 00:00:12 +09:00
83 lines
3.8 KiB
Markdown
83 lines
3.8 KiB
Markdown
# Campfire
|
|
|
|
Campfire is a web-based chat application. It supports many of the features you'd
|
|
expect, including:
|
|
|
|
- Multiple rooms, with access controls
|
|
- Direct messages
|
|
- File attachments with previews
|
|
- Search
|
|
- Notifications (via Web Push)
|
|
- @mentions
|
|
- API, with support for bot integrations
|
|
|
|
## Running your own Campfire instance
|
|
|
|
Campfire's Docker image contains everything needed for a fully-functional,
|
|
single-machine deployment. This includes the web app, background jobs, caching,
|
|
file serving, and SSL. You can use our pre-built image at
|
|
`ghcr.io/basecamp/once-campfire:latest`, or build your own from this repo.
|
|
|
|
### Deploying with ONCE
|
|
|
|
The easiest way to self-host Campfire is with [ONCE](https://github.com/basecamp/once).
|
|
It will guide you through the initial set up and then keep your instance up to date automatically.
|
|
|
|
If you don't already have `once` installed, run this on the machine you want to run Campfire on:
|
|
|
|
```sh
|
|
curl https://get.once.com | sh
|
|
```
|
|
|
|
`once` will launch as soon as the install is finished.
|
|
|
|
Choose Campfire from the list of applications, follow the instructions, and ONCE will take care of the rest.
|
|
|
|
If you prefer the command line to the dashboard, you can deploy directly:
|
|
|
|
```sh
|
|
once deploy ghcr.io/basecamp/once-campfire --host chat.example.com
|
|
```
|
|
|
|
### Deploying with Docker
|
|
|
|
If you'd rather run the Docker image yourself, you can read more about that in the [self-hosting guide](docs/self-hosting.md).
|
|
|
|
> [!TIP]
|
|
> When you start Campfire for the first time, you'll be guided through a wizard to create an admin account.
|
|
> The email address that you enter for the admin account will be visible on the sign-in page, it's there so
|
|
> that people have someone to contact if they need help with their account. If that bothers you, put in any
|
|
> email address you want and create yourself a new admin account.
|
|
|
|
Authenticated room, message, sidebar and search pages use a bounded 64 MiB cache per worker.
|
|
Set `CAMPFIRE_RESPONSE_CACHE_MB=0` to disable it. Every request still checks authentication
|
|
and room access; commits from any SQLite writer invalidate pages, and CSRF masks stay fresh.
|
|
Native HTML, JSON and stream fragments have a separate 64 MiB memory limit per worker;
|
|
shared rate limits retain their existing store.
|
|
|
|
## Other implementations
|
|
|
|
Campfire also has implementations in Django, Laravel, Express, Elixir, Go, Rust and C:
|
|
|
|
| HTTP workload (requests/sec) | Rails | [Django](https://github.com/basecamp/once-campfire-django) | [Laravel](https://github.com/basecamp/once-campfire-laravel) | [Express](https://github.com/basecamp/once-campfire-express) | [Elixir](https://github.com/basecamp/once-campfire-elixir) | [Go](https://github.com/basecamp/once-campfire-go) | [Rust](https://github.com/basecamp/once-campfire-rust) | [C](https://github.com/basecamp/once-campfire-c) |
|
|
|---|---:|---:|---:|---:|---:|---:|---:|---:|
|
|
| Room page | 230 | 62 | 760 | 2,622 | 942 | 31,673 | 35,484 | 141,834 |
|
|
| Messages page | 402 | 70 | 924 | 3,245 | 1,267 | 30,746 | 40,674 | 151,564 |
|
|
| Sidebar | 468 | 229 | 1,383 | 34,938 | 2,515 | 18,586 | 34,479 | 159,850 |
|
|
| Search | 399 | 118 | 1,135 | 6,613 | 1,814 | 29,765 | 34,432 | 155,456 |
|
|
| Post a message | 248 | 112 | 498 | 2,088 | 1,400 | 9,073 | 8,998 | 7,460 |
|
|
|
|
[Shared verification](https://github.com/basecamp/once-campfire-verification) · [Detailed results](https://github.com/basecamp/once-campfire-verification/blob/main/docs/performance-review.md).
|
|
|
|
Measured with 16 concurrent clients on an AMD Ryzen AI MAX+ 395 with 32 GB RAM,
|
|
with four hardware cores allocated to each app.
|
|
|
|
## Development
|
|
|
|
You are welcome - and encouraged - to modify Campfire to your liking.
|
|
Please see our [development guide](docs/development.md) for how to get Campfire set up for local development.
|
|
|
|
## Security
|
|
|
|
See [SECURITY.md](SECURITY.md) for how to report a vulnerability and a description of our trust model.
|