Run your own chat proxy for $5/mo
- Bitlbee to bridge XMPP and IRC.
- Camper Van to bridge Campfire and IRC.
- ZNC to proxy them and keep me connected.
- Palaver to connect via iOS.
- Palaver ZNC plugin for push notifications to Palaver.
- Irssi to connect via just about anything else.
- Digital Ocean for $5/mo hosting.
- Docker to simplify running everything.
- An SSL cert for some amount of security.
I created a set of docker images for each of the three core services: znc, bitlbee, and camper van. The Bitlbee and Camper Van images expose their ports so that the ZNC image can link them in. Only the ZNC port is bound to the public interface. Thus all connections must go through ZNC.
Configuration files and SSL certificates are stored on the host machine and mounted into the Docker images so they can be easily backed up or archived and taken somewhere else.
After signing up with Digital Ocean add your public key (if you don't, they'll create a random password and email it to you). In the control panel create a new Droplet based on the Docker/Ubuntu application image. SSH into it and run the following:
git clone https://github.com/sprsquish/dockerfiles cd dockerfiles ./initialize [username] [znc pw] [campfire pw] [bitlbee pw] ./start
Now you should be able to connect to [droplet ip]:6668 using SSL. ZNC
uses the password to determine which network you want to connect to. The
[user]/[network]:[network password]. For instance, to connect
to bitlbee you'd use
I'd suggest getting a domain and signed SSL certificate. ZNC's
documentation describe how to format the pem file.
Once created upload it to
/etc/state/znc/znc.pem and reload the
configuration (in IRC:
/msg *status rehash). If your client can,
have it verify the SSL certificate. Some clients may do this
automatically and wont work with a self-signed certificate.
From here you can connect through ZNC to any IRC server. Take a look at the list of ZNC modules that can be loaded up, search GitHub for more modules, or write your own.