We've made selt-hosting Beeper bridges infinitely easier! We recommend using our new tool bridge-manager rather than this old method.
If you're just looking to install Beeper, you can get it here. If you're a developer wanting to contribute or if you want to self-host Beeper on your own infrastructure, read on.
Read the full FAQ
Beeper is built on top of an open source chat protocol called Matrix. When we started building Beeper, we made a fundamental decision to open source the majority of our backend code and provide you with the option to self-host Beeper. We chose to do this because:
Our infrastructure stack is composed of:
Beeper Clients
Matrix Homeserver
Open Source, Beeper-maintained Matrix bridges | mautrix/whatsapp | mautrix/signal |
---|---|---|
mautrix/telegram | mautrix/facebook | |
mautrix/iMessage | mautrix/twitter | |
android-sms | mautrix/discord | |
mautrix/slack | mautrix/instagram | |
hifi/heisenbridge | mautrix/googlechat | |
beeper/linkedin | beeper/groupme |
Open source, community maintained Matrix bridges, Beeper sponsored
fair/kakaotalk | fair/line |
---|
What is a Matrix bridge? Learn more
Self hosting Beeper is possible, but not an easy task right now. It requires experience and/or willingness to learn Linux system administration.
Note: only open source Matrix clients like Element or SchildiChat can connect to a self-hosted system at this time. Beeper clients require a Beeper account and use Beeper’s infrastructure.
Purchase a domain
selfhostbeeper.com
) wherever <insert_domain>
is shown in these instructions.Select a hosting provider
Configure DNS
Type | Host | Priority | Weight | Port | Target |
---|---|---|---|---|---|
A | matrix | - | - | - | droplet-ip |
nslookup -type=A matrix.<insert_domain>
Install necessary tools on your desktop/laptop
****Mac OS****
brew install git pwgen
****Linux****
apt install git pwgen
Download playbook to your desktop/laptop
git clone https://github.com/spantaleev/matrix-docker-ansible-deploy.git && cd matrix-docker-ansible-deploy
Configure the installation
mkdir inventory/host_vars/matrix.<insert_domain>
wget https://raw.githubusercontent.com/beeper/self-host/main/vars.yml
cp vars.yml inventory/host_vars/matrix.<insert_domain>/vars.yml
openinventory/host_vars/matrix.<insert_domain>/vars.yml
in a text editor
<insert_domain>
in line 12<create_secretkey>
shows up (eg line 22), switch back to your terminal, run pwgen -s 64 1
and insert that key into the filecp examples/hosts inventory/hosts
Open inventory/hosts
in a text editor
<your_domain>
with your domainyour-server's external IP address>
with Droplet IPansible_connection=community.docker.nsenter
. The hosts file shold now look like this:
[matrix_servers]
matrix.YOUR.DOMAIN ansible_host=YOUR_SERVERS_IP ansible_connection=local ansible_ssh_user=root ansible_connection=community.docker.nsenter
Install docker and make sure it is started
Mac OS - Follow instructions https://docs.docker.com/desktop/install/mac-install
Linux - Follow instructions https://docs.docker.com/desktop/install/linux-install/#generic-installation-steps
Run Ansible in docker from the /matrix-docker-ansible-deploy
directory. If this doesn't work, check the playbook instructions.
docker run -it --rm \
-w /work \
-v `pwd`:/work \
-v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro \
--entrypoint=/bin/sh \
docker.io/devture/ansible:2.13.6-r0-1
Your terminal should now show /work
, then issue these commands
git config --global --add safe.directory /work
make roles
ansible-playbook -i inventory/hosts setup.yml --tags=install-all,ensure-matrix-users-created,start
ansible-playbook -i inventory/hosts setup.yml --tags=self-check
vars.yml
, or if we switch some component from being installed by default to not being installed by default anymore, you'd need to run the setup command with --tags=setup-all
instead of --tags=install-all
. See Playbook tags introduction****e. Create your user account, change the command to include your preferred username (<insert_username
) and password (<your_password>
).
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=<insert_username> password=<your_password> admin=yes' --tags=register-user
In a browser, open our recommended Matrix client, https://app.schildi.chat/#/login
https://matrix.<your_domain>
into the homeserver field, eg https://matrix.beeptest.org
then click ContinueSet up each bridge
@whatsappbot:<your_domain>
into the search bar and wait for a suggestion to appear, then click on it, then click Done. This will start a chat with the ‘bridge bot’ and provide you with a console to login and setup the bridgehelp
in the chat to see the list of commands. Each bridge has a slightly different sign in command, but it is usually login
, link
, or login-qr
@instagrambot:<your_domain>
)Set up mobile apps
Advanced and optional! Enable federation
A record
to your DNS pointing at your Droplet IPvars.yml
to matrix_nginx_proxy_base_domain_serving_enabled: true
, then re-run the Ansible scriptWe would love to hear what you think about Beeper and our open source software. We hang out at #beeper:beeper.com on Matrix, or create an issue in this repository.