Five years ago, I started docker-bitlbee, a Docker container that runs Bitlbee with a curated set of third-party protocol plugins pre-installed.

Why Bitlbee? Link to heading

At the time, I was using IRC as my primary communications platform, but the rest of the world was fragmenting across Slack, Rocket.Chat, Mattermost, Telegram, and others. Installing a native client for each one wasn’t appealing. Bitlbee bridges all of these into a single IRC connection: you talk to it with your IRC client, and it translates everything behind the scenes.

The problem with the official Bitlbee packages was that the version in most distribution repositories was outdated, and compiling the third-party plugins from source is tedious. By packaging everything into a container, running a feature-complete Bitlbee with custom protocols became a single docker pull.

Five years later Link to heading

The container crossed 500,000 Docker Hub pulls and picked up a community of contributors who submitted pull requests for new protocols and filed detailed bug reports. It became the top result for “docker bitlbee” on DuckDuckGo and Google.

The latest addition, based on a user request, is TLS termination via stunnel: Bitlbee itself doesn’t speak TLS natively, so stunnel sits in front of it and handles the encryption layer. This makes it safe to expose the Bitlbee port without relying solely on network-level controls.

The container image and all configuration instructions are on GitHub.

Updated 2026: Several protocols that motivated this project have changed significantly since 2020. Gitter (which I used for open-source project conversations) was acquired by Element and its IRC bridge shut down in 2023. Rocket.Chat and Mattermost have mature native clients today. Slack removed its IRC/XMPP gateway in 2018. The Bitlbee ecosystem is smaller than it was, but the container remains useful for protocols that still have active plugin support.