jackal
An XMPP server written in Go.
About
jackal is a free, open-source, high performance XMPP server which aims to be known for its stability, simple configuration and low resource consumption.
Features
jackal supports the following features:
- Customizable
- Enforced SSL/TLS
- Stream compression (zlib)
- Database connectivity for storing offline messages and user settings (BadgerDB, MySQL 5.7+, MariaDB 10.2+)
- Cross-platform (OS X, Linux)
Installing
Getting Started
To start using jackal, install Go 1.10+ and run go get:
$ go get github.com/ortuman/jackalThis will retrieve the code and install the jackal server application into your $GOBIN path.
By default the application will try to read server configuration from /etc/jackal/jackal.yml file, but alternatively you can specify a custom configuration path from command line.
$ jackal --config=$GOPATH/src/github.com/ortuman/jackal/example.jackal.ymlMySQL database creation
Grant right to a dedicated 'jackal' user (replace password with your desired password).
echo "GRANT ALL ON jackal.* TO 'jackal'@'localhost' IDENTIFIED BY 'password';" | mysql -h localhost -u root -pCreate 'jackal' database (using previously created password).
echo "CREATE DATABASE jackal;" | mysql -h localhost -u jackal -pDownload lastest version of the MySQL schema from jackal Github repository.
wget https://raw.githubusercontent.com/ortuman/jackal/master/sql/mysql.sqlLoad database schema into the database.
mysql -h localhost -D jackal -u jackal -p < mysql.sqlYour database is now ready to connect with jackal.
Run jackal in Docker
Set up jackal in the cloud in under 5 minutes with zero knowledge of Golang or Linux shell using our jackal Docker image.
$ docker pull ortuman/jackal
$ docker run --name jackal -p 5222:5222 ortuman/jackalSupported Specifications
- RFC 6120: XMPP CORE
- RFC 6121: XMPP IM
- RFC 7395: XMPP Subprotocol for WebSocket
- XEP-0012: Last Activity
- XEP-0030: Service Discovery
- XEP-0049: Private XML Storage
- XEP-0054: vcard-temp
- XEP-0077: In-Band Registration
- XEP-0092: Software Version
- XEP-0138: Stream Compression
- XEP-0160: Best Practices for Handling Offline Messages
- XEP-0191: Blocking Command
- XEP-0199: XMPP Ping
- XEP-0220: Server Dialback
- XEP-0237: Roster Versioning
Join and Contribute
The jackal developer community is vital to improving jackal future releases.
Contributions of all kinds are welcome: reporting issues, updating documentation, fixing bugs, improving unit tests, sharing ideas, and any other tips that may help the jackal community.
Licensing
jackal is licensed under the GNU General Public License, Version 3.0. See LICENSE for the full license text.
Contact
If you have any suggestion or question:
Miguel Ángel Ortuño, ortuman@pm.me