A look at Campfire for self-hosted Slack alternative
A look at Campfire for self-hosted Slack alternative
March 2026
Campfire is not really a commonly suggested alternative to Slack/Discord. Afterall its missing various features including voice chat, threads or other features. It makes up for it by being incredibly easy to self-host and easy to write a bot that can interact in such an interface.
Campfire can be hosted from a single Dockerfile using sqlite as its database. For majority of low-numbered user-count situations this is more than sufficient.
1services:
2 campfire:
3 image: ghcr.io/basecamp/once-campfire:latest
4 volumes:
5 - ./campfire_storage:/rails/storage
6 restart: always
7 ports:
8 - "3000:3000" # or whatever is appropriate
9 environment: # probably other envvars to setup if you are actually exposing this via tailscale etc..
10 SECRET_KEY_BASE: "salt"
11 DISABLE_SSL: "true"
Writing a bot for this is likewise very straightforward. It uses a webhook with a set format. Just make sure your response is correct format. You can also send images or video with the appropriate MIME type. For example using FastAPI/Starlette it may look something like this:
1@app.post(
2 "/debug",
3)
4def debug_request(request: WebhookRequest):
5 return Response(
6 content=DEFAULT_MESSAGE_TEMPLATE.render(debug=request, msg="Debug Request Output"),
7 media_type="text/html",
8 )
If this isn’t set appropriately, the message would be treated as a json
attachment, which is probably not what you’re after.