Campfire
37signals’ free group chat - rooms, DMs, files, search. Slack without the per-seat meter.
One-click deploy, from $5/mo on a Miget plan.
Campfire is 37signals’ free group chat: rooms, direct messages, file sharing, full-text search, @mentions, sounds, and Web Push. It was the first ONCE app - originally a one-time paid product - and is now MIT-licensed and free.
It is a single self-contained Rails container: web, background jobs, caching, and file serving all in one, fronted by Thruster and backed by SQLite. This template sets HTTP_PORT to 5000 and DISABLE_SSL=true (Miget terminates TLS), so there is no wrapper - messages and uploads live on one volume.
Where Slack meters seats and quietly hides old messages behind paid history, Campfire keeps the entire conversation and all files on infrastructure you own, for the price of one small plan rather than a per-person monthly bill.
Upstream project: Campfire (37signals)
#what you get
- Rooms, DMs, file sharing, search, @mentions, sounds
- Web Push notifications (browser and mobile)
- Self-contained: web + jobs + cache + files in one container
- SQLite + uploads on a single volume
- Thruster front-end; HTTP_PORT=5000, no proxy wrapper
- MIT-licensed - the once-paid ONCE app, now free
#topology
| Service | Role | Public |
|---|---|---|
| campfire | chat (web + jobs + files, :5000) | yes |
| storage volume | SQLite + uploaded files | no |
#miget sizing
// this stack needs
512 MiB RAM · 10 GB disk · 1 service
The self-contained Rails app idles in 512 MiB; the Hobby plan covers a team. Size the volume to your message history and shared files. VAPID push keys auto-generate. Keep replicas at 1 (single SQLite file).
Hobby - recommended fit
$5/mo
1 vCPU · 512 MiB · 10 GiB disk
Headroom for your own apps: 1 GiB at $7/mo
Professional - production
$22/mo
1 vCPU · 2 GiB · 10 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| Campfire on Miget ★ | 512 MiB plan | $5 | this whole stack, flat - no usage meters, and room left for your own apps |
| Slack | Pro | ~$88 | $8.75/user/mo at 10 users; meters message history |
| Microsoft Teams | Essentials | ~$40 | $4/user/mo at 10 users, plus the Microsoft 365 pull |
Campfire is free software; full history and files stay on your infrastructure, with no per-seat meter.
#vs. other PaaS
Estimated monthly cost of running this exact stack (512 MiB RAM, 10 GB disk, 1 container) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $5 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$25 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| DO App Platform | ~$11 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Render | ~$10 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| Railway | ~$7 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$4 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
campfire -
Set the required variable:
SECRET_KEY_BASE, Rails secret (openssl rand -hex 64)
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/campfire
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
Is Campfire still a paid product?
No. Campfire launched as a one-time paid ONCE purchase, but 37signals has since open-sourced it under the MIT license. It is now free to self-host - no purchase and no license server.
What does this save vs Slack or Teams?
Slack Pro is $8.75/user/month and meters message history; Microsoft Teams rides a Microsoft 365 subscription. Campfire is free software on one small Miget plan for the whole team, with full history and files kept on your own infrastructure.
Does it need a database or Redis container?
No. Campfire bundles web, background jobs, caching, and file serving into one container on SQLite - a genuinely single-service deploy. Everything persists on the storage volume.
Ship Campfire today
One compose stack, 512 MiB of RAM, from $5/month flat, and it runs on your laptop with the same files.