Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
This repository was archived by the owner on Nov 3, 2023. It is now read-only.
/jackalPublic archive

💬 Instant messaging server for the Extensible Messaging and Presence Protocol (XMPP).

License

NotificationsYou must be signed in to change notification settings

ortuman/jackal

Repository files navigation

An XMPP server written in Go.

CI StatusGo Report CardGodocReleasesLICENSEDocker PullsJoin the chat at https://gitter.im/jackal-im/jackal

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 (PostgreSQL 9.5+, BoltDB)
  • Caching (Redis 6.2+)
  • Clustering capabilities (etcd 3.4+)
  • Exposeprometheus metrics
  • Cross-platform (OS X, Linux)

Installing

Getting Started

To start using jackal, install Go 1.19+ and run the following commands:

$ git clone git@github.com:ortuman/jackal.git$cd jackal$ make install installctl

This will fetch the code and installjackal andjackalctl binaries into your$GOPATH/bin path.

By default the application will try to locate service configuration atconfig.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

Helm chart

To make it easy to install jackal via Helm in Kubernetes a chart has been included into this repository.

After customizing your ownvalues.yaml file run the following command to install and configure all required components underjackal namespace.

sh ./helm/scripts/install.sh<your_custom_values>.yaml

In turn, an active chart can be updated by running the upgrade script as follows:

sh ./helm/scripts/upgrade.sh<your_custom_values>.yaml

On the other hand, you can also remove the jackal chart from your Kubernetes cluster by running the uninstall script:

sh ./helm/scripts/uninstall.sh

PostgreSQL database creation

Create a user and a database for that user:

CREATE ROLE jackal WITH LOGIN PASSWORD'password';CREATEDATABASEjackal;GRANT ALL PRIVILEGESON DATABASE jackal TO jackal;

Download lastest version of thePostgreSQL schema from jackal Github repository.

wget https://raw.githubusercontent.com/ortuman/jackal/master/sql/postgres.up.psql

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:pgsqlpgsql:host:127.0.0.1:5432user:jackalpassword:passworddatabase:jackal

That's it!

Your database is now ready to connect with jackal.

Creating jackal user

After completing database setup and startingjackal service you'll have to register a new user to be able to login. To do so, you can usejackal command-line tool to create a new user proving name and password.

make installctl&& jackalctl user add<user>:<password>

Clustering

The purpose of clustering is to be able to use several servers for fault-tolerance and scalability.

Sincejackal is a distributed system, it needs a distributed data store likeetcd to share its state across the entire cluster.

To properly runjackal in clustering mode make sure to add acluster section configuration in each of your service nodes.

Here's an example of how this section should look like:

cluster:type:kvkv:type:etcdetcd:endpoints:        -http://<etcd-host1>:<etcd-port1>        -http://<etcd-host2>:<etcd-port2>...port:your-cluster-node-port# default is 14369

Note the definedport value will be used to perform cluster node communication, so make sure is reachable within your internal network.

Server extensibility

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.ExtensibilitygRPC API proto files can be found at jackalproto 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. SeeInstall 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 \   -p"5222:5222" \   -p"15280:15280"\# used by jackalctl   -d ortuman/jackal:latest

Docker compose

Alternatively, and with the purpose of facilitating service mounting, you can make use ofdocker-compose as follows:

docker-compose -f dockerfiles/docker-compose.yml up

This command will spin up ajackal server along with its dependencies on a docker network and start listening for incoming connections on port5222.

Once up and running, don't forget toregister one or more users usingjackalctl.

Supported Specifications

Join and Contribute

Thejackal 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 ourCode of Conduct.

Licensing

jackal is licensed under the Apache 2 License. SeeLICENSE for the fulllicense text.

Contact

If you have any suggestion or question:

Miguel Ángel Ortuño, JID:ortuman@jackal.im, email:ortuman@pm.me


[8]ページ先頭

©2009-2025 Movatter.jp