https://github.com/basecamp/once-campfire
https://github.com/basecamp/once-campfire
Last synced: 27 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/basecamp/once-campfire
- Owner: basecamp
- License: mit
- Created: 2025-08-15T09:57:36.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-09-24T14:58:31.000Z (about 1 month ago)
- Last Synced: 2025-09-24T16:42:08.615Z (about 1 month ago)
- Language: Ruby
- Size: 56.9 MB
- Stars: 3,163
- Watchers: 24
- Forks: 478
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: MIT-LICENSE
Awesome Lists containing this project
- learn-ruby - github.com/basecamp/once-campfire - hosted chat application similar to Slack.* (Rails codebases to study / Advanced Rails)
README
# 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
## Deploying with Docker
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.
To persist storage of the database and file attachments, map a volume to `/rails/storage`.
To configure additional features, you can set the following environment variables:
- `SSL_DOMAIN` - enable automatic SSL via Let's Encrypt for the given domain name
- `DISABLE_SSL` - alternatively, set `DISABLE_SSL` to serve over plain HTTP
- `VAPID_PUBLIC_KEY`/`VAPID_PRIVATE_KEY` - set these to a valid keypair to
allow sending Web Push notifications. You can generate a new keypair by running
`/script/admin/create-vapid-key`
- `SENTRY_DSN` - to enable error reporting to sentry in production, supply your
DSN here
For example:
docker build -t campfire .
docker run \
--publish 80:80 --publish 443:443 \
--restart unless-stopped \
--volume campfire:/rails/storage \
--env SECRET_KEY_BASE=$YOUR_SECRET_KEY_BASE \
--env VAPID_PUBLIC_KEY=$YOUR_PUBLIC_KEY \
--env VAPID_PRIVATE_KEY=$YOUR_PRIVATE_KEY \
--env TLS_DOMAIN=chat.example.com \
campfire
## Running in development
bin/setup
bin/rails server
## Worth Noting
When you start Campfire for the first time, you’ll be guided through
creating an admin account.
The email address of this admin account will be shown on the login page
so that people who forget their password know who to contact for help.
(You can change this email later in the settings)
Campfire is single-tenant: any rooms designated "public" will be accessible by
all users in the system. To support entirely distinct groups of customers, you
would deploy multiple instances of the application.