Subscribe to Security and News announcements
In the works: new apps, multi-app installations, clustering, better backups...
XMPP and Web Chat
An instant messaging server that combines ejabberd with Speeqe to create a live chat server that supports strong encryption and works with any web browser or dedicated XMPP client (e.g., Pidgin). ejabberd is a powerful XMPP server that supports clustering, live upgrades, shared roster groups and provides support for virtual hosts.
Run from browser:
This appliance includes all the standard features in TurnKey Core, and on top of that:
ejabberd (chat server) configurations:
- Installed from package management.
- Includes custom ejabberd-config script to change domain and set admin password (configured on first boot).
- Enabled in-band user registration (usability, convenience).
- Enabled legacy SSL connection method (still required by some clients).
- Set erlang node: ejabberd@localhost (workaround mnesia hostname changes).
- Binded admin console to port 12322 - uses SSL.
Speeqe (web chat application) configurations:
- Installed from upstream source code to /var/www/django/speeqeweb
- Installed and configured to provide web chat interface.
- Configured ejabberd with anonymous access for speeqe to connect.
- Created ejabberd robot XMPP user for speeqe to list active rooms.
- Includes local JQuery library (internal deployment).
- SSL support out of the box.
- Postfix MTA (bound to localhost) to allow sending of email from speeqe.
- Webmin modules for configuring Apache2 and Postfix.
- Includes custom ejabberd-config script to change domain, administrative password and regenerate related secrets.
/usr/lib/inithooks/bin/ejabberd.sh XMPP_DOMAIN ADMIN_PASS # ejabberd admin interface user will be: admin@XMPP_DOMAIN
- XMPP DNS records example
_jabber._tcp.example.com. 0 5269 example.com. SRV _xmpp-client._tcp.example.com. 0 5222 example.com. SRV _xmpp-server._tcp.example.com. 0 5269 example.com. SRV
- Example hosts file when testing in demo mode
/etc/hosts : appliance_ip example.com
- Known issue: speeqe is configured to be served on chat.XMPP_DOMAIN where it should be XMPP_DOMAIN.
/etc/speeqe/settings.py -HTTP_DOMAIN = "chat.yourdomain.com" +HTTP_DOMAIN = "yourdomain.com" service apache2 restart
Credentials (passwords set at first boot):
- Webmin, Webshell, SSH: username root
- Admin interface: username firstname.lastname@example.org
- Regular login: username admin
- robot user is configured with a random password and regenerated as part of secrets regeneration.