{"id":19436925,"url":"https://github.com/tigase/tigase-xmpp-server-docker","last_synced_at":"2025-04-24T21:31:38.957Z","repository":{"id":48309042,"uuid":"188050881","full_name":"tigase/tigase-xmpp-server-docker","owner":"tigase","description":"(M) Official Docker project for Tigase XMPP Server","archived":false,"fork":false,"pushed_at":"2024-09-24T15:58:48.000Z","size":117,"stargazers_count":22,"open_issues_count":5,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-03T11:51:17.360Z","etag":null,"topics":["docker","docker-image","tigase-docker","tigase-xmpp-server","xmpp","xmpp-server","xmpp-servers"],"latest_commit_sha":null,"homepage":"https://tigase.net","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tigase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":["tigase"]}},"created_at":"2019-05-22T14:02:55.000Z","updated_at":"2024-09-24T15:58:52.000Z","dependencies_parsed_at":"2024-01-17T21:04:43.428Z","dependency_job_id":null,"html_url":"https://github.com/tigase/tigase-xmpp-server-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigase%2Ftigase-xmpp-server-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigase%2Ftigase-xmpp-server-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigase%2Ftigase-xmpp-server-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigase%2Ftigase-xmpp-server-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tigase","download_url":"https://codeload.github.com/tigase/tigase-xmpp-server-docker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250712982,"owners_count":21475117,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","tigase-docker","tigase-xmpp-server","xmpp","xmpp-server","xmpp-servers"],"created_at":"2024-11-10T15:13:03.422Z","updated_at":"2025-04-24T21:31:38.942Z","avatar_url":"https://github.com/tigase.png","language":"Shell","funding_links":["https://github.com/sponsors/tigase"],"categories":[],"sub_categories":[],"readme":"# This project is **LEGACY** and **obsolete**\n\nSince version 8.3.1 docker images are build using jib directly in the [main tigase distribution project](https://tigase.dev/tigase/_server/tigase-server/)!\n\nIn order to keep jlink functionality we do keep base image for JDK available in `jre-jlink-base/Dockerfile(-alpine)`\nAs described in \"Building JRE \u003cX\u003e used by nightly builds\" section it's possible to build it using:\n\n```\ndocker buildx build --platform linux/amd64,linux/arm64 --build-arg JDK_VERSION=${JDK_VERSION:-21} -t tigase/tigase-xmpp-server-base:${JDK_VERSION:-21}${ALPINE:+-$ALPINE} -f jre-jlink-base/Dockerfile${ALPINE:+-$ALPINE} --no-cache jre-jlink-base --push\n```\n\n\u003e #### To build different/older version use: `export JDK_VERSION=17`\n\u003e #### To build **`alpine`** version run set `ALPINE` variable to `alpine`: `export ALPINE=\"alpine\"` \n\n-------\n\n**LEGACY** Tigase's Docker package for the Tigase XMPP Server.\n\n[![](https://images.microbadger.com/badges/version/tigase/tigase-xmpp-server:8.1.0.svg)](https://microbadger.com/images/tigase/tigase-xmpp-server:8.1.0 \"Get your own version badge on microbadger.com\")\n![Docker Pulls](https://img.shields.io/docker/pulls/tigase/tigase-xmpp-server)\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/tigase/tigase-xmpp-server/8.1.0)\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n**Table of Contents**\n\n- [Supported tags and respective `Dockerfile`s](#supported-tags-and-respective-dockerfiles)\n  - [Simple tags](#simple-tags)\n- [What is Tigase XMPP server?](#what-is-tigase-xmpp-server)\n- [How to use this image?](#how-to-use-this-image)\n  - [Starting Tigase XMPP Server](#starting-tigase-xmpp-server)\n  - [Configuration](#configuration)\n    - [Setting hostname](#setting-hostname)\n      - [Dedicated network](#dedicated-network)\n    - [Exposing ports](#exposing-ports)\n    - [Connecting to external database](#connecting-to-external-database)\n    - [Automatically creating Admin user](#automatically-creating-admin-user)\n    - [Exported volumes](#exported-volumes)\n    - [Tweaking memory configuration](#tweaking-memory-configuration)\n    - [Operating system settings](#operating-system-settings)\n      - [Number of opened files](#number-of-opened-files)\n      - [TCP network settings](#tcp-network-settings)\n  - [Complete Run Examples](#complete-run-examples)\n    - [Single, basic instance](#single-basic-instance)\n    - [Cluster with mysql](#cluster-with-mysql)\n- [Building \u0026 Publishing](#building--publishing)\n  - [Publishing](#publishing)\n  - [Tagging nightlies](#tagging-nightlies)\n- [License](#license)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n# Supported tags and respective `Dockerfile`s\n\n## Simple tags\n-   [`nightly` (*nightly/Dockerfile*)](nightly/Dockerfile)\n-   [`nightly-enterprise` (*nightly/Dockerfile*)](nightly/Dockerfile)\n-   [`8.3.1`, `latest` (*8.3.1/Dockerfile*)](8.2.1/Dockerfile)\n-   [`8.3.1-enterprise`, `latest-enterprise` (*8.3.1/Dockerfile*)](8.2.1/Dockerfile)\n-   [`8.3.0`, `latest` (*8.3.0/Dockerfile*)](8.2.1/Dockerfile)\n-   [`8.3.0-enterprise`, `latest-enterprise` (*8.3.0/Dockerfile*)](8.2.1/Dockerfile)\n-   [`8.2.1`, `latest` (*8.2.1/Dockerfile*)](8.2.1/Dockerfile)\n-   [`8.2.1-enterprise`, `latest-enterprise` (*8.2.1/Dockerfile*)](8.2.1/Dockerfile)\n-   [`8.2.0` (*8.2.0/Dockerfile*)](8.2.0/Dockerfile)\n-   [`8.2.0-enterprise` (*8.2.0/Dockerfile*)](8.2.0/Dockerfile)\n-   [`8.1.2` (*8.1.2/Dockerfile*)](8.1.2/Dockerfile)\n-   [`8.1.1` (*8.1.1/Dockerfile*)](8.1.1/Dockerfile)\n-   [`8.1.0` (*8.1.0/Dockerfile*)](8.1.0/Dockerfile)\n-   [`8.0.0` (*8.0.0/Dockerfile*)](8.0.0/Dockerfile)\n-   [`8.0.0-jre8` (*8.0.0/jre-8/Dockerfile*)](8.0.0/jre-8/Dockerfile)\n\n\u003e **_NOTE:_** `enterprise` flavours containin commercial components\n\n# What is Tigase XMPP server?\n\n[Tigase XMPP Server](https://github.com/tigase/tigase-server/) is scalable and performant server implementation of the XMPP protocol written in Java.\n\nFor more information about Tigase XMPP Server and related products, please visit https://tigase.net.\n\nDocumentation for Tigase XMPP Server is available at https://docs.tigase.net.\n\nAvailable from [DockerHub](https://hub.docker.com/r/tigase/tigase-xmpp-server)\n\n![Tigase logo](docs/logo.png)\n\n# How to use this image?\n\n## Starting Tigase XMPP Server\n\nStarting Tigase XMPP Server is very simple:\n\n```bash\n$ docker pull tigase/tigase-xmpp-server\n$ docker run --name tigase-server -p 8080:8080 -p 5222:5222 tigase/tigase-xmpp-server:tag\n```\n\nwhere `tigase-server` is name of the container that will be created and `tag` is the tag specifying version of Tigase XMPP Server to run (if `tag` is not specified then `latest` will be used)\n\nIf Tigase XMPP Server is started for the first time (without any configuration), it will start web-based setup at port 8080.\n\n## Configuration\n\n### Setting hostname\n\nIn some cases, ie. in clustering, you may want to change hostname of the container of Tigase XMPP Server. To do so you need to add `--hostname cluster-node-1` (`-h cluster-node-1`) to the list of `docker run` parameters.\n\n#### Dedicated network\n\nIt's often a good idea to group related docker services on same, dedicated network. First, create the network: `docker network create -d bridge tigase_cluster` and then add it to `docker run` parameters: `--network tigase_cluster`\n\n### Exposing ports\n\nTigase XMPP Server as the XMPP server is only useful if accessible from the outside of the container. Tigase exposes following ports:\n- `5222` - for incoming client to server XMPP connections (over StartTLS)\n- `5223` - for incoming client to server XMPP connections (over DirectTLS/SSL)\n- `5269` - for federated XMPP connections (s2s)\n- `5277` - for inter-cluster communication\n- `5280` - for BOSH connections\n- `5281` - for BOSH connections over TLS/SSL\n- `5290` - for WebSocket connections\n- `5291` - for WebSocket connections over TLS/SSL\n- `8080` - for HTTP server (web-based setup, REST API, file upload extension, etc.)\n- `9050` - for JXM monitoring\n\nDocker image defines all of the above ports as exportable, however it depends on the Tigase XMPP Server configuration if particular service is available at any of those ports.\n\n### Connecting to external database\n\nIf you want to use Tigase XMPP Server with the external database you need to connect Tigase XMPP Server container to the database container (must be in the same docker network) or allow Tigase XMPP Server to access database server.\n\nTigase XMPP Server supports following databases:\n- DerbyDB\n- MySQL\n- MSSQL\n- PostgreSQL\n- MongoDB\n\nfor details about required version of the databases please check Tigase XMPP Server documentation at https://docs.tigase.net/.\n\nIt is recommended to pass database username and password for creation and schema management of the database.\n\n```bash\n$ docker run -e 'DB_ROOT_USER=root' -e 'DB_ROOT_PASS=root-pass' --name tigase-server -d tigase/tigase-xmpp-server\n```\n\nThis will allow Tigase XMPP Server to manage and verify database schema.\n\nDatabase configuration may be then done using web-based setup.\n\n### Automatically creating Admin user\n\nIt's possible to pass `ADMIN_JID` and `ADMIN_PASSWORD` environment variables (using `-e` parameter) to automatically create an Administrator user.\n\n### Exported volumes\n\nThis image exports following volumes to allow you to keep configuration, logs and persistent data outside of the container:\n- `/home/tigase/tigase-server/etc/` - configuration of the server *(default config files will be created after first startup of the container)*\n- `/home/tigase/tigase-server/certs/` - SSL certificates for use by the server for securing connectivity\n- `/home/tigase/tigase-server/logs/` - detailed logs of the server\n- `/home/tigase/tigase-server/data/` - data stored by HTTP-based file upload feature of the server\n\n\u003e **NOTE:** It's possible (and recommended) to share `etc` configuration directory across Tigase cluster as all instances use the same configuration.\n\n### Tweaking memory configuration\n\nWhen using default Tigase's docker images JDK11 is used, which is aware about being run within (docker) container. However, one should keep in mind that default JDK's memory settings will be applied (minimum heap of 25% of memory, maximum heap of 50% of available memory - either container's [if set], or host machine). It's possible to adjust those by setting `PRODUCTION_HEAP_SETTINGS` environment variable to the desired value. For example, to configure Tigase's JVM to use 90% and start with small initial heap add following `-e 'PRODUCTION_HEAP_SETTINGS=-XX:MaxRAMPercentage=90 -Xms128m'` to `docker run`.\n\nIt's also possible to tweak garbage collector settings by setting `GC` environment variable.\n\n### Operating system settings\n\nWhen running Tigase XMPP Server in production it's essential to apply configuration outlined in [Linux Settings for High Load Systems](https://docs.tigase.net/tigase-server/master-snapshot/Administration_Guide/html/#linuxhighload). In case of Tigase's Docker image this is done via parameters applied to `docker run`:\n* [`--sysctl map` (Sysctl options (default map[]))](https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime)\n* [`--ulimit ulimit` (Ulimit options (default []))](https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit)\n\n#### Number of opened files\n\nThis parameter is inherited from the host operating system and should be configred on the host. If there is a desire to adjust it then adding `--ulimit nofile=350000:350000` to the list of `docker run` parameters would do the trick\n\n#### TCP network settings\n\nNetwork configuration adjustments are mostly needed if online user status is not detected correctly after user is disconnected (or with a significant delay).\n\n```\n--sysctl \"net.ipv4.tcp_keepalive_time=60\" \\\n--sysctl \"net.ipv4.tcp_keepalive_probes=3\" \\\n--sysctl \"net.ipv4.tcp_keepalive_intvl=90\" \\\n--sysctl \"net.ipv4.ip_local_port_range=1024 65000\" \n```\n\n## Complete Run Examples\n\n### Single, basic instance \n\nBelow command will run latest version of Tigase with configuration, certificates and (http upload) data directories mapped, configured root database credentials and ports mapped. \n\n```bash\n$ docker run -d \\\n    --name some_tigase \\\n    -v /home/tigase/etc/:/home/tigase/tigase-server/etc/ \\\n    -v /home/tigase/certs/:/home/tigase/tigase-server/certs/ \\\n    -v /home/tigase/data/:/home/tigase/tigase-server/data/ \\\n    -e 'DB_ROOT_USER=root' \\\n    -e 'DB_ROOT_PASS=root-password' \\\n    -p 5222:5222 \\\n    -p 5280:5280 \\\n    -p 5290:5290 \\\n    -p 8080:8080 \\\n    tigase/tigase-xmpp-server\n```\n\nOnce started, open http://localhost:8080 (from the same machine, or using http://\u003cserver_hostname\u003e:8080), follow installer steps and save configuration at the end. You can find more details in the [Connect to the Web Installer](https://docs.tigase.net/tigase-server/master-snapshot/Administration_Guide/html/#connecttoWebInstall).\nDefault credentials used to access the installer are available in the `etc/config.tdsl` and are printed in the container logs, by default those are: 'admin-user' = 'admin' and 'admin-password' = 'tigase'.\n\n### Cluster with mysql\n\n1. Create docker network bridge named `tigase_cluster`\n\n```bash\n$ docker network create -d bridge tigase_cluster\n```\n\n2. Create MySQL container, connect it to created `tigase_cluster` network, configure name and hostname as `tigase_mysql`, expose port and configure root user password\n\n```bash\n$ docker run -d \\\n    --name tigase_mysql \\\n    --hostname tigase_mysql \\\n    --network tigase_cluster \\\n    -p 3306:3306 \\\n    -e MYSQL_ROOT_PASSWORD=root-password \\\n    mysql:5.7\n```\n\n3. Run latest version of Tigase connected to `tigase_cluster` network with configuration, certificates and (http upload) data directories mapped, configured root database credentials and user-facing (5222, 5280, 5290, 8080) ports exposed. \n   \n```bash\n$ docker run -d \\\n   --name tigase_cl1 \\\n   --hostname tigase_cl1 \\\n   --network tigase_cluster \\\n   -v /home/tigase/etc/:/home/tigase/tigase-server/etc/ \\\n   -v /home/tigase/certs/:/home/tigase/tigase-server/certs/ \\\n   -v /home/tigase/data/:/home/tigase/tigase-server/data/ \\\n   -e 'DB_ROOT_USER=root' \\\n   -e 'DB_ROOT_PASS=root-password' \\\n   -p 5222:5222 \\\n   -p 5280:5280 \\\n   -p 5290:5290 \\\n   -p 8080:8080 \\\n   tigase/tigase-xmpp-server\n```\n\n4. Once started, open http://localhost:8080 (from the same machine, or using http://\u003cserver_hostname\u003e:8080), follow installer steps and save configuration at the end. You can find more details in the [Connect to the Web Installer](https://docs.tigase.net/tigase-server/master-snapshot/Administration_Guide/html/#connecttoWebInstall).\nDefault credentials used to access the installer are available in the `etc/config.tdsl` and are printed in the container logs, by default those are: 'admin-user' = 'admin' and 'admin-password' = 'tigase'.\n\n5. Restart current container\n\n```bash\n$ docker restart tigase_cl1\n```\n\n6. Add nodes to cluster\n\n```bash\ndocker run -d \\\n   --name tigase_cl2 \\\n   --hostname tigase_cl2 \\\n   --network tigase_cluster \\ \n   -v /home/tigase/etc/:/home/tigase/tigase-server/etc/ \\\n   -v /home/tigase/certs/:/home/tigase/tigase-server/certs/ \\\n   -v /home/tigase/data/:/home/tigase/tigase-server/data/ \\\n   -e 'DB_ROOT_USER=root' \\\n   -e 'DB_ROOT_PASS=root-password' \\\n   -p 5322:5222 \\\n   -p 5380:5280 \\\n   -p 5390:5290 \\\n   -p 8083:8080 \\\n   tigase/tigase-xmpp-server\n```\n\n\u003e **NOTE:** Make sure that `name`, `hostname` and bounded ports are unique - in this case second node uses `tigase_cl2` (instead of `tigase_cl1`) as `name` and `hostname` and bounded ports were changed to `5322`, `5380`, `5390` and `8083` to avoid conflicts.\n\n# Building \u0026 Publishing\n\nWe should build multi-arch images, please prepare build environment as outlined in https://docs.docker.com/desktop/multi-arch/ (because of the limitations of multi-arch one MUST push using `build` to properly push multi-arch tag)\n\n1) Older versions (without multiple types)\n```bash\nVERSION=8.0.0 ; docker build -t tigase/tigase-xmpp-server:${VERSION}-jre-8 -f ${VERSION}/jre-8/Dockerfile --no-cache ${VERSION}/\nfor VERSION in 8.0.0 8.1.0 8.1.1 8.1.2 ;  do \\\n\tdocker build -t tigase/tigase-xmpp-server:${VERSION} -f ${VERSION}/Dockerfile --no-cache ${VERSION}/ ; \\\ndone\n```\n\n2) Newer versions with multiple types -- currently only `nightly` version but after releasing more version each subsequent version should be added to the list. \n\nThis image (and its build process) depends on `tigase/tigase-xmpp-server-base:17`, which build process is described in point 4.\n```bash\nfor TYPE in \"\" \"-enterprise\" ; do \n  for VERSION in  8.2.0 8.2.1 8.2.2 8.2.3 8.2.4 8.3.0 8.3.1 nightly ;  do\n\tdocker buildx build --platform linux/amd64,linux/arm64 --build-arg TYPE=${TYPE} -t tigase/tigase-xmpp-server:${VERSION}${TYPE} -f ${VERSION}/Dockerfile --no-cache ${VERSION}/ --push\t\n  done\ndone\n```\n\n3) Version that's also `latest` \n```bash\nfor TYPE in \"\" \"-enterprise\" ; do \n  for VERSION in 8.3.0 ;  do\n\tdocker buildx build --platform linux/amd64,linux/arm64 --build-arg TYPE=${TYPE} -t tigase/tigase-xmpp-server:${VERSION}${TYPE} -t tigase/tigase-xmpp-server:latest${TYPE} -f ${VERSION}/Dockerfile --no-cache ${VERSION}/ --push ; \\\n  done\ndone\n```\n\n4) Building JRE \u003cX\u003e used by nightly builds\n```\ndocker buildx build --platform linux/amd64,linux/arm64 --build-arg JDK_VERSION=${JDK_VERSION:-21} -t tigase/tigase-xmpp-server-base:${JDK_VERSION:-21} -f jre-jlink-base/Dockerfile --no-cache jre-jlink-base --push\n```\n\n\u003e #### NOTE: It's possible to build different base JDK version; to do that set `JDK_VERSION` environment variable to desired version, e.g. to build older, legacy JDK17 set it like that: `export JDK_VERSION=17`\n\n## Publishing\n\n\u003e **NOTE**: Below instructions don't apply to multi-arch builds as those push only single architecture image!\n\n```bash\ndocker push tigase/tigase-xmpp-server:8.0.0-jre-8\nfor VERSION in 8.0.0 8.1.0 8.1.1 8.1.2;  do \\\n\tdocker push tigase/tigase-xmpp-server:${VERSION} ; \\\ndone\n\nfor TYPE in \"\" \"-enterprise\" ; do \n  for VERSION in nightly 8.2.0 ;  do\n\tdocker push tigase/tigase-xmpp-server:${VERSION}${TYPE} ;\n  done\n  docker tag tigase/tigase-xmpp-server:${VERSION}${TYPE} tigase/tigase-xmpp-server:latest${TYPE} ;\n  docker push tigase/tigase-xmpp-server:latest${TYPE} ;\ndone\n```\n\n## Tagging nightlies\n\n```\ndocker pull tigase/tigase-xmpp-server:nightly\nVERSION=8.1-$(date +%Y-%m-%d)\ndocker tag tigase/tigase-xmpp-server:nightly tigase/tigase-xmpp-server:nightly-${VERSION}\ndocker push tigase/tigase-xmpp-server:nightly-${VERSION}\n```\n\n# License\n\n\u003cimg alt=\"Tigase Tigase Logo\" src=\"https://github.com/tigase/website-assets/blob/master/tigase/images/tigase-logo.png?raw=true\" width=\"25\"/\u003e Official \u003ca href=\"https://tigase.net/\"\u003eTigase\u003c/a\u003e repository is available at: https://github.com/tigase/tigase-server/.\n\nCopyright (c) 2004 Tigase, Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftigase%2Ftigase-xmpp-server-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftigase%2Ftigase-xmpp-server-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftigase%2Ftigase-xmpp-server-docker/lists"}