diff --git a/blueprints/zulip/docker-compose.yml b/blueprints/zulip/docker-compose.yml new file mode 100644 index 00000000..8a33cfc8 --- /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.1-0 + 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 + CONFIG_application_server__http_only: "true" + LOADBALANCER_IPS: ${ZULIP_LOADBALANCER_IPS} + 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 diff --git a/blueprints/zulip/meta.json b/blueprints/zulip/meta.json new file mode 100644 index 00000000..18b6a006 --- /dev/null +++ b/blueprints/zulip/meta.json @@ -0,0 +1,18 @@ +{ + "id": "zulip", + "name": "Zulip", + "version": "12.1-0", + "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" + ] +} diff --git a/blueprints/zulip/template.toml b/blueprints/zulip/template.toml new file mode 100644 index 00000000..821c66bd --- /dev/null +++ b/blueprints/zulip/template.toml @@ -0,0 +1,21 @@ +[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}", + "ZULIP_LOADBALANCER_IPS=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16", +] +mounts = [] + +[[config.domains]] +serviceName = "zulip" +port = 80 +host = "${main_domain}" 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