jackal alternatives and similar packages
Based on the "Server Applications" category.
Alternatively, view jackal alternatives based on common mentions on social networks and blogs.
10.0 9.7 jackal VS etcdDistributed reliable key-value store for the most critical data of a distributed system
9.9 9.8 jackal VS VaultA tool for secrets management, encryption as a service, and privileged access management
9.9 9.9 jackal VS consulConsul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
9.3 0.0 jackal VS PonzuHeadless CMS with automatic JSON API. Featuring auto-HTTPS from Let's Encrypt, HTTP/2 Server Push, and flexible server framework written in Go.
9.3 9.8 jackal VS RoadRunner🤯 High-performance PHP application server, load-balancer and process manager written in Golang
8.4 1.1 jackal VS discoveryA registry for resilient mid-tier load balancing and failover.
8.3 4.1 jackal VS FlagrFlagr is a feature flagging, A/B testing and dynamic configuration microservice
8.2 1.0 jackal VS Key TransparencyA transparent and secure way to look up public keys.
8.1 7.7 jackal VS TricksterOpen Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator
5.5 9.0 jackal VS EruEru, a simple, stateless, flexible, production-ready orchestrator designed to easily integrate into existing workflows. Can run any virtualization things in long or short time.
5.5 0.0 jackal VS marathon-consulIntegrates Marathon apps with Consul service discovery.
Do you think we are missing an alternative of jackal or a related project?
An XMPP server written in Go.
jackal is a free, open-source, high performance XMPP server which aims to be known for its stability, simple configuration and low resource consumption.
jackal supports the following features:
- Enforced SSL/TLS
- Stream compression (zlib)
- Database connectivity for storing offline messages and user settings (PostgreSQL 9.5+)
- Clustering capabilities (etcd 3.4+)
- Expose prometheus metrics
- Cross-platform (OS X, Linux)
To start using jackal, install Go 1.17+ and run the following commands:
$ go get -d github.com/ortuman/jackal $ cd $GOPATH/src/github.com/ortuman/jackal $ make install installctl
This will fetch the code and install
jackalctl binaries into your
By default the application will try to locate service configuration at
config.yaml, but alternatively you can specify a custom configuration path either through command line.
$ jackal --config=/your-custom-path/your-config.yaml
or environment variable:
$ env JACKAL_CONFIG_FILE=/your-custom-path/your-config.yaml jackal
PostgreSQL database creation
Create a user and a database for that user:
CREATE ROLE jackal WITH LOGIN PASSWORD 'password'; CREATE DATABASE jackal; GRANT ALL PRIVILEGES ON DATABASE jackal TO jackal;
Download lastest version of the [PostgreSQL schema](sql/postgres.up.psql) from jackal Github repository.
Run the postgres script file to create database schema:
psql --user jackal --password -f sql/postgres.up.psql
Configure jackal to use PostgreSQL by editing the configuration file:
storage: type: pgsql pgsql: host: 127.0.0.1:5432 user: jackal password: password database: jackal
Your database is now ready to connect with jackal.
Creating jackal user
After completing database setup and starting
jackal service you'll have to register a new user to be able to login. To do so, you can use
jackal command-line tool to create a new user proving name and password.
make installctl && jackalctl user add <user>:<password>
The purpose of clustering is to be able to use several servers for fault-tolerance and scalability.
jackal is a distributed system, it needs a distributed data store like etcd to share its state across the entire cluster.
To properly run
jackal in clustering mode make sure to add a
cluster section configuration in each of your service nodes.
Here's an example of how this section should look like:
cluster: etcd: endpoints: - http://<etcd-host1>:<etcd-port1> - http://<etcd-host2>:<etcd-port2> ... port: your-cluster-node-port # default is 14369
Note the defined
port value will be used to perform cluster node communication, so make sure is reachable within your internal network.
The purpose of the extensibility framework is to provide an interface between jackal server and third-party external modules, thus offering the possibility of extending the functionality of the service for particular use cases. Extensibility gRPC API proto files can be found at jackal proto definitions repository.
Run jackal in Docker
The Docker deployment framework supports easy installation and configuration of jackal server.
You need to have Docker installed on your system before you can use a jackal Docker image. See Install Docker for instructions.
Download the jackal Docker image from the official Docker Hub library with this command:
docker pull ortuman/jackal:latest
Start a new jackal Docker container with custom configuration.
docker run --name=jackal \ --mount type=bind,src=/path-on-host-machine/my-custom-config.yaml,dst=/jackal/config.yaml \ -d ortuman/jackal:latest
Alternatively, and with the purpose of facilitating service mounting, you can make use of
docker-compose as follows:
docker-compose -f dockerfiles/docker-compose.yml up
This command will spin up a
jackal server along with its dependencies on a docker network and start listening for incoming connections on port
Once up and running, don't forget to register one or more users using
- RFC 6120: XMPP CORE
- RFC 6121: XMPP IM
- XEP-0004: Data Forms 2.9
- XEP-0012: Last Activity 2.0
- XEP-0030: Service Discovery 2.5rc3
- XEP-0049: Private XML Storage 1.2
- XEP-0054: vcard-temp 1.2
- XEP-0092: Software Version 1.1
- XEP-0114: Jabber Component Protocol 1.6
- XEP-0115: Entity Capabilities 1.5.2
- XEP-0138: Stream Compression 2.0
- XEP-0160: Best Practices for Handling Offline Messages 1.0.1
- XEP-0190: Best Practice for Closing Idle Streams 1.1
- XEP-0191: Blocking Command 1.3
- XEP-0198: Stream Management 1.6
- XEP-0199: XMPP Ping 2.0
- XEP-0202: Entity Time 2.0
- XEP-0220: Server Dialback 1.1.1
- XEP-0237: Roster Versioning 1.3
- XEP-0280: Message Carbons 0.13.3
- XEP-0368: SRV records for XMPP over TLS 1.1.0
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.
Code of Conduct
Help us keep jackal open and inclusive. Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md).
jackal is licensed under the Apache 2 License. See LICENSE for the full license text.
If you have any suggestion or question:
*Note that all licence references and agreements mentioned in the jackal README section above are relevant to that project's source code only.