From b2bf966e86d85fb1944a02f282e6de364a6b9c86 Mon Sep 17 00:00:00 2001 From: Rohit Mulani <289630555+rohitmulani63-ops@users.noreply.github.com> Date: Mon, 22 Jun 2026 14:33:35 +0400 Subject: [PATCH] feat: add Zulip template --- blueprints/zulip/docker-compose.yml | 113 ++++++++++++++++++++++++++++ blueprints/zulip/template.toml | 20 +++++ blueprints/zulip/zulip.svg | 6 ++ meta.json | 18 +++++ 4 files changed, 157 insertions(+) create mode 100644 blueprints/zulip/docker-compose.yml create mode 100644 blueprints/zulip/template.toml create mode 100644 blueprints/zulip/zulip.svg diff --git a/blueprints/zulip/docker-compose.yml b/blueprints/zulip/docker-compose.yml new file mode 100644 index 00000000..e8415255 --- /dev/null +++ b/blueprints/zulip/docker-compose.yml @@ -0,0 +1,113 @@ +version: "3.8" + +services: + database: + image: zulip/zulip-postgresql:14 + restart: unless-stopped + secrets: + - zulip__postgres_password + environment: + POSTGRES_DB: zulip + POSTGRES_USER: zulip + POSTGRES_PASSWORD_FILE: /run/secrets/zulip__postgres_password + volumes: + - zulipPostgresData:/var/lib/postgresql/data + + memcached: + image: memcached:alpine + restart: unless-stopped + command: + - sh + - -euc + - | + echo 'mech_list: plain' > "$$SASL_CONF_PATH" + echo "zulip@$$HOSTNAME:$$(cat $$MEMCACHED_PASSWORD_FILE)" > "$$MEMCACHED_SASL_PWDB" + echo "zulip@localhost:$$(cat $$MEMCACHED_PASSWORD_FILE)" >> "$$MEMCACHED_SASL_PWDB" + exec memcached -S + secrets: + - zulip__memcached_password + environment: + SASL_CONF_PATH: /home/memcache/memcached.conf + MEMCACHED_SASL_PWDB: /home/memcache/memcached-sasl-db + MEMCACHED_PASSWORD_FILE: /run/secrets/zulip__memcached_password + + rabbitmq: + image: rabbitmq:4.2 + restart: unless-stopped + command: + - sh + - -euc + - | + export RABBITMQ_DEFAULT_PASS="$$(cat $$RABBITMQ_PASSWORD_FILE)" + echo "default_user = $$RABBITMQ_DEFAULT_USER" >> /etc/rabbitmq/rabbitmq.conf + echo "default_pass = $$RABBITMQ_DEFAULT_PASS" >> /etc/rabbitmq/rabbitmq.conf + exec docker-entrypoint.sh rabbitmq-server + secrets: + - zulip__rabbitmq_password + environment: + RABBITMQ_DEFAULT_USER: zulip + RABBITMQ_PASSWORD_FILE: /run/secrets/zulip__rabbitmq_password + volumes: + - zulipRabbitmqData:/var/lib/rabbitmq + + redis: + image: redis:alpine + restart: unless-stopped + command: + - sh + - -euc + - /usr/local/bin/docker-entrypoint.sh --requirepass "$$(cat $$REDIS_PASSWORD_FILE)" + secrets: + - zulip__redis_password + environment: + REDIS_PASSWORD_FILE: /run/secrets/zulip__redis_password + volumes: + - zulipRedisData:/data + + zulip: + image: ghcr.io/zulip/zulip-server:12.0-1 + restart: unless-stopped + depends_on: + - database + - memcached + - rabbitmq + - redis + secrets: + - zulip__postgres_password + - zulip__memcached_password + - zulip__rabbitmq_password + - zulip__redis_password + - zulip__secret_key + environment: + SETTING_EXTERNAL_HOST: ${ZULIP_EXTERNAL_HOST} + SETTING_ZULIP_ADMINISTRATOR: ${ZULIP_ADMINISTRATOR} + SETTING_REMOTE_POSTGRES_HOST: database + SETTING_MEMCACHED_LOCATION: memcached:11211 + SETTING_RABBITMQ_HOST: rabbitmq + SETTING_REDIS_HOST: redis + DISABLE_HTTPS: "True" + SSL_CERTIFICATE_GENERATION: self-signed + volumes: + - zulipData:/data + ulimits: + nofile: + soft: 1000000 + hard: 1048576 + +volumes: + zulipData: + zulipPostgresData: + zulipRabbitmqData: + zulipRedisData: + +secrets: + zulip__postgres_password: + environment: ZULIP_POSTGRES_PASSWORD + zulip__memcached_password: + environment: ZULIP_MEMCACHED_PASSWORD + zulip__rabbitmq_password: + environment: ZULIP_RABBITMQ_PASSWORD + zulip__redis_password: + environment: ZULIP_REDIS_PASSWORD + zulip__secret_key: + environment: ZULIP_SECRET_KEY \ No newline at end of file diff --git a/blueprints/zulip/template.toml b/blueprints/zulip/template.toml new file mode 100644 index 00000000..f975978f --- /dev/null +++ b/blueprints/zulip/template.toml @@ -0,0 +1,20 @@ +[variables] +main_domain = "${domain}" +admin_email = "${email}" + +[config] +env = [ + "ZULIP_EXTERNAL_HOST=${main_domain}", + "ZULIP_ADMINISTRATOR=${admin_email}", + "ZULIP_POSTGRES_PASSWORD=${password:32}", + "ZULIP_MEMCACHED_PASSWORD=${password:32}", + "ZULIP_RABBITMQ_PASSWORD=${password:32}", + "ZULIP_REDIS_PASSWORD=${password:32}", + "ZULIP_SECRET_KEY=${password:64}", +] +mounts = [] + +[[config.domains]] +serviceName = "zulip" +port = 80 +host = "${main_domain}" \ No newline at end of file diff --git a/blueprints/zulip/zulip.svg b/blueprints/zulip/zulip.svg new file mode 100644 index 00000000..6d53c774 --- /dev/null +++ b/blueprints/zulip/zulip.svg @@ -0,0 +1,6 @@ + + Zulip + Zulip template logo + + + \ No newline at end of file diff --git a/meta.json b/meta.json index 8be7825d..3cb4c246 100644 --- a/meta.json +++ b/meta.json @@ -6799,5 +6799,23 @@ "saml", "multi-tenant" ] + }, + { + "id": "zulip", + "name": "Zulip", + "version": "12.0-1", + "description": "Open-source threaded team chat designed to keep team communication organized and productive.", + "logo": "zulip.svg", + "links": { + "github": "https://github.com/zulip/docker-zulip", + "website": "https://zulip.com/", + "docs": "https://zulip.readthedocs.io/projects/docker/" + }, + "tags": [ + "chat", + "collaboration", + "team", + "self-hosted" + ] } ]