Campfire is 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
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.
bin/setup
bin/rails server
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 nameDISABLE_SSL
- alternatively, setDISABLE_SSL
to serve over plain HTTPVAPID_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 SSL_DOMAIN=chat.example.com \
campfire